diff --git a/Alignment/APEEstimation/test/SkimProducer/skimProducer_cfg.py b/Alignment/APEEstimation/test/SkimProducer/skimProducer_cfg.py index b04d66eb6d921..3ec7546c051f7 100644 --- a/Alignment/APEEstimation/test/SkimProducer/skimProducer_cfg.py +++ b/Alignment/APEEstimation/test/SkimProducer/skimProducer_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/Alignment/APEEstimation/test/SkimProducer/startSkim.py b/Alignment/APEEstimation/test/SkimProducer/startSkim.py index e73b035f71dcb..2508a31064fde 100644 --- a/Alignment/APEEstimation/test/SkimProducer/startSkim.py +++ b/Alignment/APEEstimation/test/SkimProducer/startSkim.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys sys.path.append("../SkimProducer") # for switching to CAF queue (condor submit) diff --git a/Alignment/APEEstimation/test/autoSubmitter/autoSubmitter.py b/Alignment/APEEstimation/test/autoSubmitter/autoSubmitter.py index a182f2922c9cf..5849b9b5f1d7f 100644 --- a/Alignment/APEEstimation/test/autoSubmitter/autoSubmitter.py +++ b/Alignment/APEEstimation/test/autoSubmitter/autoSubmitter.py @@ -1,4 +1,3 @@ -from __future__ import print_function import configparser as ConfigParser import argparse import shelve diff --git a/Alignment/APEEstimation/test/autoSubmitter/helpers.py b/Alignment/APEEstimation/test/autoSubmitter/helpers.py index bb78557ff2b73..c7720a1006075 100644 --- a/Alignment/APEEstimation/test/autoSubmitter/helpers.py +++ b/Alignment/APEEstimation/test/autoSubmitter/helpers.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import os import subprocess diff --git a/Alignment/APEEstimation/test/cfgTemplate/apeEstimatorSummary_cfg.py b/Alignment/APEEstimation/test/cfgTemplate/apeEstimatorSummary_cfg.py index d95da5e1da537..b225736b0f140 100644 --- a/Alignment/APEEstimation/test/cfgTemplate/apeEstimatorSummary_cfg.py +++ b/Alignment/APEEstimation/test/cfgTemplate/apeEstimatorSummary_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/Alignment/APEEstimation/test/cfgTemplate/apeEstimator_cfg.py b/Alignment/APEEstimation/test/cfgTemplate/apeEstimator_cfg.py index 1acef15fee026..573fb7ea9d4b3 100644 --- a/Alignment/APEEstimation/test/cfgTemplate/apeEstimator_cfg.py +++ b/Alignment/APEEstimation/test/cfgTemplate/apeEstimator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/Alignment/APEEstimation/test/cfgTemplate/apeLocalSetting_cfg.py b/Alignment/APEEstimation/test/cfgTemplate/apeLocalSetting_cfg.py index 5de26569be289..3376710d32ab6 100644 --- a/Alignment/APEEstimation/test/cfgTemplate/apeLocalSetting_cfg.py +++ b/Alignment/APEEstimation/test/cfgTemplate/apeLocalSetting_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/Alignment/APEEstimation/test/createTrackerAlignmentErrorExtendedRcd_cfg.py b/Alignment/APEEstimation/test/createTrackerAlignmentErrorExtendedRcd_cfg.py index 141f5a1800e13..2f5da77ff8a04 100644 --- a/Alignment/APEEstimation/test/createTrackerAlignmentErrorExtendedRcd_cfg.py +++ b/Alignment/APEEstimation/test/createTrackerAlignmentErrorExtendedRcd_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function ######################################################################################## ### ### Read and write APEs to and from database and ASCII files diff --git a/Alignment/APEEstimation/test/plottingTools/trendPlotter.py b/Alignment/APEEstimation/test/plottingTools/trendPlotter.py index 8ff595aac0c95..26961fcca973c 100644 --- a/Alignment/APEEstimation/test/plottingTools/trendPlotter.py +++ b/Alignment/APEEstimation/test/plottingTools/trendPlotter.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT ROOT.gROOT.SetBatch(True) from setTDRStyle import setTDRStyle diff --git a/Alignment/APEEstimation/test/trackerTreeGenerator_cfg.py b/Alignment/APEEstimation/test/trackerTreeGenerator_cfg.py index 4727e156f1327..6376fb8d23029 100644 --- a/Alignment/APEEstimation/test/trackerTreeGenerator_cfg.py +++ b/Alignment/APEEstimation/test/trackerTreeGenerator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/Alignment/CocoaUtilities/src/ALIFileIn.cc b/Alignment/CocoaUtilities/src/ALIFileIn.cc index de453718274cb..57dd5a66f46cb 100644 --- a/Alignment/CocoaUtilities/src/ALIFileIn.cc +++ b/Alignment/CocoaUtilities/src/ALIFileIn.cc @@ -128,9 +128,9 @@ ALIint ALIFileIn::getWordsInLine(std::vector& wordlist) { } } tt++; - } while (*tt != '\0' && stemp.length() != 0); + } while (*tt != '\0' && !stemp.empty()); ALIstring stempt(ltemp); - if (stempt.length() == 0) + if (stempt.empty()) NoWords = 0; //--------- Read words from istr_line and write them into wordlist @@ -138,7 +138,7 @@ ALIint ALIFileIn::getWordsInLine(std::vector& wordlist) { for (ii = 0; ii < NoWords; ii++) { ALIstring stemp = ""; istr_line >> stemp; //?? gives warning in Insure++ - if (stemp.length() == 0) + if (stemp.empty()) break; ALIint comment = stemp.find(ALIstring("//")); // std::cout << "!!!COMMENT" << comment << stemp.c_str() << std::endl; diff --git a/Alignment/CommonAlignment/python/tools/dataset.py b/Alignment/CommonAlignment/python/tools/dataset.py index 0d0f812b07b44..37a963b26528c 100644 --- a/Alignment/CommonAlignment/python/tools/dataset.py +++ b/Alignment/CommonAlignment/python/tools/dataset.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import abc import csv diff --git a/Alignment/CommonAlignment/python/tools/trackselectionRefitting.py b/Alignment/CommonAlignment/python/tools/trackselectionRefitting.py index 948f56d12aee0..c296a520b0cb3 100644 --- a/Alignment/CommonAlignment/python/tools/trackselectionRefitting.py +++ b/Alignment/CommonAlignment/python/tools/trackselectionRefitting.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import FWCore.ParameterSet.Config as cms diff --git a/Alignment/CommonAlignment/python/tools/utilities.py b/Alignment/CommonAlignment/python/tools/utilities.py index 2b38d0d34d3fa..0914b884cad7e 100644 --- a/Alignment/CommonAlignment/python/tools/utilities.py +++ b/Alignment/CommonAlignment/python/tools/utilities.py @@ -1,4 +1,3 @@ -from __future__ import print_function def cache(function): cache = {} diff --git a/Alignment/CommonAlignment/scripts/magneticFieldFilterJSON.py b/Alignment/CommonAlignment/scripts/magneticFieldFilterJSON.py index b0700add498eb..b1e636ea50279 100755 --- a/Alignment/CommonAlignment/scripts/magneticFieldFilterJSON.py +++ b/Alignment/CommonAlignment/scripts/magneticFieldFilterJSON.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import sys diff --git a/Alignment/CommonAlignment/scripts/tkal_create_file_lists.py b/Alignment/CommonAlignment/scripts/tkal_create_file_lists.py index ab70a4cd90d56..0c68a7bd26120 100755 --- a/Alignment/CommonAlignment/scripts/tkal_create_file_lists.py +++ b/Alignment/CommonAlignment/scripts/tkal_create_file_lists.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import os diff --git a/Alignment/CommonAlignment/src/AlignableModifier.cc b/Alignment/CommonAlignment/src/AlignableModifier.cc index 3239172e43fb6..fe8407a18a504 100644 --- a/Alignment/CommonAlignment/src/AlignableModifier.cc +++ b/Alignment/CommonAlignment/src/AlignableModifier.cc @@ -174,7 +174,7 @@ bool AlignableModifier::modify(Alignable* alignable, const edm::ParameterSet& pS << "with 's' or a digit at the end.\n"; } // other PSets should now be hierarchy levels and thus be OK to ignore here } else { - if (!error.str().length()) + if (error.str().empty()) error << "Unknown parameter name(s): "; error << " " << *iParam; } @@ -189,7 +189,7 @@ bool AlignableModifier::modify(Alignable* alignable, const edm::ParameterSet& pS throw cms::Exception("BadConfig") << "Found both localZ and phiZlocal"; // Check error - if (error.str().length()) + if (!error.str().empty()) throw cms::Exception("BadConfig") << error.str(); // Decode distribution diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHGCombined_Output_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHGCombined_Output_cff.py new file mode 100644 index 0000000000000..bfff1d0ab901f --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHGCombined_Output_cff.py @@ -0,0 +1,12 @@ +import FWCore.ParameterSet.Config as cms + +OutALCARECOPromptCalibProdSiPixelAliHLTHGC_noDrop = cms.PSet( + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('pathALCARECOPromptCalibProdSiPixelAliHLTHGMinBias','pathALCARECOPromptCalibProdSiPixelAliHLTHGDiMu') + ), + outputCommands = cms.untracked.vstring('keep *_SiPixelAliMillePedeFileConverterHLTHGDimuon_*_*', + 'keep *_SiPixelAliMillePedeFileConverterHLTHG_*_*') +) + +OutALCARECOPromptCalibProdSiPixelAliHLTHGC=OutALCARECOPromptCalibProdSiPixelAliHLTHGC_noDrop.clone() +OutALCARECOPromptCalibProdSiPixelAliHLTHGC.outputCommands.insert(0, "drop *") diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHGDiMuon_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHGDiMuon_cff.py new file mode 100644 index 0000000000000..4112c8dcb9d30 --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHGDiMuon_cff.py @@ -0,0 +1,139 @@ +import FWCore.ParameterSet.Config as cms + +# ------------------------------------------------------------------------------ +# configure a filter to run only on the events selected by TkAlZMuMu AlcaReco +from HLTrigger.HLTfilters.hltHighLevel_cfi import * +ALCARECOTkAlZMuMuFilterForSiPixelAliHLT = hltHighLevel.clone( + HLTPaths = ['pathALCARECOTkAlHLTTracksZMuMu'], + throw = True, ## dont throw on unknown path names, + TriggerResultsTag = "TriggerResults::RECO" +) + +from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAliHLT_cff import * +from Alignment.CommonAlignmentProducer.LSNumberFilter_cfi import * + + + +# Ingredient: AlignmentTrackSelector +# track selector for HighPurity tracks +#-- AlignmentTrackSelector +SiPixelAliLooseSelectorHLTHGDimuon = SiPixelAliLooseSelectorHLT.clone( + src = 'ALCARECOTkAlHLTTracksZMuMu', + etaMax = 3.0, + etaMin = -3.0, + filter = True, + pMin = 8.0, +) + +# track selection for alignment +SiPixelAliTrackSelectorHLTHGDimuon = SiPixelAliTrackSelectorHLT.clone( + src = 'SiPixelAliTrackFitterHLTHGDimuon', + applyMultiplicityFilter = True, + d0Max = 50.0, + d0Min = -50.0, + etaMax = 3.0, + etaMin = -3.0, + filter = True, + maxMultiplicity = 2, + minHitChargeStrip = 20.0, + minHitIsolation = 0.01, + minMultiplicity = 2, + nHighestPt = 2, + nHitMin = 10, + pMin = 3.0, + ptMin = 15.0, + TwoBodyDecaySelector = dict(applyChargeFilter = True, + applyMassrangeFilter = True, + maxXMass = 95.8, + minXMass = 85.8), + minHitsPerSubDet = dict(inPIXEL = 1) +) + +# Ingredient: SiPixelAliTrackRefitter0 +# refitting +SiPixelAliTrackRefitterHLTHGDimuon0 = SiPixelAliTrackRefitterHLT0.clone( + src = 'SiPixelAliLooseSelectorHLTHGDimuon' +) +SiPixelAliTrackRefitterHLTHGDimuon1 = SiPixelAliTrackRefitterHLTHGDimuon0.clone( + src = 'SiPixelAliTrackSelectorHLTHGDimuon' +) + +#-- Alignment producer +SiPixelAliMilleAlignmentProducerHLTHGDimuon = SiPixelAliMilleAlignmentProducerHLT.clone( + ParameterBuilder = dict( + Selector = cms.PSet( + alignParams = cms.vstring( + "TrackerP1PXBLadder,111111", + "TrackerP1PXECPanel,111111", + ) + ) + ), + tjTkAssociationMapTag = 'SiPixelAliTrackRefitterHLTHGDimuon1', + algoConfig = MillePedeAlignmentAlgorithm.clone( + binaryFile = 'milleBinaryHLTHGDimuon_0.dat', + treeFile = 'treeFileHLTHGDimuon.root', + monitorFile = 'millePedeMonitorHLTHGDimuon.root', + minNumHits = 8, + skipGlobalPositionRcdCheck = True, + TrajectoryFactory = cms.PSet( + AllowZeroMaterial = cms.bool(False), + Chi2Cut = cms.double(10000.0), + ConstructTsosWithErrors = cms.bool(False), + EstimatorParameters = cms.PSet( + MaxIterationDifference = cms.untracked.double(0.01), + MaxIterations = cms.untracked.int32(100), + RobustificationConstant = cms.untracked.double(1.0), + UseInvariantMass = cms.untracked.bool(True) + ), + IncludeAPEs = cms.bool(False), + MaterialEffects = cms.string('LocalGBL'), + NSigmaCut = cms.double(100.0), + ParticleProperties = cms.PSet( + PrimaryMass = cms.double(91.1061), + PrimaryWidth = cms.double(1.7678), + SecondaryMass = cms.double(0.105658) + ), + PropagationDirection = cms.string('alongMomentum'), + TrajectoryFactoryName = cms.string('TwoBodyDecayTrajectoryFactory'), + UseBeamSpot = cms.bool(False), + UseHitWithoutDet = cms.bool(True), + UseInvalidHits = cms.bool(True), + UseProjectedHits = cms.bool(True), + UseRefittedState = cms.bool(True) + ) + ) +) + +# Ingredient: SiPixelAliTrackerTrackHitFilter +SiPixelAliTrackerTrackHitFilterHLTHGDimuon = SiPixelAliTrackerTrackHitFilterHLT.clone( + src = 'SiPixelAliTrackRefitterHLTHGDimuon0', + TrackAngleCut = 0.087, + minimumHits = 10, + usePixelQualityFlag = False +) + +# Ingredient: SiPixelAliSiPixelAliTrackFitter +SiPixelAliTrackFitterHLTHGDimuon = SiPixelAliTrackFitterHLT.clone( + src = 'SiPixelAliTrackerTrackHitFilterHLTHGDimuon' +) + +SiPixelAliMillePedeFileConverterHLTHGDimuon = cms.EDProducer( + "MillePedeFileConverter", + fileDir = cms.string(SiPixelAliMilleAlignmentProducerHLTHGDimuon.algoConfig.fileDir.value()), + inputBinaryFile = cms.string(SiPixelAliMilleAlignmentProducerHLTHGDimuon.algoConfig.binaryFile.value()), + fileBlobLabel = cms.string('') +) + +seqALCARECOPromptCalibProdSiPixelAliHLTHGDiMu = cms.Sequence( + ALCARECOTkAlZMuMuFilterForSiPixelAliHLT* + LSNumberFilter* + onlineBeamSpot* + SiPixelAliLooseSelectorHLTHGDimuon* + SiPixelAliTrackRefitterHLTHGDimuon0* + SiPixelAliTrackerTrackHitFilterHLTHGDimuon* + SiPixelAliTrackFitterHLTHGDimuon* + SiPixelAliTrackSelectorHLTHGDimuon* + SiPixelAliTrackRefitterHLTHGDimuon1* + SiPixelAliMilleAlignmentProducerHLTHGDimuon* + SiPixelAliMillePedeFileConverterHLTHGDimuon +) diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHG_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHG_cff.py new file mode 100644 index 0000000000000..1680d4c1c0e18 --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLTHG_cff.py @@ -0,0 +1,84 @@ +import FWCore.ParameterSet.Config as cms + +# ------------------------------------------------------------------------------ +# configure a filter to run only on the events selected by TkAlMinBias AlcaReco +from HLTrigger.HLTfilters.hltHighLevel_cfi import * +ALCARECOTkAlMinBiasFilterForSiPixelAliHLTHG = hltHighLevel.clone( + HLTPaths = ['pathALCARECOTkAlHLTTracks'], + throw = True, ## dont throw on unknown path names, + TriggerResultsTag = "TriggerResults::RECO" +) + +from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAliHLT_cff import * +from Alignment.CommonAlignmentProducer.LSNumberFilter_cfi import * + +# Ingredient: AlignmentTrackSelector +# track selector for HighPurity tracks +#-- AlignmentTrackSelector +SiPixelAliLooseSelectorHLTHG = SiPixelAliLooseSelectorHLT.clone( + src = 'ALCARECOTkAlHLTTracks', +) + +# track selection for alignment +SiPixelAliTrackSelectorHLTHG = SiPixelAliTrackSelectorHLT.clone( + src = 'SiPixelAliTrackFitterHLTHG' +) + +# Ingredient: SiPixelAliTrackRefitter0 +# refitting +SiPixelAliTrackRefitterHLTHG0 = SiPixelAliTrackRefitterHLT0.clone( + src = 'SiPixelAliLooseSelectorHLTHG' +) +SiPixelAliTrackRefitterHLTHG1 = SiPixelAliTrackRefitterHLTHG0.clone( + src = 'SiPixelAliTrackSelectorHLTHG' +) + +#-- Alignment producer +SiPixelAliMilleAlignmentProducerHLTHG = SiPixelAliMilleAlignmentProducerHLT.clone( + ParameterBuilder = dict( + Selector = cms.PSet( + alignParams = cms.vstring( + "TrackerP1PXBLadder,111111", + "TrackerP1PXECPanel,111111", + ) + ) + ), + tjTkAssociationMapTag = 'SiPixelAliTrackRefitterHLTHG1', + algoConfig = MillePedeAlignmentAlgorithm.clone( + binaryFile = 'milleBinaryHLTHG_0.dat', + treeFile = 'treeFileHLTHG.root', + monitorFile = 'millePedeMonitorHLTHG.root' + ) +) + +# Ingredient: SiPixelAliTrackerTrackHitFilter +SiPixelAliTrackerTrackHitFilterHLTHG = SiPixelAliTrackerTrackHitFilterHLT.clone( + src = 'SiPixelAliTrackRefitterHLTHG0', + usePixelQualityFlag = False +) + +# Ingredient: SiPixelAliSiPixelAliTrackFitter +SiPixelAliTrackFitterHLTHG = SiPixelAliTrackFitterHLT.clone( + src = 'SiPixelAliTrackerTrackHitFilterHLTHG' +) + +SiPixelAliMillePedeFileConverterHLTHG = cms.EDProducer( + "MillePedeFileConverter", + fileDir = cms.string(SiPixelAliMilleAlignmentProducerHLTHG.algoConfig.fileDir.value()), + inputBinaryFile = cms.string(SiPixelAliMilleAlignmentProducerHLTHG.algoConfig.binaryFile.value()), + fileBlobLabel = cms.string('') +) + +seqALCARECOPromptCalibProdSiPixelAliHLTHG = cms.Sequence( + ALCARECOTkAlMinBiasFilterForSiPixelAliHLTHG* + LSNumberFilter* + onlineBeamSpot* + SiPixelAliLooseSelectorHLTHG* + SiPixelAliTrackRefitterHLTHG0* + SiPixelAliTrackerTrackHitFilterHLTHG* + SiPixelAliTrackFitterHLTHG* + SiPixelAliTrackSelectorHLTHG* + SiPixelAliTrackRefitterHLTHG1* + SiPixelAliMilleAlignmentProducerHLTHG* + SiPixelAliMillePedeFileConverterHLTHG +) diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLT_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLT_cff.py new file mode 100644 index 0000000000000..a5dbfab1d52e2 --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOPromptCalibProdSiPixelAliHLT_cff.py @@ -0,0 +1,116 @@ +import FWCore.ParameterSet.Config as cms +# ------------------------------------------------------------------------------ +# configure a filter to run only on the events selected by TkAlMinBias AlcaReco +from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAli_cff import * +from HLTrigger.HLTfilters.hltHighLevel_cfi import * +ALCARECOTkAlMinBiasFilterForSiPixelAliHLT = hltHighLevel.clone( + HLTPaths = ['pathALCARECOTkAlHLTTracks'], # ??? + throw = True, ## dont throw on unknown path names, + TriggerResultsTag = "TriggerResults::RECO" +) + +from Alignment.CommonAlignmentProducer.LSNumberFilter_cfi import * + +# Ingredient: onlineBeamSpot +import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi +onlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone() + +import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod +BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone( + timeThreshold = 999999 # for express allow >48h old payloads for replays. DO NOT CHANGE +) + +# Ingredient: ALCARECOTkAlMinBiasHLT +from Alignment.CommonAlignmentProducer.ALCARECOTkAlMinBias_cff import ALCARECOTkAlMinBias +ALCARECOTkAlMinBiasHLTTracks = ALCARECOTkAlMinBias.clone( + src = cms.InputTag("hltMergedTracks") +) + +# Ingredient: AlignmentTrackSelector +# track selector for HighPurity tracks +#-- AlignmentTrackSelector +from Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi import AlignmentTrackSelector +SiPixelAliLooseSelectorHLT = AlignmentTrackSelector.clone( + applyBasicCuts = True, + #filter = True, + src = 'ALCARECOTkAlMinBiasHLTTracks', + trackQualities = ["loose"], + pMin = 4., +) + +# track selection for alignment +SiPixelAliTrackSelectorHLT = SiPixelAliTrackSelector.clone( + src = 'SiPixelAliTrackFitterHLT', +) + +# Ingredient: SiPixelAliTrackRefitter0 +# refitting +from RecoTracker.IterativeTracking.InitialStep_cff import * +from RecoTracker.Configuration.RecoTrackerP5_cff import * +from RecoTracker.TrackProducer.TrackRefitter_cfi import * +# In the following use +# TrackRefitter (normal tracks), TrackRefitterP5 (cosmics) or TrackRefitterBHM (beam halo) + +# Ingredient: import HLT CPE ESProducers directly to avoid going out of synch +from Alignment.CommonAlignmentProducer.HLTModulesIncludes_cff import hltESPStripCPEfromTrackAngle, hltESPPixelCPEGeneric, hltESPTTRHBWithTrackAngle + +SiPixelAliTrackRefitterHLT0 = TrackRefitter.clone( + src = 'SiPixelAliLooseSelectorHLT', #'ALCARECOTkAlMinBias'#'ALCARECOTkAlCosmicsCTF0T' #'ALCARECOTkAlMuonIsolated' + NavigationSchool = '', # to avoid filling hit pattern + TTRHBuilder = 'hltESPTTRHBWithTrackAngle', + beamSpot = 'onlineBeamSpot' +) + +SiPixelAliTrackRefitterHLT1 = SiPixelAliTrackRefitter0.clone( + src = 'SiPixelAliTrackSelectorHLT', + TTRHBuilder = 'hltESPTTRHBWithTrackAngle', + beamSpot = 'onlineBeamSpot' +) + +#-- Alignment producer +from Alignment.MillePedeAlignmentAlgorithm.MillePedeAlignmentAlgorithm_cfi import * +from Alignment.CommonAlignmentProducer.AlignmentProducerAsAnalyzer_cff import AlignmentProducer +SiPixelAliMilleAlignmentProducerHLT = SiPixelAliMilleAlignmentProducer.clone( + beamSpotTag = 'onlineBeamSpot', + tjTkAssociationMapTag = 'SiPixelAliTrackRefitterHLT1', + algoConfig = MillePedeAlignmentAlgorithm.clone( + binaryFile = 'milleBinaryHLT_0.dat', + treeFile = 'treeFileHLT.root', + monitorFile = 'millePedeMonitorHLT.root' + ) +) + +# Ingredient: SiPixelAliTrackerTrackHitFilterHLT +SiPixelAliTrackerTrackHitFilterHLT = SiPixelAliTrackerTrackHitFilter.clone( + src = 'SiPixelAliTrackRefitterHLT0' +) + +# Ingredient: SiPixelAliTrackFitterHLT +import RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff as fitWithMaterial +SiPixelAliTrackFitterHLT = fitWithMaterial.ctfWithMaterialTracks.clone( + src = 'SiPixelAliTrackerTrackHitFilterHLT', + NavigationSchool = '', + TTRHBuilder = 'hltESPTTRHBWithTrackAngle', + beamSpot = 'onlineBeamSpot' +) + +SiPixelAliMillePedeFileConverterHLT = cms.EDProducer( + "MillePedeFileConverter", + fileDir = cms.string(SiPixelAliMilleAlignmentProducerHLT.algoConfig.fileDir.value()), + inputBinaryFile = cms.string(SiPixelAliMilleAlignmentProducerHLT.algoConfig.binaryFile.value()), + fileBlobLabel = cms.string(''), +) + +seqALCARECOPromptCalibProdSiPixelAliHLT = cms.Sequence( + ALCARECOTkAlMinBiasFilterForSiPixelAliHLT* + LSNumberFilter* + onlineBeamSpot* + SiPixelAliLooseSelectorHLT* + SiPixelAliTrackRefitterHLT0* + SiPixelAliTrackerTrackHitFilterHLT* + SiPixelAliTrackFitterHLT* + SiPixelAliTrackSelectorHLT* + SiPixelAliTrackRefitterHLT1* + SiPixelAliMilleAlignmentProducerHLT* + SiPixelAliMillePedeFileConverterHLT +) diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlDiMuonAndVertex_Output_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlDiMuonAndVertex_Output_cff.py index 323ce65d62e10..72ab625a026ed 100644 --- a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlDiMuonAndVertex_Output_cff.py +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlDiMuonAndVertex_Output_cff.py @@ -20,7 +20,8 @@ 'keep L1GlobalTriggerReadoutRecord_gtDigis_*_*', 'keep *_TriggerResults_*_*', 'keep DcsStatuss_scalersRawToDigi_*_*', - 'keep *_offlinePrimaryVertices_*_*') + 'keep *_offlinePrimaryVertices_*_*', + 'keep *_offlineBeamSpot_*_*') ) # add branches for MC truth evaluation diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracksZMuMu_Output_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracksZMuMu_Output_cff.py new file mode 100644 index 0000000000000..8a27c4cd4d2f4 --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracksZMuMu_Output_cff.py @@ -0,0 +1,23 @@ +import FWCore.ParameterSet.Config as cms + +# AlCaReco for track based alignment using ZMuMu events +OutALCARECOTkAlHLTTracksZMuMu_noDrop = cms.PSet( + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('pathALCARECOTkAlHLTTracksZMuMu') + ), + outputCommands = cms.untracked.vstring( + 'keep recoTracks_ALCARECOTkAlHLTTracksZMuMu_*_*', + 'keep recoTrackExtras_ALCARECOTkAlHLTTracksZMuMu_*_*', + 'keep TrackingRecHitsOwned_ALCARECOTkAlHLTTracksZMuMu_*_*', + 'keep SiPixelClusteredmNewDetSetVector_ALCARECOTkAlHLTTracksZMuMu_*_*', + 'keep SiStripClusteredmNewDetSetVector_ALCARECOTkAlHLTTracksZMuMu_*_*', + 'keep L1AcceptBunchCrossings_*_*_*', + 'keep *_TriggerResults_*_*', + 'keep *_hltVerticesPFFilter_*_*', + 'keep *_hltOnlineBeamSpot_*_*' + ) +) + +OutALCARECOTkAlHLTTracksZMuMu = OutALCARECOTkAlHLTTracksZMuMu_noDrop.clone() +OutALCARECOTkAlHLTTracksZMuMu.outputCommands.insert(0, "drop *") + diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracksZMuMu_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracksZMuMu_cff.py new file mode 100644 index 0000000000000..dfc44efef45fc --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracksZMuMu_cff.py @@ -0,0 +1,60 @@ +import FWCore.ParameterSet.Config as cms + +import HLTrigger.HLTfilters.hltHighLevel_cfi +# AlCaReco for track based alignment using ZMuMu events +ALCARECOTkAlHLTTracksZMuMuHLT = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone( + andOr = True, ## choose logical OR between Triggerbits + # eventSetupPathsKey = 'TkAlZMuMu', + HLTPaths = ['HLT_*Mu*'], + throw = False # tolerate triggers stated above, but not available + ) + +# DCS partitions +# "EBp","EBm","EEp","EEm","HBHEa","HBHEb","HBHEc","HF","HO","RPC" +# "DT0","DTp","DTm","CSCp","CSCm","CASTOR","TIBTID","TOB","TECp","TECm" +# "BPIX","FPIX","ESp","ESm" +import DPGAnalysis.Skims.skim_detstatus_cfi +ALCARECOTkAlHLTTracksZMuMuDCSFilter = DPGAnalysis.Skims.skim_detstatus_cfi.dcsstatus.clone( + DetectorType = cms.vstring('TIBTID','TOB','TECp','TECm','BPIX','FPIX', + 'DT0','DTp','DTm','CSCp','CSCm'), + ApplyFilter = cms.bool(True), + AndOr = cms.bool(True), + DebugOn = cms.untracked.bool(False) +) + +import Alignment.CommonAlignmentProducer.TkAlMuonSelectors_cfi +ALCARECOTkAlHLTTracksZMuMuGoodMuons = Alignment.CommonAlignmentProducer.TkAlMuonSelectors_cfi.TkAlGoodIdMuonSelector.clone( + # src = cms.InputTag("hltPFMuonMerging") # TODO type cast to muon ??? +) +ALCARECOTkAlHLTTracksZMuMuRelCombIsoMuons = Alignment.CommonAlignmentProducer.TkAlMuonSelectors_cfi.TkAlRelCombIsoMuonSelector.clone( + src = 'ALCARECOTkAlHLTTracksZMuMuGoodMuons' +) + +import Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi +ALCARECOTkAlHLTTracksZMuMu = Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi.AlignmentTrackSelector.clone() +ALCARECOTkAlHLTTracksZMuMu.src = cms.InputTag("hltMergedTracks") +ALCARECOTkAlHLTTracksZMuMu.filter = True ##do not store empty events + +ALCARECOTkAlHLTTracksZMuMu.applyBasicCuts = True +ALCARECOTkAlHLTTracksZMuMu.ptMin = 15.0 ##GeV +ALCARECOTkAlHLTTracksZMuMu.etaMin = -3.5 +ALCARECOTkAlHLTTracksZMuMu.etaMax = 3.5 +ALCARECOTkAlHLTTracksZMuMu.nHitMin = 0 + +ALCARECOTkAlHLTTracksZMuMu.GlobalSelector.muonSource = 'ALCARECOTkAlHLTTracksZMuMuRelCombIsoMuons' +# Isolation is shifted to the muon preselection, and then applied intrinsically if applyGlobalMuonFilter = True +ALCARECOTkAlHLTTracksZMuMu.GlobalSelector.applyIsolationtest = False +ALCARECOTkAlHLTTracksZMuMu.GlobalSelector.applyGlobalMuonFilter = True + +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.applyMassrangeFilter = True +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.minXMass = 65.0 ##GeV +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.maxXMass = 115.0 ##GeV +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.daughterMass = 0.105 ##GeV (Muons) +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.applyChargeFilter = True +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.charge = 0 +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.applyAcoplanarityFilter = False +ALCARECOTkAlHLTTracksZMuMu.TwoBodyDecaySelector.numberOfCandidates = 1 + +seqALCARECOTkAlHLTTracksZMuMu = cms.Sequence(ALCARECOTkAlHLTTracksZMuMuHLT+ALCARECOTkAlHLTTracksZMuMuDCSFilter+ALCARECOTkAlHLTTracksZMuMuGoodMuons+ALCARECOTkAlHLTTracksZMuMuRelCombIsoMuons+ALCARECOTkAlHLTTracksZMuMu) + + diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracks_Output_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracks_Output_cff.py new file mode 100644 index 0000000000000..de4fd28d8f5ed --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracks_Output_cff.py @@ -0,0 +1,21 @@ +import FWCore.ParameterSet.Config as cms + +# AlCaReco for track based alignment using MinBias events +OutALCARECOTkAlHLTTracks_noDrop = cms.PSet( + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('pathALCARECOTkAlHLTTracks') + ), + outputCommands = cms.untracked.vstring( + 'keep recoTracks_ALCARECOTkAlHLTTracks_*_*', + 'keep recoTrackExtras_ALCARECOTkAlHLTTracks_*_*', + 'keep TrackingRecHitsOwned_ALCARECOTkAlHLTTracks_*_*', + 'keep SiPixelClusteredmNewDetSetVector_ALCARECOTkAlHLTTracks_*_*', + 'keep SiStripClusteredmNewDetSetVector_ALCARECOTkAlHLTTracks_*_*', + 'keep L1AcceptBunchCrossings_*_*_*', + 'keep *_TriggerResults_*_*', + 'keep *_hltVerticesPFFilter_*_*', + 'keep *_hltOnlineBeamSpot_*_*') +) + +OutALCARECOTkAlHLTTracks = OutALCARECOTkAlHLTTracks_noDrop.clone() +OutALCARECOTkAlHLTTracks.outputCommands.insert(0, "drop *") diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracks_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracks_cff.py new file mode 100644 index 0000000000000..9bebbf3cb5dfd --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlHLTTracks_cff.py @@ -0,0 +1,43 @@ +# AlCaReco for track based alignment using HLT tracks +import FWCore.ParameterSet.Config as cms + +import HLTrigger.HLTfilters.hltHighLevel_cfi + +ALCARECOTkAlHLTTracksHLT = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone( + andOr = True, ## choose logical OR between Triggerbits + # eventSetupPathsKey = 'TkAlMinBias', + HLTPaths = ['HLT_*'], + throw = False # tolerate triggers stated above, but not available + ) + +# DCS partitions +# "EBp","EBm","EEp","EEm","HBHEa","HBHEb","HBHEc","HF","HO","RPC" +# "DT0","DTp","DTm","CSCp","CSCm","CASTOR","TIBTID","TOB","TECp","TECm" +# "BPIX","FPIX","ESp","ESm" +import DPGAnalysis.Skims.skim_detstatus_cfi +ALCARECOTkAlHLTTracksDCSFilter = DPGAnalysis.Skims.skim_detstatus_cfi.dcsstatus.clone( + DetectorType = cms.vstring('TIBTID','TOB','TECp','TECm','BPIX','FPIX'), + ApplyFilter = cms.bool(True), + AndOr = cms.bool(True), + DebugOn = cms.untracked.bool(False) +) + +import Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi +ALCARECOTkAlHLTTracks = Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi.AlignmentTrackSelector.clone() +ALCARECOTkAlHLTTracks.src = cms.InputTag("hltMergedTracks") # run on hltMergedTracks instead of generalTracks +ALCARECOTkAlHLTTracks.filter = True ##do not store empty events + +ALCARECOTkAlHLTTracks.applyBasicCuts = True +ALCARECOTkAlHLTTracks.ptMin = 0.65 ##GeV +ALCARECOTkAlHLTTracks.pMin = 1.5 ##GeV + +ALCARECOTkAlHLTTracks.etaMin = -3.5 +ALCARECOTkAlHLTTracks.etaMax = 3.5 +ALCARECOTkAlHLTTracks.nHitMin = 7 ## at least 7 hits required +ALCARECOTkAlHLTTracks.GlobalSelector.applyIsolationtest = False +ALCARECOTkAlHLTTracks.GlobalSelector.applyGlobalMuonFilter = False +ALCARECOTkAlHLTTracks.TwoBodyDecaySelector.applyMassrangeFilter = False +ALCARECOTkAlHLTTracks.TwoBodyDecaySelector.applyChargeFilter = False +ALCARECOTkAlHLTTracks.TwoBodyDecaySelector.applyAcoplanarityFilter = False + +seqALCARECOTkAlHLTTracks = cms.Sequence(ALCARECOTkAlHLTTracksHLT+ALCARECOTkAlHLTTracksDCSFilter+ALCARECOTkAlHLTTracks) diff --git a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlZMuMu_Output_cff.py b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlZMuMu_Output_cff.py index fc8dd02a65873..4e91bbf5b563a 100644 --- a/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlZMuMu_Output_cff.py +++ b/Alignment/CommonAlignmentProducer/python/ALCARECOTkAlZMuMu_Output_cff.py @@ -15,7 +15,8 @@ 'keep L1GlobalTriggerReadoutRecord_gtDigis_*_*', 'keep *_TriggerResults_*_*', 'keep DcsStatuss_scalersRawToDigi_*_*', - 'keep *_offlinePrimaryVertices_*_*') + 'keep *_offlinePrimaryVertices_*_*', + 'keep *_offlineBeamSpot_*_*') ) # add branches for MC truth evaluation diff --git a/Alignment/CommonAlignmentProducer/python/AlcaSiPixelAliHarvesterHLTHGCombined_cff.py b/Alignment/CommonAlignmentProducer/python/AlcaSiPixelAliHarvesterHLTHGCombined_cff.py new file mode 100644 index 0000000000000..c1bf104f1aad9 --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/AlcaSiPixelAliHarvesterHLTHGCombined_cff.py @@ -0,0 +1,93 @@ +import FWCore.ParameterSet.Config as cms + +SiPixelAliMilleFileExtractorHLTHGMinBias = cms.EDAnalyzer("MillePedeFileExtractor", + fileBlobInputTag = cms.InputTag("SiPixelAliMillePedeFileConverterHLTHG",''), + fileDir = cms.string('HLTHGCombinedAlignment/'), + # File names the Extractor will use to write the fileblobs in the root + # file as real binary files to disk, so that the pede step can read them. + # This includes the formatting directive "%04d" which will be expanded to + # 0000, 0001, 0002,... + outputBinaryFile = cms.string('pedeBinaryHLTHGMinBias%04d.dat')) + +SiPixelAliMilleFileExtractorHLTHGZMuMu = cms.EDAnalyzer("MillePedeFileExtractor", + fileBlobInputTag = cms.InputTag("SiPixelAliMillePedeFileConverterHLTHGDimuon",''), + fileDir = cms.string('HLTHGCombinedAlignment/'), + # File names the Extractor will use to write the fileblobs in the root + # file as real binary files to disk, so that the pede step can read them. + # This includes the formatting directive "%04d" which will be expanded to + # 0000, 0001, 0002,... + outputBinaryFile = cms.string('pedeBinaryHLTHGDiMuon%04d.dat')) + +from Alignment.MillePedeAlignmentAlgorithm.MillePedeAlignmentAlgorithm_cfi import * +from Alignment.CommonAlignmentProducer.AlignmentProducerAsAnalyzer_cff import AlignmentProducer +from Alignment.MillePedeAlignmentAlgorithm.MillePedeDQMModule_cff import * + +SiPixelAliPedeAlignmentProducerHLTHGCombined = AlignmentProducer.clone( + ParameterBuilder = dict( + Selector = cms.PSet( + alignParams = cms.vstring( + "TrackerP1PXBLadder,111111", + "TrackerP1PXECPanel,111111", + ) + ) + ), + doMisalignmentScenario = False, + checkDbAlignmentValidity = False, + applyDbAlignment = True, + tjTkAssociationMapTag = 'TrackRefitter2', + saveToDB = True, + trackerAlignmentRcdName = "TrackerAlignmentHLTHGCombinedRcd" +) + +SiPixelAliPedeAlignmentProducerHLTHGCombined.algoConfig = MillePedeAlignmentAlgorithm.clone( + mode = 'pede', + runAtPCL = True, + #mergeBinaryFiles = [SiPixelAliMilleFileExtractorHGMinBias.outputBinaryFile.value()], + #mergeBinaryFiles = [SiPixelAliMilleFileExtractorHGZMuMu.outputBinaryFile.value()], + mergeBinaryFiles = ['pedeBinaryHLTHGMinBias%04d.dat','pedeBinaryHLTHGDiMuon%04d.dat -- 10.0'], + binaryFile = '', + TrajectoryFactory = cms.PSet(BrokenLinesTrajectoryFactory), + minNumHits = 10, + fileDir = 'HLTHGCombinedAlignment/', + pedeSteerer = dict( + pedeCommand = 'pede', + method = 'inversion 5 0.8', + options = [ + #'regularisation 1.0 0.05', # non-stated pre-sigma 50 mrad or 500 mum + 'entries 500', + 'chisqcut 30.0 4.5', + 'threads 1 1', + 'closeandreopen', + 'skipemptycons' + #'outlierdownweighting 3','dwfractioncut 0.1' + #'outlierdownweighting 5','dwfractioncut 0.2' + ], + fileDir = 'HLTHGCombinedAlignment/', + runDir = 'HLTHGCombinedAlignment/', + steerFile = 'pedeSteerHGCombined', + pedeDump = 'pedeHGCombined.dump' + ), + pedeReader = dict( + fileDir = 'HLTHGCombinedAlignment/' + ), + MillePedeFileReader = dict( + fileDir = "HLTHGCombinedAlignment/", + isHG = True + ) +) + +SiPixelAliDQMModuleHLTHGCombined = SiPixelAliDQMModule.clone() +SiPixelAliDQMModuleHLTHGCombined.outputFolder = "AlCaReco/SiPixelAliHLTHGCombined" +SiPixelAliDQMModuleHLTHGCombined.MillePedeFileReader.fileDir = "HLTHGCombinedAlignment/" +SiPixelAliDQMModuleHLTHGCombined.MillePedeFileReader.isHG = True + +from DQMServices.Core.DQMEDHarvester import DQMEDHarvester +dqmEnvSiPixelAliHLTHGCombined = DQMEDHarvester('DQMHarvestingMetadata', + subSystemFolder = cms.untracked.string('AlCaReco')) + +ALCAHARVESTSiPixelAliHLTHGCombined = cms.Sequence( + SiPixelAliMilleFileExtractorHLTHGMinBias* + SiPixelAliMilleFileExtractorHLTHGZMuMu* + SiPixelAliPedeAlignmentProducerHLTHGCombined* + SiPixelAliDQMModuleHLTHGCombined* + dqmEnvSiPixelAliHLTHGCombined) diff --git a/Alignment/CommonAlignmentProducer/python/HLTModulesIncludes_cff.py b/Alignment/CommonAlignmentProducer/python/HLTModulesIncludes_cff.py new file mode 100644 index 0000000000000..b2f3c2ba39a53 --- /dev/null +++ b/Alignment/CommonAlignmentProducer/python/HLTModulesIncludes_cff.py @@ -0,0 +1,5 @@ +from HLTrigger.Configuration.HLT_FULL_cff import fragment + +hltESPStripCPEfromTrackAngle = fragment.hltESPStripCPEfromTrackAngle +hltESPPixelCPEGeneric = fragment.hltESPPixelCPEGeneric +hltESPTTRHBWithTrackAngle = fragment.hltESPTTRHBWithTrackAngle diff --git a/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_ParallelJobs.py b/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_ParallelJobs.py index fb8aad6191674..9a40a62733fb6 100755 --- a/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_ParallelJobs.py +++ b/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_ParallelJobs.py @@ -7,7 +7,6 @@ # by: $Author: mussgill $ #----------------------------------------------------- -from __future__ import print_function import re import json import os diff --git a/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_QueryRunRegistry.py b/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_QueryRunRegistry.py index 51f9ef208b68a..1f37ddee7a123 100755 --- a/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_QueryRunRegistry.py +++ b/Alignment/CommonAlignmentProducer/scripts/AlCaHLTBitMon_QueryRunRegistry.py @@ -7,7 +7,6 @@ # by: $Author: taroni $ #----------------------------------------------------- -from __future__ import print_function from xml.dom import minidom import re import json diff --git a/Alignment/CommonAlignmentProducer/test/test-PromptCalibProdSiPixelAliHLTHGC.sh b/Alignment/CommonAlignmentProducer/test/test-PromptCalibProdSiPixelAliHLTHGC.sh new file mode 100755 index 0000000000000..f9bed3ebb2aac --- /dev/null +++ b/Alignment/CommonAlignmentProducer/test/test-PromptCalibProdSiPixelAliHLTHGC.sh @@ -0,0 +1,60 @@ +#!/bin/bash -ex + +cmsDriver.py testReAlCaHLT \ + -s ALCA:TkAlHLTTracks+TkAlHLTTracksZMuMu \ + --conditions 140X_dataRun3_Express_v3 \ + --scenario pp \ + --data \ + --era Run3_2024 \ + --datatier ALCARECO \ + --eventcontent ALCARECO \ + --processName=ReAlCa \ + -n 100000 \ + --dasquery='file dataset=/HLTMonitor/Run2024I-Express-v2/FEVTHLTALL site=T2_CH_CERN' \ + --nThreads 4 >& ReAlCa.log + +cmsDriver.py testReAlCaHLTHGComb \ + -s ALCA:PromptCalibProdSiPixelAliHLTHGC \ + --conditions 140X_dataRun3_Express_v3 \ + --scenario pp \ + --data \ + --era Run3_2024 \ + --datatier ALCARECO \ + --eventcontent ALCARECO \ + --processName=ReAlCaHLTHGC \ + -n -1 \ + --filein file:TkAlHLTTracks.root \ + --customise Alignment/CommonAlignmentProducer/customizeLSNumberFilterForRelVals.doNotFilterLS \ + --customise_commands='process.ALCARECOTkAlZMuMuFilterForSiPixelAliHLT.throw = False;process.ALCARECOTkAlMinBiasFilterForSiPixelAliHLTHG.TriggerResultsTag = "TriggerResults::ReAlCa"' \ + --triggerResultsProcess ReAlCa \ + --nThreads 4 >& HLTHGComb_1.log + +rm -rf *.dat +mv PromptCalibProdSiPixelAliHLTHGC.root PromptCalibProdSiPixelAliHLTHGC_0.root + +cmsDriver.py testReAlCaHLTHGComb \ + -s ALCA:PromptCalibProdSiPixelAliHLTHGC \ + --conditions 140X_dataRun3_Express_v3 \ + --scenario pp \ + --data \ + --era Run3_2024 \ + --datatier ALCARECO \ + --eventcontent ALCARECO \ + --processName=ReAlCaHLTHGC \ + -n -1 \ + --filein file:TkAlHLTTracksZMuMu.root \ + --customise Alignment/CommonAlignmentProducer/customizeLSNumberFilterForRelVals.doNotFilterLS \ + --customise_commands='process.ALCARECOTkAlZMuMuFilterForSiPixelAliHLT.TriggerResultsTag = "TriggerResults::ReAlCa";process.ALCARECOTkAlMinBiasFilterForSiPixelAliHLTHG.throw = False' \ + --triggerResultsProcess ReAlCa \ + --nThreads 4 >& HLTHGComb_2.log + +mv PromptCalibProdSiPixelAliHLTHGC.root PromptCalibProdSiPixelAliHLTHGC_1.root + +cmsDriver.py stepHarvest \ + -s ALCAHARVEST:SiPixelAliHLTHGCombined \ + --conditions 140X_dataRun3_Express_v3 \ + --scenario pp \ + --data \ + --era Run3_2024 \ + -n -1 \ + --filein file:PromptCalibProdSiPixelAliHLTHGC_0.root,file:PromptCalibProdSiPixelAliHLTHGC_1.root >& Harvesting.log diff --git a/Alignment/HIPAlignmentAlgorithm/python/OptionParser/HipPyOptionParser.py b/Alignment/HIPAlignmentAlgorithm/python/OptionParser/HipPyOptionParser.py index d2d0dc463ce62..1c456db10687c 100644 --- a/Alignment/HIPAlignmentAlgorithm/python/OptionParser/HipPyOptionParser.py +++ b/Alignment/HIPAlignmentAlgorithm/python/OptionParser/HipPyOptionParser.py @@ -1,4 +1,3 @@ -from __future__ import print_function from array import array from copy import copy from copy import deepcopy diff --git a/Alignment/HIPAlignmentAlgorithm/scripts/batchHippy.py b/Alignment/HIPAlignmentAlgorithm/scripts/batchHippy.py index 6334012a1a18d..54aacab003b42 100755 --- a/Alignment/HIPAlignmentAlgorithm/scripts/batchHippy.py +++ b/Alignment/HIPAlignmentAlgorithm/scripts/batchHippy.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import imp import copy diff --git a/Alignment/HIPAlignmentAlgorithm/scripts/hippyaddtobaddatafiles.py b/Alignment/HIPAlignmentAlgorithm/scripts/hippyaddtobaddatafiles.py index 5ea7ab7094ec1..166a5e3043aee 100755 --- a/Alignment/HIPAlignmentAlgorithm/scripts/hippyaddtobaddatafiles.py +++ b/Alignment/HIPAlignmentAlgorithm/scripts/hippyaddtobaddatafiles.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import argparse, contextlib, os, re, shutil, subprocess, tempfile, time diff --git a/Alignment/HIPAlignmentAlgorithm/test/runTwoBodyDecayTest.py b/Alignment/HIPAlignmentAlgorithm/test/runTwoBodyDecayTest.py index 18002c192d6ff..fc8d53b2ffc55 100644 --- a/Alignment/HIPAlignmentAlgorithm/test/runTwoBodyDecayTest.py +++ b/Alignment/HIPAlignmentAlgorithm/test/runTwoBodyDecayTest.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("TBDtest") diff --git a/Alignment/MillePedeAlignmentAlgorithm/plugins/MillePedeAlignmentAlgorithm.cc b/Alignment/MillePedeAlignmentAlgorithm/plugins/MillePedeAlignmentAlgorithm.cc index 1cc31f5b2db17..5ffe0431cea6e 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/plugins/MillePedeAlignmentAlgorithm.cc +++ b/Alignment/MillePedeAlignmentAlgorithm/plugins/MillePedeAlignmentAlgorithm.cc @@ -396,7 +396,7 @@ void MillePedeAlignmentAlgorithm::terminate() { std::string filesForLogOutput; for (const auto &file : files) filesForLogOutput += " " + file + ","; - if (filesForLogOutput.length() != 0) + if (!filesForLogOutput.empty()) filesForLogOutput.pop_back(); edm::LogInfo("Alignment") << "Based on the config parameter mergeBinaryFiles, using the following " << "files as input (assigned weights are indicated by ' -- '):" diff --git a/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/GeneralSetup.py b/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/GeneralSetup.py index 1c7e4f40d9850..d11abb189d125 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/GeneralSetup.py +++ b/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/GeneralSetup.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re def setup(process, global_tag, zero_tesla=False, geometry=""): diff --git a/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/MilleSetup.py b/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/MilleSetup.py index cdde258756c69..7b9261d34b26b 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/MilleSetup.py +++ b/Alignment/MillePedeAlignmentAlgorithm/python/alignmentsetup/MilleSetup.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms diff --git a/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/Mpslibclass.py b/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/Mpslibclass.py index a2dc696879322..171e7babdd056 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/Mpslibclass.py +++ b/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/Mpslibclass.py @@ -1,4 +1,3 @@ -from __future__ import print_function # This Jobdatabas-Class interacts with the mps.db file. # It's member-variables are often called in the mps_... scripts. # diff --git a/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/tools.py b/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/tools.py index 8f11f81db1ccd..0cb2c5eade413 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/tools.py +++ b/Alignment/MillePedeAlignmentAlgorithm/python/mpslib/tools.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import os import re diff --git a/Alignment/MillePedeAlignmentAlgorithm/python/mpsvalidate/classes.py b/Alignment/MillePedeAlignmentAlgorithm/python/mpsvalidate/classes.py index b47b557f31d81..09306a6d5bede 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/python/mpsvalidate/classes.py +++ b/Alignment/MillePedeAlignmentAlgorithm/python/mpsvalidate/classes.py @@ -1,4 +1,3 @@ -from __future__ import print_function ########################################################################## # Classes which are needed by the mps_validate.py file. ## diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_alisetup.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_alisetup.py index 1d0cb8339e874..3f7aae9016c49 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_alisetup.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_alisetup.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import re import sys diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_check.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_check.py index 05efad22085dc..71445577ee8f4 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_check.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_check.py @@ -11,7 +11,6 @@ # # It also retirieves number of events from alignment.log and cputime from STDOUT -from __future__ import print_function from builtins import range import Alignment.MillePedeAlignmentAlgorithm.mpslib.Mpslibclass as mpslib import subprocess diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_fire.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_fire.py index a5ac4e778c83f..2f5ee65658508 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_fire.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_fire.py @@ -12,7 +12,6 @@ # mps_fire.py [-a] [-m [-f]] [maxjobs] # mps_fire.py -h -from __future__ import print_function from builtins import range import Alignment.MillePedeAlignmentAlgorithm.mpslib.Mpslibclass as mpslib import Alignment.MillePedeAlignmentAlgorithm.mpslib.tools as mps_tools diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_list_evts.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_list_evts.py index 6e5c43efd2925..a49435e1332cb 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_list_evts.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_list_evts.py @@ -14,7 +14,6 @@ M. Schroeder, DESY Hamburg 26-May-2014 """ -from __future__ import print_function import sys diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_merge.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_merge.py index f39449f974a47..75f253d205634 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_merge.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_merge.py @@ -6,7 +6,6 @@ # # mps_merge.pl [-c] inCfg mergeCfg mergeDir njobs -from __future__ import print_function from builtins import range import Alignment.MillePedeAlignmentAlgorithm.mpslib.Mpslibclass as mpslib import re diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_monitormerge.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_monitormerge.py index 0abb64d27b2c0..6e966092683bc 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_monitormerge.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_monitormerge.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import os import subprocess diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_parse_pedechi2hist.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_parse_pedechi2hist.py index e8b63c96868c0..b6436de2433c6 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_parse_pedechi2hist.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_parse_pedechi2hist.py @@ -15,7 +15,6 @@ # # Use createChi2ndfplot.C to plot the output of this script. -from __future__ import print_function import os import sys import re diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup.py index 5863cdaf6d3aa..12959ad5de253 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import os import re diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup_new_align.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup_new_align.py index ac1484ea0ae29..ac4bec474365b 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup_new_align.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_setup_new_align.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import sys import re diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_splice.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_splice.py index ca49722a4d9d0..c7db8ceb352d7 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_splice.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_splice.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import re import argparse diff --git a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_update.py b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_update.py index 3b7af2d933fa0..bc8a1ca2fbdac 100755 --- a/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_update.py +++ b/Alignment/MillePedeAlignmentAlgorithm/scripts/mps_update.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import os import re diff --git a/Alignment/MillePedeAlignmentAlgorithm/test/trackerTree_cfg.py b/Alignment/MillePedeAlignmentAlgorithm/test/trackerTree_cfg.py index 29a788200ff00..5f3c3ae8735ab 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/test/trackerTree_cfg.py +++ b/Alignment/MillePedeAlignmentAlgorithm/test/trackerTree_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function ########################################################################## # Creates the TrackerTree.root file. # Configuration file from TrackerAlignment/test/trackerTreeGenerator_cfg.py diff --git a/Alignment/MuonAlignment/python/geometryCSVtoXML.py b/Alignment/MuonAlignment/python/geometryCSVtoXML.py index 1c937acd4a4ea..6976c20e93518 100755 --- a/Alignment/MuonAlignment/python/geometryCSVtoXML.py +++ b/Alignment/MuonAlignment/python/geometryCSVtoXML.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # External libraries (standard in Python >= 2.4, at least) -from __future__ import print_function from sys import stdin from re import split, sub diff --git a/Alignment/MuonAlignment/python/geometryDiff.py b/Alignment/MuonAlignment/python/geometryDiff.py index 7f7789a95677d..897728fb43ea0 100755 --- a/Alignment/MuonAlignment/python/geometryDiff.py +++ b/Alignment/MuonAlignment/python/geometryDiff.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function from builtins import range from Alignment.MuonAlignment.geometryXMLparser import MuonGeometry, dtorder, cscorder import sys, getopt diff --git a/Alignment/MuonAlignment/python/geometryDiffVisualization.py b/Alignment/MuonAlignment/python/geometryDiffVisualization.py index e2d7170dd8ec2..199757234cc56 100644 --- a/Alignment/MuonAlignment/python/geometryDiffVisualization.py +++ b/Alignment/MuonAlignment/python/geometryDiffVisualization.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import re from math import * from .svgfig import rgb, SVG, pathtoPath, load as load_svg diff --git a/Alignment/MuonAlignment/python/geometryXMLtoCSV.py b/Alignment/MuonAlignment/python/geometryXMLtoCSV.py index 6a8709eb8026f..dcbcffff370f5 100755 --- a/Alignment/MuonAlignment/python/geometryXMLtoCSV.py +++ b/Alignment/MuonAlignment/python/geometryXMLtoCSV.py @@ -24,7 +24,6 @@ # } # External libraries (standard in Python >= 2.4, at least) -from __future__ import print_function from xml.sax import handler, make_parser from sys import stdin diff --git a/Alignment/MuonAlignment/python/makeMuonMisalignmentScenario.py b/Alignment/MuonAlignment/python/makeMuonMisalignmentScenario.py index 94f73d058f1a1..d8badbbfd0a75 100644 --- a/Alignment/MuonAlignment/python/makeMuonMisalignmentScenario.py +++ b/Alignment/MuonAlignment/python/makeMuonMisalignmentScenario.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range from optparse import OptionParser from random import gauss diff --git a/Alignment/MuonAlignment/src/MuonScenarioBuilder.cc b/Alignment/MuonAlignment/src/MuonScenarioBuilder.cc index 5715d4f4104cd..5e57d107b3afb 100644 --- a/Alignment/MuonAlignment/src/MuonScenarioBuilder.cc +++ b/Alignment/MuonAlignment/src/MuonScenarioBuilder.cc @@ -89,7 +89,7 @@ align::Scalars MuonScenarioBuilder::extractParameters(const edm::ParameterSet& p else if ((*iParam) == "dZ") dZ_ = Parameters.getParameter(*iParam); else if (Parameters.retrieve(*iParam).typeCode() != 'P') { // Add unknown parameter to list - if (!error.str().length()) + if (error.str().empty()) error << "Unknown parameter name(s): "; error << " " << *iParam; } diff --git a/Alignment/MuonAlignment/test/muonGeometryDBConverter_cfg.py b/Alignment/MuonAlignment/test/muonGeometryDBConverter_cfg.py index b70f9569d469a..51230e0b5b998 100644 --- a/Alignment/MuonAlignment/test/muonGeometryDBConverter_cfg.py +++ b/Alignment/MuonAlignment/test/muonGeometryDBConverter_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/Alignment/MuonAlignmentAlgorithms/python/gather_cfg.py b/Alignment/MuonAlignmentAlgorithms/python/gather_cfg.py index a01da4e1b95cd..1d309fe237867 100644 --- a/Alignment/MuonAlignmentAlgorithms/python/gather_cfg.py +++ b/Alignment/MuonAlignmentAlgorithms/python/gather_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/alignCSCRings.py b/Alignment/MuonAlignmentAlgorithms/scripts/alignCSCRings.py index fbf3eb91276bd..c7d41ccc44d8a 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/alignCSCRings.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/alignCSCRings.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import re,os,sys,shutil import optparse diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/alignmentValidation.py b/Alignment/MuonAlignmentAlgorithms/scripts/alignmentValidation.py index 248c4d4fc332f..de94251351de6 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/alignmentValidation.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/alignmentValidation.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import re,os,sys,shutil import optparse diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/applyRadialCorrections.py b/Alignment/MuonAlignmentAlgorithms/scripts/applyRadialCorrections.py index 2a7627579dc48..335bce4cbaf8e 100644 --- a/Alignment/MuonAlignmentAlgorithms/scripts/applyRadialCorrections.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/applyRadialCorrections.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range mep11angle = 0.002 # guess mep12angle = 0.002 # guess diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/convertSQLiteXML.py b/Alignment/MuonAlignmentAlgorithms/scripts/convertSQLiteXML.py index e066cadfc6088..f856246ce0923 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/convertSQLiteXML.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/convertSQLiteXML.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os, sys, optparse, math prog = sys.argv[0] diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/corrVsCorr.py b/Alignment/MuonAlignmentAlgorithms/scripts/corrVsCorr.py index 815eaec8476ef..fd5d9e703f618 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/corrVsCorr.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/corrVsCorr.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import sys, optparse diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/createBeamHaloJobs.py b/Alignment/MuonAlignmentAlgorithms/scripts/createBeamHaloJobs.py index 85a15e8159eed..e4c9401211e9c 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/createBeamHaloJobs.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/createBeamHaloJobs.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import os, sys, re, optparse, math diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/createCSCRingsJobs.py b/Alignment/MuonAlignmentAlgorithms/scripts/createCSCRingsJobs.py index d50fc4f852629..dd224a7161f7c 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/createCSCRingsJobs.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/createCSCRingsJobs.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import os, sys, optparse, math diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/createJobs.py b/Alignment/MuonAlignmentAlgorithms/scripts/createJobs.py index 001a19ea1d997..0a457f99e6e18 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/createJobs.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/createJobs.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import os, sys, optparse, math diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/createTree.py b/Alignment/MuonAlignmentAlgorithms/scripts/createTree.py index 3b70c97743a7f..68e1ad723aa47 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/createTree.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/createTree.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import re,os,sys import optparse diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/diffTwoXMLs.py b/Alignment/MuonAlignmentAlgorithms/scripts/diffTwoXMLs.py index 0d43eca138b52..28f95b1dfed78 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/diffTwoXMLs.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/diffTwoXMLs.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import sys, ROOT ROOT.gROOT.SetBatch(1) diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/findQualityFiles.py b/Alignment/MuonAlignmentAlgorithms/scripts/findQualityFiles.py index a3b19fcefc292..715b4fb6d2bf5 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/findQualityFiles.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/findQualityFiles.py @@ -6,7 +6,6 @@ ### also run it with -h option ###################################################### -from __future__ import print_function from builtins import range import os,sys, DLFCN import optparse diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/geometryDiffVisualizer.py b/Alignment/MuonAlignmentAlgorithms/scripts/geometryDiffVisualizer.py index bdc7d3a403999..cb4cfcaf0c671 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/geometryDiffVisualizer.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/geometryDiffVisualizer.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import sys, ROOT from geometryDiffVisualization import * diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/groupFilesInBlocks.py b/Alignment/MuonAlignmentAlgorithms/scripts/groupFilesInBlocks.py index 33fe45b21cc04..1f55117a2a3e1 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/groupFilesInBlocks.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/groupFilesInBlocks.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import re,os,sys,shutil,math import optparse diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/motionPolicyChamber.py b/Alignment/MuonAlignmentAlgorithms/scripts/motionPolicyChamber.py index f6664b0136a68..1b0ad37bea713 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/motionPolicyChamber.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/motionPolicyChamber.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import os, sys, optparse, math, copy from Alignment.MuonAlignment.geometryXMLparser import MuonGeometry, dtorder, cscorder diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/plotscripts.py b/Alignment/MuonAlignmentAlgorithms/scripts/plotscripts.py index aa063b4371949..54bf8b0e1fd59 100644 --- a/Alignment/MuonAlignmentAlgorithms/scripts/plotscripts.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/plotscripts.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT, array, os, re, random from math import * diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/relativeConstraints.py b/Alignment/MuonAlignmentAlgorithms/scripts/relativeConstraints.py index cd7fff1f49451..d32ea89839594 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/relativeConstraints.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/relativeConstraints.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys, optparse, re, math from Alignment.MuonAlignment.geometryXMLparser import MuonGeometry diff --git a/Alignment/MuonAlignmentAlgorithms/scripts/reportVsReport.py b/Alignment/MuonAlignmentAlgorithms/scripts/reportVsReport.py index 3c219fa6865eb..243582a05b588 100755 --- a/Alignment/MuonAlignmentAlgorithms/scripts/reportVsReport.py +++ b/Alignment/MuonAlignmentAlgorithms/scripts/reportVsReport.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import sys, optparse diff --git a/Alignment/OfflineValidation/README.md b/Alignment/OfflineValidation/README.md index d7c4554d9812d..499ca94d70660 100644 --- a/Alignment/OfflineValidation/README.md +++ b/Alignment/OfflineValidation/README.md @@ -117,5 +117,11 @@ For details read [`README_JetHT.md`](https://github.com/cms-sw/cmssw/blob/master ## MTS validation For details read [`README_MTS.md`](https://github.com/cms-sw/cmssw/blob/master/Alignment/OfflineValidation/README_MTS.md) +## Pixel BaryCenter +For details read [`README_MTS.md`](https://github.com/cms-sw/cmssw/blob/master/Alignment/OfflineValidation/README_PixBary.md) + +## Generic validation (dataset validation) +For details read [`README_Generic.md`](https://github.com/cms-sw/cmssw/blob/master/Alignment/OfflineValidation/README_Generic.md) + ## General info about IOV/run arguments For details read [`README_IOV.md`](https://github.com/cms-sw/cmssw/blob/master/Alignment/OfflineValidation/README_IOV.md) diff --git a/Alignment/OfflineValidation/README_Generic.md b/Alignment/OfflineValidation/README_Generic.md new file mode 100644 index 0000000000000..aa84a9693abd6 --- /dev/null +++ b/Alignment/OfflineValidation/README_Generic.md @@ -0,0 +1,39 @@ +# Generic Validation + +## General info +``` +validations: + Generic: + : + : + +``` + +Generic validation runs in 2 possible types of steps: + - single (validation analysis by GenericV_cfg.py) + - (optional) merge (GenericVmerge macro) +Step name is and arbitrary string which will be used as a reference for consequent steps. +Merge job awill only start if all corresponding single jobs are done. +Merge jobs can run in parallel. + +## Single Generic jobs +Single jobs can be specified per run (IoV as well). In case of MC, IoV is specified to arbitrary 1. + +Variable | Default value | Explanation/Options +-------- | ------------- | -------------------- +IOV | None | List of IOVs/runs defined by integer value. IOV 1 is reserved for MC. +Alignments | None | List of alignments. Will create separate directory for each. +dataset | See defaultInputFiles_cff.py | Path to txt file containing list of datasets to be used. If file is missing at EOS or is corrupted - job will eventually fail (most common issue). +goodlumi | cms.untracked.VLuminosityBlockRange() | Path to json file containing lumi information about selected IoV - must contain list of runs under particular IoV with lumiblock info. Format: `IOV_Vali_{}.json` +maxevents | 1 | Maximum number of events before cmsRun terminates. +trackcollection | "generalTracks" | Track collection to be specified here, e.g. "ALCARECOTkAlMuonIsolated" or "ALCARECOTkAlMinBias" ... +tthrbuilder | "WithAngleAndTemplate" | Specify TTRH Builder + +## Merge Generic job +Its name do not need to match single job name but option `singles` must list all single jobs to be merged. +Generic merged plot style can be adjusted from global plotting style. + +Variable | Default value | Explanation/Options +-------- | ------------- | -------------------- +singles | None | List of strings matching single job names to be merged in one plot. +customrighttitle | "" | Top right title. Reserved word "IOV" will be replaced for given IOV/run in the list. diff --git a/Alignment/OfflineValidation/bin/BuildFile.xml b/Alignment/OfflineValidation/bin/BuildFile.xml index 023f203f5c619..b565094c92cb2 100644 --- a/Alignment/OfflineValidation/bin/BuildFile.xml +++ b/Alignment/OfflineValidation/bin/BuildFile.xml @@ -18,6 +18,7 @@ + diff --git a/Alignment/OfflineValidation/bin/GenericVmerge.cc b/Alignment/OfflineValidation/bin/GenericVmerge.cc new file mode 100644 index 0000000000000..5d1b7f3ad1dfc --- /dev/null +++ b/Alignment/OfflineValidation/bin/GenericVmerge.cc @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include + +#include "exceptions.h" +#include "toolbox.h" +#include "Options.h" + +#include "boost/filesystem.hpp" +#include "boost/property_tree/ptree.hpp" +#include "boost/property_tree/json_parser.hpp" +#include "boost/optional.hpp" + +#include "TString.h" +#include "TASImage.h" +#include "TGraph.h" + +#include "Alignment/OfflineValidation/macros/loopAndPlot.C" +#include "Alignment/OfflineValidation/interface/TkAlStyle.h" + +using namespace std; +using namespace AllInOneConfig; + +namespace pt = boost::property_tree; + +int merge(int argc, char* argv[]) { + // parse the command line + + Options options; + options.helper(argc, argv); + options.parser(argc, argv); + + //Read in AllInOne json config + pt::ptree main_tree; + pt::read_json(options.config, main_tree); + + pt::ptree alignments = main_tree.get_child("alignments"); + pt::ptree validation = main_tree.get_child("validation"); + + TString filesAndLabels; + for (const auto& childTree : alignments) { + // Print node name and its attributes + // std::cout << "Node: " << childTree.first << std::endl; + // for (const auto& attr : childTree.second) { + // std::cout << " Attribute: " << attr.first << " = " << attr.second.data() << std::endl; + // } + + std::string file = childTree.second.get("file"); + std::cout << file << std::endl; + std::cout << childTree.second.get("title") << std::endl; + + // Check if the file contains "/eos/cms/" and add the prefix accordingly + std::string prefixToAdd = file.find("/eos/cms/") != std::string::npos ? "root://eoscms.cern.ch/" : ""; + std::string toAdd = prefixToAdd + file + "/GenericValidation.root=" + childTree.second.get("title") + ","; + filesAndLabels += toAdd; + } + + if (filesAndLabels.Length() > 0) { + filesAndLabels.Remove(filesAndLabels.Length() - 1); // Remove the last character + } + + std::cout << "filesAndLabels: " << filesAndLabels << std::endl; + + loopAndPlot(filesAndLabels); + + return EXIT_SUCCESS; +} + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +int main(int argc, char* argv[]) { return exceptions(argc, argv); } +#endif diff --git a/Alignment/OfflineValidation/plugins/GeneralPurposeVertexAnalyzer.cc b/Alignment/OfflineValidation/plugins/GeneralPurposeVertexAnalyzer.cc index 53acc760566d2..a87f00871727d 100644 --- a/Alignment/OfflineValidation/plugins/GeneralPurposeVertexAnalyzer.cc +++ b/Alignment/OfflineValidation/plugins/GeneralPurposeVertexAnalyzer.cc @@ -52,6 +52,50 @@ using reco::TrackCollection; +namespace gpVertexAnalyzer { + void setBinLog(TAxis *axis) { + int bins = axis->GetNbins(); + float from = axis->GetXmin(); + float to = axis->GetXmax(); + float width = (to - from) / bins; + std::vector new_bins(bins + 1, 0); + for (int i = 0; i <= bins; i++) { + new_bins[i] = TMath::Power(10, from + i * width); + } + axis->Set(bins, new_bins.data()); + } + + void setBinLogX(TH1 *h) { + TAxis *axis = h->GetXaxis(); + setBinLog(axis); + } + + void setBinLogY(TH1 *h) { + TAxis *axis = h->GetYaxis(); + setBinLog(axis); + } + + template + TProfile *makeProfileIfLog(const edm::Service &fs, bool logx, bool logy, Args &&...args) { + auto prof = fs->make(std::forward(args)...); + if (logx) + setBinLogX(prof); + if (logy) + setBinLogY(prof); + return prof; + } + + template + TH1D *makeTH1IfLog(const edm::Service &fs, bool logx, bool logy, Args &&...args) { + auto h1 = fs->make(std::forward(args)...); + if (logx) + setBinLogX(h1); + if (logy) + setBinLogY(h1); + return h1; + } +} // namespace gpVertexAnalyzer + class GeneralPurposeVertexAnalyzer : public edm::one::EDAnalyzer { public: explicit GeneralPurposeVertexAnalyzer(const edm::ParameterSet &); @@ -73,9 +117,9 @@ class GeneralPurposeVertexAnalyzer : public edm::one::EDAnalyzer fs); @@ -128,7 +172,7 @@ class GeneralPurposeVertexAnalyzer : public edm::one::EDAnalyzer("EtaMin"); double EtaMax = config.getParameter("EtaMax"); + int PtBin = config.getParameter("PtBin"); + double PtMin = config.getParameter("PtMin") * pTcut_; + double PtMax = config.getParameter("PtMax") * pTcut_; + IP_ = fs->make(fmt::format("d{}_pt{}", varname_, pTcut_).c_str(), fmt::format("PV tracks (p_{{T}} > {} GeV) d_{{{}}} (#mum)", pTcut_, varname_).c_str(), VarBin, @@ -169,6 +217,13 @@ void GeneralPurposeVertexAnalyzer::IPMonitoring::bookIPMonitor(const edm::Parame 0., (varname_.find("xy") != std::string::npos) ? 2000. : 10000.); + IPPull_ = fs->make( + fmt::format("d{}Pull_pt{}", varname_, pTcut_).c_str(), + fmt::format("PV tracks (p_{{T}} > {} GeV) d_{{{}}}/#sigma_{{d_{{{}}}}}", pTcut_, varname_, varname_).c_str(), + 100, + -5., + 5.); + IPVsPhi_ = fs->make(fmt::format("d{}VsPhi_pt{}", varname_, pTcut_).c_str(), fmt::format("PV tracks (p_{{T}} > {}) d_{{{}}} VS track #phi", pTcut_, varname_).c_str(), @@ -193,6 +248,21 @@ void GeneralPurposeVertexAnalyzer::IPMonitoring::bookIPMonitor(const edm::Parame IPVsEta_->SetXTitle("PV track (p_{T} > 1 GeV) #eta"); IPVsEta_->SetYTitle(fmt::format("PV tracks (p_{{T}} > {} GeV) d_{{{}}} (#mum)", pTcut_, varname_).c_str()); + IPVsPt_ = gpVertexAnalyzer::makeProfileIfLog( + fs, + true, /* x-axis */ + false, /* y-axis */ + fmt::format("d{}VsPt_pt{}", varname_, pTcut_).c_str(), + fmt::format("PV tracks (p_{{T}} > {}) d_{{{}}} VS track p_{{T}}", pTcut_, varname_).c_str(), + PtBin, + log10(PtMin), + log10(PtMax), + VarMin, + VarMax, + ""); + IPVsPt_->SetXTitle("PV track (p_{T} > 1 GeV) p_{T} [GeV]"); + IPVsPt_->SetYTitle(fmt::format("PV tracks (p_{{T}} > {} GeV) d_{{{}}} (#mum)", pTcut_, varname_).c_str()); + IPErrVsPhi_ = fs->make(fmt::format("d{}ErrVsPhi_pt{}", varname_, pTcut_).c_str(), fmt::format("PV tracks (p_{{T}} > {}) d_{{{}}} error VS track #phi", pTcut_, varname_).c_str(), @@ -217,6 +287,21 @@ void GeneralPurposeVertexAnalyzer::IPMonitoring::bookIPMonitor(const edm::Parame IPErrVsEta_->SetXTitle("PV track (p_{T} > 1 GeV) #eta"); IPErrVsEta_->SetYTitle(fmt::format("PV tracks (p_{{T}} > {} GeV) d_{{{}}} error (#mum)", pTcut_, varname_).c_str()); + IPErrVsPt_ = gpVertexAnalyzer::makeProfileIfLog( + fs, + true, /* x-axis */ + false, /* y-axis */ + fmt::format("d{}ErrVsPt_pt{}", varname_, pTcut_).c_str(), + fmt::format("PV tracks (p_{{T}} > {}) d_{{{}}} error VS track p_{{T}}", pTcut_, varname_).c_str(), + PtBin, + log10(PtMin), + log10(PtMax), + VarMin, + VarMax, + ""); + IPErrVsPt_->SetXTitle("PV track (p_{T} > 1 GeV) p_{T} [GeV]"); + IPErrVsPt_->SetYTitle(fmt::format("PV tracks (p_{{T}} > {} GeV) d_{{{}}} error (#mum)", pTcut_, varname_).c_str()); + IPVsEtaVsPhi_ = fs->make( fmt::format("d{}VsEtaVsPhi_pt{}", varname_, pTcut_).c_str(), fmt::format("PV tracks (p_{{T}} > {}) d_{{{}}} VS track #eta VS track #phi", pTcut_, varname_).c_str(), @@ -294,6 +379,7 @@ GeneralPurposeVertexAnalyzer::GeneralPurposeVertexAnalyzer(const edm::ParameterS bsBeamWidthX(nullptr), bsBeamWidthY(nullptr), bsType(nullptr), + trackpt(nullptr), sumpt(nullptr), ntracks(nullptr), weight(nullptr), @@ -411,6 +497,8 @@ void GeneralPurposeVertexAnalyzer::pvTracksPlots(const reco::Vertex &v) { } const float pt = t->pt(); + trackpt->Fill(pt); + if (pt < 1.f) { continue; } @@ -435,22 +523,28 @@ void GeneralPurposeVertexAnalyzer::pvTracksPlots(const reco::Vertex &v) { phi_pt1->Fill(phi); eta_pt1->Fill(eta); + // dxy pT>1 + dxy_pt1.IP_->Fill(Dxy); dxy_pt1.IPVsPhi_->Fill(phi, Dxy); dxy_pt1.IPVsEta_->Fill(eta, Dxy); dxy_pt1.IPVsEtaVsPhi_->Fill(eta, phi, Dxy); dxy_pt1.IPErr_->Fill(DxyErr); + dxy_pt1.IPPull_->Fill(Dxy / DxyErr); dxy_pt1.IPErrVsPhi_->Fill(phi, DxyErr); dxy_pt1.IPErrVsEta_->Fill(eta, DxyErr); dxy_pt1.IPErrVsEtaVsPhi_->Fill(eta, phi, DxyErr); + // dz pT>1 + dz_pt1.IP_->Fill(Dz); dz_pt1.IPVsPhi_->Fill(phi, Dz); dz_pt1.IPVsEta_->Fill(eta, Dz); dz_pt1.IPVsEtaVsPhi_->Fill(eta, phi, Dz); dz_pt1.IPErr_->Fill(DzErr); + dz_pt1.IPPull_->Fill(Dz / DzErr); dz_pt1.IPErrVsPhi_->Fill(phi, DzErr); dz_pt1.IPErrVsEta_->Fill(eta, DzErr); dz_pt1.IPErrVsEtaVsPhi_->Fill(eta, phi, DzErr); @@ -459,22 +553,28 @@ void GeneralPurposeVertexAnalyzer::pvTracksPlots(const reco::Vertex &v) { phi_pt10->Fill(phi); eta_pt10->Fill(eta); + // dxy pT>10 + dxy_pt10.IP_->Fill(Dxy); dxy_pt10.IPVsPhi_->Fill(phi, Dxy); dxy_pt10.IPVsEta_->Fill(eta, Dxy); dxy_pt10.IPVsEtaVsPhi_->Fill(eta, phi, Dxy); dxy_pt10.IPErr_->Fill(DxyErr); + dxy_pt10.IPPull_->Fill(Dxy / DxyErr); dxy_pt10.IPErrVsPhi_->Fill(phi, DxyErr); dxy_pt10.IPErrVsEta_->Fill(eta, DxyErr); dxy_pt10.IPErrVsEtaVsPhi_->Fill(eta, phi, DxyErr); + // dz pT>10 + dz_pt10.IP_->Fill(Dz); dz_pt10.IPVsPhi_->Fill(phi, Dz); dz_pt10.IPVsEta_->Fill(eta, Dz); dz_pt10.IPVsEtaVsPhi_->Fill(eta, phi, Dz); dz_pt10.IPErr_->Fill(DzErr); + dz_pt10.IPPull_->Fill(Dz / DzErr); dz_pt10.IPErrVsPhi_->Fill(phi, DzErr); dz_pt10.IPErrVsEta_->Fill(eta, DzErr); dz_pt10.IPErrVsEtaVsPhi_->Fill(eta, phi, DzErr); @@ -649,6 +749,8 @@ void GeneralPurposeVertexAnalyzer::beginJob() { dxy2 = book("dxyzoom", fmt::sprintf("%s d_{xy} (#mum)", s_1).c_str(), dxyBin_, dxyMin_ / 5., dxyMax_ / 5.); + trackpt = gpVertexAnalyzer::makeTH1IfLog( + fs_, true, false, "pt_track", "PV tracks p_{T};PV tracks p_{T} [GeV];#tracks", 49, log10(1.), log10(50.)); phi_pt1 = book("phi_pt1", fmt::sprintf("%s #phi; PV tracks #phi;#tracks", s_1).c_str(), phiBin_, phiMin_, phiMax_); eta_pt1 = @@ -701,6 +803,9 @@ void GeneralPurposeVertexAnalyzer::fillDescriptions(edm::ConfigurationDescriptio desc.add("EtaBin2D", 8); desc.add("EtaMin", -2.7); desc.add("EtaMax", 2.7); + desc.add("PtBin", 49); + desc.add("PtMin", 1.); + desc.add("PtMax", 50.); descriptions.addWithDefaultLabel(desc); } diff --git a/Alignment/OfflineValidation/plugins/TrackerOfflineValidation.cc b/Alignment/OfflineValidation/plugins/TrackerOfflineValidation.cc index 399015744e964..794367cc4f786 100644 --- a/Alignment/OfflineValidation/plugins/TrackerOfflineValidation.cc +++ b/Alignment/OfflineValidation/plugins/TrackerOfflineValidation.cc @@ -169,8 +169,8 @@ class TrackerOfflineValidation : public edm::one::EDAnalyzer(upDir.tfd->mkdir(newDir)); @@ -191,15 +191,15 @@ class TrackerOfflineValidation : public edm::one::EDAnalyzer fs; - if (newDir.length() == 0) { + if (newDir.empty()) { tfd = std::make_unique(fs->tFileDirectory()); } else { tfd = std::make_unique(fs->mkdir(newDir)); directoryString = newDir; } } else { - if (newDir.length() != 0) { - if (basedir.length() != 0) + if (!newDir.empty()) { + if (!basedir.empty()) directoryString = basedir + "/" + newDir; else directoryString = newDir; diff --git a/Alignment/OfflineValidation/plugins/TrackerOfflineValidationSummary.cc b/Alignment/OfflineValidation/plugins/TrackerOfflineValidationSummary.cc index 23f4f86a0e7e3..705cb5f1ab978 100644 --- a/Alignment/OfflineValidation/plugins/TrackerOfflineValidationSummary.cc +++ b/Alignment/OfflineValidation/plugins/TrackerOfflineValidationSummary.cc @@ -504,7 +504,7 @@ const std::string TrackerOfflineValidationSummary::associateModuleHistsWithTree( std::map& substructureName) { std::stringstream histDir, sSubdetName; std::string componentName; - if (moduleDirectory_.length() != 0) + if (!moduleDirectory_.empty()) histDir << moduleDirectory_ << "/"; std::string wheelOrLayer("_layer_"); if (treeMem.subDetId == PixelSubdetector::PixelBarrel) { @@ -770,7 +770,7 @@ void TrackerOfflineValidationSummary::applyHarvestingHierarchy(TTree& tree) { iSubdet == StripSubdetector::TID || iSubdet == StripSubdetector::TEC)) continue; treeEntries.push_back(iTree); - if (hierarchyName.length() == 0) { + if (hierarchyName.empty()) { hierarchyName = (*substructureName)["subdet"]; componentName = (*substructureName)["component"]; } @@ -804,7 +804,7 @@ void TrackerOfflineValidationSummary::bookHarvestingHists() { dmrYprimeHistoTitle << "DMR for " << iHier->hierarchyName << ";<#DeltaY> [cm];# modules"; std::string directoryString(moduleDirectory_); - if (directoryString.length() != 0) + if (!directoryString.empty()) directoryString += "/"; directoryString += iHier->componentName; dbe_->setCurrentFolder(directoryString); diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/DiMuonV_cfg.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/DiMuonV_cfg.py index 60538859f858f..118679f4ebc4e 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/DiMuonV_cfg.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/DiMuonV_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function from fnmatch import fnmatch import FWCore.ParameterSet.Config as cms import FWCore.PythonUtilities.LumiList as LumiList @@ -135,7 +134,7 @@ process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.GlobalTag import GlobalTag # default to remain in sycn with the default input sample -process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "auto:phase1_2022_realistic")) +process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "125X_mcRun3_2022_realistic_v3")) #################################################################### # Load conditions if wished @@ -184,10 +183,22 @@ process.offlinePrimaryVerticesFromRefittedTrks = offlinePrimaryVertices.clone() process.offlinePrimaryVerticesFromRefittedTrks.TrackLabel = cms.InputTag("refittedVtxTracks") +#################################################################### +# BeamSpot check +#################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = config["validation"].get("bsIncompatibleWarnThresh", 3), # significance threshold to emit a warning message + errorThr = config["validation"].get("bsIncompatibleErrThresh", 5), # significance threshold to abort the job +) + #################################################################### # Sequence #################################################################### process.seqRefitting = cms.Sequence(process.offlineBeamSpot + + process.BeamSpotChecker + process.refittedMuons + process.refittedVtxTracks + process.offlinePrimaryVerticesFromRefittedTrks) diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV.py new file mode 100644 index 0000000000000..cfb66d903537e --- /dev/null +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV.py @@ -0,0 +1,96 @@ +import copy +import os + +def GenericV(config, validationDir): + ##List with all jobs + jobs = [] + GenericVType = "single" + + ##List with all wished IOVs + IOVs = [] + + ##Start with single GenericV jobs + if not GenericVType in config["validations"]["Generic"]: + raise Exception("No 'single' key word in config for GenericV") + + for singleName in config["validations"]["Generic"][GenericVType]: + for IOV in config["validations"]["Generic"][GenericVType][singleName]["IOV"]: + ##Save IOV to loop later for merge jobs + if not IOV in IOVs: + IOVs.append(IOV) + + for alignment in config["validations"]["Generic"][GenericVType][singleName]["alignments"]: + ##Work directory for each IOV + workDir = "{}/GenericV/{}/{}/{}/{}".format(validationDir, GenericVType, singleName, alignment, IOV) + + ##Write local config + local = {} + local["output"] = "{}/{}/GenericV/{}/{}/{}/{}".format(config["LFS"], config["name"], GenericVType, alignment, singleName, IOV) + local["alignment"] = copy.deepcopy(config["alignments"][alignment]) + local["validation"] = copy.deepcopy(config["validations"]["Generic"][GenericVType][singleName]) + local["validation"].pop("alignments") + local["validation"]["IOV"] = IOV + if "dataset" in local["validation"]: + local["validation"]["dataset"] = local["validation"]["dataset"].format(IOV) + if "goodlumi" in local["validation"]: + local["validation"]["goodlumi"] = local["validation"]["goodlumi"].format(IOV) + + ##Write job info + job = { + "name": "GenericV_{}_{}_{}_{}".format(GenericVType, alignment, singleName, IOV), + "dir": workDir, + "exe": "cmsRun", + "cms-config": "{}/src/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV_cfg.py".format(os.environ["CMSSW_BASE"]), + "run-mode": "Condor", + "dependencies": [], + "config": local, + } + + jobs.append(job) + + ##Do merge GenericV if wished + if "merge" in config["validations"]["Generic"]: + ##List with merge jobs, will be expanded to jobs after looping + mergeJobs = [] + GenericVType = "merge" + + ##Loop over all merge jobs/IOVs which are wished + for mergeName in config["validations"]["Generic"][GenericVType]: + for IOV in IOVs: + ##Work directory for each IOV + workDir = "{}/GenericV/{}/{}/{}".format(validationDir, GenericVType, mergeName, IOV) + + ##Write job info + local = {} + + job = { + "name": "GenericV_{}_{}_{}".format(GenericVType, mergeName, IOV), + "dir": workDir, + "exe": "GenericVmerge", + "run-mode": "Condor", + "dependencies": [], + "config": local, + } + + for alignment in config["alignments"]: + ##Deep copy necessary things from global config + local.setdefault("alignments", {}) + if alignment in config["validations"]["Generic"]["single"][mergeName]["alignments"]: + local["alignments"][alignment] = copy.deepcopy(config["alignments"][alignment]) + local["validation"] = copy.deepcopy(config["validations"]["Generic"][GenericVType][mergeName]) + local["output"] = "{}/{}/GenericV/{}/{}/{}".format(config["LFS"], config["name"], GenericVType, mergeName, IOV) + + ##Loop over all single jobs + for singleJob in jobs: + ##Get single job info and append to merge job if requirements fullfilled + alignment, singleName, singleIOV = singleJob["name"].split("_")[2:] + + if int(singleIOV) == IOV and singleName in config["validations"]["Generic"][GenericVType][mergeName]["singles"]: + local["alignments"][alignment]["file"] = singleJob["config"]["output"] + job["dependencies"].append(singleJob["name"]) + + mergeJobs.append(job) + + jobs.extend(mergeJobs) + + return jobs diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV_cfg.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV_cfg.py new file mode 100644 index 0000000000000..80107d9510e63 --- /dev/null +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/GenericV_cfg.py @@ -0,0 +1,223 @@ +import json +import os +import FWCore.ParameterSet.Config as cms +import FWCore.PythonUtilities.LumiList as LumiList +from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultMC_NoPU +from FWCore.ParameterSet.VarParsing import VarParsing + +################################################################### +# Define process +################################################################### +process = cms.Process("GenericTrackAndVertexValidation") + +################################################################### +# Argument parsing +################################################################### +options = VarParsing() +options.register("config", "", VarParsing.multiplicity.singleton, VarParsing.varType.string , "AllInOne config") +options.parseArguments() + +################################################################### +# Read in AllInOne config in JSON format +################################################################### +if options.config == "": + config = {"validation": {}, + "alignment": {}} +else: + with open(options.config, "r") as configFile: + config = json.load(configFile) + +################################################################### +# Read filenames from given TXT file and define input source +################################################################### +readFiles = [] + +if "dataset" in config["validation"]: + with open(config["validation"]["dataset"], "r") as datafiles: + for fileName in datafiles.readlines(): + readFiles.append(fileName.replace("\n", "")) + + process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring(readFiles), + skipEvents = cms.untracked.uint32(0) + ) +else: + print(">>>>>>>>>> GenericV_cfg.py: msg%-i: config not specified! Loading default MC simulation -> filesDefaultMC_NoPU!") + process.source = cms.Source("PoolSource", + fileNames = filesDefaultMC_NoPU, + skipEvents = cms.untracked.uint32(0) + ) + +################################################################### +# Get good lumi section and load data or handle MC +################################################################### +if "goodlumi" in config["validation"]: + if os.path.isfile(config["validation"]["goodlumi"]): + goodLumiSecs = cms.untracked.VLuminosityBlockRange(LumiList.LumiList(filename = config["validation"]["goodlumi"]).getCMSSWString().split(',')) + else: + print("Does not exist: {}. Continue without good lumi section file.") + goodLumiSecs = cms.untracked.VLuminosityBlockRange() + +else: + goodLumiSecs = cms.untracked.VLuminosityBlockRange() + +################################################################### +# Runs and events +################################################################### +runboundary = config["validation"].get("runboundary", 1) +isMultipleRuns=False +if(isinstance(runboundary, (list, tuple))): + isMultipleRuns=True + print("Multiple Runs are selected") +if(isMultipleRuns): + process.source.firstRun = cms.untracked.uint32(runboundary[0]) +else: + process.source.firstRun = cms.untracked.uint32(runboundary) + +################################################################### +# Default set to 1 for unit tests +################################################################### +process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(config["validation"].get("maxevents", 1))) + +################################################################### +# Bookeeping +################################################################### +process.options = cms.untracked.PSet( + wantSummary = cms.untracked.bool(False), + Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal + fileMode = cms.untracked.string('NOMERGE'), # no ordering needed, but calls endRun/beginRun etc. at file boundaries +) + +################################################################### +# Messages +################################################################### +process.load("FWCore.MessageLogger.MessageLogger_cfi") +process.MessageLogger.cerr.FwkReport.reportEvery = 1000 +process.MessageLogger.cout.enableStatistics = cms.untracked.bool(True) + +################################################################### +# Basic modules +################################################################### +process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff") +process.load("Configuration.Geometry.GeometryDB_cff") +process.load('Configuration.StandardSequences.Services_cff') +process.load("Configuration.StandardSequences.MagneticField_cff") + +#################################################################### +# Load and Configure Track refitter +#################################################################### +process.load("RecoTracker.TrackProducer.TrackRefitters_cff") +process.TrackRefitter.src = config["validation"].get("trackcollection", "generalTracks") +process.TrackRefitter.TTRHBuilder = config["validation"].get("tthrbuilder", "WithAngleAndTemplate") +process.TrackRefitter.NavigationSchool = "" + +#################################################################### +# Global tag +#################################################################### +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "auto:phase1_2017_realistic")) + +#################################################################### +# Load conditions if wished +#################################################################### +if "conditions" in config["alignment"]: + from CalibTracker.Configuration.Common.PoolDBESSource_cfi import poolDBESSource + + for condition in config["alignment"]["conditions"]: + setattr(process, "conditionsIn{}".format(condition), poolDBESSource.clone( + connect = cms.string(str(config["alignment"]["conditions"][condition]["connect"])), + toGet = cms.VPSet( + cms.PSet( + record = cms.string(str(condition)), + tag = cms.string(str(config["alignment"]["conditions"][condition]["tag"])) + ) + ) + ) + ) + + setattr(process, "prefer_conditionsIn{}".format(condition), cms.ESPrefer("PoolDBESSource", "conditionsIn{}".format(condition))) + +################################################################### +# TFileService +################################################################### +process.TFileService = cms.Service("TFileService", + fileName = cms.string("{}/GenericValidation.root".format(config.get("output", os.getcwd()))), + closeFileFast = cms.untracked.bool(True)) + +print("Saving the output at %s" % process.TFileService.fileName.value()) + +################################################################### +# Primary Vertex refit +################################################################### +process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi") +from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices as _offlinePVs +process.offlinePrimaryVerticesFromRefittedTrks = _offlinePVs.clone( + TrackLabel = "TrackRefitter", + TkFilterParameters = dict( + maxNormalizedChi2 = 20, + minSiliconLayersWithHits = 5, + maxD0Significance = 5.0, + maxD0Error = 1.0, + maxDzError = 1.0, + minPixelLayersWithHits = 2 + ) +) + +################################################################### +# The analysis modules +################################################################### +process.trackanalysis = cms.EDAnalyzer("GeneralPurposeTrackAnalyzer", + TkTag = cms.InputTag("TrackRefitter"), + isCosmics = cms.bool(config["validation"].get("isCosmics", False)) + ) + +process.vertexanalysis = cms.EDAnalyzer('GeneralPurposeVertexAnalyzer', + ndof = cms.int32(4), + vertexLabel = cms.InputTag('offlinePrimaryVerticesFromRefittedTrks'), + beamSpotLabel = cms.InputTag('offlineBeamSpot'), + Xpos = cms.double(0.1), + Ypos = cms.double(0), + TkSizeBin = cms.int32(100), + TkSizeMin = cms.double(499.5), + TkSizeMax = cms.double(-0.5), + DxyBin = cms.int32(100), + DxyMin = cms.double(5000), + DxyMax = cms.double(-5000), + DzBin = cms.int32(100), + DzMin = cms.double(-2000), + DzMax = cms.double(2000), + PhiBin = cms.int32(32), + PhiBin2D = cms.int32(12), + PhiMin = cms.double(-3.1415926535897931), + PhiMax = cms.double(3.1415926535897931), + EtaBin = cms.int32(26), + EtaBin2D = cms.int32(8), + EtaMin = cms.double(-2.7), + EtaMax = cms.double(2.7)) + +process.theValidSequence = cms.Sequence(process.offlineBeamSpot + + process.TrackRefitter + + process.offlinePrimaryVerticesFromRefittedTrks + + process.trackanalysis + + process.vertexanalysis) + +################################################################### +# The trigger filter module +################################################################### +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import * +process.theHLTFilter = triggerResultsFilter.clone( + triggerConditions = cms.vstring(config["validation"].get("triggerBits", "*")), + hltResults = cms.InputTag( "TriggerResults", "", "HLT" ), + l1tResults = cms.InputTag( "" ), + throw = cms.bool(False) +) + +HLTSel = config["validation"].get("HLTselection", False) + +if (HLTSel): + process.p = cms.Path(process.theHLTFilter + process.theValidSequence) +else: + process.p = cms.Path(process.theValidSequence) + +print("Done") diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/JetHT_cfg.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/JetHT_cfg.py index 266d61d6289c7..03dd35359d5a8 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/JetHT_cfg.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/JetHT_cfg.py @@ -289,14 +289,27 @@ ) +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = configuration["validation"].get("bsIncompatibleWarnThresh", 3), # significance threshold to emit a warning message + errorThr = configuration["validation"].get("bsIncompatibleErrThresh", 5), # significance threshold to abort the job +) + if (triggerFilter == "nothing" or triggerFilter == ""): - process.p = cms.Path(process.offlineBeamSpot + + process.p = cms.Path(process.offlineBeamSpot + + process.BeamSpotChecker + process.TrackRefitter + process.offlinePrimaryVerticesFromRefittedTrks + process.jetHTAnalyzer) else: process.p = cms.Path(process.HLTFilter + - process.offlineBeamSpot + + process.offlineBeamSpot + + process.BeamSpotChecker + process.TrackRefitter + process.offlinePrimaryVerticesFromRefittedTrks + process.jetHTAnalyzer) diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/PV_cfg.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/PV_cfg.py index 33ca243a73a24..0d27146e16454 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/PV_cfg.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/PV_cfg.py @@ -1,6 +1,7 @@ + import FWCore.ParameterSet.Config as cms import FWCore.PythonUtilities.LumiList as LumiList -from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultData_MinBias2018B +from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultData_HLTPhys2024I from FWCore.ParameterSet.VarParsing import VarParsing @@ -43,9 +44,9 @@ skipEvents = cms.untracked.uint32(0) ) else: - print(">>>>>>>>>> PV_cfg.py: msg%-i: config not specified! Loading default dataset -> filesDefaultData_MinBias2018B!") + print(">>>>>>>>>> PV_cfg.py: msg%-i: config not specified! Loading default dataset -> filesDefaultData_HLTPhys2024I!") process.source = cms.Source("PoolSource", - fileNames = filesDefaultData_MinBias2018B, + fileNames = filesDefaultData_HLTPhys2024I, skipEvents = cms.untracked.uint32(0) ) @@ -123,7 +124,7 @@ #Global tag process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "auto:phase1_2017_realistic")) +process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "140X_dataRun3_Prompt_v4")) ##Load conditions if wished if "conditions" in config["alignment"]: @@ -160,6 +161,17 @@ thresh = cms.untracked.double(0.25) ) +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = config["validation"].get("bsIncompatibleWarnThresh", 3), # significance threshold to emit a warning message + errorThr = config["validation"].get("bsIncompatibleErrThresh", 5), # significance threshold to abort the job +) + process.load("Alignment.CommonAlignment.filterOutLowPt_cfi") process.filterOutLowPt.src = cms.untracked.InputTag(config["validation"].get("trackcollection", "ALCARECOTkAlMinBias")) process.filterOutLowPt.ptmin = cms.untracked.double(config["validation"].get("ptCut", 3.)) @@ -170,9 +182,9 @@ process.filterOutLowPt.runControlNumber = [runboundary] if isMC: - process.goodvertexSkim = cms.Sequence(process.noscraping + process.filterOutLowPt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping + process.filterOutLowPt) else: - process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.filterOutLowPt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.filterOutLowPt) #################################################################### diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/SplitV_cfg.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/SplitV_cfg.py index 6ff3e9878f363..ba753d7d3a61f 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/SplitV_cfg.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/SplitV_cfg.py @@ -117,7 +117,7 @@ #################################################################### process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "auto:phase1_2017_realistic")) +process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "105X_upgrade2018_realistic_v4")) #################################################################### # Load conditions if wished @@ -196,7 +196,20 @@ ) print("Saving the output at %s" % process.TFileService.fileName.value()) + +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = config["validation"].get("bsIncompatibleWarnThresh", 3), # significance threshold to emit a warning message + errorThr = config["validation"].get("bsIncompatibleErrThresh", 5), # significance threshold to abort the job +) + process.theValidSequence = cms.Sequence(process.offlineBeamSpot + + process.BeamSpotChecker + process.TrackRefitter + process.offlinePrimaryVerticesFromRefittedTrks + process.PrimaryVertexResolution) diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/Zmumu_cfg.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/Zmumu_cfg.py index a92509c0b0e7d..41fe21d4ad7be 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/Zmumu_cfg.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/Zmumu_cfg.py @@ -194,4 +194,18 @@ closeFileFast = cms.untracked.bool(True), ) -process.p = cms.Path(process.offlineBeamSpot*process.TrackRefitter*process.DiMuonMassValidation) +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = config["validation"].get("bsIncompatibleWarnThresh", 3), # significance threshold to emit a warning message + errorThr = config["validation"].get("bsIncompatibleErrThresh", 5), # significance threshold to abort the job +) + +process.p = cms.Path(process.offlineBeamSpot* + #process.BeamSpotChecker* # commented for now + process.TrackRefitter* + process.DiMuonMassValidation) diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/betterConfigParser.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/betterConfigParser.py index fad339ec6c189..cd6be86c081d6 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/betterConfigParser.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/betterConfigParser.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import configparser as ConfigParser import os diff --git a/Alignment/OfflineValidation/python/TkAlAllInOneTool/defaultInputFiles_cff.py b/Alignment/OfflineValidation/python/TkAlAllInOneTool/defaultInputFiles_cff.py index 7ec31ae8b2e6a..0ea59d3044d53 100644 --- a/Alignment/OfflineValidation/python/TkAlAllInOneTool/defaultInputFiles_cff.py +++ b/Alignment/OfflineValidation/python/TkAlAllInOneTool/defaultInputFiles_cff.py @@ -61,4 +61,8 @@ '/store/express/Run2018B/StreamExpress/ALCARECO/TkAlMinBias-Express-v1/000/317/212/00000/00F0EFA7-8D64-E811-A594-FA163EFC96CC.root' ) +filesDefaultData_HLTPhys2024I = cms.untracked.vstring( + '/store/data/Run2024I/HLTPhysics/ALCARECO/TkAlMinBias-PromptReco-v2/000/386/803/00000/a95259f9-a333-44f9-b30f-803642e97590.root' +) + filesDefaultData_Cosmics_string = "/store/data/Run2022G/Cosmics/ALCARECO/TkAlCosmics0T-PromptReco-v1/000/362/440/00000/47f31eaa-1c00-4f39-902b-a09fa19c27f2.root" diff --git a/Alignment/OfflineValidation/python/overlapValidationPlot.py b/Alignment/OfflineValidation/python/overlapValidationPlot.py index c15f7123631ee..b5cde3cabdb74 100644 --- a/Alignment/OfflineValidation/python/overlapValidationPlot.py +++ b/Alignment/OfflineValidation/python/overlapValidationPlot.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import -from __future__ import print_function from builtins import range import math diff --git a/Alignment/OfflineValidation/scripts/produceOfflineValidationTex.py b/Alignment/OfflineValidation/scripts/produceOfflineValidationTex.py index e2bd962e25ca9..e2dcff01428be 100755 --- a/Alignment/OfflineValidation/scripts/produceOfflineValidationTex.py +++ b/Alignment/OfflineValidation/scripts/produceOfflineValidationTex.py @@ -17,7 +17,6 @@ -from __future__ import print_function import os import stat import sys diff --git a/Alignment/OfflineValidation/scripts/submitPVResolutionJobs.py b/Alignment/OfflineValidation/scripts/submitPVResolutionJobs.py index 34e6565964bba..d1b6f81920f6c 100755 --- a/Alignment/OfflineValidation/scripts/submitPVResolutionJobs.py +++ b/Alignment/OfflineValidation/scripts/submitPVResolutionJobs.py @@ -6,7 +6,6 @@ submitPVResolutionJobs.py -i PVResolutionExample.ini -D /JetHT/Run2018C-TkAlMinBias-12Nov2019_UL2018-v2/ALCARECO ''' -from __future__ import print_function __author__ = 'Marco Musich' __copyright__ = 'Copyright 2020, CERN CMS' diff --git a/Alignment/OfflineValidation/scripts/submitPVValidationJobs.py b/Alignment/OfflineValidation/scripts/submitPVValidationJobs.py index b3629c8e8afa9..2bf5e1a8056ce 100755 --- a/Alignment/OfflineValidation/scripts/submitPVValidationJobs.py +++ b/Alignment/OfflineValidation/scripts/submitPVValidationJobs.py @@ -6,7 +6,6 @@ submitPVValidationJobs.py -j TEST -D /HLTPhysics/Run2016C-TkAlMinBias-07Dec2018-v1/ALCARECO -i testPVValidation_Relvals_DATA.ini -r ''' -from __future__ import print_function from builtins import range __author__ = 'Marco Musich' diff --git a/Alignment/OfflineValidation/scripts/validateAlignments.py b/Alignment/OfflineValidation/scripts/validateAlignments.py index b4bafa08536b5..b6848ada4d3e6 100755 --- a/Alignment/OfflineValidation/scripts/validateAlignments.py +++ b/Alignment/OfflineValidation/scripts/validateAlignments.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 #test execute: export CMSSW_BASE=/tmp/CMSSW && ./validateAlignments.py -c defaultCRAFTValidation.ini,test.ini -n -N test -from __future__ import print_function from future.utils import lmap import subprocess import json @@ -21,6 +20,7 @@ import Alignment.OfflineValidation.TkAlAllInOneTool.DiMuonV as DiMuonV import Alignment.OfflineValidation.TkAlAllInOneTool.MTS as MTS import Alignment.OfflineValidation.TkAlAllInOneTool.PixBary as PixBary +import Alignment.OfflineValidation.TkAlAllInOneTool.GenericV as GenericV ############################################## def parser(): @@ -265,12 +265,19 @@ def main(): elif validation == "JetHT": jobs.extend(JetHT.JetHT(config, validationDir)) + elif validation == "DiMuonV": jobs.extend(DiMuonV.DiMuonV(config, validationDir)) + elif validation == "MTS": jobs.extend(MTS.MTS(config, validationDir)) + elif validation == "PixBary": jobs.extend(PixBary.PixBary(config, validationDir, args.verbose)) + + elif validation == "Generic": + jobs.extend(GenericV.GenericV(config, validationDir)) + else: raise Exception("Unknown validation method: {}".format(validation)) diff --git a/Alignment/OfflineValidation/src/PlotAlignmentValidation.cc b/Alignment/OfflineValidation/src/PlotAlignmentValidation.cc index 259f2fc950104..7b2618286220b 100644 --- a/Alignment/OfflineValidation/src/PlotAlignmentValidation.cc +++ b/Alignment/OfflineValidation/src/PlotAlignmentValidation.cc @@ -857,7 +857,7 @@ void PlotAlignmentValidation::plotDMR(const std::string& variable, } // Skip strip detectors if plotting any "Y" variable - if (i != 1 && i != 2 && variable.length() > 0 && variable[variable.length() - 1] == 'Y') { + if (i != 1 && i != 2 && !variable.empty() && variable[variable.length() - 1] == 'Y') { continue; } @@ -2261,7 +2261,7 @@ double PlotAlignmentValidation::resampleTestOfEqualRMS(TH1F* h1, TH1F* h2, int n std::vector diff; diff.clear(); //"true" (in bootstrap terms) difference of the samples' RMS - double rmsdiff = abs(h1->GetRMS() - h2->GetRMS()); + double rmsdiff = std::abs(h1->GetRMS() - h2->GetRMS()); //means of the samples to calculate RMS double m1 = h1->GetMean(); double m2 = h2->GetMean(); @@ -2281,8 +2281,8 @@ double PlotAlignmentValidation::resampleTestOfEqualRMS(TH1F* h1, TH1F* h2, int n } d1 /= h1->GetEntries(); d2 /= h2->GetEntries(); - diff.push_back(abs(d1 - d2 - rmsdiff)); - test_mean += abs(d1 - d2 - rmsdiff); + diff.push_back(std::abs(d1 - d2 - rmsdiff)); + test_mean += std::abs(d1 - d2 - rmsdiff); } test_mean /= numSamples; edm::LogPrint("") << "test mean:" << test_mean; @@ -2309,7 +2309,7 @@ double PlotAlignmentValidation::resampleTestOfEqualMeans(TH1F* h1, TH1F* h2, int std::vector diff; diff.clear(); //"true" (in bootstrap terms) difference of the samples' means - double meandiff = abs(h1->GetMean() - h2->GetMean()); + double meandiff = std::abs(h1->GetMean() - h2->GetMean()); //realization of random variable double d1 = 0; double d2 = 0; @@ -2326,8 +2326,8 @@ double PlotAlignmentValidation::resampleTestOfEqualMeans(TH1F* h1, TH1F* h2, int } d1 /= h1->GetEntries(); d2 /= h2->GetEntries(); - diff.push_back(abs(d1 - d2 - meandiff)); - test_mean += abs(d1 - d2 - meandiff); + diff.push_back(std::abs(d1 - d2 - meandiff)); + test_mean += std::abs(d1 - d2 - meandiff); } test_mean /= numSamples; edm::LogPrint("") << "test mean:" << test_mean; @@ -2344,7 +2344,7 @@ double PlotAlignmentValidation::resampleTestOfEqualMeans(TH1F* h1, TH1F* h2, int } float PlotAlignmentValidation::twotailedStudentTTestEqualMean(float t, float v) { - return 2 * (1 - ROOT::Math::tdistribution_cdf(abs(t), v)); + return 2 * (1 - ROOT::Math::tdistribution_cdf(std::abs(t), v)); } const TString PlotAlignmentValidation::summaryfilename = "OfflineValidationSummary"; diff --git a/Alignment/OfflineValidation/test/BuildFile.xml b/Alignment/OfflineValidation/test/BuildFile.xml index f37c002324c15..a37e4904ab810 100644 --- a/Alignment/OfflineValidation/test/BuildFile.xml +++ b/Alignment/OfflineValidation/test/BuildFile.xml @@ -27,6 +27,9 @@ + + + diff --git a/Alignment/OfflineValidation/test/DiElectronVertexValidation_cfg.py b/Alignment/OfflineValidation/test/DiElectronVertexValidation_cfg.py index de1577f7d7a40..56a723b42a00b 100644 --- a/Alignment/OfflineValidation/test/DiElectronVertexValidation_cfg.py +++ b/Alignment/OfflineValidation/test/DiElectronVertexValidation_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function from fnmatch import fnmatch import FWCore.ParameterSet.Config as cms import FWCore.Utilities.FileUtils as FileUtils diff --git a/Alignment/OfflineValidation/test/DiMuonVertexValidation_cfg.py b/Alignment/OfflineValidation/test/DiMuonVertexValidation_cfg.py index 7dc9c0d280fcf..245e6e7af4695 100644 --- a/Alignment/OfflineValidation/test/DiMuonVertexValidation_cfg.py +++ b/Alignment/OfflineValidation/test/DiMuonVertexValidation_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function from fnmatch import fnmatch import FWCore.ParameterSet.Config as cms import FWCore.Utilities.FileUtils as FileUtils diff --git a/Alignment/OfflineValidation/test/PVValidation_TEMPL_cfg.py b/Alignment/OfflineValidation/test/PVValidation_TEMPL_cfg.py index 968ad2c66aac6..5e5efe66e8631 100644 --- a/Alignment/OfflineValidation/test/PVValidation_TEMPL_cfg.py +++ b/Alignment/OfflineValidation/test/PVValidation_TEMPL_cfg.py @@ -165,11 +165,22 @@ def customiseKinksAndBows(process): process.filterOutLowPt.ptmin = PTCUTTEMPLATE process.filterOutLowPt.runControl = RUNCONTROLTEMPLATE process.filterOutLowPt.runControlNumber = [runboundary] - + +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 3, # significance threshold to emit a warning message + errorThr = 5, # significance threshold to abort the job +) + if isMC: - process.goodvertexSkim = cms.Sequence(process.noscraping + process.filterOutLowPt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping + process.filterOutLowPt) else: - process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.filterOutLowPt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.filterOutLowPt) #################################################################### # Load and Configure Measurement Tracker Event diff --git a/Alignment/OfflineValidation/test/PVValidation_T_cfg.py b/Alignment/OfflineValidation/test/PVValidation_T_cfg.py index 3349d4acc1879..d2ef4f4fd0567 100644 --- a/Alignment/OfflineValidation/test/PVValidation_T_cfg.py +++ b/Alignment/OfflineValidation/test/PVValidation_T_cfg.py @@ -162,10 +162,21 @@ def customiseKinksAndBows(process): process.filterOutLowPt.runControl = RUNCONTROLTEMPLATE process.filterOutLowPt.runControlNumber = [runboundary] +#################################################################### +# BeamSpot check +#################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 3, # significance threshold to emit a warning message + errorThr = 5, # significance threshold to abort the job +) + if isMC: - process.goodvertexSkim = cms.Sequence(process.noscraping+process.filterOutLowPt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping+process.filterOutLowPt) else: - process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.filterOutLowPt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.filterOutLowPt) #################################################################### # Load and Configure Measurement Tracker Event diff --git a/Alignment/OfflineValidation/test/PrimaryVertexResolution_cfg.py b/Alignment/OfflineValidation/test/PrimaryVertexResolution_cfg.py index 5b675b83a9591..87e527d40938e 100644 --- a/Alignment/OfflineValidation/test/PrimaryVertexResolution_cfg.py +++ b/Alignment/OfflineValidation/test/PrimaryVertexResolution_cfg.py @@ -188,17 +188,33 @@ def best_match(rcd): nVtxBins = cms.untracked.double(40.) ) +################################################################### +# TFileService +################################################################### process.TFileService = cms.Service("TFileService", fileName = cms.string(options.outputRootFile), closeFileFast = cms.untracked.bool(False) ) +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 3, # significance threshold to emit a warning message + errorThr = 5 # significance threshold to abort the job +) + +################################################################### +# Path +################################################################### process.p = cms.Path(process.HLTFilter + #process.offlineBeamSpot + #process.TrackRefitter + + process.BeamSpotChecker + process.seqTrackselRefit + process.offlinePrimaryVerticesFromRefittedTrks + process.PrimaryVertexResolution + process.myanalysis) - - diff --git a/Alignment/OfflineValidation/test/PrimaryVertexResolution_templ_cfg.py b/Alignment/OfflineValidation/test/PrimaryVertexResolution_templ_cfg.py index e59ebbaa61f65..d714bbb86bdf5 100644 --- a/Alignment/OfflineValidation/test/PrimaryVertexResolution_templ_cfg.py +++ b/Alignment/OfflineValidation/test/PrimaryVertexResolution_templ_cfg.py @@ -176,15 +176,31 @@ def best_match(rcd): nVtxBins = cms.untracked.double(40.) ) +################################################################### +# TFileService +################################################################### process.TFileService = cms.Service("TFileService", fileName = cms.string(options.outputRootFile), closeFileFast = cms.untracked.bool(False) ) -process.p = cms.Path(process.seqTrackselRefit + +################################################################### +# Beamspot compatibility check +################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 3, # significance threshold to emit a warning message + errorThr = 5 # significance threshold to abort the job +) + +################################################################### +# Path +################################################################### +process.p = cms.Path(process.BeamSpotChecker + + process.seqTrackselRefit + #process.offlineBeamSpot + #process.TrackRefitter + process.offlinePrimaryVerticesFromRefittedTrks + process.PrimaryVertexResolution) - - diff --git a/Alignment/OfflineValidation/test/submitAllJobs.py b/Alignment/OfflineValidation/test/submitAllJobs.py index 67ea198218f00..495263c18d993 100644 --- a/Alignment/OfflineValidation/test/submitAllJobs.py +++ b/Alignment/OfflineValidation/test/submitAllJobs.py @@ -2,7 +2,6 @@ '''Script that submits CMS Tracker Alignment Primary Vertex Validation workflows ''' -from __future__ import print_function from builtins import range __author__ = 'Marco Musich' diff --git a/Alignment/OfflineValidation/test/testG4Refitter_cfg.py b/Alignment/OfflineValidation/test/testG4Refitter_cfg.py index ab79fb97960a3..6ccadc426b326 100644 --- a/Alignment/OfflineValidation/test/testG4Refitter_cfg.py +++ b/Alignment/OfflineValidation/test/testG4Refitter_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys from enum import Enum diff --git a/Alignment/OfflineValidation/test/testPrimaryVertexRelatedValidations_cfg.py b/Alignment/OfflineValidation/test/testPrimaryVertexRelatedValidations_cfg.py index d130460182536..502f94e435790 100644 --- a/Alignment/OfflineValidation/test/testPrimaryVertexRelatedValidations_cfg.py +++ b/Alignment/OfflineValidation/test/testPrimaryVertexRelatedValidations_cfg.py @@ -36,8 +36,9 @@ class RefitType(Enum): ################################################################### # Set default phase-2 settings ################################################################### -import Configuration.Geometry.defaultPhase2ConditionsEra_cff as _settings -_PH2_GLOBAL_TAG, _PH2_ERA = _settings.get_era_and_conditions(_settings.DEFAULT_VERSION) +if(options.isPhase2): + import Configuration.Geometry.defaultPhase2ConditionsEra_cff as _settings + _PH2_GLOBAL_TAG, _PH2_ERA = _settings.get_era_and_conditions(_settings.DEFAULT_VERSION) ################################################################### # Set the era @@ -123,7 +124,7 @@ class RefitType(Enum): #################################################################### process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, (_PH2_GLOBAL_TAG if options.isPhase2 else 'auto:phase1_2022_realistic'), '') +process.GlobalTag = GlobalTag(process.GlobalTag, (_PH2_GLOBAL_TAG if options.isPhase2 else '125X_mcRun3_2022_realistic_v3'), '') if _allFromGT: print("############ testPVValidation_cfg.py: msg%-i: All is taken from GT") @@ -214,10 +215,21 @@ class RefitType(Enum): runControlNumber = cms.untracked.vuint32(int(runboundary)) ) +#################################################################### +# BeamSpot check +#################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 5, # significance threshold to emit a warning message + errorThr = 10, # significance threshold to abort the job +) + if _isMC: - process.goodvertexSkim = cms.Sequence(process.noscraping) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping) else: - process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.noslowpt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.noslowpt) if(_theRefitter == RefitType.COMMON): diff --git a/Alignment/OfflineValidation/test/test_all_Phase2_cfg.py b/Alignment/OfflineValidation/test/test_all_Phase2_cfg.py index 7fc97f87d8b35..430fe764c429e 100644 --- a/Alignment/OfflineValidation/test/test_all_Phase2_cfg.py +++ b/Alignment/OfflineValidation/test/test_all_Phase2_cfg.py @@ -180,10 +180,21 @@ class RefitType(Enum): runControlNumber = cms.untracked.vuint32(int(runboundary)) ) +#################################################################### +# BeamSpot check +#################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 3, # significance threshold to emit a warning message + errorThr = 5, # significance threshold to abort the job +) + if isMC: - process.goodvertexSkim = cms.Sequence(process.noscraping) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping) else: - process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.noslowpt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.noslowpt) if(theRefitter == RefitType.COMMON): diff --git a/Alignment/OfflineValidation/test/test_all_cfg.py b/Alignment/OfflineValidation/test/test_all_cfg.py index c6bc6945fdbe5..a7e3721f41371 100644 --- a/Alignment/OfflineValidation/test/test_all_cfg.py +++ b/Alignment/OfflineValidation/test/test_all_cfg.py @@ -178,10 +178,21 @@ class RefitType(Enum): runControlNumber = cms.untracked.vuint32(int(runboundary)) ) +#################################################################### +# BeamSpot check +#################################################################### +from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker +process.BeamSpotChecker = beamSpotCompatibilityChecker.clone( + bsFromEvent = "offlineBeamSpot::RECO", # source of the event beamspot (in the ALCARECO files) + bsFromDB = "offlineBeamSpot", # source of the DB beamspot (from Global Tag) NOTE: only if dbFromEvent is True! + warningThr = 3, # significance threshold to emit a warning message + errorThr = 5, # significance threshold to abort the job +) + if isMC: - process.goodvertexSkim = cms.Sequence(process.noscraping) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping) else: - process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.noslowpt) + process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.noslowpt) if(theRefitter == RefitType.COMMON): diff --git a/Alignment/OfflineValidation/test/testingScripts/test_unitGeneric.sh b/Alignment/OfflineValidation/test/testingScripts/test_unitGeneric.sh new file mode 100755 index 0000000000000..8877d23f3569d --- /dev/null +++ b/Alignment/OfflineValidation/test/testingScripts/test_unitGeneric.sh @@ -0,0 +1,16 @@ +#! /bin/bash + +function die { echo $1: status $2 ; exit $2; } + +echo "TESTING Alignment/Generic single configuration with json..." +pushd test_yaml/GenericV/single/testUnits/unitTest/1/ +./cmsRun validation_cfg.py config=validation.json || die "Failure running Generic single configuration with json" $? + +echo "TESTING Alignment/Generic single configuration standalone..." +./cmsRun validation_cfg.py || die "Failure running PV single configuration standalone" $? +popd + +echo "TESTING SplotV merge step" +pushd test_yaml/GenericV/merge/testUnits/1/ +./GenericVmerge validation.json --verbose || die "Failure running PV merge step" $? +popd diff --git a/Alignment/OfflineValidation/test/unit_test.json b/Alignment/OfflineValidation/test/unit_test.json index 9a599e8dd691d..f98590e6b4c0d 100644 --- a/Alignment/OfflineValidation/test/unit_test.json +++ b/Alignment/OfflineValidation/test/unit_test.json @@ -11,7 +11,7 @@ }, "unitTestPV": { "color": "1", - "globaltag": "110X_dataRun2_v10", + "globaltag": "140X_dataRun3_Prompt_v4", "style": "2001", "title": "unit test" }, @@ -147,6 +147,8 @@ "alignments": ["unitTestPV"], "trackcollection": "ALCARECOTkAlMinBias", "vertexcollection": "offlinePrimaryVertices", + "bsIncompatibleWarnThresh": "100", + "bsIncompatibleErrThresh": "1000", "maxevents": "10", "isda": "true", "ismc": "false" @@ -182,12 +184,31 @@ "IOV": ["1"], "alignments": ["unitTest"], "trackcollection": "generalTracks", + "bsIncompatibleWarnThresh": "100", + "bsIncompatibleErrThresh": "1000", "HLTSelection": "False", "triggerBits" : "HLT_*", "maxevents": "10" } } }, + "Generic": { + "merge": { + "testUnits": { + "singles": ["testUnits"] + } + }, + "single": { + "testUnits": { + "IOV": ["1"], + "alignments": ["unitTest"], + "trackcollection": "generalTracks", + "HLTSelection": "False", + "triggerBits" : "HLT_*", + "maxevents": "10" + } + } + }, "DiMuonV" : { "merge": { "testUnits": { @@ -198,6 +219,8 @@ "testUnits" : { "IOV" : ["1"], "alignments" : ["unitTestDiMuonVMC"], + "bsIncompatibleWarnThresh": "100", + "bsIncompatibleErrThresh": "1000", "trackcollection" : "generalTracks", "maxevents" : "10" } @@ -244,13 +267,17 @@ "alignments": ["unitTestJetHT"], "trackCollection": "ALCARECOTkAlMinBias", "maxevents": 100, - "iovListFile": "Alignment/OfflineValidation/data/lumiPerRun_Run2.txt" + "iovListFile": "Alignment/OfflineValidation/data/lumiPerRun_Run2.txt", + "bsIncompatibleWarnThresh": "100", + "bsIncompatibleErrThresh": "1000" }, "testMC": { "alignments": ["unitTestJetHTMC"], "trackCollection": "ALCARECOTkAlMinBias", "mc": "True", - "maxevents": 100 + "maxevents": 100, + "bsIncompatibleWarnThresh": "100", + "bsIncompatibleErrThresh": "1000" } }, "merge": { diff --git a/Alignment/OfflineValidation/test/unit_test.yaml b/Alignment/OfflineValidation/test/unit_test.yaml index d46a6b7c647e6..dc1a73476d1e7 100644 --- a/Alignment/OfflineValidation/test/unit_test.yaml +++ b/Alignment/OfflineValidation/test/unit_test.yaml @@ -8,7 +8,7 @@ alignments: title: unit test unitTestPV: color: 1 - globaltag: 110X_dataRun2_v10 + globaltag: 140X_dataRun3_Prompt_v4 style: 2001 title: unit test ideal: @@ -144,6 +144,8 @@ validations: alignments: - unitTestPV maxevents: 10 + bsIncompatibleWarnThresh: 100 + bsIncompatibleErrThresh: 1000 trackcollection: ALCARECOTkAlMinBias vertexcollection: offlinePrimaryVertices isda: true @@ -180,9 +182,29 @@ validations: alignments: - unitTest trackcollection: generalTracks + bsIncompatibleWarnThresh: 100 + bsIncompatibleErrThresh: 1000 HLTSelection: False triggerBits: HLT_* maxevents: 10 + + Generic: + merge: + testUnits: + singles: + - testUnits + + single: + testUnits: + IOV: + - 1 + alignments: + - unitTest + trackcollection: generalTracks + HLTSelection: False + triggerBits: HLT_* + maxevents: 10 + DiMuonV: merge: testUnits: @@ -194,6 +216,8 @@ validations: - 1 alignments: - unitTestDiMuonVMC + bsIncompatibleWarnThresh: 100 + bsIncompatibleErrThresh: 1000 trackcollection: generalTracks maxevents: 10 @@ -209,6 +233,8 @@ validations: alignments: - unitTestZmumuMCreal - unitTestZmumuMCdesign + bsIncompatibleWarnThresh: 100 + bsIncompatibleErrThresh: 1000 trackcollection: ALCARECOTkAlZMuMu maxevents: 100 MTS: @@ -247,12 +273,16 @@ validations: alignments: - unitTestJetHT trackCollection: ALCARECOTkAlMinBias + bsIncompatibleWarnThresh: 100 + bsIncompatibleErrThresh: 1000 maxevents: 100 iovListFile: Alignment/OfflineValidation/data/lumiPerRun_Run2.txt testMC: alignments: - unitTestJetHTMC + bsIncompatibleWarnThresh: 100 + bsIncompatibleErrThresh: 1000 trackCollection: ALCARECOTkAlMinBias mc: True maxevents: 100 diff --git a/Alignment/TrackerAlignment/scripts/query.py b/Alignment/TrackerAlignment/scripts/query.py index c7f50cc309b91..20450ed1b5a4e 100755 --- a/Alignment/TrackerAlignment/scripts/query.py +++ b/Alignment/TrackerAlignment/scripts/query.py @@ -8,7 +8,6 @@ """ DBS data discovery command line interface """ -from __future__ import print_function import httplib, urllib, types, string, os, sys from optparse import OptionParser diff --git a/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_Phase2_cfg.py b/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_Phase2_cfg.py index f2636c8ae1646..1a3e135c6d13a 100644 --- a/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_Phase2_cfg.py +++ b/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_Phase2_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import copy, sys, os diff --git a/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_cfg.py b/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_cfg.py index 3df00ed9c3def..8e0185293abea 100644 --- a/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_cfg.py +++ b/Alignment/TrackerAlignment/test/Misalignments/createRandomlyMisalignedGeometry_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import copy, sys, os diff --git a/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_Phase2_cfg.py b/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_Phase2_cfg.py index 37658b078bb43..649b874c8d878 100644 --- a/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_Phase2_cfg.py +++ b/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_Phase2_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_cfg.py b/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_cfg.py index 4b6451501aa72..2f16f98ee0fba 100644 --- a/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_cfg.py +++ b/Alignment/TrackerAlignment/test/createTrackerAlignmentRcds_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("Alignment") diff --git a/Alignment/TrackerAlignment/test/mcMisalignmentScaler_cfg.py b/Alignment/TrackerAlignment/test/mcMisalignmentScaler_cfg.py index 4db3edfdcce55..649c22f68e107 100644 --- a/Alignment/TrackerAlignment/test/mcMisalignmentScaler_cfg.py +++ b/Alignment/TrackerAlignment/test/mcMisalignmentScaler_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("MCMisalignmentScaler") diff --git a/Alignment/TrackerAlignment/test/trackerTreeGenerator_cfg.py b/Alignment/TrackerAlignment/test/trackerTreeGenerator_cfg.py index 746890a6d0209..c6237ed437bf5 100644 --- a/Alignment/TrackerAlignment/test/trackerTreeGenerator_cfg.py +++ b/Alignment/TrackerAlignment/test/trackerTreeGenerator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/AnalysisDataFormats/SUSYBSMObjects/interface/HSCParticle.h b/AnalysisDataFormats/SUSYBSMObjects/interface/HSCParticle.h index df867db33a4e5..5d84f319203f4 100644 --- a/AnalysisDataFormats/SUSYBSMObjects/interface/HSCParticle.h +++ b/AnalysisDataFormats/SUSYBSMObjects/interface/HSCParticle.h @@ -10,6 +10,11 @@ #include "DataFormats/GeometryVector/interface/GlobalPoint.h" #include +#include "DataFormats/PatCandidates/interface/Muon.h" +#include "DataFormats/PatCandidates/interface/PackedCandidate.h" +#include "DataFormats/PatCandidates/interface/IsolatedTrack.h" +#include "DataFormats/TrackReco/interface/DeDxHitInfo.h" + #include "DataFormats/MuonReco/interface/MuonTimeExtra.h" #include "AnalysisDataFormats/SUSYBSMObjects/interface/HSCPCaloInfo.h" @@ -45,6 +50,8 @@ namespace susybsm { HSCParticle() {} // check available infos + bool hasTrack() const { return track_.packedCandRef().isNonnull(); } + bool hasMuon() const { return muon_.isNonnull(); } bool hasMuonRef() const { return muonRef_.isNonnull(); } bool hasMTMuonRef() const { return MTMuonRef_.isNonnull(); } bool hasTrackRef() const { return trackRef_.isNonnull(); } @@ -53,6 +60,9 @@ namespace susybsm { bool hasCaloInfo() const { return caloInfoRef_.isNonnull(); } // set infos + void setDeDxHitInfo(const reco::DeDxHitInfo* data) { dedxHitInfo_ = data; } + void setTrack(const pat::IsolatedTrack& data) { track_ = data; } + void setMuon(const pat::MuonRef& data) { muon_ = data; } void setMuon(const reco::MuonRef& data) { muonRef_ = data; } void setMTMuon(const reco::MuonRef& data) { MTMuonRef_ = data; } void setTrack(const reco::TrackRef& data) { trackRef_ = data; } @@ -61,6 +71,9 @@ namespace susybsm { void setCaloInfo(const HSCPCaloInfoRef& data) { caloInfoRef_ = data; } // get infos + const reco::DeDxHitInfo* dedxHitInfo() const { return dedxHitInfo_; } + pat::IsolatedTrack track() const { return track_; } + pat::MuonRef muon() const { return muon_; } reco::TrackRef trackRef() const { return trackRef_; } reco::TrackRef trackIsoRef() const { return trackIsoRef_; } reco::MuonRef muonRef() const { return muonRef_; } @@ -74,6 +87,9 @@ namespace susybsm { int type() const; private: + const reco::DeDxHitInfo* dedxHitInfo_ = nullptr; + pat::IsolatedTrack track_; + pat::MuonRef muon_; reco::TrackRef trackRef_; //TrackRef from refitted track collection (dE/dx purposes) reco::TrackRef trackIsoRef_; //TrackRef from general track collection (isolation purposes) reco::MuonRef muonRef_; diff --git a/AnalysisDataFormats/SUSYBSMObjects/src/classes_def.xml b/AnalysisDataFormats/SUSYBSMObjects/src/classes_def.xml index f0a73307deeb4..f1a41fe196ea8 100644 --- a/AnalysisDataFormats/SUSYBSMObjects/src/classes_def.xml +++ b/AnalysisDataFormats/SUSYBSMObjects/src/classes_def.xml @@ -1,6 +1,6 @@ - - + + diff --git a/CalibCalorimetry/CaloMiscalibTools/test/make_ecal_miscaplibration.py b/CalibCalorimetry/CaloMiscalibTools/test/make_ecal_miscaplibration.py index ddadf7075c18c..5437a2e455895 100755 --- a/CalibCalorimetry/CaloMiscalibTools/test/make_ecal_miscaplibration.py +++ b/CalibCalorimetry/CaloMiscalibTools/test/make_ecal_miscaplibration.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import string,time,thread,random,math,sys #global variables diff --git a/CalibCalorimetry/CaloMiscalibTools/test/make_miscalibration.py b/CalibCalorimetry/CaloMiscalibTools/test/make_miscalibration.py index 08001752fdbc5..564eaa1b83187 100755 --- a/CalibCalorimetry/CaloMiscalibTools/test/make_miscalibration.py +++ b/CalibCalorimetry/CaloMiscalibTools/test/make_miscalibration.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import string,time,thread,random,math,sys #global variables diff --git a/CalibCalorimetry/HcalTPGAlgos/interface/HcaluLUTTPGCoder.h b/CalibCalorimetry/HcalTPGAlgos/interface/HcaluLUTTPGCoder.h index d974bcf54a60d..97766c441a3f6 100644 --- a/CalibCalorimetry/HcalTPGAlgos/interface/HcaluLUTTPGCoder.h +++ b/CalibCalorimetry/HcalTPGAlgos/interface/HcaluLUTTPGCoder.h @@ -6,6 +6,7 @@ #include "Geometry/CaloTopology/interface/HcalTopology.h" #include "DataFormats/HcalDetId/interface/HcalDetId.h" #include "CalibCalorimetry/HcalAlgos/interface/HcalPulseContainmentManager.h" +#include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h" #include #include @@ -34,10 +35,10 @@ class HcaluLUTTPGCoder : public HcalTPGCoder { static const float lsb_; HcaluLUTTPGCoder(); - HcaluLUTTPGCoder(const HcalTopology* topo, const HcalTimeSlew* delay); + HcaluLUTTPGCoder(const HcalTopology* topo, const HcalElectronicsMap* emap, const HcalTimeSlew* delay); ~HcaluLUTTPGCoder() override; - void init(const HcalTopology* top, const HcalTimeSlew* delay); + void init(const HcalTopology* top, const HcalElectronicsMap* emap, const HcalTimeSlew* delay); void adc2Linear(const HBHEDataFrame& df, IntegerCaloSamples& ics) const override; void adc2Linear(const HFDataFrame& df, IntegerCaloSamples& ics) const override; @@ -110,6 +111,7 @@ class HcaluLUTTPGCoder : public HcalTPGCoder { // member variables const HcalTopology* topo_; + const HcalElectronicsMap* emap_; const HcalTimeSlew* delay_; bool LUTGenerationMode_; std::vector FG_HF_thresholds_; diff --git a/CalibCalorimetry/HcalTPGAlgos/interface/LutXml.h b/CalibCalorimetry/HcalTPGAlgos/interface/LutXml.h index 7b418c411e6f7..674c24dad2cae 100644 --- a/CalibCalorimetry/HcalTPGAlgos/interface/LutXml.h +++ b/CalibCalorimetry/HcalTPGAlgos/interface/LutXml.h @@ -21,7 +21,8 @@ #include #include #include "CalibCalorimetry/HcalTPGAlgos/interface/XMLDOMBlock.h" -#include "DataFormats/HcalDetId/interface/HcalSubdetector.h" +#include "DataFormats/DetId/interface/DetId.h" +#include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h" #include class LutXml : public XMLDOMBlock { @@ -56,9 +57,9 @@ class LutXml : public XMLDOMBlock { // //std::vector getLut( int lut_type, int crate, int slot, int topbottom, int fiber, int fiber_channel ); - HcalSubdetector subdet_from_crate(int crate, int slot, int fiber); + DetId detid_from_crate(int crate, int slot, int fiber, int fiberch, bool isTrigger, const HcalElectronicsMap* emap); int a_to_i(char* inbuf); - int create_lut_map(void); + int create_lut_map(const HcalElectronicsMap* emap); static std::string get_checksum(std::vector& lut); diff --git a/CalibCalorimetry/HcalTPGAlgos/src/HcaluLUTTPGCoder.cc b/CalibCalorimetry/HcalTPGAlgos/src/HcaluLUTTPGCoder.cc index dc6a562d01cbb..582098ffd0dd5 100644 --- a/CalibCalorimetry/HcalTPGAlgos/src/HcaluLUTTPGCoder.cc +++ b/CalibCalorimetry/HcalTPGAlgos/src/HcaluLUTTPGCoder.cc @@ -40,6 +40,7 @@ constexpr double MaximumFractionalError = 0.002; // 0.2% error allowed from thi HcaluLUTTPGCoder::HcaluLUTTPGCoder() : topo_{}, + emap_{}, delay_{}, LUTGenerationMode_{}, FG_HF_thresholds_{}, @@ -71,10 +72,13 @@ HcaluLUTTPGCoder::HcaluLUTTPGCoder() linearLSB_QIE11_{}, linearLSB_QIE11Overlap_{} {} -HcaluLUTTPGCoder::HcaluLUTTPGCoder(const HcalTopology* top, const HcalTimeSlew* delay) { init(top, delay); } +HcaluLUTTPGCoder::HcaluLUTTPGCoder(const HcalTopology* top, const HcalElectronicsMap* emap, const HcalTimeSlew* delay) { + init(top, emap, delay); +} -void HcaluLUTTPGCoder::init(const HcalTopology* top, const HcalTimeSlew* delay) { +void HcaluLUTTPGCoder::init(const HcalTopology* top, const HcalElectronicsMap* emap, const HcalTimeSlew* delay) { topo_ = top; + emap_ = emap; delay_ = delay; LUTGenerationMode_ = true; FG_HF_thresholds_ = {0, 0}; @@ -283,7 +287,7 @@ void HcaluLUTTPGCoder::update(const char* filename, bool appendMSB) { void HcaluLUTTPGCoder::updateXML(const char* filename) { LutXml* _xml = new LutXml(filename); - _xml->create_lut_map(); + _xml->create_lut_map(emap_); HcalSubdetector subdet[3] = {HcalBarrel, HcalEndcap, HcalForward}; for (int ieta = -HcalDetId::kHcalEtaMask2; ieta <= (int)(HcalDetId::kHcalEtaMask2); ++ieta) { for (unsigned int iphi = 0; iphi <= HcalDetId::kHcalPhiMask2; ++iphi) { @@ -367,8 +371,6 @@ void HcaluLUTTPGCoder::update(const HcalDbService& conditions) { // Here we will determine if we are using new version of TPs (1TS) // i.e. are we using a new pulse filter scheme. - const HcalElectronicsMap* emap = conditions.getHcalMapping(); - int lastHBRing = topo_->lastHBRing(); int lastHERing = topo_->lastHERing(); @@ -378,13 +380,13 @@ void HcaluLUTTPGCoder::update(const HcalDbService& conditions) { bool foundHE = false; bool newHBtp = false; bool newHEtp = false; - std::vector vIds = emap->allElectronicsIdTrigger(); + std::vector vIds = emap_->allElectronicsIdTrigger(); for (std::vector::const_iterator eId = vIds.begin(); eId != vIds.end(); eId++) { // The first HB or HE id is enough to tell whether to use new scheme in HB or HE if (foundHB and foundHE) break; - HcalTrigTowerDetId hcalTTDetId(emap->lookupTrigger(*eId)); + HcalTrigTowerDetId hcalTTDetId(emap_->lookupTrigger(*eId)); if (hcalTTDetId.null()) continue; diff --git a/CalibCalorimetry/HcalTPGAlgos/src/LutXml.cc b/CalibCalorimetry/HcalTPGAlgos/src/LutXml.cc index a5216186dc42a..1b22f6f142a8a 100644 --- a/CalibCalorimetry/HcalTPGAlgos/src/LutXml.cc +++ b/CalibCalorimetry/HcalTPGAlgos/src/LutXml.cc @@ -23,6 +23,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "CalibCalorimetry/HcalTPGAlgos/interface/HcalEmap.h" #include "DataFormats/HcalDetId/interface/HcalDetId.h" +#include "DataFormats/HcalDetId/interface/HcalZDCDetId.h" #include "DataFormats/HcalDetId/interface/HcalTrigTowerDetId.h" using namespace std; @@ -32,7 +33,6 @@ LutXml::Config::_Config() { infotype = "LUT"; ieta = -1000; iphi = -1000; - depth = -1; crate = -1; slot = -1; topbottom = -1; @@ -314,28 +314,18 @@ int LutXml::test_access(std::string filename) { return 0; } -HcalSubdetector LutXml::subdet_from_crate(int crate_, int slot, int fiber) { - // HBHE: 0,1,4,5,10,11,14,15,17 (+20) - // HF: 2,9,12 (+20) - // HO: 3,6,7,13,18 (+20) - int crate = crate_ < 20 ? crate_ : crate_ - 20; - if (crate == 2 || crate == 9 || crate == 12) - return HcalForward; - else if (crate == 3 || crate == 6 || crate == 7 || crate == 13 || crate == 18) - return HcalOuter; - else if (crate == 0 || crate == 1 || crate == 4 || crate == 5 || crate == 10 || crate == 11 || crate == 14 || - crate == 15 || crate == 17) { - if (slot % 3 == 1) - return HcalBarrel; - else if (slot % 3 == 0) - return HcalEndcap; - else if (fiber < 12) - return HcalBarrel; - else - return HcalEndcap; +DetId LutXml::detid_from_crate( + int crate, int slot, int fiber, int fiberch, bool isTrigger, const HcalElectronicsMap *emap) { + HcalElectronicsId electronicsId = HcalElectronicsId(crate, slot, fiber, fiberch, isTrigger); + + DetId detId = emap->lookup(electronicsId); + if (detId.null()) { + edm::LogWarning("LutXml") << "Invalid electronics ID or no mapping found for crate: " << crate << " slot: " << slot + << " fiber: " << fiber << " fiberch: " << fiberch << std::endl; + return 0; + } else { + return detId; } - edm::LogWarning("LutXml::subdet_from_crate") << "crate " << crate_ << " is not accounted for"; - return HcalEmpty; } int LutXml::a_to_i(char *inbuf) { @@ -345,11 +335,7 @@ int LutXml::a_to_i(char *inbuf) { } // organize all LUTs in XML into a map for fast access -// -// FIXME: uses hardcoded CRATE-to-subdetector mapping -// FIXME: it would be better to use some official map -// -int LutXml::create_lut_map(void) { +int LutXml::create_lut_map(const HcalElectronicsMap *emap) { //delete lut_map; lut_map.clear(); //lut_map = new std::map >(); @@ -364,13 +350,12 @@ int LutXml::create_lut_map(void) { int n_of_par = par_list->getLength(); int ieta = -99; int iphi = -99; - int depth = -99; int crate = -99; int slot = -99; int fiber = -99; - int lut_type = -99; + int fiberch = -99; int slb = -99; - HcalSubdetector subdet; + int lut_type = -99; for (int j = 0; j != n_of_par; j++) { DOMElement *aPar = (DOMElement *)(par_list->item(j)); char *aName = XMLString::transcode(aPar->getAttribute(XMLProcessor::_toXMLCh("name"))); @@ -378,20 +363,20 @@ int LutXml::create_lut_map(void) { ieta = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); if (strcmp(aName, "IPHI") == 0) iphi = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); - if (strcmp(aName, "DEPTH") == 0) - depth = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); if (strcmp(aName, "CRATE") == 0) crate = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); if (strcmp(aName, "SLOT") == 0) slot = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); + if (strcmp(aName, "FIBERCHAN") == 0) + fiberch = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); if (strcmp(aName, "FIBER") == 0) fiber = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); - if (strcmp(aName, "LUT_TYPE") == 0) - lut_type = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); if (strcmp(aName, "SLB") == 0) slb = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); + if (strcmp(aName, "LUT_TYPE") == 0) + lut_type = a_to_i(XMLString::transcode(aPar->getFirstChild()->getNodeValue())); } - subdet = subdet_from_crate(crate, slot, fiber); + DOMElement *_data = (DOMElement *)(aBrick->getElementsByTagName(XMLString::transcode("Data"))->item(0)); char *_str = XMLString::transcode(_data->getFirstChild()->getNodeValue()); @@ -437,11 +422,18 @@ int LutXml::create_lut_map(void) { } } } + // filling the map uint32_t _key = 0; if (lut_type == 1) { - HcalDetId _id(subdet, ieta, iphi, depth); - _key = _id.rawId(); + DetId detId = detid_from_crate(crate, slot, fiber, fiberch, false, emap); + if (detId.det() == DetId::Hcal) { + HcalDetId _id(detId); + _key = _id.rawId(); + } else if (detId.det() == DetId::Calo && detId.subdetId() == HcalZDCDetId::SubdetectorId) { + HcalZDCDetId _id(detId); + _key = _id.rawId(); + } } else if (lut_type == 2) { int version = (abs(ieta) > 29 && slb != 12 && crate > 20) ? 1 : 0; HcalTrigTowerDetId _id(ieta, iphi, 10 * version); diff --git a/CalibCalorimetry/HcalTPGEventSetup/src/HcalTPGCoderULUT.cc b/CalibCalorimetry/HcalTPGEventSetup/src/HcalTPGCoderULUT.cc index 775a10cb76255..811976266a9a0 100644 --- a/CalibCalorimetry/HcalTPGEventSetup/src/HcalTPGCoderULUT.cc +++ b/CalibCalorimetry/HcalTPGEventSetup/src/HcalTPGCoderULUT.cc @@ -32,6 +32,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "Geometry/CaloTopology/interface/HcalTopology.h" #include "CalibFormats/HcalObjects/interface/HcalDbService.h" +#include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h" // // class decleration @@ -49,7 +50,7 @@ class HcalTPGCoderULUT : public edm::ESProducer { private: using HostType = edm::ESProductHost; - void buildCoder(const HcalTopology*, const HcalTimeSlew*, HcaluLUTTPGCoder*); + void buildCoder(const HcalTopology*, const HcalElectronicsMap*, const HcalTimeSlew*, HcaluLUTTPGCoder*); // ----------member data --------------------------- edm::ReusableObjectHolder holder_; @@ -96,6 +97,7 @@ HcalTPGCoderULUT::HcalTPGCoderULUT(const edm::ParameterSet& iConfig) { auto cc = setWhatProduced(this); topoToken_ = cc.consumes(); delayToken_ = cc.consumes(edm::ESInputTag{"", "HBHE"}); + serviceToken_ = cc.consumes(); if (!(read_Ascii_ || read_XML_)) { LUTGenerationMode_ = iConfig.getParameter("LUTGenerationMode"); @@ -106,15 +108,17 @@ HcalTPGCoderULUT::HcalTPGCoderULUT(const edm::ParameterSet& iConfig) { linearLSB_QIE11Overlap_ = scales.getParameter("LSBQIE11Overlap"); maskBit_ = iConfig.getParameter("MaskBit"); FG_HF_thresholds_ = iConfig.getParameter >("FG_HF_thresholds"); - serviceToken_ = cc.consumes(); } else { ifilename_ = iConfig.getParameter("inputLUTs"); } } -void HcalTPGCoderULUT::buildCoder(const HcalTopology* topo, const HcalTimeSlew* delay, HcaluLUTTPGCoder* theCoder) { +void HcalTPGCoderULUT::buildCoder(const HcalTopology* topo, + const HcalElectronicsMap* emap, + const HcalTimeSlew* delay, + HcaluLUTTPGCoder* theCoder) { using namespace edm::es; - theCoder->init(topo, delay); + theCoder->init(topo, emap, delay); theCoder->setOverrideDBweightsAndFilterHB(overrideDBweightsAndFilterHB_); theCoder->setOverrideDBweightsAndFilterHE(overrideDBweightsAndFilterHE_); @@ -161,12 +165,14 @@ HcalTPGCoderULUT::ReturnType HcalTPGCoderULUT::produce(const HcalTPGRecord& iRec const auto& topo = iRecord.get(topoToken_); const auto& delayRcd = iRecord.getRecord(); + const auto& dbServ = iRecord.get(serviceToken_); + const auto* emap = dbServ.getHcalMapping(); const auto& delay = delayRcd.get(delayToken_); if (read_Ascii_ || read_XML_) { - buildCoder(&topo, &delay, host.get()); + buildCoder(&topo, emap, &delay, host.get()); } else { - host->ifRecordChanges(iRecord, [this, &topo, &delay, h = host.get()](auto const& rec) { - buildCoder(&topo, &delay, h); + host->ifRecordChanges(iRecord, [this, &topo, emap, &delay, h = host.get()](auto const& rec) { + buildCoder(&topo, emap, &delay, h); h->update(rec.get(serviceToken_)); // Temporary update for FG Lut // Will be moved to DB diff --git a/CalibFormats/SiStripObjects/interface/SiStripClusterizerConditions.h b/CalibFormats/SiStripObjects/interface/SiStripClusterizerConditions.h index 35d07be8c8587..9323e81474f1a 100644 --- a/CalibFormats/SiStripObjects/interface/SiStripClusterizerConditions.h +++ b/CalibFormats/SiStripObjects/interface/SiStripClusterizerConditions.h @@ -14,18 +14,21 @@ class SiStripClusterizerConditions { struct Det { bool valid() const { return ind != invalidI; } - uint16_t rawNoise(const uint16_t strip) const { return SiStripNoises::getRawNoise(strip, noiseRange); } - float noise(const uint16_t strip) const { return SiStripNoises::getNoise(strip, noiseRange); } + uint16_t rawNoise(const uint16_t strip) const { return rawNoises[strip]; } + float noise(const uint16_t strip) const { return 0.1f * float(rawNoises[strip]); } float weight(const uint16_t strip) const { return m_weight[strip / 128]; } - bool bad(const uint16_t strip) const { return quality->IsStripBad(qualityRange, strip); } + bool bad(const uint16_t strip) const { return qualityBits[strip]; } bool allBadBetween(uint16_t L, const uint16_t& R) const { while (++L < R && bad(L)) { }; return L == R; } + static constexpr uint16_t kMaxStrips = 768; SiStripQuality const* quality; - SiStripNoises::Range noiseRange; SiStripQuality::Range qualityRange; + std::array qualityBits = {}; + SiStripNoises::Range noiseRange; + std::array rawNoises = {}; float m_weight[6]; uint32_t detId = 0; unsigned short ind = invalidI; @@ -72,7 +75,15 @@ class SiStripClusterizerConditions { auto& det = m_dets.emplace_back(); det.quality = m_quality; det.qualityRange = qualityRange; + for (uint16_t s = 0U; s < det.kMaxStrips; ++s) + det.qualityBits[s] = m_quality->IsStripBad(qualityRange, s); det.noiseRange = noiseRange; + auto maxRange8 = (noiseRange.second - noiseRange.first) * 8; + for (uint16_t s = 0U; s < det.kMaxStrips; ++s) { + if (9 * s >= maxRange8) + break; + det.rawNoises[s] = SiStripNoises::getRawNoise(s, noiseRange); + } for (uint32_t i = 0; i != invGains.size(); ++i) { det.m_weight[i] = invGains[i]; } diff --git a/CalibMuon/DTCalibration/python/PlottingTools/plotResiduals.py b/CalibMuon/DTCalibration/python/PlottingTools/plotResiduals.py index 229eab3edac98..36dd3fc267c5e 100644 --- a/CalibMuon/DTCalibration/python/PlottingTools/plotResiduals.py +++ b/CalibMuon/DTCalibration/python/PlottingTools/plotResiduals.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import ROOT from .fitResidual import fitResidual from .drawHistoAllChambers import drawHisto diff --git a/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsCosmics.py b/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsCosmics.py index cdd82fd7b3a11..ff000022a950c 100644 --- a/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsCosmics.py +++ b/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsCosmics.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import ROOT from .fitResidual import fitResidual from .drawHistoAllChambers import drawHisto diff --git a/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsPerLayer.py b/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsPerLayer.py index 8c11f9c55b649..c2ff08712a2e6 100644 --- a/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsPerLayer.py +++ b/CalibMuon/DTCalibration/python/PlottingTools/plotResidualsPerLayer.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import ROOT from .fitResidual import fitResidual from .drawHistoAllChambers import drawHisto diff --git a/CalibMuon/DTCalibration/python/PlottingTools/plotT0FromHistos.py b/CalibMuon/DTCalibration/python/PlottingTools/plotT0FromHistos.py index 23b57c9684f19..7b4ec36cc5442 100644 --- a/CalibMuon/DTCalibration/python/PlottingTools/plotT0FromHistos.py +++ b/CalibMuon/DTCalibration/python/PlottingTools/plotT0FromHistos.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import ROOT from .drawHistoAllChambers import drawHisto diff --git a/CalibMuon/DTCalibration/python/PlottingTools/plotTTrigFromHistos.py b/CalibMuon/DTCalibration/python/PlottingTools/plotTTrigFromHistos.py index 762f0b7d835db..1de3f6ddd81a8 100644 --- a/CalibMuon/DTCalibration/python/PlottingTools/plotTTrigFromHistos.py +++ b/CalibMuon/DTCalibration/python/PlottingTools/plotTTrigFromHistos.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import ROOT from .drawHistoAllChambers import drawHisto diff --git a/CalibMuon/DTCalibration/python/PlottingTools/plotVDriftFromHistos.py b/CalibMuon/DTCalibration/python/PlottingTools/plotVDriftFromHistos.py index 3e59597c16f16..34dc77210750f 100644 --- a/CalibMuon/DTCalibration/python/PlottingTools/plotVDriftFromHistos.py +++ b/CalibMuon/DTCalibration/python/PlottingTools/plotVDriftFromHistos.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import ROOT from .drawHistoAllChambers import drawHisto diff --git a/CalibMuon/DTCalibration/python/Workflow/CrabHelper.py b/CalibMuon/DTCalibration/python/Workflow/CrabHelper.py index 0c67f4f46c5a6..c012acd64df76 100644 --- a/CalibMuon/DTCalibration/python/Workflow/CrabHelper.py +++ b/CalibMuon/DTCalibration/python/Workflow/CrabHelper.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import logging import sys import os diff --git a/CalibMuon/DTCalibration/python/Workflow/Crabtools/crabFunctions.py b/CalibMuon/DTCalibration/python/Workflow/Crabtools/crabFunctions.py index a3045f1a78389..17afc8cca4eee 100644 --- a/CalibMuon/DTCalibration/python/Workflow/Crabtools/crabFunctions.py +++ b/CalibMuon/DTCalibration/python/Workflow/Crabtools/crabFunctions.py @@ -4,7 +4,6 @@ # # This module provides common functions for tasks with crab3. # You need no create a CrabController object in order to use the functions -from __future__ import print_function import os,sys,glob import tarfile import xml.etree.ElementTree as ET diff --git a/CalibMuon/DTCalibration/python/Workflow/DTCalibrationWorker.py b/CalibMuon/DTCalibration/python/Workflow/DTCalibrationWorker.py index e158e8837c3cb..a0afe3a12e073 100755 --- a/CalibMuon/DTCalibration/python/Workflow/DTCalibrationWorker.py +++ b/CalibMuon/DTCalibration/python/Workflow/DTCalibrationWorker.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import sys,os,time import subprocess from .tools import loadCmsProcess diff --git a/CalibMuon/DTCalibration/python/Workflow/DTTtrigWorkflow.py b/CalibMuon/DTCalibration/python/Workflow/DTTtrigWorkflow.py index 2a46d72998304..465bc14b15f03 100644 --- a/CalibMuon/DTCalibration/python/Workflow/DTTtrigWorkflow.py +++ b/CalibMuon/DTCalibration/python/Workflow/DTTtrigWorkflow.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import os import logging import glob diff --git a/CalibMuon/DTCalibration/python/Workflow/DTVdriftWorkflow.py b/CalibMuon/DTCalibration/python/Workflow/DTVdriftWorkflow.py index 99c1ecea52812..fbe87cb77f674 100644 --- a/CalibMuon/DTCalibration/python/Workflow/DTVdriftWorkflow.py +++ b/CalibMuon/DTCalibration/python/Workflow/DTVdriftWorkflow.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import os import logging diff --git a/CalibMuon/DTCalibration/python/Workflow/DTWorkflow.py b/CalibMuon/DTCalibration/python/Workflow/DTWorkflow.py index 156e5310d5a1f..6ddeffd7ba934 100644 --- a/CalibMuon/DTCalibration/python/Workflow/DTWorkflow.py +++ b/CalibMuon/DTCalibration/python/Workflow/DTWorkflow.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import os,sys import glob import logging diff --git a/CalibMuon/DTCalibration/python/Workflow/tools.py b/CalibMuon/DTCalibration/python/Workflow/tools.py index b061e9d380a22..b3b42b57f1f9e 100644 --- a/CalibMuon/DTCalibration/python/Workflow/tools.py +++ b/CalibMuon/DTCalibration/python/Workflow/tools.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys,imp import subprocess import logging diff --git a/CalibMuon/DTCalibration/scripts/allPlotsResiduals.py b/CalibMuon/DTCalibration/scripts/allPlotsResiduals.py index 801fec5b6878b..9e7733a322427 100755 --- a/CalibMuon/DTCalibration/scripts/allPlotsResiduals.py +++ b/CalibMuon/DTCalibration/scripts/allPlotsResiduals.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import ROOT import optparse import re diff --git a/CalibMuon/DTCalibration/scripts/mergeVDriftHistosByStation.py b/CalibMuon/DTCalibration/scripts/mergeVDriftHistosByStation.py index 21b996b06ce92..5f1b06d096289 100755 --- a/CalibMuon/DTCalibration/scripts/mergeVDriftHistosByStation.py +++ b/CalibMuon/DTCalibration/scripts/mergeVDriftHistosByStation.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import ROOT import sys diff --git a/CalibMuon/DTCalibration/test/DumpDBToFile_cfg.py b/CalibMuon/DTCalibration/test/DumpDBToFile_cfg.py index 3a10e31efc127..e561b183b02e0 100644 --- a/CalibMuon/DTCalibration/test/DumpDBToFile_cfg.py +++ b/CalibMuon/DTCalibration/test/DumpDBToFile_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/CalibMuon/DTCalibration/test/DumpFileToDB_cfg.py b/CalibMuon/DTCalibration/test/DumpFileToDB_cfg.py index c1303f43c207f..23c8be3f80347 100644 --- a/CalibMuon/DTCalibration/test/DumpFileToDB_cfg.py +++ b/CalibMuon/DTCalibration/test/DumpFileToDB_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os diff --git a/CalibPPS/AlignmentRelative/plugins/PPSModifySingularModes.cc b/CalibPPS/AlignmentRelative/plugins/PPSModifySingularModes.cc index b2f2b1dc5c59c..9aedcc8a9c5b5 100644 --- a/CalibPPS/AlignmentRelative/plugins/PPSModifySingularModes.cc +++ b/CalibPPS/AlignmentRelative/plugins/PPSModifySingularModes.cc @@ -60,7 +60,7 @@ void PPSModifySingularModes::beginRun(edm::Run const &, edm::EventSetup const &e const double de_rho2 = ps_.getUntrackedParameter("de_rho2"); FileInPath inputFileInPath(ps_.getUntrackedParameter("inputFile")); - const string inputFile = inputFileInPath.fullPath(); + const string &inputFile = inputFileInPath.fullPath(); const string outputFile = ps_.getUntrackedParameter("outputFile"); // validate config parameters diff --git a/CalibTracker/SiPixelConnectivity/test/SiPixelFedCablingMapWriter.cc b/CalibTracker/SiPixelConnectivity/test/SiPixelFedCablingMapWriter.cc index 4a6a24069da4a..5d15997c0c7a6 100644 --- a/CalibTracker/SiPixelConnectivity/test/SiPixelFedCablingMapWriter.cc +++ b/CalibTracker/SiPixelConnectivity/test/SiPixelFedCablingMapWriter.cc @@ -45,9 +45,6 @@ SiPixelFedCablingMapWriter::SiPixelFedCablingMapWriter(const edm::ParameterSet& out << " input file name " << fileName_ << endl; //out << " phase " << phase1_ << endl; LogInfo("initialisation: ") << out.str(); - - //::putenv(const_cast(std::string("CORAL_AUTH_USER=me").c_str())); - //::putenv(const_cast(std::string("CORAL_AUTH_PASSWORD=none").c_str())); } SiPixelFedCablingMapWriter::~SiPixelFedCablingMapWriter() = default; diff --git a/CalibTracker/SiPixelESProducers/test/testSiPixelFakeLorentzAngleESSource_cfg.py b/CalibTracker/SiPixelESProducers/test/testSiPixelFakeLorentzAngleESSource_cfg.py index 826ac423d11d2..854d5e27e6281 100644 --- a/CalibTracker/SiPixelESProducers/test/testSiPixelFakeLorentzAngleESSource_cfg.py +++ b/CalibTracker/SiPixelESProducers/test/testSiPixelFakeLorentzAngleESSource_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/CalibTracker/SiStripChannelGain/src/APVGainHelpers.cc b/CalibTracker/SiStripChannelGain/src/APVGainHelpers.cc index a55b005b304bb..3e45517aa4d87 100644 --- a/CalibTracker/SiStripChannelGain/src/APVGainHelpers.cc +++ b/CalibTracker/SiStripChannelGain/src/APVGainHelpers.cc @@ -225,7 +225,7 @@ std::vector> APVGain::monHnames(std::vector< out.reserve(re); std::string Tag = tag; - if (Tag.length()) + if (!Tag.empty()) Tag = "__" + Tag; std::string h_tag = ""; diff --git a/CalibTracker/SiStripChannelGain/test/7TeVData/automatic_RunOnCalibTree.py b/CalibTracker/SiStripChannelGain/test/7TeVData/automatic_RunOnCalibTree.py index e2967958f10f7..4b4b0a5ff63c0 100644 --- a/CalibTracker/SiStripChannelGain/test/7TeVData/automatic_RunOnCalibTree.py +++ b/CalibTracker/SiStripChannelGain/test/7TeVData/automatic_RunOnCalibTree.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os,sys import getopt import subprocess diff --git a/CalibTracker/SiStripChannelGain/test/7TeVData/dataCert.py b/CalibTracker/SiStripChannelGain/test/7TeVData/dataCert.py index a7a012c6d3068..47602105c292c 100644 --- a/CalibTracker/SiStripChannelGain/test/7TeVData/dataCert.py +++ b/CalibTracker/SiStripChannelGain/test/7TeVData/dataCert.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,json,sys diff --git a/CalibTracker/SiStripChannelGain/test/7TeVData/submitJob.py b/CalibTracker/SiStripChannelGain/test/7TeVData/submitJob.py index b69851410bf4d..516a975a3cf7d 100644 --- a/CalibTracker/SiStripChannelGain/test/7TeVData/submitJob.py +++ b/CalibTracker/SiStripChannelGain/test/7TeVData/submitJob.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os,sys import getopt import time diff --git a/CalibTracker/SiStripChannelGain/test/CodeExample/computeGain_cfg_OnBatch.py b/CalibTracker/SiStripChannelGain/test/CodeExample/computeGain_cfg_OnBatch.py index 046a0c8c2c4f0..f286cad2266d1 100644 --- a/CalibTracker/SiStripChannelGain/test/CodeExample/computeGain_cfg_OnBatch.py +++ b/CalibTracker/SiStripChannelGain/test/CodeExample/computeGain_cfg_OnBatch.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/CodeExample/produceCalibrationTree_cfg_OnBatch.py b/CalibTracker/SiStripChannelGain/test/CodeExample/produceCalibrationTree_cfg_OnBatch.py index 2b7975aae84d7..ce39c8132267a 100644 --- a/CalibTracker/SiStripChannelGain/test/CodeExample/produceCalibrationTree_cfg_OnBatch.py +++ b/CalibTracker/SiStripChannelGain/test/CodeExample/produceCalibrationTree_cfg_OnBatch.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/MergeOnBatch.py b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/MergeOnBatch.py index ba2f517047824..01b05e5437b49 100644 --- a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/MergeOnBatch.py +++ b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/MergeOnBatch.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/launchOnBatch.py b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/launchOnBatch.py index 4434bdc2123aa..9230b355e8feb 100644 --- a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/launchOnBatch.py +++ b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/launchOnBatch.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MergeJob_cfg.py b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MergeJob_cfg.py index 0e32c7d281f7a..e4712971219c0 100644 --- a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MergeJob_cfg.py +++ b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MergeJob_cfg.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MultiJob_cfg.py b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MultiJob_cfg.py index 0e32c7d281f7a..e4712971219c0 100644 --- a/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MultiJob_cfg.py +++ b/CalibTracker/SiStripChannelGain/test/Cosmic_B38/onFarm_MultiJob_cfg.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/PCL/Launch.py b/CalibTracker/SiStripChannelGain/test/PCL/Launch.py index 28a13eea2819c..b42a96babbe59 100644 --- a/CalibTracker/SiStripChannelGain/test/PCL/Launch.py +++ b/CalibTracker/SiStripChannelGain/test/PCL/Launch.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripChannelGain/test/testSSTGain_PCL_FromRECO_cfg.py b/CalibTracker/SiStripChannelGain/test/testSSTGain_PCL_FromRECO_cfg.py index 8235a468266c7..443e08a36dc85 100644 --- a/CalibTracker/SiStripChannelGain/test/testSSTGain_PCL_FromRECO_cfg.py +++ b/CalibTracker/SiStripChannelGain/test/testSSTGain_PCL_FromRECO_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # with command line options: stepALCA --datatier ALCARECO --conditions auto:run2_data -s ALCA:PromptCalibProdSiStripGains --eventcontent ALCARECO -n 1000 --dasquery=file dataset=/ZeroBias/Run2016C-SiStripCalMinBias-18Apr2017-v1/ALCARECO run=276243 --no_exec import warnings diff --git a/CalibTracker/SiStripCommon/python/das.py b/CalibTracker/SiStripCommon/python/das.py index 4fbfff8ad8819..60e88386b8345 100644 --- a/CalibTracker/SiStripCommon/python/das.py +++ b/CalibTracker/SiStripCommon/python/das.py @@ -1,4 +1,3 @@ -from __future__ import print_function from das_client import get_data import subprocess #from pdb import set_trace diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/SubmitJobs.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/SubmitJobs.py index fce16f8dbd9f4..c4e4d4fa167d2 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/SubmitJobs.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/SubmitJobs.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import urllib import string import os diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/cleanFolders.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/cleanFolders.py index ba367029c7311..9bbc162f7830b 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/cleanFolders.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/cleanFolders.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os def getName(log): diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_CosmicsLABP_cfg.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_CosmicsLABP_cfg.py index bc5062a7a833b..5b824fa9649a9 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_CosmicsLABP_cfg.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_CosmicsLABP_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_template_cfg.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_template_cfg.py index ac3583de352b0..ee489f9962b28 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_template_cfg.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/produceCalibrationTree_template_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing from CalibTracker.SiStripCommon.shallowTree_test_template import * diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/Config.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/Config.py index 5cfcdffcee5a9..0fefcf9856fee 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/Config.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/Config.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import os, time,sys class configuration: diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/launchJobs.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/launchJobs.py index dd2a02ee61646..63a689b02c2f6 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/launchJobs.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/launchJobs.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -from __future__ import absolute_import -from __future__ import print_function import urllib from . import Config import string diff --git a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/runJob.py b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/runJob.py index 7649413e7f30d..4ee2e97f07e38 100644 --- a/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/runJob.py +++ b/CalibTracker/SiStripCommon/test/MakeCalibrationTrees/submitCalibTree/runJob.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -from __future__ import absolute_import -from __future__ import print_function import os import sys import subprocess diff --git a/CalibTracker/SiStripCommon/test/testCalibTree_nano.py b/CalibTracker/SiStripCommon/test/testCalibTree_nano.py index ffdf36102538f..c02d719092be8 100644 --- a/CalibTracker/SiStripCommon/test/testCalibTree_nano.py +++ b/CalibTracker/SiStripCommon/test/testCalibTree_nano.py @@ -1,4 +1,3 @@ -from __future__ import print_function ## adapted from produceCalibrationTree_template_cfg.py diff --git a/CalibTracker/SiStripCommon/test/testCalibTree_nano_G2.py b/CalibTracker/SiStripCommon/test/testCalibTree_nano_G2.py index b532ee28b5dff..0c6676f909472 100644 --- a/CalibTracker/SiStripCommon/test/testCalibTree_nano_G2.py +++ b/CalibTracker/SiStripCommon/test/testCalibTree_nano_G2.py @@ -1,4 +1,3 @@ -from __future__ import print_function ## adapted from produceCalibrationTree_template_cfg.py diff --git a/CalibTracker/SiStripCommon/test/testProduceCalibrationTree_cfg.py b/CalibTracker/SiStripCommon/test/testProduceCalibrationTree_cfg.py index 8391465d5a7e7..ca9b0e201ebf1 100644 --- a/CalibTracker/SiStripCommon/test/testProduceCalibrationTree_cfg.py +++ b/CalibTracker/SiStripCommon/test/testProduceCalibrationTree_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.patInputFiles_cff import filesRelValTTbarPileUpGENSIMRECO import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/CalibTracker/SiStripDCS/test/ChangeToHVmap.py b/CalibTracker/SiStripDCS/test/ChangeToHVmap.py index 98d1796d27815..5634fe191f4ad 100755 --- a/CalibTracker/SiStripDCS/test/ChangeToHVmap.py +++ b/CalibTracker/SiStripDCS/test/ChangeToHVmap.py @@ -4,7 +4,6 @@ map derived from pedestal runs studies with the old db map into a new accurate map. """ -from __future__ import print_function import sys diff --git a/CalibTracker/SiStripDCS/test/CheckAllIOVs.py b/CalibTracker/SiStripDCS/test/CheckAllIOVs.py index 02b11a13ebecf..235e3238016c3 100755 --- a/CalibTracker/SiStripDCS/test/CheckAllIOVs.py +++ b/CalibTracker/SiStripDCS/test/CheckAllIOVs.py @@ -7,7 +7,6 @@ 3- creates 2 log files per IOV (Summary/Debug) with all the SiStripDetVOff information in ASCII format It is recommended to redirect the output to a file. """ -from __future__ import print_function #3- takes the output of each job and builds a single output with the content of each iov import os diff --git a/CalibTracker/SiStripDCS/test/CheckLogs.py b/CalibTracker/SiStripDCS/test/CheckLogs.py index 6d8572b0dfde3..da9882b12467e 100755 --- a/CalibTracker/SiStripDCS/test/CheckLogs.py +++ b/CalibTracker/SiStripDCS/test/CheckLogs.py @@ -1,7 +1,6 @@ #! /usr/bin/env python #Quick and dirty script to "analyze" the log of the CheckAllIOVs.py to validate #plotting macro ExtractTrends.C -from __future__ import print_function import sys #print "Opening logfile %s"%sys.argv[1] log=open(sys.argv[1]) diff --git a/CalibTracker/SiStripDCS/test/MakeList.py b/CalibTracker/SiStripDCS/test/MakeList.py index dd5a11ea5b251..b35adbd0c6e91 100644 --- a/CalibTracker/SiStripDCS/test/MakeList.py +++ b/CalibTracker/SiStripDCS/test/MakeList.py @@ -1,6 +1,5 @@ #! /usr/bin/env python #Quick and dirty script to provide the necessary (ordered by timestamp list of logs in the) list.txt file used by the ExtractTrends.C root macro -from __future__ import print_function import os import time diff --git a/CalibTracker/SiStripDCS/test/MakeTkMaps.py b/CalibTracker/SiStripDCS/test/MakeTkMaps.py index 1bdadd37554da..bc5ade6af394f 100755 --- a/CalibTracker/SiStripDCS/test/MakeTkMaps.py +++ b/CalibTracker/SiStripDCS/test/MakeTkMaps.py @@ -11,7 +11,6 @@ #TODO: #In the future can put it in scripts/ and take dir to run from and write to as options. -from __future__ import print_function import os, subprocess def ProduceTkMapVoltageInputFiles(workdir=os.getcwd()): #Setting the dir by default to the current working directory... diff --git a/CalibTracker/SiStripDCS/test/ManualO2OForRestart.py b/CalibTracker/SiStripDCS/test/ManualO2OForRestart.py index d22e8ee443f6d..81e5f1b99c855 100755 --- a/CalibTracker/SiStripDCS/test/ManualO2OForRestart.py +++ b/CalibTracker/SiStripDCS/test/ManualO2OForRestart.py @@ -6,7 +6,6 @@ By splitting it in smaller intervals of a given DeltaT it is possible to keep under control the memory used. """ -from __future__ import print_function import os import datetime diff --git a/CalibTracker/SiStripDCS/test/ParseManualO2Olog.py b/CalibTracker/SiStripDCS/test/ParseManualO2Olog.py index f8fd3b651140b..7442dbe32753c 100755 --- a/CalibTracker/SiStripDCS/test/ParseManualO2Olog.py +++ b/CalibTracker/SiStripDCS/test/ParseManualO2Olog.py @@ -2,7 +2,6 @@ #Script to parse the output of ManualO2O.py for various debugging tasks #First use case is to debug issue with HV1/HV2 channels handling -from __future__ import print_function import os,datetime, pickle def GetLogTimestamps(ManualO2Ologfilename): """ diff --git a/CalibTracker/SiStripDCS/test/TimestampToDate.py b/CalibTracker/SiStripDCS/test/TimestampToDate.py index 8d4358373f78c..686ddb03a413c 100644 --- a/CalibTracker/SiStripDCS/test/TimestampToDate.py +++ b/CalibTracker/SiStripDCS/test/TimestampToDate.py @@ -1,4 +1,3 @@ -from __future__ import print_function def pack(high,low): """pack high,low 32bit unsigned int to one unsigned 64bit long long Note:the print value of result number may appear signed, if the sign bit is used. diff --git a/CalibTracker/SiStripDCS/test/convertTime.py b/CalibTracker/SiStripDCS/test/convertTime.py index b30faca3e4d54..02e58fe1106ce 100755 --- a/CalibTracker/SiStripDCS/test/convertTime.py +++ b/CalibTracker/SiStripDCS/test/convertTime.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import sys import time import calendar diff --git a/CalibTracker/SiStripDCS/test/templateCheckAllIOVs_cfg.py b/CalibTracker/SiStripDCS/test/templateCheckAllIOVs_cfg.py index dedede5b04bfe..3c85cd005c964 100644 --- a/CalibTracker/SiStripDCS/test/templateCheckAllIOVs_cfg.py +++ b/CalibTracker/SiStripDCS/test/templateCheckAllIOVs_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function def pack(high,low): """pack high,low 32bit unsigned int to one unsigned 64bit long long Note:the print value of result number may appear signed, if the sign bit is used. diff --git a/CalibTracker/SiStripESProducers/test/python/CheckAllIOVs.py b/CalibTracker/SiStripESProducers/test/python/CheckAllIOVs.py index 10332a5c2ee3d..b742066230f49 100755 --- a/CalibTracker/SiStripESProducers/test/python/CheckAllIOVs.py +++ b/CalibTracker/SiStripESProducers/test/python/CheckAllIOVs.py @@ -1,7 +1,6 @@ #!/usr/bin/env python """ Helper functions for time conversions """ -from __future__ import print_function def pack(high,low): """pack high,low 32bit unsigned int to one unsigned 64bit long long diff --git a/CalibTracker/SiStripESProducers/test/python/UploadAll.py b/CalibTracker/SiStripESProducers/test/python/UploadAll.py index b0b312ef2bbf9..a325af9bf4a53 100755 --- a/CalibTracker/SiStripESProducers/test/python/UploadAll.py +++ b/CalibTracker/SiStripESProducers/test/python/UploadAll.py @@ -5,7 +5,6 @@ # The tagList needs: tag name, tag type (e.g. Ideal, StartUp, ...) and possible additional # sed commands where the " are escaped as \". -from __future__ import print_function import os import sys diff --git a/CalibTracker/SiStripESProducers/test/python/templateCheckAllIOVs_cfg.py b/CalibTracker/SiStripESProducers/test/python/templateCheckAllIOVs_cfg.py index 1c4193dd25e08..939487f76f3d8 100644 --- a/CalibTracker/SiStripESProducers/test/python/templateCheckAllIOVs_cfg.py +++ b/CalibTracker/SiStripESProducers/test/python/templateCheckAllIOVs_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function def pack(high,low): """pack high,low 32bit unsigned int to one unsigned 64bit long long Note:the print value of result number may appear signed, if the sign bit is used. diff --git a/Calibration/EcalAlCaRecoProducers/python/ALCARECOEcalESAlign_cff.py b/Calibration/EcalAlCaRecoProducers/python/ALCARECOEcalESAlign_cff.py index 6872390091ac5..ed7ba3e9873bf 100644 --- a/Calibration/EcalAlCaRecoProducers/python/ALCARECOEcalESAlign_cff.py +++ b/Calibration/EcalAlCaRecoProducers/python/ALCARECOEcalESAlign_cff.py @@ -1,9 +1,11 @@ import FWCore.ParameterSet.Config as cms -import HLTrigger.HLTfilters.hltHighLevel_cfi -ALCARECOEcalESAlignHLT = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone( - andOr = True, # choose logical OR between Triggerbits +import HLTrigger.HLTfilters.triggerResultsFilterFromDB_cfi +ALCARECOEcalESAlignHLT = HLTrigger.HLTfilters.triggerResultsFilterFromDB_cfi.triggerResultsFilterFromDB.clone( eventSetupPathsKey = 'EcalESAlign', + usePathStatus = False, + hltResults = 'TriggerResults::HLT', + l1tResults = '', # leaving empty (not interested in L1T results) throw = False # tolerate triggers stated above, but not available ) diff --git a/Calibration/EcalAlCaRecoProducers/test/alcaSkimming.py b/Calibration/EcalAlCaRecoProducers/test/alcaSkimming.py index e196e9ddd676e..f1e9e098f9071 100644 --- a/Calibration/EcalAlCaRecoProducers/test/alcaSkimming.py +++ b/Calibration/EcalAlCaRecoProducers/test/alcaSkimming.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os, sys, imp, re import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalIterativePhiSym_cff.py b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalIterativePhiSym_cff.py index b1f3d7df7c0cd..2097a1d0c272b 100644 --- a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalIterativePhiSym_cff.py +++ b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalIterativePhiSym_cff.py @@ -6,12 +6,13 @@ from Calibration.HcalAlCaRecoProducers.alcaiterphisym_cfi import * - -import HLTrigger.HLTfilters.hltHighLevel_cfi -hcalphisymHLT = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone( -# HLTPaths = ['HLT_HcalPhiSym'], +import HLTrigger.HLTfilters.triggerResultsFilterFromDB_cfi +hcalphisymHLT = HLTrigger.HLTfilters.triggerResultsFilterFromDB_cfi.triggerResultsFilterFromDB.clone( eventSetupPathsKey='HcalCalIterativePhiSym', - throw = False #dont throw except on unknown path name + usePathStatus = False, + hltResults = 'TriggerResults::HLT', + l1tResults = '', # leaving empty (not interested in L1T results) + throw = False #dont throw except on unknown path name ) seqALCARECOHcalCalIterativePhiSym = cms.Sequence(hcalphisymHLT*IterativePhiSymProd) diff --git a/Calibration/HcalCalibAlgos/macros/CalibCorr.C b/Calibration/HcalCalibAlgos/macros/CalibCorr.C index 3c68dd7539701..65d7006880dd5 100644 --- a/Calibration/HcalCalibAlgos/macros/CalibCorr.C +++ b/Calibration/HcalCalibAlgos/macros/CalibCorr.C @@ -178,16 +178,9 @@ unsigned int truncateId(unsigned int detId, int truncateFlag, bool debug = false depth = 1; } } else if (truncate0 == 8) { - //Ignore depth index for HE; depth 1, 2 considered as 1; deepth > 2 as 2 - //Ignore depth index for depth > 2 in HB; all depths considered as 1 - if (subdet == 2) { - if (depth <= 2) - depth = 1; - else - depth = 2; - } else { - depth = 1; - } + //Assign all depths > 4 as depth = 5 + if (depth >= 5) + depth = 5; } else if (truncate0 == 9) { //Depths 1 and 2 considered as depth = 2; rest of the depths are kept as it is if (depth <= 2) @@ -246,12 +239,15 @@ int truncateDepth(int ieta, int depth, int truncateFlag) { } double threshold(int subdet, int depth, int form) { - double cutHE[7] = {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2}; - double cutHB[3][4] = {{0.1, 0.2, 0.3, 0.3}, {0.25, 0.25, 0.3, 0.3}, {0.4, 0.3, 0.3, 0.3}}; + double cutHE[4][7] = {{0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2}, + {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2}, + {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2}, + {0.2, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3}}; + double cutHB[4][4] = {{0.1, 0.2, 0.3, 0.3}, {0.25, 0.25, 0.3, 0.3}, {0.4, 0.3, 0.3, 0.3}, {0.6, 0.4, 0.4, 0.5}}; double thr(0); if (form > 0) { if (subdet == 2) - thr = cutHE[depth - 1]; + thr = cutHE[form - 1][depth - 1]; else thr = cutHB[form - 1][depth - 1]; } @@ -662,7 +658,7 @@ private: bool readCorrFactor(const char* fName); unsigned int runId(const int& run); - int flag_; + int flag_, nocc_; double debug_, ok_; std::vector entries_; std::map > weights_; @@ -1309,7 +1305,9 @@ bool CalibSelectRBX::isItRBX(const int ieta, const int iphi) { return ok; } -CalibDuplicate::CalibDuplicate(const char* fname, int flag, bool debug) : flag_(flag), debug_(debug), ok_(false) { +CalibDuplicate::CalibDuplicate(const char* fname, int flag, bool debug) + : flag_(flag), nocc_(0), debug_(debug), ok_(false) { + std::cout << "CalibDuplicate called with Flag " << flag_ << " i/p file " << fname << std::endl; if (flag_ == 0) { if (strcmp(fname, "") != 0) { std::ifstream infile(fname); @@ -1453,6 +1451,7 @@ bool CalibDuplicate::select(int ieta, int iphi) { } double CalibDuplicate::getCorr(int run, int ieta, int depth) { + ++nocc_; std::map, std::vector >::const_iterator itr = corrs_.find(std::pair(ieta, depth)); double corr(1.0); @@ -1460,6 +1459,9 @@ double CalibDuplicate::getCorr(int run, int ieta, int depth) { unsigned int irun = runId(run); corr = (itr->second)[irun]; } + if (debug_ && (nocc_ < 1000)) + std::cout << "Run " << run << " ieta:depth " << ieta << ":" << depth << " found " << (itr == corrs_.end()) + << " Corr " << corr << std::endl; return corr; } diff --git a/Calibration/HcalCalibAlgos/macros/CalibFitPlots.C b/Calibration/HcalCalibAlgos/macros/CalibFitPlots.C index 281090a9e27f4..f1062d44c974e 100644 --- a/Calibration/HcalCalibAlgos/macros/CalibFitPlots.C +++ b/Calibration/HcalCalibAlgos/macros/CalibFitPlots.C @@ -77,8 +77,8 @@ // // For plotting (fractional) asymmetry in the correction factors // -// PlotHistCorrAsymmetry(infile, text, prefixF, iformat, save); -// Defaults: prefixF="", iformat=0, save=0 +// PlotHistCorrAsymmetry(infile, text, prefixF, depth, iformat, save); +// Defaults: prefixF="", depth = -1, iformat=0, save=0 // // For plotting correction factors from upto 5 different runs // on the same canvas @@ -2216,7 +2216,7 @@ void PlotHistCorrFactor(char* infile, gStyle->SetOptFit(0); } int colors[7] = {1, 6, 4, 7, 2, 9, 3}; - int mtype[7] = {20, 21, 22, 23, 24, 33, 25}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax - etamin + 1; std::vector hists; std::vector entries; @@ -2357,7 +2357,7 @@ void PlotHistCorrFactor(char* infile, gStyle->SetOptFit(0); } int colors[7] = {1, 6, 4, 7, 2, 9, 3}; - int mtype[7] = {20, 21, 22, 23, 24, 33, 25}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax - etamin + 1; std::vector hists; std::vector entries; @@ -2472,7 +2472,8 @@ void PlotHistCorrFactor(char* infile, } } -void PlotHistCorrAsymmetry(char* infile, std::string text, std::string prefixF = "", int iformat = 0, int save = 0) { +void PlotHistCorrAsymmetry( + char* infile, std::string text, std::string prefixF = "", int depth = -1, int iformat = 0, int save = 0) { std::map cfacs; int etamin(100), etamax(-100), maxdepth(0); double scale(1.0); @@ -2485,28 +2486,30 @@ void PlotHistCorrAsymmetry(char* infile, std::string text, std::string prefixF = gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(10); - int colors[6] = {1, 6, 4, 7, 2, 9}; - int mtype[6] = {20, 21, 22, 23, 24, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax + 1; std::vector hists; std::vector entries; char name[100]; double dy(0); - for (int j = 0; j < maxdepth; ++j) { - sprintf(name, "hd%d", j + 1); + int maxd = (depth < 0) ? maxdepth : 1; + for (int j = 0; j < maxd; ++j) { + int dep = (depth <= 0) ? (j + 1) : depth; + sprintf(name, "hd%d", dep); TObject* ob = gROOT->FindObject(name); if (ob) ob->Delete(); TH1D* h = new TH1D(name, name, nbin, 0, etamax); int nent(0); for (std::map::const_iterator itr = cfacs.begin(); itr != cfacs.end(); ++itr) { - if ((itr->second).depth == j + 1) { + if ((itr->second).depth == dep) { int ieta = (itr->second).ieta; float vl1 = (itr->second).corrf; float dv1 = (itr->second).dcorr; if (ieta > 0) { for (std::map::const_iterator ktr = cfacs.begin(); ktr != cfacs.end(); ++ktr) { - if (((ktr->second).depth == j + 1) && ((ktr->second).ieta == -ieta)) { + if (((ktr->second).depth == dep) && ((ktr->second).ieta == -ieta)) { float vl2 = (ktr->second).corrf; float dv2 = (ktr->second).dcorr; float val = 2.0 * (vl1 - vl2) / (vl1 + vl2); @@ -2520,9 +2523,9 @@ void PlotHistCorrAsymmetry(char* infile, std::string text, std::string prefixF = } } } - h->SetLineColor(colors[j]); - h->SetMarkerColor(colors[j]); - h->SetMarkerStyle(mtype[j]); + h->SetLineColor(colors[dep - 1]); + h->SetMarkerColor(colors[dep - 1]); + h->SetMarkerStyle(mtype[dep - 1]); h->GetXaxis()->SetTitle("i#eta"); h->GetYaxis()->SetTitle("Asymmetry in Correction Factor"); h->GetYaxis()->SetLabelOffset(0.005); @@ -2532,7 +2535,10 @@ void PlotHistCorrAsymmetry(char* infile, std::string text, std::string prefixF = entries.push_back(nent); dy += 0.025; } - sprintf(name, "c_%sCorrAsymmetry", prefixF.c_str()); + if (depth < 0) + sprintf(name, "c_%sCorrAsymmetry", prefixF.c_str()); + else + sprintf(name, "c_%sCorrAsymmetryD%d", prefixF.c_str(), depth); TCanvas* pad = new TCanvas(name, name, 700, 500); pad->SetRightMargin(0.10); pad->SetTopMargin(0.10); @@ -2541,12 +2547,13 @@ void PlotHistCorrAsymmetry(char* infile, std::string text, std::string prefixF = TLegend* legend = new TLegend(0.60, yl, 0.90, yl + 0.035 * hists.size()); legend->SetFillColor(kWhite); for (unsigned int k = 0; k < hists.size(); ++k) { + int dep = (depth < 0) ? (k + 1) : depth; if (k == 0) hists[k]->Draw(""); else hists[k]->Draw("sames"); pad->Update(); - sprintf(name, "Depth %d (%s)", k + 1, text.c_str()); + sprintf(name, "Depth %d (%s)", dep, text.c_str()); legend->AddEntry(hists[k], name, "lp"); } legend->Draw("same"); @@ -2639,8 +2646,8 @@ void PlotHistCorrFactors(char* infile1, gStyle->SetOptStat(0); gStyle->SetOptFit(0); } - int colors[7] = {1, 6, 4, 2, 7, 9, 46}; - int mtype[7] = {20, 24, 22, 23, 21, 25, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax - etamin + 1; std::vector hists; std::vector entries, htype, depths; @@ -2873,8 +2880,8 @@ void PlotHistCorr2Factors(char* infile1, gStyle->SetOptStat(0); gStyle->SetOptFit(0); } - int colors[7] = {1, 6, 4, 2, 7, 9, 46}; - int mtype[7] = {20, 24, 22, 23, 21, 25, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax - etamin + 1; std::vector hists; std::vector entries, htype; @@ -3116,8 +3123,8 @@ void PlotHistCorrDFactors(char* infile1, gStyle->SetOptStat(0); gStyle->SetOptFit(0); } - int colors[7] = {1, 6, 4, 2, 7, 9, 46}; - int mtype[7] = {20, 24, 22, 23, 21, 25, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax - etamin + 1; std::vector hists; std::vector entries, htype; @@ -3337,8 +3344,8 @@ void PlotHistCorrSys(std::string infilec, int conds, std::string text, int save gStyle->SetOptTitle(0); gStyle->SetOptStat(10); gStyle->SetOptFit(10); - int colors[6] = {1, 6, 4, 7, 2, 9}; - int mtype[6] = {20, 21, 22, 23, 24, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; std::vector hists; char name[100]; int nbin = etamax - etamin + 1; @@ -3537,8 +3544,8 @@ void PlotHistCorrRel(char* infile1, gStyle->SetOptTitle(0); gStyle->SetOptStat(10); gStyle->SetOptFit(10); - int colors[6] = {1, 6, 4, 7, 2, 9}; - int mtype[6] = {20, 21, 22, 23, 24, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; std::vector hists; char name[100]; int nbin = etamax - etamin + 1; @@ -4512,7 +4519,7 @@ void PlotDepthCorrFactor(char* infile, gStyle->SetOptFit(0); } int colors[7] = {1, 6, 4, 7, 2, 9, 3}; - int mtype[7] = {20, 21, 22, 23, 24, 33, 25}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int nbin = etamax - etamin + 1; std::vector hists; std::vector entries; @@ -4818,8 +4825,8 @@ void PlotHistCorrRatio(char* infile1, gStyle->SetOptStat(0); gStyle->SetOptFit(0); } - int colors[7] = {1, 6, 4, 2, 7, 9, 46}; - int mtype[7] = {20, 24, 22, 23, 21, 25, 33}; + int colors[7] = {1, 6, 4, 7, 2, 9, 3}; + int mtype[7] = {20, 21, 22, 23, 24, 25, 26}; int styles[7] = {2, 3, 1, 4, 1, 3, 2}; int nbin = etamax - etamin + 1; std::vector hists; diff --git a/Calibration/HcalCalibAlgos/macros/CalibMonitor.C b/Calibration/HcalCalibAlgos/macros/CalibMonitor.C index 1f344725c60d1..513d30e8fc6bb 100644 --- a/Calibration/HcalCalibAlgos/macros/CalibMonitor.C +++ b/Calibration/HcalCalibAlgos/macros/CalibMonitor.C @@ -87,11 +87,10 @@ // as depth 2; (6) for depth = 1 and 2, depth = // 1, else depth = 2; (7) in case of HB, depths // 1 and 2 are set to 1, else depth = 2; for HE -// ignore depth index; (8) in case of HE, depths -// 1 and 2 are set to 1, else depth = 2; for HB -// ignore depth index; (9) Assign all depth = 1 -// as depth = 2. The digit *d* is used if zside -// is to be ignored (1) or not (0) +// ignore depth index; (8) Assign all depths > 4 +// as depth = 5; (9) Assign all depth = 1 as +// depth = 2. The digit *d* is used if zside is +// to be ignored (1) or not (0) // (Default 0) // useGen (bool) = true/false to use generator level momentum // or reconstruction level momentum @@ -104,7 +103,8 @@ // barrel => |ieta| < 16; endcap => |ieta| > 15; // d: as the format for threshold application, // 0: no threshold; 1: 2022 prompt data; 2: -// 2022 reco data; 3: 2023 prompt data +// 2022 reco data; 3: 2023 prompt data; 4: 2025 +// Begin of Year. // (default = 0) // etalo/etahi (int,int) = |eta| ranges (default = 0:30) // runlo (int) = lower value of run number to be included (+ve) @@ -962,7 +962,7 @@ void CalibMonitor::Loop(Long64_t nmax, bool debug) { } else if (kp == 5) { ++kount5[0]; } - bool select = ((cDuplicate_ != nullptr) && (duplicate_ == 0)) ? (cDuplicate_->isDuplicate(jentry)) : true; + bool select = ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(0))) ? (cDuplicate_->isDuplicate(jentry)) : true; if (!select) { ++duplicate; if (debug) @@ -1037,7 +1037,7 @@ void CalibMonitor::Loop(Long64_t nmax, bool debug) { continue; } } - if (cDuplicate_ != nullptr) { + if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(2))) { if (cDuplicate_->select(t_ieta, t_iphi)) continue; } diff --git a/Calibration/HcalCalibAlgos/macros/CalibPlotProperties.C b/Calibration/HcalCalibAlgos/macros/CalibPlotProperties.C index 775b1ddbd673c..14a84f27e4f4c 100644 --- a/Calibration/HcalCalibAlgos/macros/CalibPlotProperties.C +++ b/Calibration/HcalCalibAlgos/macros/CalibPlotProperties.C @@ -87,11 +87,10 @@ // as depth 2; (6) for depth = 1 and 2, depth = // 1, else depth = 2; (7) in case of HB, depths // 1 and 2 are set to 1, else depth = 2; for HE -// ignore depth index; (8) in case of HE, depths -// 1 and 2 are set to 1, else depth = 2; for HB -// ignore depth index; (9) Assign all depth = 1 -// as depth = 2. The digit *d* is used if zside -// is to be ignored (1) or not (0) +// ignore depth index; (8) Assign all depths > 4 +// as depth = 5; (9) Assign all depth = 1 as +// depth = 2. The digit *d* is used if zside is +// to be ignored (1) or not (0). // (Default 0) // useGen (bool) = true/false to use generator level momentum // or reconstruction level momentum (def false) @@ -103,7 +102,8 @@ // barrel => |ieta| < 16; endcap => |ieta| > 15; // d: as the format for threshold application, // 0: no threshold; 1: 2022 prompt data; 2: -// 2022 reco data; 3: 2023 prompt data +// 2022 reco data; 3: 2023 prompt data; 4: 2025 +// Begin of Year. // (default = 0) // etalo/etahi (int,int) = |eta| ranges (0:30) // runlo (int) = lower value of run number to be included (+ve) @@ -839,7 +839,7 @@ void CalibPlotProperties::Loop(Long64_t nentries) { nbytes += nb; if (jentry % 1000000 == 0) std::cout << "Entry " << jentry << " Run " << t_Run << " Event " << t_Event << std::endl; - bool select = ((cDuplicate_ != nullptr) && (duplicate_ == 0)) ? (cDuplicate_->isDuplicate(jentry)) : true; + bool select = ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(0))) ? (cDuplicate_->isDuplicate(jentry)) : true; if (!select) { ++duplicate; if (debug) @@ -865,7 +865,7 @@ void CalibPlotProperties::Loop(Long64_t nentries) { continue; } } - if (cDuplicate_ != nullptr) { + if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(2))) { if (cDuplicate_->select(t_ieta, t_iphi)) continue; } diff --git a/Calibration/HcalCalibAlgos/macros/CalibTree.C b/Calibration/HcalCalibAlgos/macros/CalibTree.C index 35160daa86faf..7626b3bf57fe1 100644 --- a/Calibration/HcalCalibAlgos/macros/CalibTree.C +++ b/Calibration/HcalCalibAlgos/macros/CalibTree.C @@ -61,11 +61,10 @@ // as depth 2; (6) for depth = 1 and 2, depth = // 1, else depth = 2; (7) in case of HB, depths // 1 and 2 are set to 1, else depth = 2; for HE -// ignore depth index; (8) in case of HE, depths -// 1 and 2 are set to 1, else depth = 2; for HB -// ignore depth index; (9) Assign all depth = 1 -// as depth = 2. The digit *d* is used if zside -// is to be ignored (1) or not (0) +// ignore depth index; (8) Assign all depths > 4 +// as depth = 5; (9) Assign all depth = 1 as +// depth = 2. The digit *d* is used if zside is +// to be ignored (1) or not (0) // (Default 0) // maxIter (int) = number of iterations (30) // drForm (int) = type of threshold/dupFileName/rcorFileName (hdr) @@ -82,7 +81,8 @@ // range, ieta, depth where gain has changed. // For threshold h: the format for threshold // application, 0: no threshold; 1: 2022 prompt -// data; 2: 2022 reco data; 3: 2023 prompt data. +// data; 2: 2022 reco data; 3: 2023 prompt data; +// 4: 2025 Begin of Year. // (Default 0) // useGen (bool) = use generator level momentum information (false) // runlo (int) = lower value of run number to be included (+ve) @@ -788,7 +788,7 @@ Double_t CalibTree::Loop(int loop, else if ((oddEven > 0) && (jentry % 2 != 0)) continue; } - bool select = ((cDuplicate_ != nullptr) && (duplicate_ == 0)) ? (cDuplicate_->isDuplicate(jentry)) : true; + bool select = ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(0))) ? (cDuplicate_->isDuplicate(jentry)) : true; if (!select) continue; bool selRun = (includeRun_ ? ((t_Run >= runlo_) && (t_Run <= runhi_)) : ((t_Run < runlo_) || (t_Run > runhi_))); @@ -805,7 +805,7 @@ Double_t CalibTree::Loop(int loop, continue; } } - if (cDuplicate_ != nullptr) { + if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(2))) { if (cDuplicate_->select(t_ieta, t_iphi)) continue; } @@ -1094,7 +1094,7 @@ void CalibTree::getDetId(double fraction, int ietaTrack, bool debug, Long64_t nm else if ((oddEven > 0) && (jentry % 2 != 0)) continue; } - bool select = ((cDuplicate_ != nullptr) && (duplicate_ == 0)) ? (cDuplicate_->isDuplicate(jentry)) : true; + bool select = ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(0))) ? (cDuplicate_->isDuplicate(jentry)) : true; if (!select) continue; // Find DetIds contributing to the track @@ -1109,7 +1109,7 @@ void CalibTree::getDetId(double fraction, int ietaTrack, bool debug, Long64_t nm else isItRBX = !(temp); } - if ((cDuplicate_ != nullptr) && (!isItRBX)) + if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(2)) && (!isItRBX)) isItRBX = (cDuplicate_->select(t_ieta, t_iphi)); ++kprint; if (!(isItRBX)) { @@ -1348,10 +1348,10 @@ void CalibTree::makeplots( else if ((oddEven > 0) && (jentry % 2 != 0)) continue; } - bool select = ((cDuplicate_ != nullptr) && (duplicate_ == 0)) ? (cDuplicate_->isDuplicate(jentry)) : true; + bool select = ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(0))) ? (cDuplicate_->isDuplicate(jentry)) : true; if (!select) continue; - if (cDuplicate_ != nullptr) { + if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(2))) { select = !(cDuplicate_->select(t_ieta, t_iphi)); if (!select) continue; @@ -1536,7 +1536,7 @@ CalibTree::energyCalor CalibTree::energyHcal(double pmom, const Long64_t &entry, hitEn = (*t_HitEnergies3)[idet]; if ((rcorForm_ != 3) && (rcorForm_ >= 0) && (cFactor_)) hitEn *= cFactor_->getCorr(t_Run, id); - if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(3))) + if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(1))) hitEn *= cDuplicate_->getWeight(id); if ((cDuplicate_ != nullptr) && (cDuplicate_->doCorr(3))) { int subdet, zside, ieta, iphi, depth; diff --git a/Calibration/HcalCalibAlgos/plugins/HcalIsoTrkAnalyzer.cc b/Calibration/HcalCalibAlgos/plugins/HcalIsoTrkAnalyzer.cc index 69e863f5709a5..06811935c5d9a 100644 --- a/Calibration/HcalCalibAlgos/plugins/HcalIsoTrkAnalyzer.cc +++ b/Calibration/HcalCalibAlgos/plugins/HcalIsoTrkAnalyzer.cc @@ -218,6 +218,7 @@ class HcalIsoTrkAnalyzer : public edm::one::EDAnalyzer*t_ietaAll, *t_ietaGood, *t_trackType; bool debug_; + unsigned int count_; }; HcalIsoTrkAnalyzer::HcalIsoTrkAnalyzer(const edm::ParameterSet& iConfig) @@ -312,7 +313,8 @@ HcalIsoTrkAnalyzer::HcalIsoTrkAnalyzer(const edm::ParameterSet& iConfig) nHigh_(0), theHBHETopology_(nullptr), respCorrs_(nullptr), - hdc_(nullptr) { + hdc_(nullptr), + count_(0) { usesResource(TFileService::kSharedResource); //now do whatever initialization is needed @@ -1311,6 +1313,7 @@ std::array HcalIsoTrkAnalyzer::fillTree(std::vectorFill(); edm::LogVerbatim("HcalIsoTrackX") << "Run " << t_RunNo << " Event " << t_EventNo << " Track " << nTracks << " p " << t_p; @@ -1439,6 +1442,8 @@ void HcalIsoTrkAnalyzer::storeEnergy(int indx, if (unCorrect_) { for (unsigned int k = 0; k < ids.size(); ++k) { double corr = (respCorrs_->getValues(ids[k]))->getValue(); + if (count_ <= 1) + edm::LogVerbatim("HcalIsoTrack") << "Correction Factor for " << HcalDetId(ids[k]) << " " << corr; if (corr != 0) edet[k] /= corr; ehcal += edet[k]; diff --git a/Calibration/HcalCalibAlgos/src/hcalCalib.cc b/Calibration/HcalCalibAlgos/src/hcalCalib.cc index ae310f269a67a..ae7dc03747f83 100644 --- a/Calibration/HcalCalibAlgos/src/hcalCalib.cc +++ b/Calibration/HcalCalibAlgos/src/hcalCalib.cc @@ -536,7 +536,7 @@ void hcalCalib::GetCoefFromMtrxInvOfAve() { std::map::iterator n_it = aveHitE[iEtaList[i]].begin(); for (; n_it != aveHitE[iEtaList[i]].end(); ++n_it) { - if (fabs(n_it->first) > CALIB_ABS_IETA_MAX || fabs(n_it->first) < CALIB_ABS_IETA_MIN) + if (std::abs(n_it->first) > CALIB_ABS_IETA_MAX || std::abs(n_it->first) < CALIB_ABS_IETA_MIN) continue; Int_t j = Int_t(find(iEtaList.begin(), iEtaList.end(), n_it->first) - iEtaList.begin()); A(i, j) = n_it->second; diff --git a/Calibration/LumiAlCaRecoProducers/python/ALCARECOLumiPixels_cff.py b/Calibration/LumiAlCaRecoProducers/python/ALCARECOLumiPixels_cff.py index 25c7e5e60cb26..153c944ea4721 100644 --- a/Calibration/LumiAlCaRecoProducers/python/ALCARECOLumiPixels_cff.py +++ b/Calibration/LumiAlCaRecoProducers/python/ALCARECOLumiPixels_cff.py @@ -9,12 +9,12 @@ ) from EventFilter.SiPixelRawToDigi.SiPixelRawToDigi_cfi import siPixelDigis -siPixelDigisForLumi = siPixelDigis.cpu.clone( +siPixelDigisForLumi = siPixelDigis.clone( InputLabel = "hltFEDSelectorLumiPixels" ) from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizerPreSplitting_cfi import siPixelClustersPreSplitting -siPixelClustersForLumi = siPixelClustersPreSplitting.cpu.clone( +siPixelClustersForLumi = siPixelClustersPreSplitting.clone( src = "siPixelDigisForLumi" ) diff --git a/Calibration/TkAlCaRecoProducers/test/convertSiStripRootDQMFileToEDM_cfg.py b/Calibration/TkAlCaRecoProducers/test/convertSiStripRootDQMFileToEDM_cfg.py index a9617c910d25b..04a23a1e01b83 100644 --- a/Calibration/TkAlCaRecoProducers/test/convertSiStripRootDQMFileToEDM_cfg.py +++ b/Calibration/TkAlCaRecoProducers/test/convertSiStripRootDQMFileToEDM_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms """ This python cfg converts a plain DQM root file in a EDM file that can be used to run the SiStrip bad channel calibration as done @ Tier0""" diff --git a/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py b/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py index a809da3fb3fb6..e7dce6acc9364 100644 --- a/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py +++ b/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py @@ -1,4 +1,3 @@ -from __future__ import print_function import xml.etree.ElementTree as ET import sys @@ -19,7 +18,9 @@ 'SiStripLA_pcl', 'SiPixelAli_pcl', # Alignment 'SiPixelAliHG_pcl', - 'SiPixelAliHGCombined_pcl'] + 'SiPixelAliHGCombined_pcl', + 'SiPixelAliHLTHGCombined_pcl' + ] TARGET_DQM_FILES=1 TARGET_DQM_FILENAME='./DQM_V0001_R000325022__Express__PCLTest__ALCAPROMPT.root' TARGET_DB_FILES=len(TARGET_LIST_OF_TAGS) diff --git a/Calibration/TkAlCaRecoProducers/test/testAlCaHarvesting.sh b/Calibration/TkAlCaRecoProducers/test/testAlCaHarvesting.sh index 5b0548e101026..4cb7ae39fbea8 100755 --- a/Calibration/TkAlCaRecoProducers/test/testAlCaHarvesting.sh +++ b/Calibration/TkAlCaRecoProducers/test/testAlCaHarvesting.sh @@ -9,8 +9,9 @@ function cleanTheHouse { rm -fr HGalignment } -echo "TESTING Calibration/TkAlCaRecoProducers ..." +echo "========== Starting Calibration/TkAlCaRecoProducers Test ==========" cmsRun -e -j testPCLAlCaHarvesting.xml ${SCRAM_TEST_PATH}/testPCLAlCaHarvesting.py || die "Failure running testPCLAlCaHarvesting.py" $? cleanTheHouse -echo "PARSING Framework Job Report ..." +echo "" # Adding a blank line for better readability +echo "========== Parsing Framework Job Report ==========" python3 ${SCRAM_TEST_PATH}/parseFwkJobReport.py diff --git a/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py b/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py index 7d4d2b22f8afb..3676345fb73a1 100644 --- a/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py +++ b/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py @@ -1,4 +1,3 @@ -from __future__ import print_function import calendar import CondCore.Utilities.conddblib as conddb @@ -84,6 +83,7 @@ def findRunStopTime(run_number): process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelAli_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelAliHG_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelAliHGCombined_dbOutput) +process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelAliHLTHGCombined_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelLA_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelLAMCS_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiStripLA_dbOutput) @@ -108,6 +108,7 @@ def findRunStopTime(run_number): process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelAli_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelAliHG_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelAliHGCombined_metadata) +process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelAliHLTHGCombined_metadata ) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelLA_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelLAMCS_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiStripLA_metadata) @@ -147,6 +148,16 @@ def findRunStopTime(run_number): process.SiPixelAliMilleFileExtractorHG.outputBinaryFile = cms.string('') process.SiPixelAliPedeAlignmentProducerHG.algoConfig.mergeBinaryFiles=[] +process.SiPixelAliHGCombined = cms.Path(process.ALCAHARVESTSiPixelAliHGCombined) +process.SiPixelAliMilleFileExtractorHGMinBias.outputBinaryFile = cms.string('') +process.SiPixelAliMilleFileExtractorHGZMuMu.outputBinaryFile = cms.string('') +process.SiPixelAliPedeAlignmentProducerHGCombined.algoConfig.mergeBinaryFiles=[] + +process.SiPixelAliHLTHGCombined = cms.Path(process.ALCAHARVESTSiPixelAliHLTHGCombined) +process.SiPixelAliMilleFileExtractorHLTHGMinBias.outputBinaryFile = cms.string('') +process.SiPixelAliMilleFileExtractorHLTHGZMuMu.outputBinaryFile = cms.string('') +process.SiPixelAliPedeAlignmentProducerHLTHGCombined.algoConfig.mergeBinaryFiles=[] + process.SiPixelLA = cms.Path(process.ALCAHARVESTSiPixelLorentzAngle) process.SiPixelLAMCS = cms.Path(process.ALCAHARVESTSiPixelLorentzAngleMCS) process.SiPixelQuality = cms.Path(process.ALCAHARVESTSiPixelQuality) @@ -167,6 +178,7 @@ def findRunStopTime(run_number): process.SiPixelAli, process.SiPixelAliHG, process.SiPixelAliHGCombined, + process.SiPixelAliHLTHGCombined, process.SiPixelLA, process.SiPixelLAMCS, process.SiStripLA, diff --git a/Calibration/Tools/scripts/alcaDQMUpload.py b/Calibration/Tools/scripts/alcaDQMUpload.py index afa42d28634a9..924514cc39b7d 100755 --- a/Calibration/Tools/scripts/alcaDQMUpload.py +++ b/Calibration/Tools/scripts/alcaDQMUpload.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys, os, os.path, re, string, httplib, mimetypes, urllib, urllib2, httplib, gzip, md5 from cStringIO import StringIO from stat import * diff --git a/CaloOnlineTools/HcalOnlineDb/bin/hcalLUT.cc b/CaloOnlineTools/HcalOnlineDb/bin/hcalLUT.cc index b9765fe47027f..83e2e7b6c16b7 100644 --- a/CaloOnlineTools/HcalOnlineDb/bin/hcalLUT.cc +++ b/CaloOnlineTools/HcalOnlineDb/bin/hcalLUT.cc @@ -19,111 +19,6 @@ void mergeLUTs(const char *flist, const char *out) { xmls.write(out); } -void dumpLutDiff(LutXml &xmls1, LutXml &xmls2, bool testFormat = true, int detail = 0) { - const int ndet = 5; - const char *DET[ndet] = {"HB", "HE", "HO", "HF", "HT"}; - const int dtype[ndet] = {0, 1, 2, 3, 4}; - const int HBandHE_fgBits = 0xFC00; - - const int nvar = 5; - enum vtype { total, extra, zeros, match, fgMatch }; - - std::array n[ndet]; - - for (auto &d : n) { - for (auto &v : d) { - v = 0; - } - } - - for (auto &x1 : xmls1) { - HcalGenericDetId id(x1.first); - auto x2 = xmls2.find(id.rawId()); - auto subdet = id.genericSubdet(); - if (subdet == 0 or subdet == 6) - continue; //'empty' or 'other' - - auto &m = n[subdet - 1]; - - m[total]++; - if (x2 == xmls2.end()) { - m[extra]++; - if (testFormat) - cout << "Extra detId: " << id << endl; - else - continue; - } - - const auto &lut1 = x1.second; - size_t size = lut1.size(); - - bool zero = true; - for (auto &i : lut1) { - if (i > 0) { - zero = false; - break; - } - } - if (zero) { - m[zeros]++; - if (detail == 1 and testFormat) { - cout << "Zero LUT: " << id << endl; - } - } - - if (testFormat) - continue; - - const auto &lut2 = x2->second; - bool good = size == lut2.size(); - bool fgGood = size == lut2.size(); - for (size_t i = 0; i < size and (good or fgGood); ++i) { - if (lut1[i] != lut2[i]) { - good = false; - //Only check fine grain bits in HB and HE - if (subdet == 1 || subdet == 2) { - if ((lut1[i] & HBandHE_fgBits) != (lut2[i] & HBandHE_fgBits)) - fgGood = false; - } - if (detail == 2) { - cout << Form("Mismatach in index=%3d, %4d!=%4d, ", int(i), lut1[i], lut2[i]) << id << endl; - } - } - } - if (good) - m[match]++; - if (fgGood) - m[fgMatch]++; - } - - if (testFormat) { - cout << Form("%3s: %8s %8s %8s", "Det", "total", "zeroes", "extra") << endl; - for (auto i : dtype) - cout << Form("%3s: %8d %8d %8d", DET[i], n[i][total], n[i][zeros], n[i][extra]) << endl; - cout << "--------------------------------------------" << endl; - } else { - bool good = true; - for (auto &d : n) { - if (d[total] != d[match]) { - good = false; - } - } - cout << Form("%3s: %8s %8s %8s %8s %8s", "Det", "total", "match", "mismatch", "FG match", "FG mismatch") - << endl; - for (auto i : dtype) - cout << Form("%3s: %8d %8d %8d %8d %8d", - DET[i], - n[i][total], - n[i][match], - n[i][total] - n[i][match], - n[i][fgMatch], - n[i][total] - n[i][fgMatch]) - << endl; - cout << "--------------------------------------------" << endl; - cout << (good ? "PASS!" : "FAIL!") << endl; - } -} - int main(int argc, char **argv) { optutl::CommandLineParser parser("runTestParameters"); parser.parseArguments(argc, argv, true); @@ -133,24 +28,6 @@ int main(int argc, char **argv) { std::string flist_ = parser.stringValue("storePrepend"); std::string out_ = parser.stringValue("outputFile"); mergeLUTs(flist_.c_str(), out_.c_str()); - } else if (strcmp(argv[1], "diff") == 0) { - auto files = parser.stringVector("inputFiles"); - auto detail = parser.integerValue("section"); - - LutXml xmls1(edm::FileInPath(files[0]).fullPath()); - LutXml xmls2(edm::FileInPath(files[1]).fullPath()); - - xmls1.create_lut_map(); - xmls2.create_lut_map(); - - cout << files[0] << endl; - dumpLutDiff(xmls1, xmls2, true, detail); - - cout << files[1] << endl; - dumpLutDiff(xmls2, xmls1, true, detail); - - cout << "Comparison" << endl; - dumpLutDiff(xmls1, xmls2, false, detail); } else if (strcmp(argv[1], "create-lut-loader") == 0) { std::string _file_list = parser.stringValue("outputFile"); std::string _tag = parser.stringValue("tag"); diff --git a/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutAnalyzer.cc b/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutAnalyzer.cc index cd3e4d42ececa..af8187cc75e94 100644 --- a/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutAnalyzer.cc +++ b/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutAnalyzer.cc @@ -36,6 +36,7 @@ #include "Geometry/CaloTopology/interface/HcalTopology.h" #include "Geometry/Records/interface/IdealGeometryRecord.h" #include "Geometry/Records/interface/HcalRecNumberingRecord.h" +#include "CalibFormats/HcalObjects/interface/HcalDbRecord.h" #include "TString.h" #include "TH1D.h" @@ -72,6 +73,7 @@ class HcalLutAnalyzer : public edm::one::EDAnalyzer { double Pmax; edm::ESGetToken tok_htopo_; + edm::ESGetToken tok_emap_; }; HcalLutAnalyzer::HcalLutAnalyzer(const edm::ParameterSet& iConfig) { @@ -92,12 +94,14 @@ HcalLutAnalyzer::HcalLutAnalyzer(const edm::ParameterSet& iConfig) { Pmax = iConfig.getParameter("Pmax"); tok_htopo_ = esConsumes(); + tok_emap_ = esConsumes(); } void HcalLutAnalyzer::analyze(const edm::Event&, const edm::EventSetup& iSetup) { using namespace std; const HcalTopology* topology = &iSetup.getData(tok_htopo_); + const HcalElectronicsMap* electronicsMap = &iSetup.getData(tok_emap_); typedef std::vector vstring; typedef std::map LUTINPUT; @@ -350,8 +354,8 @@ void HcalLutAnalyzer::analyze(const edm::Event&, const edm::EventSetup& iSetup) LutXml xmls1(edm::FileInPath(Form("%s/%s/%s.xml", inputDir.c_str(), tags_[0].c_str(), tags_[0].c_str())).fullPath()); LutXml xmls2(edm::FileInPath(Form("%s/%s/%s.xml", inputDir.c_str(), tags_[1].c_str(), tags_[1].c_str())).fullPath()); - xmls1.create_lut_map(); - xmls2.create_lut_map(); + xmls1.create_lut_map(electronicsMap); + xmls2.create_lut_map(electronicsMap); for (const auto& xml2 : xmls2) { HcalGenericDetId detid(xml2.first); diff --git a/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutComparer.cc b/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutComparer.cc new file mode 100644 index 0000000000000..77f1d2b435a0a --- /dev/null +++ b/CaloOnlineTools/HcalOnlineDb/plugins/HcalLutComparer.cc @@ -0,0 +1,265 @@ +// -*- C++ -*- +// +// Package: Test/HcalLutComparer +// Class: HcalLutComparer +// +/**\class HcalLutComparer HcalLutComparer.cc Test/HcalLutComparer/plugins/HcalLutComparer.cc + + Description: [one line class summary] + + Implementation: + [Notes on implementation] +*/ +// +// Original Author: Joshua C. Hiltbrand +// Created: Tue, 12 Nov 2024 05:57:40 GMT +// +// + +// system include files +#include +#include +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Framework/interface/EventSetup.h" + +#include "CalibCalorimetry/HcalTPGAlgos/interface/XMLProcessor.h" +#include "CalibCalorimetry/HcalTPGAlgos/interface/LutXml.h" +#include "DataFormats/HcalDetId/interface/HcalGenericDetId.h" +#include "DataFormats/HcalDetId/interface/HcalDetId.h" +#include "DataFormats/HcalDetId/interface/HcalZDCDetId.h" +#include "Geometry/CaloTopology/interface/HcalTopology.h" +#include "Geometry/Records/interface/IdealGeometryRecord.h" +#include "Geometry/Records/interface/HcalRecNumberingRecord.h" +#include "CondFormats/DataRecord/interface/HcalElectronicsMapRcd.h" + +class HcalLutComparer : public edm::one::EDAnalyzer { +public: + explicit HcalLutComparer(const edm::ParameterSet &); + ~HcalLutComparer() override {} + void dumpLutDiff(LutXml &xmls1, LutXml &xmls2, bool testFormat); + static void fillDescriptions(edm::ConfigurationDescriptions &descriptions); + +private: + void analyze(const edm::Event &, const edm::EventSetup &) override; + + edm::ESGetToken tok_htopo_; + edm::ESGetToken tok_emap_; + + std::string lutXML1_; + std::string lutXML2_; + unsigned int verbosity_; +}; + +HcalLutComparer::HcalLutComparer(const edm::ParameterSet &iConfig) { + lutXML1_ = iConfig.getParameter("lutXML1"); + lutXML2_ = iConfig.getParameter("lutXML2"); + verbosity_ = iConfig.getParameter("verbosity"); + + tok_htopo_ = esConsumes(); + tok_emap_ = esConsumes(); +} + +void HcalLutComparer::dumpLutDiff(LutXml &xmls1, LutXml &xmls2, bool testFormat = true) { + std::vector detCodes = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 9, -9, 10, -10, 11, -11, 12, -12}; + std::vector detNames = {"HBP", + "HBM", + "HEP", + "HEM", + "HOP", + "HOM", + "HFP", + "HFM", + "HTP", + "HTM", + "ZDCP_EM", + "ZDCM_EM", + "ZDCP_HAD", + "ZDCM_HAD", + "ZDCP_LUM", + "ZDCM_LUM", + "ZDCP_RPD", + "ZDCM_RPD"}; + + const int HBandHE_fgBits = 0xF000; + const int HF_fgBits = 0x3000; + + unsigned int nvars = 5; + enum vtype { total, extra, zeros, match, fgMatch }; + + std::map> n; + + for (const auto &detCode : detCodes) { + n[detCode] = std::vector{}; + for (unsigned int j = 0; j < nvars; j++) { + n[detCode].push_back(0); + } + } + + for (auto &x1 : xmls1) { + auto x2 = xmls2.find(x1.first); + + HcalGenericDetId id = HcalGenericDetId(x1.first); + int subdet = id.genericSubdet(); + if (subdet == 0 or subdet == 6) + continue; //'empty' or 'other' + + int side = 1; + int section = 0; + if (id.isHcalDetId()) { + HcalDetId hdetId = HcalDetId(x1.first); + side = hdetId.zside(); + } else if (id.isHcalTrigTowerDetId()) { + HcalTrigTowerDetId htdetId = HcalTrigTowerDetId(x1.first); + side = htdetId.zside(); + } else if (id.isHcalZDCDetId()) { + HcalZDCDetId zdetId = HcalZDCDetId(x1.first); + side = zdetId.zside(); + section = zdetId.section(); + } + + int detCode = side * (subdet + section); + + auto &m = n[detCode]; + + m[total]++; + if (x2 == xmls2.end()) { + m[extra]++; + if (testFormat) + std::cout << "Extra detId: " << id << std::endl; + else + continue; + } + + const auto &lut1 = x1.second; + size_t size = lut1.size(); + + bool zero = true; + for (auto &i : lut1) { + if (i > 0) { + zero = false; + break; + } + } + if (zero) { + m[zeros]++; + if (verbosity_ == 1 and testFormat) { + std::cout << "Zero LUT: " << id << std::endl; + } + } + + if (testFormat) + continue; + + const auto &lut2 = x2->second; + bool good = size == lut2.size(); + bool fgGood = size == lut2.size(); + for (size_t i = 0; i < size and (good or fgGood); ++i) { + if (lut1[i] != lut2[i]) { + good = false; + if (subdet == 1 || subdet == 2) { + if ((lut1[i] & HBandHE_fgBits) != (lut2[i] & HBandHE_fgBits)) + fgGood = false; + } else if (subdet == 4) { + if ((lut1[i] & HF_fgBits) != (lut2[i] & HF_fgBits)) + fgGood = false; + } + + if (verbosity_ == 2) { + std::cout << Form("Mismatach in index=%3d, %4d!=%4d, ", int(i), lut1[i], lut2[i]) << id << std::endl; + } + } + } + if (good) + m[match]++; + if (fgGood) + m[fgMatch]++; + } + + if (testFormat) { + std::cout << Form("%9s %6s %6s %6s", "Det", "total", "zeroes", "extra") << std::endl; + for (unsigned int i = 0; i < detCodes.size(); i++) { + int detCode = detCodes.at(i); + std::string detName = detNames.at(i); + std::cout << Form("%9s %6d %6d %6d", detName.c_str(), n[detCode][total], n[detCode][zeros], n[detCode][extra]) + << std::endl; + if (detCode < 0) { + std::cout << Form("%9s %6d %6d %6d", + " ", + n[detCode][total] + n[-1 * detCode][total], + n[detCode][zeros] + n[-1 * detCode][zeros], + n[detCode][extra] + n[-1 * detCode][extra]) + << std::endl; + std::cout << std::endl; + } + } + std::cout << "--------------------------------------------" << std::endl; + } else { + bool good = true; + for (const auto &it : n) { + if (it.second[total] != it.second[match]) { + good = false; + } + } + std::cout << Form("%9s %6s %6s %8s %8s %11s", "Det", "total", "match", "mismatch", "FG match", "FG mismatch") + << std::endl; + for (unsigned int i = 0; i < detCodes.size(); i++) { + int detCode = detCodes.at(i); + std::string detName = detNames.at(i); + std::cout << Form("%9s %6d %6d %8d %8d %11d", + detName.c_str(), + n[detCode][total], + n[detCode][match], + n[detCode][total] - n[detCode][match], + n[detCode][fgMatch], + n[detCode][total] - n[detCode][fgMatch]) + << std::endl; + if (detCode < 0) { + std::cout << Form("%9s %6d %6d %8d %8d %11d", + " ", + n[detCode][total] + n[-1 * detCode][total], + n[detCode][match] + n[-1 * detCode][match], + n[detCode][total] - n[detCode][match] + n[-1 * detCode][total] - n[-1 * detCode][match], + n[detCode][fgMatch] + n[-1 * detCode][fgMatch], + n[detCode][total] - n[detCode][fgMatch] + n[-1 * detCode][total] - n[-1 * detCode][fgMatch]) + << std::endl; + std::cout << std::endl; + } + } + std::cout << "--------------------------------------------" << std::endl; + std::cout << (good ? "PASS!" : "FAIL!") << std::endl; + } +} + +void HcalLutComparer::analyze(const edm::Event &, const edm::EventSetup &iSetup) { + const HcalElectronicsMap *electronicsMap = &iSetup.getData(tok_emap_); + + LutXml xmls1(edm::FileInPath(lutXML1_).fullPath()); + LutXml xmls2(edm::FileInPath(lutXML2_).fullPath()); + + xmls1.create_lut_map(electronicsMap); + xmls2.create_lut_map(electronicsMap); + + std::cout << lutXML1_ << std::endl; + dumpLutDiff(xmls1, xmls2, true); + + std::cout << lutXML2_ << std::endl; + dumpLutDiff(xmls2, xmls1, true); + + std::cout << "Comparison" << std::endl; + dumpLutDiff(xmls1, xmls2, false); +} + +void HcalLutComparer::fillDescriptions(edm::ConfigurationDescriptions &descriptions) { + edm::ParameterSetDescription desc; + desc.setUnknown(); + descriptions.addDefault(desc); +} + +DEFINE_FWK_MODULE(HcalLutComparer); diff --git a/CaloOnlineTools/HcalOnlineDb/src/RooGKCounter.cc b/CaloOnlineTools/HcalOnlineDb/src/RooGKCounter.cc index f4e3dff334c8b..b22bbb8aa0805 100644 --- a/CaloOnlineTools/HcalOnlineDb/src/RooGKCounter.cc +++ b/CaloOnlineTools/HcalOnlineDb/src/RooGKCounter.cc @@ -14,7 +14,7 @@ RooGKCounter::RooGKCounter() { init(); } RooGKCounter::RooGKCounter(const char *message) { init(); _message = message; - if (_message.length() == 0) + if (_message.empty()) printCount = false; } diff --git a/CaloOnlineTools/HcalOnlineDb/test/DiffLUT.py b/CaloOnlineTools/HcalOnlineDb/test/DiffLUT.py new file mode 100644 index 0000000000000..7a356bf7b8711 --- /dev/null +++ b/CaloOnlineTools/HcalOnlineDb/test/DiffLUT.py @@ -0,0 +1,28 @@ +import FWCore.ParameterSet.Config as cms +import FWCore.ParameterSet.VarParsing as VarParsing + +options = VarParsing.VarParsing('analysis') +options.register('globaltag', '', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, '') +options.register('run', '', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.int, '') +options.register('lutXML1', '', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, '') +options.register('lutXML2', '', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, '') +options.register('verbosity', '', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.int, '') + +options.parseArguments() + +process = cms.Process("LutDiff") + +process.load("Configuration.Geometry.GeometryDB_cff") +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +process.GlobalTag.globaltag = options.globaltag + +process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(1)) +process.source = cms.Source("EmptySource") +process.source.firstRun = cms.untracked.uint32(options.run) + +process.diff = cms.EDAnalyzer("HcalLutComparer", + lutXML1 = cms.string(options.lutXML1), + lutXML2 = cms.string(options.lutXML2), + verbosity = cms.uint32(options.verbosity), +) +process.p = cms.Path(process.diff) diff --git a/CaloOnlineTools/HcalOnlineDb/test/cardPhysicsSkeleton.sh b/CaloOnlineTools/HcalOnlineDb/test/cardPhysicsSkeleton.sh index e8cef94a8c7c1..d3b17122c6b74 100644 --- a/CaloOnlineTools/HcalOnlineDb/test/cardPhysicsSkeleton.sh +++ b/CaloOnlineTools/HcalOnlineDb/test/cardPhysicsSkeleton.sh @@ -1,6 +1,7 @@ Tag="" Run=1 GlobalTag="" +Era="" description="" HOAsciiInput=HO_ped9_inputLUTcoderDec.txt diff --git a/CaloOnlineTools/HcalOnlineDb/test/genLUT.sh b/CaloOnlineTools/HcalOnlineDb/test/genLUT.sh index 90b4830a93ba4..27b3d9229c09e 100755 --- a/CaloOnlineTools/HcalOnlineDb/test/genLUT.sh +++ b/CaloOnlineTools/HcalOnlineDb/test/genLUT.sh @@ -6,7 +6,7 @@ cat << EOF examples: ./genLUT.sh dumpAll card=cardPhysics.sh ./genLUT.sh generate card=cardPhysics.sh - ./genLUT.sh diff conditions/newtag/newtag.xml conditions/oldtag/oldtag.xml + ./genLUT.sh diff card=cardPhysics.sh conditions/newtag/newtag.xml conditions/oldtag/oldtag.xml ./genLUT.sh validate card=cardPhysics.sh EOF @@ -141,6 +141,7 @@ then -e "s#__CONDDIR__#$BaseDir/$CondDir#g" \ -e "s#__GlobalTag__#$GlobalTag#g" \ -e "s#__HO_master_file__#$HOAsciiInput#g" \ + -e "s#__ERA__#$Era#g" \ $templatefile > $Tag.py echo "genLUT.sh::generate: Running..." @@ -274,19 +275,21 @@ then exit 1 fi - CheckFile $2 + source $card + + lutFile1="$BaseDir/$3" + lutFile2="$BaseDir/$4" CheckFile $3 - echo $BaseDir/$2,$BaseDir/$3 + CheckFile $4 + echo $lutFile1,$lutFile2 if [[ -z $verbosity ]] then verbosity=0 fi - hcalLUT diff inputFiles=$BaseDir/$2,$BaseDir/$3 section=$verbosity + cmsRun DiffLUT.py globaltag=$GlobalTag run=$Run lutXML1=$lutFile1 lutXML2=$lutFile2 verbosity=$verbosity else dumpHelpAndExit fi - - diff --git a/CaloOnlineTools/HcalOnlineDb/test/template.py b/CaloOnlineTools/HcalOnlineDb/test/template.py index 69f7ca5a112eb..7b1fe08fcd051 100644 --- a/CaloOnlineTools/HcalOnlineDb/test/template.py +++ b/CaloOnlineTools/HcalOnlineDb/test/template.py @@ -1,7 +1,7 @@ import FWCore.ParameterSet.Config as cms -from Configuration.Eras.Era_Run3_cff import Run3 -process = cms.Process("TEST", Run3) +from Configuration.Eras.Era___ERA___cff import __ERA__ +process = cms.Process("TEST", __ERA__) process.load("FWCore.MessageLogger.MessageLogger_cfi") process.MessageLogger.LUT=dict() diff --git a/CommonTools/ParticleFlow/test/PF2PAT_cfg.py b/CommonTools/ParticleFlow/test/PF2PAT_cfg.py index 69c77aac5a17a..d761be45851f0 100644 --- a/CommonTools/ParticleFlow/test/PF2PAT_cfg.py +++ b/CommonTools/ParticleFlow/test/PF2PAT_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # official example for PF2PAT import FWCore.ParameterSet.Config as cms diff --git a/CommonTools/PileupAlgos/interface/PuppiAlgo.h b/CommonTools/PileupAlgos/interface/PuppiAlgo.h index b3c9ede5eb2c2..7aa3868e2b794 100644 --- a/CommonTools/PileupAlgos/interface/PuppiAlgo.h +++ b/CommonTools/PileupAlgos/interface/PuppiAlgo.h @@ -9,7 +9,7 @@ class PuppiAlgo { public: - PuppiAlgo(edm::ParameterSet &iConfig); + PuppiAlgo(const edm::ParameterSet &iConfig); ~PuppiAlgo(); static void fillDescriptionsPuppiAlgo(edm::ParameterSetDescription &desc); //Computing Mean and RMS @@ -19,7 +19,7 @@ class PuppiAlgo { void computeMedRMS(const unsigned int &iAlgo); //Get the Weight double compute(std::vector const &iVals, double iChi2) const; - const std::vector &alphas() { return fPups; } + const std::vector &alphas() const { return fPups; } //Helpers inline int etaBins() const { return fEtaMin.size(); } inline double etaMin(int i) const { return fEtaMin[i]; } diff --git a/CommonTools/PileupAlgos/interface/PuppiContainer.h b/CommonTools/PileupAlgos/interface/PuppiContainer.h index 479cf542a4585..4ad1dd951a6cd 100644 --- a/CommonTools/PileupAlgos/interface/PuppiContainer.h +++ b/CommonTools/PileupAlgos/interface/PuppiContainer.h @@ -8,51 +8,45 @@ class PuppiContainer { public: PuppiContainer(const edm::ParameterSet &iConfig); - ~PuppiContainer(); - void initialize(const std::vector &iRecoObjects); - void setPUProxy(double const iPUProxy) { fPUProxy = iPUProxy; } - std::vector const &pfParticles() const { return fPFParticles; } - std::vector const &puppiWeights(); - const std::vector &puppiRawAlphas() { return fRawAlphas; } - const std::vector &puppiAlphas() { return fVals; } - // const std::vector puppiAlpha () {return fAlpha;} - const std::vector &puppiAlphasMed() { return fAlphaMed; } - const std::vector &puppiAlphasRMS() { return fAlphaRMS; } + struct Weights { + std::vector weights; + std::vector puppiRawAlphas; + std::vector puppiAlphas; + std::vector puppiAlphasMed; + std::vector puppiAlphasRMS; + }; - int puppiNAlgos() { return fNAlgos; } + Weights calculatePuppiWeights(const std::vector &iRecoObjects, double iPUProxy); -protected: - double goodVar(PuppiCandidate const &iPart, std::vector const &iParts, int iOpt, const double iRCone); + int puppiNAlgos() const { return fPuppiAlgo.size(); } + +private: + void initialize(const std::vector &iRecoObjects, + std::vector &fPFParticles, + std::vector &fPFParticlesForVar, + std::vector &fPFParticlesForVarChargedPV) const; + + double goodVar(PuppiCandidate const &iPart, + std::vector const &iParts, + int iOpt, + const double iRCone) const; void getRMSAvg(int iOpt, std::vector const &iConstits, std::vector const &iParticles, - std::vector const &iChargeParticles); - void getRawAlphas(int iOpt, - std::vector const &iConstits, - std::vector const &iParticles, - std::vector const &iChargeParticles); - double getChi2FromdZ(double iDZ); + std::vector const &iChargeParticles, + std::vector &oVals); + std::vector getRawAlphas(int iOpt, + std::vector const &iConstits, + std::vector const &iParticles, + std::vector const &iChargeParticles) const; + double getChi2FromdZ(double iDZ) const; int getPuppiId(float iPt, float iEta); double var_within_R(int iId, const std::vector &particles, const PuppiCandidate ¢re, - const double R); - - bool fPuppiDiagnostics; - const std::vector *fRecoParticles; - std::vector fPFParticles; - std::vector fPFParticlesForVar; - std::vector fPFParticlesForVarChargedPV; - std::vector fWeights; - std::vector fVals; - std::vector fRawAlphas; - std::vector fAlphaMed; - std::vector fAlphaRMS; + const double R) const; - bool fApplyCHS; - bool fInvert; - bool fUseExp; double fNeutralMinPt; double fNeutralSlope; double fPuppiWeightCut; @@ -60,8 +54,11 @@ class PuppiContainer { double fEtaMaxPhotons; double fPtMaxNeutrals; double fPtMaxNeutralsStartSlope; - int fNAlgos; - double fPUProxy; std::vector fPuppiAlgo; + + bool fPuppiDiagnostics; + bool fApplyCHS; + bool fInvert; + bool fUseExp; }; #endif diff --git a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc index 2ec716126bf75..165ed313dfb8a 100644 --- a/CommonTools/PileupAlgos/plugins/PuppiProducer.cc +++ b/CommonTools/PileupAlgos/plugins/PuppiProducer.cc @@ -25,7 +25,6 @@ class PuppiProducer : public edm::stream::EDProducer<> { public: explicit PuppiProducer(const edm::ParameterSet&); - ~PuppiProducer() override; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); typedef math::XYZTLorentzVector LorentzVector; @@ -39,9 +38,7 @@ class PuppiProducer : public edm::stream::EDProducer<> { typedef edm::Association CandToVertex; private: - virtual void beginJob(); void produce(edm::Event&, const edm::EventSetup&) override; - virtual void endJob(); edm::EDGetTokenT tokenPFCandidates_; edm::EDGetTokenT tokenVertices_; @@ -87,12 +84,11 @@ class PuppiProducer : public edm::stream::EDProducer<> { int fVtxNdofCut; double fVtxZCut; bool fUsePUProxyValue; - std::unique_ptr fPuppiContainer; - std::vector fRecoObjCollection; + PuppiContainer fPuppiContainer; }; // ------------------------------------------------------------------------------------------ -PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) { +PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) : fPuppiContainer(iConfig) { fPuppiDiagnostics = iConfig.getParameter("puppiDiagnostics"); fPuppiNoLep = iConfig.getParameter("puppiNoLep"); fUseFromPVLooseTight = iConfig.getParameter("UseFromPVLooseTight"); @@ -113,7 +109,6 @@ PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) { fClonePackedCands = iConfig.getParameter("clonePackedCands"); fVtxNdofCut = iConfig.getParameter("vtxNdofCut"); fVtxZCut = iConfig.getParameter("vtxZCut"); - fPuppiContainer = std::make_unique(iConfig); tokenPFCandidates_ = consumes(iConfig.getParameter("candName")); tokenVertices_ = consumes(iConfig.getParameter("vertexName")); @@ -150,8 +145,6 @@ PuppiProducer::PuppiProducer(const edm::ParameterSet& iConfig) { } } // ------------------------------------------------------------------------------------------ -PuppiProducer::~PuppiProducer() {} -// ------------------------------------------------------------------------------------------ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { // Get PFCandidate Collection edm::Handle hPFProduct; @@ -180,11 +173,13 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { } } + std::vector recoObjCollection; + + PuppiContainer::Weights weightsInfo; std::vector lWeights; if (!fUseExistingWeights) { //Fill the reco objects - fRecoObjCollection.clear(); - fRecoObjCollection.reserve(pfCol->size()); + recoObjCollection.reserve(pfCol->size()); int iCand = 0; for (auto const& aPF : *pfCol) { RecoObj pReco; @@ -347,15 +342,13 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { } } - fRecoObjCollection.push_back(pReco); + recoObjCollection.push_back(pReco); iCand++; } - fPuppiContainer->initialize(fRecoObjCollection); - fPuppiContainer->setPUProxy(puProxyValue); - //Compute the weights and get the particles - lWeights = fPuppiContainer->puppiWeights(); + weightsInfo = fPuppiContainer.calculatePuppiWeights(recoObjCollection, puProxyValue); + lWeights = std::move(weightsInfo.weights); } else { //Use the existing weights lWeights.reserve(pfCol->size()); @@ -457,8 +450,8 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { p4PupFiller.insert(hPFProduct, puppiP4s.begin(), puppiP4s.end()); p4PupFiller.fill(); - iEvent.emplace(ptokenPupOut_, lPupOut); - iEvent.emplace(ptokenP4PupOut_, p4PupOut); + iEvent.emplace(ptokenPupOut_, std::move(lPupOut)); + iEvent.emplace(ptokenP4PupOut_, std::move(p4PupOut)); if (fUseExistingWeights || fClonePackedCands) { edm::OrphanHandle oh = iEvent.emplace(ptokenPackedPuppiCandidates_, fPackedPuppiCandidates); @@ -477,31 +470,22 @@ void PuppiProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::ValueMap::Filler filler(pfMap_p); filler.insert(hPFProduct, values.begin(), values.end()); filler.fill(); - iEvent.emplace(ptokenValues_, pfMap_p); + iEvent.emplace(ptokenValues_, std::move(pfMap_p)); ////////////////////////////////////////////// if (fPuppiDiagnostics && !fUseExistingWeights) { // all the different alphas per particle // THE alpha per particle - std::vector theAlphas(fPuppiContainer->puppiAlphas()); - std::vector theAlphasMed(fPuppiContainer->puppiAlphasMed()); - std::vector theAlphasRms(fPuppiContainer->puppiAlphasRMS()); - std::vector alphas(fPuppiContainer->puppiRawAlphas()); - double nalgos(fPuppiContainer->puppiNAlgos()); + double nalgos(fPuppiContainer.puppiNAlgos()); - iEvent.emplace(ptokenRawAlphas_, alphas); + iEvent.emplace(ptokenRawAlphas_, std::move(weightsInfo.puppiRawAlphas)); iEvent.emplace(ptokenNalgos_, nalgos); - iEvent.emplace(ptokenAlphas_, theAlphas); - iEvent.emplace(ptokenAlphasMed_, theAlphasMed); - iEvent.emplace(ptokenAlphasRms_, theAlphasRms); + iEvent.emplace(ptokenAlphas_, std::move(weightsInfo.puppiAlphas)); + iEvent.emplace(ptokenAlphasMed_, std::move(weightsInfo.puppiAlphasMed)); + iEvent.emplace(ptokenAlphasRms_, std::move(weightsInfo.puppiAlphasRMS)); } } -// ------------------------------------------------------------------------------------------ -void PuppiProducer::beginJob() {} -// ------------------------------------------------------------------------------------------ -void PuppiProducer::endJob() {} -// ------------------------------------------------------------------------------------------ void PuppiProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.add("puppiDiagnostics", false); diff --git a/CommonTools/PileupAlgos/src/PuppiAlgo.cc b/CommonTools/PileupAlgos/src/PuppiAlgo.cc index d5a9f47e8cd20..b0f79f1df64d8 100644 --- a/CommonTools/PileupAlgos/src/PuppiAlgo.cc +++ b/CommonTools/PileupAlgos/src/PuppiAlgo.cc @@ -5,7 +5,7 @@ #include "Math/ProbFunc.h" #include "TMath.h" -PuppiAlgo::PuppiAlgo(edm::ParameterSet &iConfig) { +PuppiAlgo::PuppiAlgo(edm::ParameterSet const &iConfig) { fEtaMin = iConfig.getParameter>("etaMin"); fEtaMax = iConfig.getParameter>("etaMax"); fPtMin = iConfig.getParameter>("ptMin"); diff --git a/CommonTools/PileupAlgos/src/PuppiContainer.cc b/CommonTools/PileupAlgos/src/PuppiContainer.cc index ceb08185e561a..da1b7a6f44e06 100644 --- a/CommonTools/PileupAlgos/src/PuppiContainer.cc +++ b/CommonTools/PileupAlgos/src/PuppiContainer.cc @@ -20,30 +20,20 @@ PuppiContainer::PuppiContainer(const edm::ParameterSet &iConfig) { fPtMaxNeutrals = iConfig.getParameter("PtMaxNeutrals"); fPtMaxNeutralsStartSlope = iConfig.getParameter("PtMaxNeutralsStartSlope"); std::vector lAlgos = iConfig.getParameter >("algos"); - fNAlgos = lAlgos.size(); - for (unsigned int i0 = 0; i0 < lAlgos.size(); i0++) { - PuppiAlgo pPuppiConfig(lAlgos[i0]); - fPuppiAlgo.push_back(pPuppiConfig); + fPuppiAlgo.reserve(lAlgos.size()); + for (auto const &algos : lAlgos) { + fPuppiAlgo.emplace_back(algos); } } -void PuppiContainer::initialize(const std::vector &iRecoObjects) { - //Clear everything - fPFParticles.resize(0); - fPFParticlesForVar.resize(0); - fPFParticlesForVarChargedPV.resize(0); - fWeights.resize(0); - fVals.resize(0); - fRawAlphas.resize(0); - fAlphaMed.resize(0); - fAlphaRMS.resize(0); - fPUProxy = 1.; - //Link to the RecoObjects - fRecoParticles = &iRecoObjects; - fPFParticles.reserve(iRecoObjects.size()); - fPFParticlesForVar.reserve(iRecoObjects.size()); - fPFParticlesForVarChargedPV.reserve(iRecoObjects.size()); - for (auto const &rParticle : *fRecoParticles) { +void PuppiContainer::initialize(const std::vector &iRecoObjects, + std::vector &pfParticles, + std::vector &pfParticlesForVar, + std::vector &pfParticlesForVarChargedPV) const { + pfParticles.reserve(iRecoObjects.size()); + pfParticlesForVar.reserve(iRecoObjects.size()); + pfParticlesForVarChargedPV.reserve(iRecoObjects.size()); + for (auto const &rParticle : iRecoObjects) { PuppiCandidate pCand; pCand.id = rParticle.id; if (edm::isFinite(rParticle.rapidity)) { @@ -60,33 +50,31 @@ void PuppiContainer::initialize(const std::vector &iRecoObjects) { pCand.m = 0.; } - fPFParticles.push_back(pCand); + pfParticles.push_back(pCand); // skip candidates to be ignored in the computation // of PUPPI's alphas (e.g. electrons and muons if puppiNoLep=True) if (std::abs(rParticle.id) == 3) continue; - fPFParticlesForVar.push_back(pCand); + pfParticlesForVar.push_back(pCand); // charged candidates assigned to LV if (std::abs(rParticle.id) == 1) - fPFParticlesForVarChargedPV.push_back(pCand); + pfParticlesForVarChargedPV.push_back(pCand); } } -PuppiContainer::~PuppiContainer() {} - double PuppiContainer::goodVar(PuppiCandidate const &iPart, std::vector const &iParts, int iOpt, - const double iRCone) { + const double iRCone) const { return var_within_R(iOpt, iParts, iPart, iRCone); } double PuppiContainer::var_within_R(int iId, const vector &particles, const PuppiCandidate ¢re, - const double R) { + const double R) const { if (iId == -1) return 1.; @@ -137,12 +125,13 @@ double PuppiContainer::var_within_R(int iId, void PuppiContainer::getRMSAvg(int iOpt, std::vector const &iConstits, std::vector const &iParticles, - std::vector const &iChargedParticles) { + std::vector const &iChargedParticles, + std::vector &oVals) { for (unsigned int i0 = 0; i0 < iConstits.size(); i0++) { //Calculate the Puppi Algo to use int pPupId = getPuppiId(iConstits[i0].pt, iConstits[i0].eta); if (pPupId == -1 || fPuppiAlgo[pPupId].numAlgos() <= iOpt) { - fVals.push_back(-1); + oVals.push_back(-1); continue; } //Get the Puppi Sub Algo (given iteration) @@ -158,7 +147,7 @@ void PuppiContainer::getRMSAvg(int iOpt, (std::abs(iConstits[i0].eta) < fPuppiAlgo[pPupId].etaMaxExtrap() and getsDefaultWgtIfApplyCHS)) { pVal = goodVar(iConstits[i0], pCharged ? iChargedParticles : iParticles, pAlgo, pCone); } - fVals.push_back(pVal); + oVals.push_back(pVal); if (!edm::isFinite(pVal)) { LogDebug("NotFound") << "====> Value is Nan " << pVal << " == " << iConstits[i0].pt << " -- " << iConstits[i0].eta @@ -167,60 +156,66 @@ void PuppiContainer::getRMSAvg(int iOpt, } // code added by Nhan: now instead for every algorithm give it all the particles - for (int i1 = 0; i1 < fNAlgos; i1++) { + int count = 0; + for (auto &algo : fPuppiAlgo) { + int index = count++; // skip cands outside of algo's etaMaxExtrap, as they would anyway be ignored inside PuppiAlgo::add (see end of the block) - if (not(std::abs(iConstits[i0].eta) < fPuppiAlgo[i1].etaMaxExtrap() and getsDefaultWgtIfApplyCHS)) + if (not(std::abs(iConstits[i0].eta) < algo.etaMaxExtrap() and getsDefaultWgtIfApplyCHS)) continue; auto curVal = pVal; // recompute goodVar if algo has changed - if (i1 != pPupId) { - pAlgo = fPuppiAlgo[i1].algoId(iOpt); - pCharged = fPuppiAlgo[i1].isCharged(iOpt); - pCone = fPuppiAlgo[i1].coneSize(iOpt); + if (index != pPupId) { + pAlgo = algo.algoId(iOpt); + pCharged = algo.isCharged(iOpt); + pCone = algo.coneSize(iOpt); curVal = goodVar(iConstits[i0], pCharged ? iChargedParticles : iParticles, pAlgo, pCone); } - fPuppiAlgo[i1].add(iConstits[i0], curVal, iOpt); + algo.add(iConstits[i0], curVal, iOpt); } } - for (int i0 = 0; i0 < fNAlgos; i0++) - fPuppiAlgo[i0].computeMedRMS(iOpt); + for (auto &algo : fPuppiAlgo) + algo.computeMedRMS(iOpt); } //In fact takes the median not the average -void PuppiContainer::getRawAlphas(int iOpt, - std::vector const &iConstits, - std::vector const &iParticles, - std::vector const &iChargedParticles) { - for (int j0 = 0; j0 < fNAlgos; j0++) { - for (unsigned int i0 = 0; i0 < iConstits.size(); i0++) { +std::vector PuppiContainer::getRawAlphas(int iOpt, + std::vector const &iConstits, + std::vector const &iParticles, + std::vector const &iChargedParticles) const { + std::vector oRawAlphas; + oRawAlphas.reserve(fPuppiAlgo.size() * iConstits.size()); + for (auto &algo : fPuppiAlgo) { + for (auto const &constit : iConstits) { //Get the Puppi Sub Algo (given iteration) - int pAlgo = fPuppiAlgo[j0].algoId(iOpt); - bool pCharged = fPuppiAlgo[j0].isCharged(iOpt); - double pCone = fPuppiAlgo[j0].coneSize(iOpt); + int pAlgo = algo.algoId(iOpt); + bool pCharged = algo.isCharged(iOpt); + double pCone = algo.coneSize(iOpt); //Compute the Puppi Metric - double const pVal = goodVar(iConstits[i0], pCharged ? iChargedParticles : iParticles, pAlgo, pCone); - fRawAlphas.push_back(pVal); + double const pVal = goodVar(constit, pCharged ? iChargedParticles : iParticles, pAlgo, pCone); + oRawAlphas.push_back(pVal); if (!edm::isFinite(pVal)) { - LogDebug("NotFound") << "====> Value is Nan " << pVal << " == " << iConstits[i0].pt << " -- " - << iConstits[i0].eta << endl; + LogDebug("NotFound") << "====> Value is Nan " << pVal << " == " << constit.pt << " -- " << constit.eta << endl; continue; } } } + return oRawAlphas; } int PuppiContainer::getPuppiId(float iPt, float iEta) { int lId = -1; - for (int i0 = 0; i0 < fNAlgos; i0++) { - int nEtaBinsPerAlgo = fPuppiAlgo[i0].etaBins(); + int count = 0; + for (auto &algo : fPuppiAlgo) { + int index = count++; + int nEtaBinsPerAlgo = algo.etaBins(); for (int i1 = 0; i1 < nEtaBinsPerAlgo; i1++) { - if ((std::abs(iEta) >= fPuppiAlgo[i0].etaMin(i1)) && (std::abs(iEta) < fPuppiAlgo[i0].etaMax(i1))) { - fPuppiAlgo[i0].fixAlgoEtaBin(i1); - if (iPt > fPuppiAlgo[i0].ptMin()) { - lId = i0; + if ((std::abs(iEta) >= algo.etaMin(i1)) && (std::abs(iEta) < algo.etaMax(i1))) { + algo.fixAlgoEtaBin(i1); + if (iPt > algo.ptMin()) { + lId = index; break; } } @@ -229,7 +224,7 @@ int PuppiContainer::getPuppiId(float iPt, float iEta) { //if(lId == -1) std::cerr << "Error : Full fiducial range is not defined " << std::endl; return lId; } -double PuppiContainer::getChi2FromdZ(double iDZ) { +double PuppiContainer::getChi2FromdZ(double iDZ) const { //We need to obtain prob of PU + (1-Prob of LV) // Prob(LV) = Gaus(dZ,sigma) where sigma = 1.5mm (its really more like 1mm) //double lProbLV = ROOT::Math::normal_cdf_c(std::abs(iDZ),0.2)*2.; //*2 is to do it double sided @@ -244,39 +239,49 @@ double PuppiContainer::getChi2FromdZ(double iDZ) { lChi2PU *= lChi2PU; return lChi2PU; } -std::vector const &PuppiContainer::puppiWeights() { - int lNParticles = fRecoParticles->size(); +PuppiContainer::Weights PuppiContainer::calculatePuppiWeights(const std::vector &iRecoObjects, + double iPUProxy) { + std::vector pfParticles; + std::vector pfParticlesForVar; + std::vector pfParticlesForVarChargedPV; + + initialize(iRecoObjects, pfParticles, pfParticlesForVar, pfParticlesForVarChargedPV); + + int lNParticles = iRecoObjects.size(); + + Weights returnValue; + returnValue.weights.reserve(lNParticles); + returnValue.puppiAlphas.reserve(lNParticles); - fWeights.clear(); - fWeights.reserve(lNParticles); - fVals.clear(); - fVals.reserve(lNParticles); - for (int i0 = 0; i0 < fNAlgos; i0++) - fPuppiAlgo[i0].reset(); + //guarantee all algos are rest before leaving this function + auto doReset = [this](void *) { + for (auto &algo : fPuppiAlgo) + algo.reset(); + }; + std::unique_ptr guard(&fPuppiAlgo, doReset); int lNMaxAlgo = 1; - for (int i0 = 0; i0 < fNAlgos; i0++) - lNMaxAlgo = std::max(fPuppiAlgo[i0].numAlgos(), lNMaxAlgo); + for (auto &algo : fPuppiAlgo) + lNMaxAlgo = std::max(algo.numAlgos(), lNMaxAlgo); //Run through all compute mean and RMS for (int i0 = 0; i0 < lNMaxAlgo; i0++) { - getRMSAvg(i0, fPFParticles, fPFParticlesForVar, fPFParticlesForVarChargedPV); + getRMSAvg(i0, pfParticles, pfParticlesForVar, pfParticlesForVarChargedPV, returnValue.puppiAlphas); } if (fPuppiDiagnostics) - getRawAlphas(0, fPFParticles, fPFParticlesForVar, fPFParticlesForVarChargedPV); + returnValue.puppiRawAlphas = getRawAlphas(0, pfParticles, pfParticlesForVar, pfParticlesForVarChargedPV); std::vector pVals; pVals.reserve(lNParticles); for (int i0 = 0; i0 < lNParticles; i0++) { //Refresh pVals.clear(); - double pWeight = 1; //Get the Puppi Id and if ill defined move on - const auto &rParticle = (*fRecoParticles)[i0]; + const auto &rParticle = iRecoObjects[i0]; int pPupId = getPuppiId(rParticle.pt, rParticle.eta); if (pPupId == -1) { - fWeights.push_back(0); - fAlphaMed.push_back(-10); - fAlphaRMS.push_back(-10); + returnValue.weights.push_back(0); + returnValue.puppiAlphasMed.push_back(-10); + returnValue.puppiAlphasRMS.push_back(-10); continue; } @@ -292,9 +297,9 @@ std::vector const &PuppiContainer::puppiWeights() { //Fill and compute the PuppiWeight int lNAlgos = fPuppiAlgo[pPupId].numAlgos(); for (int i1 = 0; i1 < lNAlgos; i1++) - pVals.push_back(fVals[lNParticles * i1 + i0]); + pVals.push_back(returnValue.puppiAlphas[lNParticles * i1 + i0]); - pWeight = fPuppiAlgo[pPupId].compute(pVals, pChi2); + double pWeight = fPuppiAlgo[pPupId].compute(pVals, pChi2); //Apply the CHS weights if (rParticle.id == 1 && fApplyCHS) pWeight = 1; @@ -307,34 +312,34 @@ std::vector const &PuppiContainer::puppiWeights() { if (!edm::isFinite(pWeight)) { pWeight = 0.0; LogDebug("PuppiWeightError") << "====> Weight is nan : " << pWeight << " : pt " << rParticle.pt - << " -- eta : " << rParticle.eta << " -- Value" << fVals[i0] + << " -- eta : " << rParticle.eta << " -- Value" << returnValue.puppiAlphas[i0] << " -- id : " << rParticle.id << " -- NAlgos: " << lNAlgos << std::endl; } //Basic Cuts - if (pWeight * fPFParticles[i0].pt < fPuppiAlgo[pPupId].neutralPt(fPUProxy) && rParticle.id == 0) + if (pWeight * pfParticles[i0].pt < fPuppiAlgo[pPupId].neutralPt(iPUProxy) && rParticle.id == 0) pWeight = 0; //threshold cut on the neutral Pt // Protect high pT photons (important for gamma to hadronic recoil balance) - if (fPtMaxPhotons > 0 && rParticle.pdgId == 22 && std::abs(fPFParticles[i0].eta) < fEtaMaxPhotons && - fPFParticles[i0].pt > fPtMaxPhotons) + if (fPtMaxPhotons > 0 && rParticle.pdgId == 22 && std::abs(pfParticles[i0].eta) < fEtaMaxPhotons && + pfParticles[i0].pt > fPtMaxPhotons) pWeight = 1.; // Protect high pT neutrals else if ((fPtMaxNeutrals > 0) && (rParticle.id == 0)) pWeight = std::clamp( - (fPFParticles[i0].pt - fPtMaxNeutralsStartSlope) / (fPtMaxNeutrals - fPtMaxNeutralsStartSlope), pWeight, 1.); + (pfParticles[i0].pt - fPtMaxNeutralsStartSlope) / (fPtMaxNeutrals - fPtMaxNeutralsStartSlope), pWeight, 1.); if (pWeight < fPuppiWeightCut) pWeight = 0; //==> Elminate the low Weight stuff if (fInvert) pWeight = 1. - pWeight; //std::cout << "rParticle.pt = " << rParticle.pt << ", rParticle.charge = " << rParticle.charge << ", rParticle.id = " << rParticle.id << ", weight = " << pWeight << std::endl; - fWeights.push_back(pWeight); - fAlphaMed.push_back(fPuppiAlgo[pPupId].median()); - fAlphaRMS.push_back(fPuppiAlgo[pPupId].rms()); - //Now get rid of the thrown out weights for the particle collection + returnValue.weights.push_back(pWeight); + returnValue.puppiAlphasMed.push_back(fPuppiAlgo[pPupId].median()); + returnValue.puppiAlphasRMS.push_back(fPuppiAlgo[pPupId].rms()); + //Now get rid of the thrown out returnValue.weights for the particle collection // leave these lines in, in case want to move eventually to having no 1-to-1 correspondence between puppi and pf cands // if( std::abs(pWeight) < std::numeric_limits::denorm_min() ) continue; // this line seems not to work like it's supposed to... // if(std::abs(pWeight) <= 0. ) continue; } - return fWeights; + return returnValue; } diff --git a/CommonTools/RecoAlgos/interface/CandidateProducer.h b/CommonTools/RecoAlgos/interface/CandidateProducer.h index 5e1bcb2f82d92..2a840c3fb4258 100644 --- a/CommonTools/RecoAlgos/interface/CandidateProducer.h +++ b/CommonTools/RecoAlgos/interface/CandidateProducer.h @@ -12,15 +12,17 @@ * $Id: CandidateProducer.h,v 1.4 2010/02/11 00:10:53 wmtan Exp $ * */ -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/ParameterSet/interface/ParameterSetfwd.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "DataFormats/Common/interface/Handle.h" -#include "DataFormats/Candidate/interface/CandidateFwd.h" -#include "CommonTools/UtilAlgos/interface/MasterCollectionHelper.h" #include "CommonTools/UtilAlgos/interface/AnySelector.h" #include "CommonTools/UtilAlgos/interface/EventSetupInitTrait.h" +#include "CommonTools/UtilAlgos/interface/MasterCollectionHelper.h" +#include "DataFormats/Candidate/interface/CandidateFwd.h" +#include "DataFormats/Common/interface/Handle.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ParameterSetfwd.h" +#include "FWCore/Utilities/interface/InputTag.h" namespace converter { namespace helper { @@ -81,6 +83,14 @@ class CandidateProducer : public edm::stream::EDProducer<> { /// destructor ~CandidateProducer() override {} + /// fillDescriptions + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("src", edm::InputTag("")); + Conv::fillPSetDescription(desc); + descriptions.addWithDefaultLabel(desc); + } + private: /// begin job (first run) void beginRun(const edm::Run&, const edm::EventSetup& es) override { diff --git a/CommonTools/RecoAlgos/interface/MassiveCandidateConverter.h b/CommonTools/RecoAlgos/interface/MassiveCandidateConverter.h index 2f63740240169..8fa1cae6f63b6 100644 --- a/CommonTools/RecoAlgos/interface/MassiveCandidateConverter.h +++ b/CommonTools/RecoAlgos/interface/MassiveCandidateConverter.h @@ -1,9 +1,11 @@ #ifndef RecoAlgos_MassiveCandidateConverter_h #define RecoAlgos_MassiveCandidateConverter_h +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/ParameterSet/interface/ParameterSetfwd.h" #include "FWCore/Utilities/interface/ESGetToken.h" -#include "SimGeneral/HepPDTRecord/interface/PdtEntry.h" #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h" +#include "SimGeneral/HepPDTRecord/interface/PdtEntry.h" #include namespace edm { @@ -16,6 +18,9 @@ namespace converter { MassiveCandidateConverter(const edm::ParameterSet&, edm::ConsumesCollector); void beginFirstRun(const edm::EventSetup&); + public: + static void fillPSetDescription(edm::ParameterSetDescription& desc); + protected: double massSqr_; PdtEntry particle_; diff --git a/CommonTools/RecoAlgos/interface/RecoTrackSelectorBase.h b/CommonTools/RecoAlgos/interface/RecoTrackSelectorBase.h index 62293872835b0..4bfad1f2cea64 100644 --- a/CommonTools/RecoAlgos/interface/RecoTrackSelectorBase.h +++ b/CommonTools/RecoAlgos/interface/RecoTrackSelectorBase.h @@ -1,17 +1,18 @@ #ifndef CommonTools_RecoAlgos_RecoTrackSelectorBase_h #define CommonTools_RecoAlgos_RecoTrackSelectorBase_h -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/ConsumesCollector.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" - +#include "DataFormats/BeamSpot/interface/BeamSpot.h" +#include "DataFormats/Math/interface/deltaPhi.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/BeamSpot/interface/BeamSpot.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/Math/interface/deltaPhi.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" class RecoTrackSelectorBase { public: @@ -79,6 +80,29 @@ class RecoTrackSelectorBase { vertex_ = (*hVtx)[0].position(); } + static void fillPSetDescription(edm::ParameterSetDescription& desc) { + desc.add("invertRapidityCut", false); + desc.add("usePV", false); + desc.add("lip", 300.0); + desc.add("maxChi2", 10000.0); + desc.add("maxPhi", -3.2); + desc.add("maxRapidity", 5.0); + desc.add("minPhi", 3.2); + desc.add("minRapidity", -5.0); + desc.add("ptMin", 0.1); + desc.add("tip", 120.0); + desc.add("beamSpot", edm::InputTag("offlineBeamSpot")); + desc.add("vertexTag", edm::InputTag("offlinePrimaryVertices")); + desc.add("min3DLayer", 0); + desc.add("minHit", 0); + desc.add("minLayer", 3); + desc.add("minPixelHit", 0); + desc.add >("algorithm", {}); + desc.add >("algorithmMaskContains", {}); + desc.add >("originalAlgorithm", {}); + desc.add >("quality", {}); + } + bool operator()(const reco::TrackRef& tref) const { return (*this)(*tref); } bool operator()(const reco::Track& t) const { return (*this)(t, vertex_); } diff --git a/CommonTools/RecoAlgos/interface/TrackFullCloneSelectorBase.h b/CommonTools/RecoAlgos/interface/TrackFullCloneSelectorBase.h index df57569202403..f1ffb3bd6b61a 100644 --- a/CommonTools/RecoAlgos/interface/TrackFullCloneSelectorBase.h +++ b/CommonTools/RecoAlgos/interface/TrackFullCloneSelectorBase.h @@ -12,24 +12,24 @@ * */ -#include - -#include "FWCore/Framework/interface/ConsumesCollector.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" #include #include #include #include #include -#include "DataFormats/TrackReco/interface/TrackFwd.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "TrackingTools/PatternTools/interface/Trajectory.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" +#include "TrackingTools/PatternTools/interface/Trajectory.h" namespace reco { namespace modules { @@ -57,7 +57,16 @@ namespace reco { } } /// destructor - ~TrackFullCloneSelectorBase() override {} + ~TrackFullCloneSelectorBase() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("src", edm::InputTag("generalTracks")); + desc.addUntracked("copyExtras", false); + desc.addUntracked("copyTrajectories", false); + Selector::fillPSetDescription(desc); + descriptions.addWithDefaultLabel(desc); + } private: /// process one event @@ -173,7 +182,6 @@ namespace reco { std::unique_ptr > selTrajs_; std::unique_ptr selTTAss_; }; - } // namespace modules } // namespace reco #endif diff --git a/CommonTools/RecoAlgos/interface/TrackWithVertexSelector.h b/CommonTools/RecoAlgos/interface/TrackWithVertexSelector.h index 91ad0ae60c783..0677d24119f20 100644 --- a/CommonTools/RecoAlgos/interface/TrackWithVertexSelector.h +++ b/CommonTools/RecoAlgos/interface/TrackWithVertexSelector.h @@ -5,14 +5,16 @@ // Created: Fri May 25 10:06:02 CEST 2007 // $Id: TrackWithVertexSelector.h,v 1.4 2010/04/07 08:56:18 gpetrucc Exp $ -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/ConsumesCollector.h" #include "DataFormats/Common/interface/ValueMap.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" class TrackWithVertexSelector { public: @@ -21,6 +23,8 @@ class TrackWithVertexSelector { explicit TrackWithVertexSelector(const edm::ParameterSet &iConfig, edm::ConsumesCollector &iC); ~TrackWithVertexSelector(); + static void fillPSetDescription(edm::ParameterSetDescription &desc); + void init(const edm::Event &event, const edm::EventSetup &) { init(event); } void init(const edm::Event &event); @@ -42,20 +46,20 @@ class TrackWithVertexSelector { bool testVertices(const reco::TrackRef &t, const reco::VertexCollection &vtxs) const; private: - uint32_t numberOfValidHits_; - uint32_t numberOfValidPixelHits_; - uint32_t numberOfLostHits_; - double normalizedChi2_; - double ptMin_, ptMax_, etaMin_, etaMax_; - double dzMax_, d0Max_; - double ptErrorCut_; - std::string quality_; + const uint32_t numberOfValidHits_; + const uint32_t numberOfValidPixelHits_; + const uint32_t numberOfLostHits_; + const double normalizedChi2_; + const double ptMin_, ptMax_, etaMin_, etaMax_; + const double dzMax_, d0Max_; + const double ptErrorCut_; + const std::string quality_; - uint32_t nVertices_; - edm::EDGetTokenT vertexToken_; - edm::EDGetTokenT > timesToken_, timeResosToken_; - bool vtxFallback_; - double zetaVtx_, rhoVtx_, nSigmaDtVertex_; + const uint32_t nVertices_; + const edm::EDGetTokenT vertexToken_; + const edm::EDGetTokenT > timesToken_, timeResosToken_; + const bool vtxFallback_; + const double zetaVtx_, rhoVtx_, nSigmaDtVertex_; reco::VertexCollection const *vcoll_ = nullptr; edm::ValueMap const *timescoll_ = nullptr; diff --git a/CommonTools/RecoAlgos/src/MassiveCandidateConverter.cc b/CommonTools/RecoAlgos/src/MassiveCandidateConverter.cc index 9f2733b32d829..890b7c9210cf4 100644 --- a/CommonTools/RecoAlgos/src/MassiveCandidateConverter.cc +++ b/CommonTools/RecoAlgos/src/MassiveCandidateConverter.cc @@ -20,3 +20,9 @@ void MassiveCandidateConverter::beginFirstRun(const EventSetup& es) { massSqr_ = particle_.data().mass(); massSqr_ *= massSqr_; } + +void MassiveCandidateConverter::fillPSetDescription(edm::ParameterSetDescription& desc) { + desc.addNode(edm::ParameterDescription("particleType", true) xor + edm::ParameterDescription("particleType", true)) + ->setComment("the PdtEntry can be specified as either an 'int' or via its name using a 'string'"); +} diff --git a/CommonTools/RecoAlgos/src/RecoChargedRefCandidateToTrackRef.h b/CommonTools/RecoAlgos/src/RecoChargedRefCandidateToTrackRef.h index b274a2ada8f2f..281b0ff5106f1 100644 --- a/CommonTools/RecoAlgos/src/RecoChargedRefCandidateToTrackRef.h +++ b/CommonTools/RecoAlgos/src/RecoChargedRefCandidateToTrackRef.h @@ -2,6 +2,7 @@ #define CommonTools_RecoAlgos_TrackToRefCandidate_h #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "FWCore/ParameterSet/interface/ParameterSetfwd.h" #include "DataFormats/RecoCandidate/interface/RecoChargedRefCandidate.h" #include "DataFormats/RecoCandidate/interface/RecoChargedRefCandidateFwd.h" @@ -19,6 +20,7 @@ namespace converter { RecoChargedRefCandidateToTrackRef(const edm::ParameterSet& cfg, const edm::ConsumesCollector&) {} void beginFirstRun(const edm::EventSetup&) {} void convert(const reco::RecoChargedRefCandidateRef& c, reco::TrackRef& trkRef) const { trkRef = c->track(); } + static void fillPSetDescription(edm::ParameterSetDescription& desc) {} }; } // namespace converter diff --git a/CommonTools/RecoAlgos/src/TrackWithVertexSelector.cc b/CommonTools/RecoAlgos/src/TrackWithVertexSelector.cc index 52befeeed3bd8..120fcd95a4bda 100644 --- a/CommonTools/RecoAlgos/src/TrackWithVertexSelector.cc +++ b/CommonTools/RecoAlgos/src/TrackWithVertexSelector.cc @@ -128,3 +128,27 @@ bool TrackWithVertexSelector::operator()(const reco::TrackRef &tref) const { return true; return testVertices(tref, *vcoll_); } + +void TrackWithVertexSelector::fillPSetDescription(edm::ParameterSetDescription &desc) { + desc.add("numberOfValidHits", 0); + desc.add("numberOfValidPixelHits", 0); + desc.add("numberOfLostHits", 999)->setComment("at most 999 lost hits"); + desc.add("normalizedChi2", 999999.); + desc.add("ptMin", 0.3)->setComment("in GeV"); + desc.add("ptMax", 500.0)->setComment("in GeV"); + desc.add("etaMin", 0.0); + desc.add("etaMax", 50.0); + desc.add("dzMax", 999.)->setComment("in cm"); + desc.add("d0Max", 999.)->setComment("in cm"); + desc.add("ptErrorCut", 0.2)->setComment("[pTError/pT]*max(1,normChi2) <= ptErrorCut"); + desc.add("quality", "highPurity")->setComment(" quality cut as defined in reco::TrackBase"); + desc.add("useVtx", true)->setComment("compatibility with a vertex"); + desc.add("nVertices", 0)->setComment(" how many vertices to look at before dropping the track"); + desc.add("vertexTag", edm::InputTag("offlinePrimaryVertices")); + desc.add("timesTag", edm::InputTag("")); + desc.add("timeResosTag", edm::InputTag("")); + desc.add("vtxFallback", true)->setComment("falback to beam spot if there are no vertices"); + desc.add("zetaVtx", 1.0); + desc.add("rhoVtx", 0.2)->setComment("tags used by b-tagging folks"); + desc.add("nSigmaDtVertex", 0); +} diff --git a/CommonTools/UtilAlgos/interface/ParameterAdapter.h b/CommonTools/UtilAlgos/interface/ParameterAdapter.h index 30afcc494aae9..86e4add7af247 100644 --- a/CommonTools/UtilAlgos/interface/ParameterAdapter.h +++ b/CommonTools/UtilAlgos/interface/ParameterAdapter.h @@ -14,7 +14,7 @@ namespace reco { static S make(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC) { return S(cfg, iC); } static S make(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC) { return S(cfg, iC); } - static void fillPSetDescription(edm::ParameterSetDescription& desc) { S::template fillPSetDescription(desc); } + static void fillPSetDescription(edm::ParameterSetDescription& desc) { S::fillPSetDescription(desc); } }; template diff --git a/CommonTools/Utils/interface/TypedStringObjectMethodCaller.h b/CommonTools/Utils/interface/TypedStringObjectMethodCaller.h new file mode 100644 index 0000000000000..eb3bd7c8a5a69 --- /dev/null +++ b/CommonTools/Utils/interface/TypedStringObjectMethodCaller.h @@ -0,0 +1,43 @@ +#ifndef CommonTools_Utils_TypedStringObjectMethodCaller_h +#define CommonTools_Utils_TypedStringObjectMethodCaller_h +/* \class TypedStringObjectMethodCaller + * + * Object's method (or a chain of methods) caller functor with generic return-type, specified by string expression + * + */ + +#include "FWCore/Utilities/interface/EDMException.h" +#include "CommonTools/Utils/interface/parser/Exception.h" +#include "CommonTools/Utils/interface/parser/MethodChain.h" +#include "CommonTools/Utils/interface/parser/MethodChainGrammar.h" +#include "FWCore/Reflection/interface/ObjectWithDict.h" + +template +struct TypedStringObjectMethodCaller { + TypedStringObjectMethodCaller(const std::string expr, bool lazy = DefaultLazyness) : type_(typeid(T)) { + using namespace boost::spirit::classic; + reco::parser::MethodChainGrammar grammar(methodchain_, type_, lazy); + const char* startingFrom = expr.c_str(); + try { + if (!parse(startingFrom, grammar >> end_p, space_p).full) { + throw edm::Exception(edm::errors::Configuration, "failed to parse \"" + expr + "\""); + } + } catch (reco::parser::BaseException& e) { + throw edm::Exception(edm::errors::Configuration) + << "MethodChainGrammer parse error:" << reco::parser::baseExceptionWhat(e) << " (char " + << e.where - startingFrom << ")\n"; + } + } + + R operator()(const T& t) const { + edm::ObjectWithDict o(type_, const_cast(&t)); + edm::ObjectWithDict ret = methodchain_->value(o); + return *static_cast(ret.address()); + } + +private: + reco::parser::MethodChainPtr methodchain_; + edm::TypeWithDict type_; +}; + +#endif diff --git a/CommonTools/Utils/interface/parser/MethodChain.h b/CommonTools/Utils/interface/parser/MethodChain.h new file mode 100644 index 0000000000000..4d21f595a7983 --- /dev/null +++ b/CommonTools/Utils/interface/parser/MethodChain.h @@ -0,0 +1,75 @@ +#ifndef CommonTools_Utils_MethodChain_h +#define CommonTools_Utils_MethodChain_h + +/* \class reco::parser::MethodChain + * + * Chain of methods + * Based on ExpressionBase and ExpressionVar, but remove final conversion to double + * + */ + +#include "CommonTools/Utils/interface/parser/MethodInvoker.h" +#include "CommonTools/Utils/interface/TypeCode.h" + +#include +#include + +namespace reco { + namespace parser { + + /// Based on Expression, but its value method returns an edm::ObjectWithDict instead of a double + class MethodChainBase { + public: // Public Methods + virtual ~MethodChainBase() {} + virtual edm::ObjectWithDict value(const edm::ObjectWithDict&) const = 0; + }; + + /// Shared ptr to MethodChainBase + typedef std::shared_ptr MethodChainPtr; + + /// Evaluate an object's method or datamember (or chain of them) + class MethodChain : public MethodChainBase { + private: // Private Data Members + std::vector methods_; + using Objects = std::vector>; + mutable oneapi::tbb::concurrent_queue objectsCache_; + + private: // Private Methods + [[nodiscard]] Objects initObjects_() const; + + Objects borrowObjects() const; + void returnObjects(Objects&&) const; + + public: // Public Static Methods + /// allocate an object to hold the result of a given member (if needed) + /// this method is used also from the LazyInvoker code + /// returns true if objects returned from this will require a destructor + static bool makeStorage(edm::ObjectWithDict& obj, const edm::TypeWithDict& retType); + + /// delete an objecty, if needed + /// this method is used also from the LazyInvoker code + static void delStorage(edm::ObjectWithDict&); + + public: // Public Methods + MethodChain(const std::vector& methods); + MethodChain(const MethodChain&); + ~MethodChain(); + edm::ObjectWithDict value(const edm::ObjectWithDict&) const override; + }; + + /// Same as MethodChain but with lazy resolution of object methods + /// using the dynamic type of the object, and not the one fixed at compile time + class LazyMethodChain : public MethodChainBase { + private: // Private Data Members + std::vector methods_; + + public: + LazyMethodChain(const std::vector& methods); + ~LazyMethodChain() override; + edm::ObjectWithDict value(const edm::ObjectWithDict&) const override; + }; + + } // namespace parser +} // namespace reco + +#endif // CommonTools_Utils_MethodChain_h diff --git a/CommonTools/Utils/interface/parser/MethodChainGrammar.h b/CommonTools/Utils/interface/parser/MethodChainGrammar.h new file mode 100644 index 0000000000000..27d4f68b780ae --- /dev/null +++ b/CommonTools/Utils/interface/parser/MethodChainGrammar.h @@ -0,0 +1,76 @@ +#ifndef CommonTools_Utils_MethodChainGrammar_h +#define CommonTools_Utils_MethodChainGrammar_h +/* \class MethodChainGrammer + * + * subset grammar of the full Grammer (CommonTools/Utils/interface/parser/Grammar.h), allowing only a chain of methods + * + */ + +#include "boost/spirit/include/classic_core.hpp" +#include "boost/spirit/include/classic_grammar_def.hpp" +#include "boost/spirit/include/classic_chset.hpp" +#include "FWCore/Utilities/interface/EDMException.h" +#include "FWCore/Reflection/interface/ObjectWithDict.h" +#include "CommonTools/Utils/interface/parser/MethodChain.h" +#include "CommonTools/Utils/interface/parser/MethodChainSetter.h" +#include "CommonTools/Utils/interface/parser/MethodSetter.h" +#include "CommonTools/Utils/interface/parser/MethodArgumentSetter.h" +#include "CommonTools/Utils/interface/parser/MethodInvoker.h" +#include "CommonTools/Utils/interface/parser/MethodStack.h" +#include "CommonTools/Utils/interface/parser/TypeStack.h" +#include "CommonTools/Utils/interface/parser/MethodArgumentStack.h" +#include "CommonTools/Utils/interface/parser/AnyMethodArgument.h" +#include "CommonTools/Utils/interface/parser/Exception.h" + +namespace reco { + namespace parser { + struct MethodChainGrammar : public boost::spirit::classic::grammar { + MethodChainPtr* methchain_; + bool lazy_; + mutable MethodStack methStack; + mutable LazyMethodStack lazyMethStack; + mutable MethodArgumentStack methArgStack; + mutable TypeStack typeStack; + + MethodChainGrammar(MethodChainPtr& methchain, const edm::TypeWithDict& iType, bool lazy = false) + : methchain_(&methchain), lazy_(lazy) { + typeStack.push_back(iType); + } + + template + struct definition { + typedef boost::spirit::classic::rule rule; + rule metharg, method, arrayAccess, methodchain; + definition(const MethodChainGrammar& self) { + using namespace boost::spirit::classic; + + MethodArgumentSetter methodArg_s(self.methArgStack); + MethodSetter method_s(self.methStack, self.lazyMethStack, self.typeStack, self.methArgStack, self.lazy_); + MethodChainSetter methodchain_s(*self.methchain_, self.methStack, self.lazyMethStack, self.typeStack); + + BOOST_SPIRIT_DEBUG_RULE(methodchain); + BOOST_SPIRIT_DEBUG_RULE(arrayAccess); + BOOST_SPIRIT_DEBUG_RULE(method); + BOOST_SPIRIT_DEBUG_RULE(metharg); + + boost::spirit::classic::assertion expectParenthesis(kMissingClosingParenthesis); + boost::spirit::classic::assertion expect(kSyntaxError); + + metharg = (strict_real_p[methodArg_s]) | (int_p[methodArg_s]) | + (ch_p('"') >> *(~ch_p('"')) >> ch_p('"'))[methodArg_s] | + (ch_p('\'') >> *(~ch_p('\'')) >> ch_p('\''))[methodArg_s]; + method = // alnum_p doesn't accept underscores, so we use chset<>; lexeme_d needed to avoid whitespace skipping within method names + (lexeme_d[alpha_p >> *chset<>("a-zA-Z0-9_")] >> ch_p('(') >> metharg >> *(ch_p(',') >> metharg) >> + expectParenthesis(ch_p(')')))[method_s] | + ((lexeme_d[alpha_p >> *chset<>("a-zA-Z0-9_")])[method_s] >> !(ch_p('(') >> ch_p(')'))); + arrayAccess = (ch_p('[') >> metharg >> *(ch_p(',') >> metharg) >> expectParenthesis(ch_p(']')))[method_s]; + methodchain = (method >> *(arrayAccess | (ch_p('.') >> expect(method))))[methodchain_s]; + } + + rule const& start() const { return methodchain; } + }; + }; + } // namespace parser +} // namespace reco + +#endif diff --git a/CommonTools/Utils/interface/parser/MethodChainSetter.h b/CommonTools/Utils/interface/parser/MethodChainSetter.h new file mode 100644 index 0000000000000..e8ee3a3a46606 --- /dev/null +++ b/CommonTools/Utils/interface/parser/MethodChainSetter.h @@ -0,0 +1,36 @@ +#ifndef CommonTools_Utils_MethodChainSetter_h +#define CommonTools_Utils_MethodChainSetter_h +/* \class reco::parser::MethodChainSetter + * + * Method Chain setter, used to construct MethodChain when parsing with boost::spirit + * + */ +#include "CommonTools/Utils/interface/parser/MethodChain.h" +#include "CommonTools/Utils/interface/parser/MethodStack.h" +#include "CommonTools/Utils/interface/parser/TypeStack.h" + +#include + +namespace reco { + namespace parser { + struct MethodChainSetter { + MethodChainSetter(MethodChainPtr &methchain, + MethodStack &methStack, + LazyMethodStack &lazyMethStack, + TypeStack &typeStack) + : methchain_(methchain), methStack_(methStack), lazyMethStack_(lazyMethStack), typeStack_(typeStack) {} + void operator()(const char *, const char *) const; + + private: + void push(const char *, const char *) const; + void lazyPush(const char *, const char *) const; + + MethodChainPtr &methchain_; + MethodStack &methStack_; + LazyMethodStack &lazyMethStack_; + TypeStack &typeStack_; + }; + } // namespace parser +} // namespace reco + +#endif diff --git a/CommonTools/Utils/src/ExpressionFunctionSetter.cc b/CommonTools/Utils/src/ExpressionFunctionSetter.cc index ade3ccbf0ec9c..4a326a8a65121 100644 --- a/CommonTools/Utils/src/ExpressionFunctionSetter.cc +++ b/CommonTools/Utils/src/ExpressionFunctionSetter.cc @@ -1,11 +1,12 @@ #include "CommonTools/Utils/interface/parser/ExpressionFunctionSetter.h" -#include "CommonTools/Utils/interface/parser/ExpressionUnaryOperator.h" #include "CommonTools/Utils/interface/parser/ExpressionBinaryOperator.h" +#include "CommonTools/Utils/interface/parser/ExpressionUnaryOperator.h" #include "CommonTools/Utils/src/ExpressionQuaterOperator.h" -#include -#include #include #include +#include +#include +#include namespace reco { namespace parser { @@ -89,73 +90,73 @@ void ExpressionFunctionSetter::operator()(const char *, const char *) const { ExpressionPtr funExp; switch (fun) { case (kAbs): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kAcos): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kAsin): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kAtan): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kAtan2): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kChi2Prob): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kCos): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kCosh): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kDeltaR): - funExp.reset(new ExpressionQuaterOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kDeltaPhi): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kExp): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kHypot): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kLog): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kLog10): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kMax): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kMin): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kPow): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kSin): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kSinh): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kSqrt): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kTan): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kTanh): - funExp.reset(new ExpressionUnaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; case (kTestBit): - funExp.reset(new ExpressionBinaryOperator(expStack_)); + funExp = std::make_shared>(expStack_); break; }; expStack_.push_back(funExp); diff --git a/CommonTools/Utils/src/MethodChain.cc b/CommonTools/Utils/src/MethodChain.cc new file mode 100644 index 0000000000000..39554f33b4ae2 --- /dev/null +++ b/CommonTools/Utils/src/MethodChain.cc @@ -0,0 +1,122 @@ +#include "CommonTools/Utils/interface/parser/MethodChain.h" +#include "CommonTools/Utils/interface/parser/MethodInvoker.h" + +#include "FWCore/Reflection/interface/ObjectWithDict.h" +#include "FWCore/Reflection/interface/FunctionWithDict.h" +#include "FWCore/Reflection/interface/MemberWithDict.h" +#include "FWCore/Reflection/interface/TypeWithDict.h" + +#include +#include + +using namespace reco::parser; +using namespace std; + +MethodChain::Objects MethodChain::initObjects_() const { + Objects objects(methods_.size(), {edm::ObjectWithDict(), false}); + assert(objects.size() == methods_.size()); + auto IO = objects.begin(); + for (auto const& method : methods_) { + if (method.isFunction()) { + edm::TypeWithDict retType = method.method().finalReturnType(); + IO->second = makeStorage(IO->first, retType); + } else { + *IO = {edm::ObjectWithDict(), false}; + } + ++IO; + } + return objects; +} + +MethodChain::MethodChain(const vector& methods) : methods_(methods) { returnObjects(initObjects_()); } + +MethodChain::MethodChain(const MethodChain& rhs) : methods_(rhs.methods_) { returnObjects(initObjects_()); } + +MethodChain::Objects MethodChain::borrowObjects() const { + Objects objects; + if (objectsCache_.try_pop(objects)) { + return objects; + } + return initObjects_(); +} + +void MethodChain::returnObjects(Objects&& iOb) const { objectsCache_.push(std::move(iOb)); } + +MethodChain::~MethodChain() { + Objects objects; + while (objectsCache_.try_pop(objects)) { + for (auto& o : objects) { + delStorage(o.first); + } + } +} + +void MethodChain::delStorage(edm::ObjectWithDict& obj) { + if (!obj.address()) { + return; + } + if (obj.typeOf().isPointer() || obj.typeOf().isReference()) { + // just delete a void*, as that's what it was + void** p = static_cast(obj.address()); + delete p; + } else { + //std::cout << "Calling Destruct on a " << + // obj.typeOf().qualifiedName() << std::endl; + obj.typeOf().deallocate(obj.address()); + } +} + +bool MethodChain::makeStorage(edm::ObjectWithDict& obj, const edm::TypeWithDict& retType) { + static const edm::TypeWithDict tVoid(edm::TypeWithDict::byName("void")); + bool ret = false; + if (retType == tVoid) { + obj = edm::ObjectWithDict::byType(tVoid); + } else if (retType.isPointer() || retType.isReference()) { + // in this case, I have to allocate a void*, not an object! + obj = edm::ObjectWithDict(retType, new void*); + } else { + obj = edm::ObjectWithDict(retType, retType.allocate()); + ret = retType.isClass(); + //std::cout << "MethodChain: reserved memory at " << obj.address() << + // " for a " << retType.qualifiedName() << " returned by " << + // member.name() << std::endl; + } + return ret; +} + +edm::ObjectWithDict MethodChain::value(const edm::ObjectWithDict& obj) const { + edm::ObjectWithDict val(obj); + auto objects = borrowObjects(); + auto IO = objects.begin(); + for (auto& m : methods_) { + val = m.invoke(val, IO->first); + ++IO; + } + for (auto RI = objects.rbegin(), RE = objects.rend(); RI != RE; ++RI) { + if (RI->second) { + RI->first.destruct(false); + } + } + returnObjects(std::move(objects)); + return val; +} + +LazyMethodChain::LazyMethodChain(const std::vector& methods) : methods_(methods) {} + +LazyMethodChain::~LazyMethodChain() {} + +edm::ObjectWithDict LazyMethodChain::value(const edm::ObjectWithDict& o) const { + edm::ObjectWithDict val = o; + std::vector storage; + storage.reserve(methods_.size()); + + std::vector::const_iterator I = methods_.begin(); + std::vector::const_iterator E = methods_.end(); + for (; I < E; ++I) { + val = I->invoke(val, storage); + } + while (not storage.empty()) { + storage.pop_back(); + } + return val; +} diff --git a/CommonTools/Utils/src/MethodChainSetter.cc b/CommonTools/Utils/src/MethodChainSetter.cc new file mode 100644 index 0000000000000..67371d0ecf0b3 --- /dev/null +++ b/CommonTools/Utils/src/MethodChainSetter.cc @@ -0,0 +1,30 @@ +#include "CommonTools/Utils/interface/parser/MethodChainSetter.h" +#include "CommonTools/Utils/interface/parser/MethodChain.h" +#include "CommonTools/Utils/interface/returnType.h" +#include "CommonTools/Utils/interface/parser/Exception.h" +#include + +using namespace reco::parser; +using namespace std; + +void MethodChainSetter::operator()(const char *begin, const char *end) const { + //std::cerr << "MethodChainSetter: Pushed [" << std::string(begin,end) << "]" << std::endl; + if (!methStack_.empty()) + push(begin, end); + else if (!lazyMethStack_.empty()) + lazyPush(begin, end); + else + throw Exception(begin) << " Expression didn't parse neither hastily nor lazyly. This must not happen.\n"; +} + +void MethodChainSetter::push(const char *begin, const char *end) const { + methchain_ = std::shared_ptr(new MethodChain(methStack_)); + methStack_.clear(); + typeStack_.resize(1); +} + +void MethodChainSetter::lazyPush(const char *begin, const char *end) const { + methchain_ = std::shared_ptr(new LazyMethodChain(lazyMethStack_)); + lazyMethStack_.clear(); + typeStack_.resize(1); +} diff --git a/CommonTools/Utils/src/TFileDirectory.cc b/CommonTools/Utils/src/TFileDirectory.cc index aff2f0751f315..a07a2b775b5b4 100644 --- a/CommonTools/Utils/src/TFileDirectory.cc +++ b/CommonTools/Utils/src/TFileDirectory.cc @@ -16,9 +16,9 @@ bool TFileDirectory::cd() const { TDirectory *TFileDirectory::_cd(const string &subdir, bool createNeededDirectories) const { string fpath = fullPath(); - if (subdir.length()) { + if (!subdir.empty()) { // not empty, we need to append it to path - if (fpath.length()) { + if (!fpath.empty()) { // path is also not empty, so add a slash and let's get going. fpath += "/" + subdir; } else { @@ -50,7 +50,7 @@ TDirectory *TFileDirectory::_cd(const string &subdir, bool createNeededDirectori // already exist (since you shoudln't be cd'ing into a directory // before making it and the cd with a subdir is only used to get // histograms that are already made). - if (subdir.length()) { + if (!subdir.empty()) { throw cms::Exception("InvalidDirectory") << "directory " << fpath << " doesn't exist."; } // if we're here, then that means that this is the first time @@ -98,7 +98,7 @@ TObject *TFileDirectory::_getObj(const string &objname, const string &subdir) co TObject *objPtr = getBareDirectory(subdir)->Get(objname.c_str()); if (!objPtr) { // no histogram found by that name. Sorry dude. - if (subdir.length()) { + if (!subdir.empty()) { throw cms::Exception("ObjectNotFound") << "Can not find object named " << objname << " in subdir " << subdir; } else { throw cms::Exception("ObjectNotFound") << "Can not find object named " << objname; diff --git a/CondCore/AlignmentPlugins/plugins/BuildFile.xml b/CondCore/AlignmentPlugins/plugins/BuildFile.xml index d1b7bb9605191..c7c9d36fe91ac 100644 --- a/CondCore/AlignmentPlugins/plugins/BuildFile.xml +++ b/CondCore/AlignmentPlugins/plugins/BuildFile.xml @@ -5,6 +5,7 @@ + diff --git a/CondCore/AlignmentPlugins/plugins/TrackerAlignmentErrorExtended_PayloadInspector.cc b/CondCore/AlignmentPlugins/plugins/TrackerAlignmentErrorExtended_PayloadInspector.cc index 9cd9c8b9d7981..f3d37a3c4772d 100644 --- a/CondCore/AlignmentPlugins/plugins/TrackerAlignmentErrorExtended_PayloadInspector.cc +++ b/CondCore/AlignmentPlugins/plugins/TrackerAlignmentErrorExtended_PayloadInspector.cc @@ -25,6 +25,8 @@ #include "CondCore/AlignmentPlugins/interface/AlignmentPayloadInspectorHelper.h" #include "CalibTracker/StandaloneTrackerTopology/interface/StandaloneTrackerTopology.h" +#include "DQM/TrackerRemapper/interface/Phase1PixelSummaryMap.h" + #include #include #include @@ -319,6 +321,87 @@ namespace { typedef TrackerAlignmentErrorExtendedTrackerMap TrackerAlignmentErrorExtendedXZTrackerMap; typedef TrackerAlignmentErrorExtendedTrackerMap TrackerAlignmentErrorExtendedYZTrackerMap; + // /************************************************ + // TrackerMap of sqrt(d_ii) of 1 IOV + // *************************************************/ + template + class PixelAlignmentErrorExtendedTrackerMap : public PlotImage { + public: + PixelAlignmentErrorExtendedTrackerMap() + : PlotImage("Pixel Map of sqrt(d_{" + getStringFromIndex(i) + + "}) of APE matrix") { + label_ = " PixelAlignmentErrorExtendedTrackerMap"; + payloadString = "Alignment Parameter Error"; + } + + bool fill() override { + auto tag = PlotBase::getTag<0>(); + auto iov = tag.iovs.front(); + std::string IOVsince = std::to_string(std::get<0>(iov)); + + std::shared_ptr payload = fetchPayload(std::get<1>(iov)); + + Phase1PixelSummaryMap fullMap("", fmt::sprintf("%s", payloadString), fmt::sprintf("%s [#mum]", payloadString)); + fullMap.createTrackerBaseMap(); + + std::vector alignErrors = payload->m_alignError; + + auto indices = AlignmentPI::getIndices(i); + + TCanvas canvas("Canv", "Canv", 3000, 2000); + if (alignErrors.size() == AlignmentPI::phase0size) { + AlignmentPI::displayNotSupported(canvas, 0); + return false; + } + + for (const auto& it : alignErrors) { + int subid = DetId(it.rawId()).subdetId(); + + CLHEP::HepSymMatrix errMatrix = it.matrix(); + + if (DetId(it.rawId()).det() != DetId::Tracker) { + edm::LogWarning("TrackerAlignmentErrorExtended_PayloadInspector") + << "Encountered invalid Tracker DetId:" << it.rawId() << " - terminating "; + return false; + } + // fill the tracker map only if it's pixel + if ((subid == PixelSubdetector::PixelBarrel) || (subid == PixelSubdetector::PixelEndcap)) { + fullMap.fillTrackerMap(it.rawId(), sqrt(errMatrix[indices.first][indices.second]) * AlignmentPI::cmToUm); + } + } + + fullMap.printTrackerMap(canvas); + + auto ltx = TLatex(); + ltx.SetTextFont(62); + ltx.SetTextSize(0.025); + ltx.SetTextAlign(11); + + ltx.DrawLatexNDC(gPad->GetLeftMargin() + 0.01, + gPad->GetBottomMargin() + 0.01, + ("#color[4]{" + std::string{tag.name} + "}, IOV: #color[2]{" + IOVsince + "}").c_str()); + + std::string fileName(this->m_imageFileName); + canvas.SaveAs(fileName.c_str()); + + return true; + } + + protected: + std::string payloadString; + std::string label_; + }; + + // diagonal elements + typedef PixelAlignmentErrorExtendedTrackerMap PixelAlignmentErrorExtendedXXTrackerMap; + typedef PixelAlignmentErrorExtendedTrackerMap PixelAlignmentErrorExtendedYYTrackerMap; + typedef PixelAlignmentErrorExtendedTrackerMap PixelAlignmentErrorExtendedZZTrackerMap; + + // off-diagonal elements + typedef PixelAlignmentErrorExtendedTrackerMap PixelAlignmentErrorExtendedXYTrackerMap; + typedef PixelAlignmentErrorExtendedTrackerMap PixelAlignmentErrorExtendedXZTrackerMap; + typedef PixelAlignmentErrorExtendedTrackerMap PixelAlignmentErrorExtendedYZTrackerMap; + // /************************************************ // Partition details of 1 IOV // *************************************************/ @@ -795,6 +878,12 @@ PAYLOAD_INSPECTOR_MODULE(TrackerAlignmentErrorExtended) { PAYLOAD_INSPECTOR_CLASS(TrackerAlignmentErrorExtendedXYTrackerMap); PAYLOAD_INSPECTOR_CLASS(TrackerAlignmentErrorExtendedXZTrackerMap); PAYLOAD_INSPECTOR_CLASS(TrackerAlignmentErrorExtendedYZTrackerMap); + PAYLOAD_INSPECTOR_CLASS(PixelAlignmentErrorExtendedXXTrackerMap); + PAYLOAD_INSPECTOR_CLASS(PixelAlignmentErrorExtendedYYTrackerMap); + PAYLOAD_INSPECTOR_CLASS(PixelAlignmentErrorExtendedZZTrackerMap); + PAYLOAD_INSPECTOR_CLASS(PixelAlignmentErrorExtendedXYTrackerMap); + PAYLOAD_INSPECTOR_CLASS(PixelAlignmentErrorExtendedXZTrackerMap); + PAYLOAD_INSPECTOR_CLASS(PixelAlignmentErrorExtendedYZTrackerMap); PAYLOAD_INSPECTOR_CLASS(TrackerAlignmentErrorExtendedBPixDetail); PAYLOAD_INSPECTOR_CLASS(TrackerAlignmentErrorExtendedFPixDetail); PAYLOAD_INSPECTOR_CLASS(TrackerAlignmentErrorExtendedTIBDetail); diff --git a/CondCore/CondDB/src/Binary.cc b/CondCore/CondDB/src/Binary.cc index 43cb226a345d9..6d21db0c020e1 100644 --- a/CondCore/CondDB/src/Binary.cc +++ b/CondCore/CondDB/src/Binary.cc @@ -5,8 +5,9 @@ // #include -#include #include +#include +#include cond::Binary::Binary() : m_data(new coral::Blob(0)) {} @@ -30,7 +31,7 @@ cond::Binary& cond::Binary::operator=(const Binary& rhs) { const coral::Blob& cond::Binary::get() const { return *m_data; } void cond::Binary::copy(const std::string& source) { - m_data.reset(new coral::Blob(source.size())); + m_data = std::make_shared(source.size()); ::memcpy(m_data->startingAddress(), source.c_str(), source.size()); } diff --git a/CondCore/CondDB/src/CoralMsgReporter.cc b/CondCore/CondDB/src/CoralMsgReporter.cc index 7acc72e746878..d87516bbf095c 100644 --- a/CondCore/CondDB/src/CoralMsgReporter.cc +++ b/CondCore/CondDB/src/CoralMsgReporter.cc @@ -2,6 +2,7 @@ #include #include // fix bug #58581 #include // fix bug #58581 +#include // Local include files #include "CondCore/CondDB/interface/Logger.h" @@ -142,7 +143,7 @@ void cond::persistency::CoralMsgReporter::report(int lvl, const std::string&, co } void cond::persistency::CoralMsgReporter::subscribe(Logger& logger) { - m_dispatcher.reset(new MsgDispatcher(logger)); + m_dispatcher = std::make_shared(logger); std::weak_ptr callBack(m_dispatcher); logger.subscribeCoralMessages(callBack); } diff --git a/CondCore/CondDB/src/PayloadReader.cc b/CondCore/CondDB/src/PayloadReader.cc index 1b042dbb21091..2d96409fee39e 100644 --- a/CondCore/CondDB/src/PayloadReader.cc +++ b/CondCore/CondDB/src/PayloadReader.cc @@ -1,10 +1,12 @@ +#include + #include "CondCore/CondDB/interface/PayloadReader.h" namespace cond { namespace persistency { - PayloadReader::PayloadReader() { m_connection.reset(new ConnectionPool); } + PayloadReader::PayloadReader() { m_connection = std::make_shared(); } PayloadReader::PayloadReader(const PayloadReader& rhs) : m_connection(rhs.m_connection), m_session(rhs.m_session) {} diff --git a/CondCore/CondDB/test/condTestRegression.py b/CondCore/CondDB/test/condTestRegression.py index 5e5f532fd2636..31815a0876cad 100755 --- a/CondCore/CondDB/test/condTestRegression.py +++ b/CondCore/CondDB/test/condTestRegression.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys, os import glob import time diff --git a/CondCore/DBCommon/python/CondDBCommon_cfi.py b/CondCore/DBCommon/python/CondDBCommon_cfi.py index e0f872cc80f19..017ef518c4716 100644 --- a/CondCore/DBCommon/python/CondDBCommon_cfi.py +++ b/CondCore/DBCommon/python/CondDBCommon_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function print(" ##################################################################### ") print(" # WARNING: the module CondCore.DBCommon.CondDBCommon is deprecated. # ") print(" # Please import CondCore.CondDB.CondDB_cfi # ") diff --git a/CondCore/DBCommon/python/CondDBSetup_cfi.py b/CondCore/DBCommon/python/CondDBSetup_cfi.py index fee069b652bc8..35f3824e84898 100644 --- a/CondCore/DBCommon/python/CondDBSetup_cfi.py +++ b/CondCore/DBCommon/python/CondDBSetup_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function print(" ##################################################################### ") print(" # WARNING: the module CondCore.DBCommon.CondDBSetup is deprecated. # ") print(" # Please import CondCore.CondDB.CondDB_cfi # ") diff --git a/CondCore/ESSources/python/GlobalTag.py b/CondCore/ESSources/python/GlobalTag.py index b330212c35d38..afa0ffc331425 100644 --- a/CondCore/ESSources/python/GlobalTag.py +++ b/CondCore/ESSources/python/GlobalTag.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys from Configuration.AlCa.autoCond import aliases diff --git a/CondCore/ESSources/test/python/load_from_globaltag_cfg.py b/CondCore/ESSources/test/python/load_from_globaltag_cfg.py index 32d83b9aa11ca..2f858642b2ffb 100644 --- a/CondCore/ESSources/test/python/load_from_globaltag_cfg.py +++ b/CondCore/ESSources/test/python/load_from_globaltag_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from Configuration.AlCa.autoCond import autoCond diff --git a/CondCore/ESSources/test/python/load_record_empty_source_cfg.py b/CondCore/ESSources/test/python/load_record_empty_source_cfg.py index a8e015d53d8fa..14875fde673e0 100644 --- a/CondCore/ESSources/test/python/load_record_empty_source_cfg.py +++ b/CondCore/ESSources/test/python/load_record_empty_source_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import time import FWCore.ParameterSet.Config as cms diff --git a/CondCore/ESSources/test/python/loadall_from_gt_empty_source_cfg.py b/CondCore/ESSources/test/python/loadall_from_gt_empty_source_cfg.py index f91c6fdcc08bd..f60c4c7bf71c1 100644 --- a/CondCore/ESSources/test/python/loadall_from_gt_empty_source_cfg.py +++ b/CondCore/ESSources/test/python/loadall_from_gt_empty_source_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import time import FWCore.ParameterSet.Config as cms diff --git a/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_cfg.py b/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_cfg.py index 692585fd34f23..d0e2c9abaef06 100644 --- a/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_cfg.py +++ b/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_cfg.py @@ -1,5 +1,4 @@ -from __future__ import print_function import time import FWCore.ParameterSet.Config as cms diff --git a/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_time_cfg.py b/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_time_cfg.py index 6b8d448ae872f..cd3c0569a2f1b 100644 --- a/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_time_cfg.py +++ b/CondCore/ESSources/test/python/loadall_from_one_record_empty_source_time_cfg.py @@ -1,5 +1,4 @@ -from __future__ import print_function import time import FWCore.ParameterSet.Config as cms diff --git a/CondCore/ESSources/test/python/read_beamspot_cfg.py b/CondCore/ESSources/test/python/read_beamspot_cfg.py index f0f5e60c0279d..2eb22d1f16832 100644 --- a/CondCore/ESSources/test/python/read_beamspot_cfg.py +++ b/CondCore/ESSources/test/python/read_beamspot_cfg.py @@ -1,5 +1,4 @@ -from __future__ import print_function import time import FWCore.ParameterSet.Config as cms diff --git a/CondCore/ESSources/test/python/write_beamspot_cfg.py b/CondCore/ESSources/test/python/write_beamspot_cfg.py index 510f8c84adced..d7440d461eb7e 100644 --- a/CondCore/ESSources/test/python/write_beamspot_cfg.py +++ b/CondCore/ESSources/test/python/write_beamspot_cfg.py @@ -1,5 +1,4 @@ -from __future__ import print_function import time import FWCore.ParameterSet.Config as cms diff --git a/CondCore/EcalPlugins/test/inspect.py b/CondCore/EcalPlugins/test/inspect.py index 65aa1339949e6..f770e2c197fc5 100644 --- a/CondCore/EcalPlugins/test/inspect.py +++ b/CondCore/EcalPlugins/test/inspect.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # I should write a decent test of the python binding... # diff --git a/CondCore/HLTPlugins/plugins/AlCaRecoTriggerBits_PayloadInspector.cc b/CondCore/HLTPlugins/plugins/AlCaRecoTriggerBits_PayloadInspector.cc index d4206508702ae..e3273d7ac25d5 100644 --- a/CondCore/HLTPlugins/plugins/AlCaRecoTriggerBits_PayloadInspector.cc +++ b/CondCore/HLTPlugins/plugins/AlCaRecoTriggerBits_PayloadInspector.cc @@ -347,7 +347,7 @@ namespace { toAppend += not_in_last[iPath] + ";"; } // if it's the last and not empty, dump it - if (toAppend.length() > 0 && iPath == not_in_last.size() - 1) + if (!toAppend.empty() && iPath == not_in_last.size() - 1) output.push_back(toAppend); } @@ -372,7 +372,7 @@ namespace { toAppend += not_in_first[jPath] + ";"; } // if it's the last and not empty, dump it - if (toAppend.length() > 0 && jPath == not_in_first.size() - 1) + if (!toAppend.empty() && jPath == not_in_first.size() - 1) output.push_back(toAppend); } diff --git a/CondCore/L1TPlugins/plugins/L1TMuonGlobalParams_PayloadInspector.cc b/CondCore/L1TPlugins/plugins/L1TMuonGlobalParams_PayloadInspector.cc index 3e50b65cd9799..26ad0cf444970 100644 --- a/CondCore/L1TPlugins/plugins/L1TMuonGlobalParams_PayloadInspector.cc +++ b/CondCore/L1TPlugins/plugins/L1TMuonGlobalParams_PayloadInspector.cc @@ -72,7 +72,7 @@ namespace { leg.SetLineColor(0); leg.SetFillColor(0); - input1.SetStats(0); + input1.SetStats(false); input1.SetMaximum(5); input1.SetXTitle("InputBits"); input1.SetYTitle("Bit value"); diff --git a/CondCore/PhysicsToolsPlugins/plugins/BuildFile.xml b/CondCore/PhysicsToolsPlugins/plugins/BuildFile.xml index 4890b7e065317..28811a5498b6a 100644 --- a/CondCore/PhysicsToolsPlugins/plugins/BuildFile.xml +++ b/CondCore/PhysicsToolsPlugins/plugins/BuildFile.xml @@ -8,3 +8,8 @@ + + + + + diff --git a/CondCore/PhysicsToolsPlugins/plugins/DeDxCalibration_PayloadInspector.cc b/CondCore/PhysicsToolsPlugins/plugins/DeDxCalibration_PayloadInspector.cc new file mode 100644 index 0000000000000..f7b3f77ad006c --- /dev/null +++ b/CondCore/PhysicsToolsPlugins/plugins/DeDxCalibration_PayloadInspector.cc @@ -0,0 +1,201 @@ +#include "CondCore/CondDB/interface/Time.h" +#include "CondCore/Utilities/interface/PayloadInspector.h" +#include "CondCore/Utilities/interface/PayloadInspectorModule.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +// the data format of the condition to be inspected +#include "CondFormats/PhysicsToolsObjects/interface/DeDxCalibration.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +// include ROOT +#include "TCanvas.h" +#include "TF1.h" +#include "TH1F.h" +#include "TH2F.h" +#include "TLatex.h" +#include "TLegend.h" +#include "TLine.h" +#include "TPad.h" +#include "TPave.h" +#include "TPaveStats.h" +#include "TStyle.h" + +namespace { + + using namespace cond::payloadInspector; + + /************************************************ + DeDxCalibration Payload Inspector of 1 IOV + *************************************************/ + class DeDxCalibrationTest : public Histogram1D { + public: + DeDxCalibrationTest() + : Histogram1D("Test DeDxCalibration", "Test DeDxCalibration", 1, 0.0, 1.0) {} + + bool fill() override { + auto tag = PlotBase::getTag<0>(); + for (auto const& iov : tag.iovs) { + std::shared_ptr payload = Base::fetchPayload(std::get<1>(iov)); + if (payload.get()) { + const auto& thresholds = payload->thr(); + const auto& alphas = payload->alpha(); + const auto& sigmas = payload->sigma(); + + assert(thresholds.size() == alphas.size()); + assert(alphas.size() == sigmas.size()); + + for (unsigned int i = 0; i < thresholds.size(); i++) { + std::cout << "threshold:" << thresholds[i] << " alpha: " << alphas[i] << " sigma: " << sigmas[i] + << std::endl; + } + } + } + return true; + } + }; + + // Inspector to show the values of thresholds, alphas, sigmas, and gains in DeDxCalibration + class DeDxCalibrationInspector : public PlotImage { + public: + DeDxCalibrationInspector() : PlotImage("DeDxCalibration Inspector") {} + + bool fill() override { + gStyle->SetPalette(1); + gStyle->SetOptStat(0); + + auto tag = PlotBase::getTag<0>(); + auto iov = tag.iovs.front(); + + std::shared_ptr payload = fetchPayload(std::get<1>(iov)); + + if (payload.get()) { + const std::vector& thr = payload->thr(); + const std::vector& alpha = payload->alpha(); + const std::vector& sigma = payload->sigma(); + + // Ensure that thr, alpha, sigma have the same size + assert(thr.size() == alpha.size()); + assert(alpha.size() == sigma.size()); + + // Create a 2D histogram + int nBinsX = 3; // For thr, alpha, sigma, gain + int nBinsY = thr.size(); // Number of elements in the vectors + + TH2D h2("h2", "DeDxCalibration Values;Variable Type;Value", nBinsX, 0, nBinsX, nBinsY, 0, nBinsY); + + // Label the x-axis with the variable names + h2.GetXaxis()->SetBinLabel(1, "Threshold"); + h2.GetXaxis()->SetBinLabel(2, "#alpha"); + h2.GetXaxis()->SetBinLabel(3, "#sigma"); + + // Fill the histogram + for (size_t i = 0; i < thr.size(); ++i) { + h2.Fill(0.5, i, thr[i]); + h2.Fill(1.5, i, alpha[i]); + h2.Fill(2.5, i, sigma[i]); + } + + // Draw the histogram on a canvas + TCanvas canvas("Canvas", "DeDxCalibration Values", 1200, 800); + canvas.cd(); + h2.Draw("COLZ TEXT"); + + std::string fileName(m_imageFileName); + canvas.SaveAs(fileName.c_str()); + + return true; + } else { + return false; + } + } + }; + + class DeDxCalibrationPlot : public cond::payloadInspector::PlotImage { + public: + DeDxCalibrationPlot() + : cond::payloadInspector::PlotImage( + "DeDxCalibration Thresholds, Alphas, Sigmas, and Gains") {} + + bool fill() override { + gStyle->SetPalette(1); + gStyle->SetOptStat(0); + + auto tag = PlotBase::getTag<0>(); + auto iov = tag.iovs.front(); + + std::shared_ptr payload = fetchPayload(std::get<1>(iov)); + + if (!payload) { + return false; + } + + // Prepare canvas + TCanvas canvas("DeDxCalibration", "DeDxCalibration", 1200, 800); + canvas.Divide(2, 2); + + // Extract data + const auto& thresholds = payload->thr(); + const auto& alphas = payload->alpha(); + const auto& sigmas = payload->sigma(); + const auto& gains = payload->gain(); + + // 1. Plot thresholds + canvas.cd(1); + auto h_thr = new TH1F("Thresholds", "Thresholds;Index;Value", thresholds.size(), 0, thresholds.size()); + for (size_t i = 0; i < thresholds.size(); ++i) { + h_thr->SetBinContent(i + 1, thresholds[i]); + } + h_thr->SetFillColor(kBlue); + h_thr->Draw(); + + // 2. Plot alphas + canvas.cd(2); + auto h_alpha = new TH1F("Alphas", "Alphas;Index;Value", alphas.size(), 0, alphas.size()); + for (size_t i = 0; i < alphas.size(); ++i) { + h_alpha->SetBinContent(i + 1, alphas[i]); + } + h_alpha->SetFillColor(kGreen); + h_alpha->Draw(); + + // 3. Plot sigmas + canvas.cd(3); + auto h_sigma = new TH1F("Sigmas", "Sigmas;Index;Value", sigmas.size(), 0, sigmas.size()); + for (size_t i = 0; i < sigmas.size(); ++i) { + h_sigma->SetBinContent(i + 1, sigmas[i]); + } + h_sigma->SetFillColor(kRed); + h_sigma->Draw(); + + // 4. Plot aggregated gain values + canvas.cd(4); + const int numBins = 100; // Set number of bins for aggregated gain + auto h_gain = new TH1F("Gains", "Aggregated Gains;Gain Range;Count", numBins, 0, 1.0); // Adjust range if needed + for (const auto& [chip, gain] : gains) { + h_gain->Fill(gain); + } + h_gain->SetFillColor(kYellow); + h_gain->Draw(); + + // Save the canvas to a file + std::string fileName(m_imageFileName); + canvas.SaveAs(fileName.c_str()); + + return true; + } + }; +} // namespace + +// Register the classes as boost python plugin +PAYLOAD_INSPECTOR_MODULE(DeDxCalibration) { + PAYLOAD_INSPECTOR_CLASS(DeDxCalibrationTest); + PAYLOAD_INSPECTOR_CLASS(DeDxCalibrationInspector); + PAYLOAD_INSPECTOR_CLASS(DeDxCalibrationPlot); +} diff --git a/CondCore/PhysicsToolsPlugins/test/BuildFile.xml b/CondCore/PhysicsToolsPlugins/test/BuildFile.xml index c7ce5c2850696..6ff3c67898d1d 100644 --- a/CondCore/PhysicsToolsPlugins/test/BuildFile.xml +++ b/CondCore/PhysicsToolsPlugins/test/BuildFile.xml @@ -4,3 +4,6 @@ + + + diff --git a/CondCore/PhysicsToolsPlugins/test/test_DeDxCalibration_PayloadInspector.cpp b/CondCore/PhysicsToolsPlugins/test/test_DeDxCalibration_PayloadInspector.cpp new file mode 100644 index 0000000000000..7fb1ef024fc84 --- /dev/null +++ b/CondCore/PhysicsToolsPlugins/test/test_DeDxCalibration_PayloadInspector.cpp @@ -0,0 +1,42 @@ +#include +#include +#include "CondCore/Utilities/interface/PayloadInspector.h" +#include "CondCore/PhysicsToolsPlugins/plugins/DeDxCalibration_PayloadInspector.cc" + +#include "FWCore/PluginManager/interface/PluginManager.h" +#include "FWCore/PluginManager/interface/standard.h" +#include "FWCore/ServiceRegistry/interface/ServiceRegistry.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +int main(int argc, char** argv) { + Py_Initialize(); + edmplugin::PluginManager::Config config; + edmplugin::PluginManager::configure(edmplugin::standard::config()); + + std::vector psets; + edm::ParameterSet pSet; + pSet.addParameter("@service_type", std::string("SiteLocalConfigService")); + psets.push_back(pSet); + edm::ServiceToken servToken(edm::ServiceRegistry::createSet(psets)); + edm::ServiceRegistry::Operate operate(servToken); + + std::string connectionString("frontier://FrontierProd/CMS_CONDITIONS"); + + std::string tag = "DeDxCalibration_HI_2024_v2"; + cond::Time_t start = static_cast(1); + cond::Time_t end = static_cast(1); + + edm::LogPrint("test_DeDxCalibration_PayloadInspector") << "## test Inspector" << std::endl; + + DeDxCalibrationInspector histo1; + histo1.process(connectionString, PI::mk_input(tag, start, start)); + edm::LogPrint("test_DeDxCalibration_PayloadInspector") << histo1.data() << std::endl; + + edm::LogPrint("test_DeDxCalibration_PayloadInspector") << "## test Plot" << std::endl; + + DeDxCalibrationPlot histo2; + histo2.process(connectionString, PI::mk_input(tag, start, end)); + edm::LogPrint("test_DeDxCalibration_PayloadInspector") << histo2.data() << std::endl; + + Py_Finalize(); +} diff --git a/CondCore/PhysicsToolsPlugins/test/test_DeDxCalibration_PayloadInspector.sh b/CondCore/PhysicsToolsPlugins/test/test_DeDxCalibration_PayloadInspector.sh new file mode 100755 index 0000000000000..a9ea8208c6083 --- /dev/null +++ b/CondCore/PhysicsToolsPlugins/test/test_DeDxCalibration_PayloadInspector.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Save current working dir so img can be outputted there later +W_DIR=$(pwd); +# Set SCRAM architecture var +SCRAM_ARCH=slc7_amd64_gcc900; +export SCRAM_ARCH; +source /afs/cern.ch/cms/cmsset_default.sh; +eval `scram run -sh`; + +mkdir -p $W_DIR/plots + +getPayloadData.py \ + --plugin pluginDeDxCalibration_PayloadInspector \ + --plot plot_DeDxCalibrationTest \ + --tag DeDxCalibration_HI_2024_v1 \ + --time_type Run \ + --iovs '{"start_iov": "1", "end_iov": "1"}' \ + --db Prod \ + --test + +getPayloadData.py \ + --plugin pluginDeDxCalibration_PayloadInspector \ + --plot plot_DeDxCalibrationInspector \ + --tag DeDxCalibration_HI_2024_v2 \ + --time_type Run \ + --iovs '{"start_iov": "1", "end_iov": "1"}' \ + --db Prod \ + --test + +mv *.png $W_DIR/plots/Inspector.png + +getPayloadData.py \ + --plugin pluginDeDxCalibration_PayloadInspector \ + --plot plot_DeDxCalibrationPlot \ + --tag DeDxCalibration_HI_2024_v2 \ + --time_type Run \ + --iovs '{"start_iov": "1", "end_iov": "1"}' \ + --db Prod \ + --test + +mv *.png $W_DIR/plots/Plot.png diff --git a/CondCore/PopCon/test/fetchCronLogTail.py b/CondCore/PopCon/test/fetchCronLogTail.py index 54e51e6450328..b20911450c355 100644 --- a/CondCore/PopCon/test/fetchCronLogTail.py +++ b/CondCore/PopCon/test/fetchCronLogTail.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os, sys, re import string import math diff --git a/CondCore/PopCon/test/run_popcon2dropbox_DT.py b/CondCore/PopCon/test/run_popcon2dropbox_DT.py index e65ec743f0ad8..7f1c628898727 100644 --- a/CondCore/PopCon/test/run_popcon2dropbox_DT.py +++ b/CondCore/PopCon/test/run_popcon2dropbox_DT.py @@ -1,7 +1,6 @@ #!/usr/bin/env python '''Script that directs the popcon output to the dropbox ''' -from __future__ import print_function __author__ = 'Giacomo Govi' diff --git a/CondCore/PopCon/test/run_popcon2dropbox_RunInfo.py b/CondCore/PopCon/test/run_popcon2dropbox_RunInfo.py index 24696db678b4d..daed736ccce82 100644 --- a/CondCore/PopCon/test/run_popcon2dropbox_RunInfo.py +++ b/CondCore/PopCon/test/run_popcon2dropbox_RunInfo.py @@ -1,7 +1,6 @@ #!/usr/bin/env python '''Script that directs the popcon output to the dropbox ''' -from __future__ import print_function __author__ = 'Giacomo Govi' diff --git a/CondCore/RPCPlugins/test/inspectRPCObImon.py b/CondCore/RPCPlugins/test/inspectRPCObImon.py index 6f38a6c97fdc2..7577a36ce4e3d 100755 --- a/CondCore/RPCPlugins/test/inspectRPCObImon.py +++ b/CondCore/RPCPlugins/test/inspectRPCObImon.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os,sys, DLFCN, time, datetime import matplotlib import numpy diff --git a/CondCore/RunInfoPlugins/test/inspect.py b/CondCore/RunInfoPlugins/test/inspect.py index eae920bd16ade..e57da4bcf5928 100644 --- a/CondCore/RunInfoPlugins/test/inspect.py +++ b/CondCore/RunInfoPlugins/test/inspect.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/inspectL1Scaler.py b/CondCore/RunInfoPlugins/test/inspectL1Scaler.py index c489c04be0158..4c11953973f88 100644 --- a/CondCore/RunInfoPlugins/test/inspectL1Scaler.py +++ b/CondCore/RunInfoPlugins/test/inspectL1Scaler.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/inspectRunInfo.py b/CondCore/RunInfoPlugins/test/inspectRunInfo.py index 985298812e295..fbf83b8114cd4 100644 --- a/CondCore/RunInfoPlugins/test/inspectRunInfo.py +++ b/CondCore/RunInfoPlugins/test/inspectRunInfo.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/inspectRunInfo_219.py b/CondCore/RunInfoPlugins/test/inspectRunInfo_219.py index efcca18775aa5..8d2068a26186f 100644 --- a/CondCore/RunInfoPlugins/test/inspectRunInfo_219.py +++ b/CondCore/RunInfoPlugins/test/inspectRunInfo_219.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/inspectRunInfo_3XX.py b/CondCore/RunInfoPlugins/test/inspectRunInfo_3XX.py index d2379f44e6b91..eaf3ff6937c8c 100644 --- a/CondCore/RunInfoPlugins/test/inspectRunInfo_3XX.py +++ b/CondCore/RunInfoPlugins/test/inspectRunInfo_3XX.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/inspectRunSummary.py b/CondCore/RunInfoPlugins/test/inspectRunSummary.py index 4a4aeaf878a1a..65d623c908b98 100644 --- a/CondCore/RunInfoPlugins/test/inspectRunSummary.py +++ b/CondCore/RunInfoPlugins/test/inspectRunSummary.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/inspectRunSummary_219.py b/CondCore/RunInfoPlugins/test/inspectRunSummary_219.py index 4ffe7aaff0d57..bf066589762cf 100644 --- a/CondCore/RunInfoPlugins/test/inspectRunSummary_219.py +++ b/CondCore/RunInfoPlugins/test/inspectRunSummary_219.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, DLFCN sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondCore/RunInfoPlugins/test/plot2JsonTimeSeries.py b/CondCore/RunInfoPlugins/test/plot2JsonTimeSeries.py index 3323b9723a923..3b1c23f52cb06 100755 --- a/CondCore/RunInfoPlugins/test/plot2JsonTimeSeries.py +++ b/CondCore/RunInfoPlugins/test/plot2JsonTimeSeries.py @@ -4,7 +4,6 @@ ## ################################################ -from __future__ import print_function import json import ROOT from array import array diff --git a/CondCore/SiStripPlugins/plugins/SiStripApvGain_PayloadInspector.cc b/CondCore/SiStripPlugins/plugins/SiStripApvGain_PayloadInspector.cc index bbca836291442..980944be212af 100644 --- a/CondCore/SiStripPlugins/plugins/SiStripApvGain_PayloadInspector.cc +++ b/CondCore/SiStripPlugins/plugins/SiStripApvGain_PayloadInspector.cc @@ -682,8 +682,10 @@ namespace { sumOfGains += payload->getApvGain(it, range); } // loop over APVs // fill the tracker map taking the average gain on a single DetId - store[d] = (sumOfGains / nAPVsPerModule); - tmap->fill(d, (sumOfGains / nAPVsPerModule)); + if (nAPVsPerModule != 0.) { + store[d] = (sumOfGains / nAPVsPerModule); + tmap->fill(d, (sumOfGains / nAPVsPerModule)); + } } // loop over detIds //========================= @@ -1583,9 +1585,9 @@ namespace { temp->SetMarkerSize(1.3); if (part == "TEC") - scatters[part]->Draw("P"); + scatters[part]->Draw("SCAT"); else - scatters[part]->Draw("Psame"); + scatters[part]->Draw("SCATsame"); legend2.AddEntry(temp, part.c_str(), "P"); } @@ -1896,16 +1898,14 @@ namespace { TPad pad1("pad1", "pad1", 0, 0.3, 1, 1.0); pad1.SetBottomMargin(0.02); // Upper and lower plot are joined - pad1.SetTopMargin(0.07); + pad1.SetTopMargin(0.1); pad1.SetRightMargin(0.05); pad1.SetLeftMargin(0.15); pad1.Draw(); // Draw the upper pad: pad1 pad1.cd(); // pad1 becomes the current pad - auto h_firstGains = - std::make_shared("hFirstGains", "SiStrip APV gains values; APV Gains;n. APVs", 200, 0.2, 1.8); - auto h_lastGains = - std::make_shared("hLastGains", "SiStrip APV gains values; APV Gains;n. APVs", 200, 0.2, 1.8); + auto h_firstGains = std::make_shared("hFirstGains", ";SiStrip APV Gains;n. APVs", 200, 0.2, 1.8); + auto h_lastGains = std::make_shared("hLastGains", ";SiStrip APV Gains;n. APVs", 200, 0.2, 1.8); for (const auto& item : firstmap) { h_firstGains->Fill(item.second); @@ -1929,8 +1929,8 @@ namespace { h_firstGains->SetMarkerSize(1.); h_lastGains->SetMarkerSize(1.); - h_firstGains->SetLineWidth(1); - h_lastGains->SetLineWidth(1); + h_firstGains->SetLineWidth(2); + h_lastGains->SetLineWidth(2); h_firstGains->SetMarkerStyle(20); h_lastGains->SetMarkerStyle(21); @@ -1938,15 +1938,35 @@ namespace { h_firstGains->GetXaxis()->SetLabelOffset(2.); h_lastGains->GetXaxis()->SetLabelOffset(2.); + float max = (h_firstGains->GetMaximum() > h_lastGains->GetMaximum()) ? h_firstGains->GetMaximum() + : h_lastGains->GetMaximum(); + + h_firstGains->GetYaxis()->SetRangeUser(0., std::max(0., max * 1.20)); + h_firstGains->Draw("HIST"); h_lastGains->Draw("HISTsame"); - TLegend legend = TLegend(0.70, 0.7, 0.95, 0.9); - legend.SetHeader("Gain Comparison", "C"); // option "C" allows to center the header - legend.AddEntry(h_firstGains.get(), ("IOV: " + std::to_string(std::get<0>(firstiov))).c_str(), "PL"); - legend.AddEntry(h_lastGains.get(), ("IOV: " + std::to_string(std::get<0>(lastiov))).c_str(), "PL"); + TLegend legend = TLegend(0.30, 0.78, 0.95, 0.9); + legend.SetHeader("#font[22]{SiStrip APV Gains Comparison}", "C"); // option "C" allows to center the header + legend.AddEntry(h_firstGains.get(), ("payload: #color[2]{" + std::get<1>(firstiov) + "}").c_str(), "F"); + legend.AddEntry(h_lastGains.get(), ("payload: #color[4]{" + std::get<1>(lastiov) + "}").c_str(), "F"); + legend.SetTextSize(0.025); legend.Draw("same"); + auto ltx = TLatex(); + ltx.SetTextFont(62); + ltx.SetTextSize(0.037); + ltx.SetTextAlign(11); + std::string ltxText; + if (this->m_plotAnnotations.ntags == 2) { + ltxText = fmt::sprintf( + "#splitline{#color[2]{%s, %s} vs}{#color[4]{%s, %s}}", tagname1, firstIOVsince, tagname2, lastIOVsince); + } else { + ltxText = fmt::sprintf( + "#splitline{%s}{IOV: #color[2]{%s} vs IOV: #color[4]{%s}}", tagname1, firstIOVsince, lastIOVsince); + } + ltx.DrawLatexNDC(gPad->GetLeftMargin(), 1 - gPad->GetTopMargin() + 0.04, ltxText.c_str()); + // lower plot will be in pad canvas.cd(); // Go back to the main canvas before defining pad2 TPad pad2("pad2", "pad2", 0, 0.005, 1, 0.3); diff --git a/CondCore/SiStripPlugins/test/findPeakRuns.py b/CondCore/SiStripPlugins/test/findPeakRuns.py index 2a5f1a032130b..2a9a507032331 100644 --- a/CondCore/SiStripPlugins/test/findPeakRuns.py +++ b/CondCore/SiStripPlugins/test/findPeakRuns.py @@ -18,7 +18,6 @@ python findPeakRuns.py -f log.json -r isTrackerIn.json > & allTrackerRuns.csv & ''' -from __future__ import print_function import json import ROOT from pprint import pprint diff --git a/CondCore/SiStripPlugins/test/plotJson.py b/CondCore/SiStripPlugins/test/plotJson.py index cd4cf6815d7f5..f29411f9cd48d 100644 --- a/CondCore/SiStripPlugins/test/plotJson.py +++ b/CondCore/SiStripPlugins/test/plotJson.py @@ -1,4 +1,3 @@ -from __future__ import print_function import json import ROOT from pprint import pprint diff --git a/CondCore/Utilities/bin/conddb_test_gt_load.cpp b/CondCore/Utilities/bin/conddb_test_gt_load.cpp index 1696695b9902c..9a9df3fe1c2b5 100644 --- a/CondCore/Utilities/bin/conddb_test_gt_load.cpp +++ b/CondCore/Utilities/bin/conddb_test_gt_load.cpp @@ -6,6 +6,7 @@ #include #include +#include // ================================================================================ @@ -156,7 +157,7 @@ namespace cond { } // namespace cond cond::UntypedPayloadProxy::UntypedPayloadProxy(Session& session) : m_session(session) { - m_data.reset(new pimpl); + m_data = std::make_shared(); m_data->current.clear(); } diff --git a/CondCore/Utilities/bin/conddb_test_gt_perf.cpp b/CondCore/Utilities/bin/conddb_test_gt_perf.cpp index 46448140c61b3..9342d082115a2 100644 --- a/CondCore/Utilities/bin/conddb_test_gt_perf.cpp +++ b/CondCore/Utilities/bin/conddb_test_gt_perf.cpp @@ -115,7 +115,7 @@ cond::Session cond::ConnectionPoolWrapper::createSession(const std::string& conn } cond::UntypedPayloadProxy::UntypedPayloadProxy() : m_session(), m_iov(), m_data(), m_buffer() { - m_data.reset(new pimpl); + m_data = std::make_shared(); m_data->current.clear(); } diff --git a/CondCore/Utilities/python/CondDBFW/tests/__main__.py b/CondCore/Utilities/python/CondDBFW/tests/__main__.py index 1dccf59333786..6a8e68d58644f 100644 --- a/CondCore/Utilities/python/CondDBFW/tests/__main__.py +++ b/CondCore/Utilities/python/CondDBFW/tests/__main__.py @@ -3,7 +3,6 @@ Unit tests for python conddblib framework. """ -from __future__ import absolute_import import unittest import sys diff --git a/CondCore/Utilities/python/CondDBFW/tests/data_formats_tests.py b/CondCore/Utilities/python/CondDBFW/tests/data_formats_tests.py index 8c975d56c9f87..e2c7ad11de073 100644 --- a/CondCore/Utilities/python/CondDBFW/tests/data_formats_tests.py +++ b/CondCore/Utilities/python/CondDBFW/tests/data_formats_tests.py @@ -1,4 +1,3 @@ -from __future__ import print_function import unittest import sys import datetime diff --git a/CondCore/Utilities/python/CondDBFW/tests/querying_tests.py b/CondCore/Utilities/python/CondDBFW/tests/querying_tests.py index 0ae64fbf36187..08ccf9dab6855 100644 --- a/CondCore/Utilities/python/CondDBFW/tests/querying_tests.py +++ b/CondCore/Utilities/python/CondDBFW/tests/querying_tests.py @@ -1,4 +1,3 @@ -from __future__ import print_function import unittest import sys import datetime diff --git a/CondCore/Utilities/python/cond2xml.py b/CondCore/Utilities/python/cond2xml.py index 91f3bd79042f9..bf6405faef39a 100644 --- a/CondCore/Utilities/python/cond2xml.py +++ b/CondCore/Utilities/python/cond2xml.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import shutil diff --git a/CondCore/Utilities/python/conddb_migrate.py b/CondCore/Utilities/python/conddb_migrate.py index badb7da179692..591de38f66305 100755 --- a/CondCore/Utilities/python/conddb_migrate.py +++ b/CondCore/Utilities/python/conddb_migrate.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 '''CMS Conditions DB migration script. ''' -from __future__ import print_function import os diff --git a/CondCore/Utilities/python/o2olib.py b/CondCore/Utilities/python/o2olib.py index ea873305c9028..7a92d45b35189 100644 --- a/CondCore/Utilities/python/o2olib.py +++ b/CondCore/Utilities/python/o2olib.py @@ -1,4 +1,3 @@ -from __future__ import print_function __author__ = 'Giacomo Govi' import sqlalchemy diff --git a/CondCore/Utilities/python/popcon2dropbox.py b/CondCore/Utilities/python/popcon2dropbox.py index fac71834088db..16d30794ccbdd 100644 --- a/CondCore/Utilities/python/popcon2dropbox.py +++ b/CondCore/Utilities/python/popcon2dropbox.py @@ -1,4 +1,3 @@ -from __future__ import print_function import subprocess import json import netrc diff --git a/CondCore/Utilities/python/popcon2dropbox_job_conf.py b/CondCore/Utilities/python/popcon2dropbox_job_conf.py index 1e983212134cd..f4e4e67d9fa6d 100644 --- a/CondCore/Utilities/python/popcon2dropbox_job_conf.py +++ b/CondCore/Utilities/python/popcon2dropbox_job_conf.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing from . import popcon2dropbox diff --git a/CondCore/Utilities/python/tier0.py b/CondCore/Utilities/python/tier0.py index b8eb3d6c349ac..4c00b2330e67b 100644 --- a/CondCore/Utilities/python/tier0.py +++ b/CondCore/Utilities/python/tier0.py @@ -1,4 +1,3 @@ -from __future__ import print_function #-toDo: move this to common? diff --git a/CondCore/Utilities/scripts/conddb b/CondCore/Utilities/scripts/conddb index 30abef9257088..701eb3c939dfb 100755 --- a/CondCore/Utilities/scripts/conddb +++ b/CondCore/Utilities/scripts/conddb @@ -1,7 +1,6 @@ #!/usr/bin/env python3 '''CMS Conditions DB command-line tool. ''' -from __future__ import print_function import argparse import datetime diff --git a/CondCore/Utilities/scripts/conddbCopyTest.py b/CondCore/Utilities/scripts/conddbCopyTest.py index de74647a4741d..599ca894f608c 100644 --- a/CondCore/Utilities/scripts/conddbCopyTest.py +++ b/CondCore/Utilities/scripts/conddbCopyTest.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sqlite3 import subprocess import json diff --git a/CondCore/Utilities/scripts/conddb_version_mgr.py b/CondCore/Utilities/scripts/conddb_version_mgr.py index 475a6149e4926..bbc96dd54abb2 100755 --- a/CondCore/Utilities/scripts/conddb_version_mgr.py +++ b/CondCore/Utilities/scripts/conddb_version_mgr.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import cx_Oracle import datetime import calendar diff --git a/CondCore/Utilities/scripts/conditionUploadTest.py b/CondCore/Utilities/scripts/conditionUploadTest.py index 493f865133d45..615c516d0bb44 100644 --- a/CondCore/Utilities/scripts/conditionUploadTest.py +++ b/CondCore/Utilities/scripts/conditionUploadTest.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import cx_Oracle import subprocess import json diff --git a/CondCore/Utilities/scripts/getPayloadData.py b/CondCore/Utilities/scripts/getPayloadData.py index a052e69123f80..20aab2d1042b5 100755 --- a/CondCore/Utilities/scripts/getPayloadData.py +++ b/CondCore/Utilities/scripts/getPayloadData.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 -from __future__ import print_function import shutil import glob import json diff --git a/CondCore/Utilities/scripts/popconRun b/CondCore/Utilities/scripts/popconRun index 66c5edc744dc1..9a0ece0bd99a1 100755 --- a/CondCore/Utilities/scripts/popconRun +++ b/CondCore/Utilities/scripts/popconRun @@ -1,7 +1,6 @@ #!/usr/bin/env python3 '''Script that directs the popcon output to the condition uploader ''' -from __future__ import print_function import os import sys from CondCore.Utilities import popcon2dropbox diff --git a/CondCore/Utilities/scripts/uploadConditions.py b/CondCore/Utilities/scripts/uploadConditions.py index 7a01863e00d6f..55f6e64978d50 100755 --- a/CondCore/Utilities/scripts/uploadConditions.py +++ b/CondCore/Utilities/scripts/uploadConditions.py @@ -2,7 +2,6 @@ '''Script that uploads to the new CMS conditions uploader. Adapted to the new infrastructure from v6 of the upload.py script for the DropBox from Miguel Ojeda. ''' -from __future__ import print_function __author__ = 'Andreas Pfeiffer' __copyright__ = 'Copyright 2015, CERN CMS' diff --git a/CondCore/Utilities/src/Utilities.cc b/CondCore/Utilities/src/Utilities.cc index c81517a00358a..62f2cdefcb1d6 100644 --- a/CondCore/Utilities/src/Utilities.cc +++ b/CondCore/Utilities/src/Utilities.cc @@ -42,7 +42,7 @@ namespace cond { while ((ch = getch()) != RETURN) { if (ch == BACKSPACE) { - if (password.length() != 0) { + if (!password.empty()) { if (show_asterisk) std::cout << "\b \b"; password.resize(password.length() - 1); diff --git a/CondCore/Utilities/test/CondDBFW/testing_classes.py b/CondCore/Utilities/test/CondDBFW/testing_classes.py index 138fab20d0d7e..1c431b03d7991 100644 --- a/CondCore/Utilities/test/CondDBFW/testing_classes.py +++ b/CondCore/Utilities/test/CondDBFW/testing_classes.py @@ -8,7 +8,6 @@ TODO: Change code so that all connections are used when testing queries - if this isn't too bad a thing to do with the DBs. """ -from __future__ import print_function import unittest import sys diff --git a/CondCore/Utilities/test/iovInspector_test.py b/CondCore/Utilities/test/iovInspector_test.py index 009ea9bc2c42e..b2846fc0af033 100644 --- a/CondCore/Utilities/test/iovInspector_test.py +++ b/CondCore/Utilities/test/iovInspector_test.py @@ -1,4 +1,3 @@ -from __future__ import print_function # test of iovInpector import os,os.path,string diff --git a/CondCore/Utilities/test/listTags.py b/CondCore/Utilities/test/listTags.py index 7017b67206177..310ecfaa6c340 100644 --- a/CondCore/Utilities/test/listTags.py +++ b/CondCore/Utilities/test/listTags.py @@ -1,4 +1,3 @@ -from __future__ import print_function import DLFCN, sys, os, time sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondFormats/Common/data/SiPixelAliHGRcd_prod.json b/CondFormats/Common/data/SiPixelAliHGRcd_prod.json index 2a5edc42cc561..c5472bde8999e 100644 --- a/CondFormats/Common/data/SiPixelAliHGRcd_prod.json +++ b/CondFormats/Common/data/SiPixelAliHGRcd_prod.json @@ -1,8 +1,8 @@ { "destinationDatabase": "oracle://cms_orcon_prod/CMS_CONDITIONS", "destinationTags": { - "SiPixelAli_PCL_v0_hlt": {}, - "TrackerAlignment_PCL_byRun_v2_express": {} + "SiPixelAliHG_PCL_v0_hlt": {}, + "TrackerAlignmentHG_PCL_byRun_v2_express": {} }, "inputTag": "SiPixelAliHG_pcl", "since": null, diff --git a/CondFormats/Common/data/SiPixelAliHLTHGCombRcd_prep.json b/CondFormats/Common/data/SiPixelAliHLTHGCombRcd_prep.json new file mode 100644 index 0000000000000..17899b6dd3ae1 --- /dev/null +++ b/CondFormats/Common/data/SiPixelAliHLTHGCombRcd_prep.json @@ -0,0 +1,9 @@ +{ + "destinationDatabase": "oracle://cms_orcoff_prep/CMS_CONDITIONS", + "destinationTags": { + "SiPixelAliHLTHGCombined_PCL_v0_hlt": {} + }, + "inputTag": "SiPixelAliHLTHGCombined_pcl", + "since": null, + "userText": "T0 PCL Upload for SiPixel HG Combined (MiBias + Z->mm) Ali. for High Level Trigger (prep)" +} diff --git a/CondFormats/Common/data/SiPixelAliHLTHGCombRcd_prod.json b/CondFormats/Common/data/SiPixelAliHLTHGCombRcd_prod.json new file mode 100644 index 0000000000000..09067c8931973 --- /dev/null +++ b/CondFormats/Common/data/SiPixelAliHLTHGCombRcd_prod.json @@ -0,0 +1,9 @@ +{ + "destinationDatabase": "oracle://cms_orcon_prod/CMS_CONDITIONS", + "destinationTags": { + "SiPixelAliHLTHGCombined_PCL_v0_hlt": {} + }, + "inputTag": "SiPixelAliHLTHGCombined_pcl", + "since": null, + "userText": "T0 PCL Upload for SiPixel HG Combined (MinBias + Z->mm) Ali. for High Level Trigger (prod)" +} diff --git a/CondFormats/Common/test/DropBoxMetadataReader.py b/CondFormats/Common/test/DropBoxMetadataReader.py index 487ecec1bbd0a..0e4ccaa1341ef 100644 --- a/CondFormats/Common/test/DropBoxMetadataReader.py +++ b/CondFormats/Common/test/DropBoxMetadataReader.py @@ -29,29 +29,29 @@ # toRead lists of record names to be sought inside the DropBoxMetadataRcd payload avaialble to the ProduceDropBoxMetadata; # for instance, if write is True, you're reading back the metadata you've just entered in the payload from the .json files toRead = cms.untracked.vstring( - 'BeamSpotObjectsRcdByRun', - 'BeamSpotObjectsRcdByLumi', - 'BeamSpotObjectsRcdHPByLumi', - 'BeamSpotObjectsRcdHPByRun', - 'SiStripBadStripRcd', - 'SiStripBadStripFromHitEffRcd', - 'SiStripApvGainRcd', - 'TrackerAlignmentRcd', - 'TrackerAlignmentHGRcd', - 'TrackerAlignmentHGCombinedRcd', - 'SiStripApvGainRcdAAG', - 'EcalPedestalsRcd', - "LumiCorrectionsRcd", - "SiPixelQualityFromDbRcd_prompt", - "SiPixelQualityFromDbRcd_stuckTBM", - "SiPixelQualityFromDbRcd_other", - "SiPixelLorentzAngleRcd", - "SiPixelLorentzAngleRcdMCS", - "CTPPSRPAlignmentCorrectionsDataRcd", - "PPSTimingCalibrationRcd_HPTDC", - "PPSTimingCalibrationRcd_SAMPIC", - "SiStripLorentzAngleRcd", - ) # same strings as fType + "BeamSpotObjectsRcdByRun", + "BeamSpotObjectsRcdByLumi", + "BeamSpotObjectsRcdHPByLumi", + "BeamSpotObjectsRcdHPByRun", + "SiStripBadStripRcd", + "SiStripBadStripFromHitEffRcd", + "SiStripApvGainRcd", + "TrackerAlignmentRcd", + "TrackerAlignmentHGRcd", + "TrackerAlignmentHGCombinedRcd", + "TrackerAlignmentHLTHGCombinedRcd", + "SiStripApvGainRcdAAG", + "EcalPedestalsRcd", + "LumiCorrectionsRcd", + "SiPixelQualityFromDbRcd_prompt", + "SiPixelQualityFromDbRcd_stuckTBM", + "SiPixelQualityFromDbRcd_other", + "SiPixelLorentzAngleRcd", + "SiPixelLorentzAngleRcdMCS", + "CTPPSRPAlignmentCorrectionsDataRcd", + "PPSTimingCalibrationRcd_HPTDC", + "PPSTimingCalibrationRcd_SAMPIC", + "SiStripLorentzAngleRcd") # same strings as fType ) process.p = cms.Path(process.myReader) diff --git a/CondFormats/Common/test/ProduceDropBoxMetadata.py b/CondFormats/Common/test/ProduceDropBoxMetadata.py index b55ae1b275136..04c2db0130d44 100644 --- a/CondFormats/Common/test/ProduceDropBoxMetadata.py +++ b/CondFormats/Common/test/ProduceDropBoxMetadata.py @@ -73,6 +73,10 @@ def encodeJsonInString(filename): SiPixelAliHGCombRcd_prod_str = encodeJsonInString("SiPixelAliHGCombRcd_prod.json") SiPixelAliHGCombRcd_prep_str = encodeJsonInString("SiPixelAliHGCombRcd_prep.json") +#SiPixelAliHLTHGComb +SiPixelAliHLTHGCombRcd_prod_str = encodeJsonInString("SiPixelAliHLTHGCombRcd_prod.json") +SiPixelAliHLTHGCombRcd_prep_str = encodeJsonInString("SiPixelAliHLTHGCombRcd_prep.json") + #EcalPedestalsRcd EcalPedestalsRcd_prod_str = encodeJsonInString("EcalPedestal_prod.json") EcalPedestalsRcd_prep_str = encodeJsonInString("EcalPedestal_prep.json") @@ -184,6 +188,12 @@ def encodeJsonInString(filename): prodMetaData = cms.untracked.string(SiPixelAliHGCombRcd_prod_str), prepMetaData = cms.untracked.string(SiPixelAliHGCombRcd_prep_str), ), + cms.PSet(record = cms.untracked.string('TrackerAlignmentHLTHGCombinedRcd'), + Source = cms.untracked.string("AlcaHarvesting"), + FileClass = cms.untracked.string("ALCA"), + prodMetaData = cms.untracked.string(SiPixelAliHLTHGCombRcd_prod_str), + prepMetaData = cms.untracked.string(SiPixelAliHLTHGCombRcd_prep_str), + ), cms.PSet(record = cms.untracked.string('SiStripApvGainRcdAAG'), Source = cms.untracked.string("AlcaHarvesting"), FileClass = cms.untracked.string("ALCA"), diff --git a/CondFormats/Common/test/parse_output.py b/CondFormats/Common/test/parse_output.py index 8c0619e18713d..284326aec1d0f 100644 --- a/CondFormats/Common/test/parse_output.py +++ b/CondFormats/Common/test/parse_output.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import os import json diff --git a/CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h b/CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h new file mode 100644 index 0000000000000..267817addb905 --- /dev/null +++ b/CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h @@ -0,0 +1,27 @@ +#ifndef CondFormats_DataRecord_EcalRecHitConditionsRcd_h +#define CondFormats_DataRecord_EcalRecHitConditionsRcd_h + +#include "FWCore/Framework/interface/DependentRecordImplementation.h" + +#include "CondFormats/DataRecord/interface/EcalADCToGeVConstantRcd.h" +#include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h" +#include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h" +#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRcd.h" +#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRefRcd.h" +#include "CondFormats/DataRecord/interface/EcalLaserAlphasRcd.h" +#include "CondFormats/DataRecord/interface/EcalLinearCorrectionsRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeCalibConstantsRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeOffsetConstantRcd.h" + +class EcalRecHitConditionsRcd + : public edm::eventsetup::DependentRecordImplementation> {}; +#endif diff --git a/CondFormats/DataRecord/src/EcalRecHitConditionsRcd.cc b/CondFormats/DataRecord/src/EcalRecHitConditionsRcd.cc new file mode 100644 index 0000000000000..792dfc0b5d65a --- /dev/null +++ b/CondFormats/DataRecord/src/EcalRecHitConditionsRcd.cc @@ -0,0 +1,4 @@ +#include "CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h" +#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" + +EVENTSETUP_RECORD_REG(EcalRecHitConditionsRcd); diff --git a/CondFormats/EcalObjects/interface/EcalRecHitConditionsHost.h b/CondFormats/EcalObjects/interface/EcalRecHitConditionsHost.h new file mode 100644 index 0000000000000..b8017cf0add38 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalRecHitConditionsHost.h @@ -0,0 +1,11 @@ +#ifndef CondFormats_EcalObjects_interface_EcalRecHitConditionsHost_h +#define CondFormats_EcalObjects_interface_EcalRecHitConditionsHost_h + +#include "CondFormats/EcalObjects/interface/EcalRecHitConditionsSoA.h" +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +using EcalRecHitConditionsHost = PortableHostCollection; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalRecHitConditionsSoA.h b/CondFormats/EcalObjects/interface/EcalRecHitConditionsSoA.h new file mode 100644 index 0000000000000..3cc90e21a9ee3 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalRecHitConditionsSoA.h @@ -0,0 +1,46 @@ +#ifndef CondFormats_EcalObjects_EcalRecHitConditionsSoA_h +#define CondFormats_EcalObjects_EcalRecHitConditionsSoA_h + +#include "DataFormats/SoATemplate/interface/SoACommon.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" +#include "DataFormats/SoATemplate/interface/SoAView.h" +#include "DataFormats/Provenance/interface/Timestamp.h" + +GENERATE_SOA_LAYOUT(EcalRecHitConditionsSoALayout, + SOA_COLUMN(uint32_t, rawid), + // energy intercalibrations + SOA_COLUMN(float, intercalibConstants), + // time intercalibrations + SOA_COLUMN(float, timeCalibConstants), + // channel status + SOA_COLUMN(uint16_t, channelStatus), + // laser APDPN ratios + SOA_COLUMN(float, laserAPDPNRatios_p1), + SOA_COLUMN(float, laserAPDPNRatios_p2), + SOA_COLUMN(float, laserAPDPNRatios_p3), + SOA_COLUMN(edm::TimeValue_t, laserAPDPNRatios_t1), + SOA_COLUMN(edm::TimeValue_t, laserAPDPNRatios_t2), + SOA_COLUMN(edm::TimeValue_t, laserAPDPNRatios_t3), + // laser APDPN reference + SOA_COLUMN(float, laserAPDPNref), + // laser alphas + SOA_COLUMN(float, laserAlpha), + // linear corrections + SOA_COLUMN(float, linearCorrections_p1), + SOA_COLUMN(float, linearCorrections_p2), + SOA_COLUMN(float, linearCorrections_p3), + SOA_COLUMN(edm::TimeValue_t, linearCorrections_t1), + SOA_COLUMN(edm::TimeValue_t, linearCorrections_t2), + SOA_COLUMN(edm::TimeValue_t, linearCorrections_t3), + // ADC to GeV constants + SOA_SCALAR(float, adcToGeVConstantEB), + SOA_SCALAR(float, adcToGeVConstantEE), + // time offsets constants + SOA_SCALAR(float, timeOffsetConstantEB), + SOA_SCALAR(float, timeOffsetConstantEE), + // offset for hashed ID access to EE items of columns + SOA_SCALAR(uint32_t, offsetEE)) + +using EcalRecHitConditionsSoA = EcalRecHitConditionsSoALayout<>; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalRecHitParameters.h b/CondFormats/EcalObjects/interface/EcalRecHitParameters.h new file mode 100644 index 0000000000000..84f233c1b5a32 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalRecHitParameters.h @@ -0,0 +1,17 @@ +#ifndef CondFormats_EcalObjects_EcalRecHitParameters_h +#define CondFormats_EcalObjects_EcalRecHitParameters_h + +#include +#include +#include + +constexpr size_t kNEcalChannelStatusCodes = 16; // The HW supports 16 channel status codes +using RecoFlagBitsArray = + std::array; // associate recoFlagBits to all channel status codes + +struct EcalRecHitParameters { + RecoFlagBitsArray recoFlagBits; + std::bitset channelStatusCodesToBeExcluded; +}; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h b/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h new file mode 100644 index 0000000000000..290cffe351a5a --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h @@ -0,0 +1,9 @@ +#ifndef CondFormats_EcalObjects_interface_EcalRecHitParametersHost_h +#define CondFormats_EcalObjects_interface_EcalRecHitParametersHost_h + +#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h" +#include "DataFormats/Portable/interface/PortableHostObject.h" + +using EcalRecHitParametersHost = PortableHostObject; + +#endif diff --git a/CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h b/CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h new file mode 100644 index 0000000000000..a2904fae25e9f --- /dev/null +++ b/CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h @@ -0,0 +1,17 @@ +#ifndef CondFormats_EcalObjects_interface_alpaka_EcalRecHitConditionsDevice_h +#define CondFormats_EcalObjects_interface_alpaka_EcalRecHitConditionsDevice_h + +#include "CondFormats/EcalObjects/interface/EcalRecHitConditionsHost.h" +#include "CondFormats/EcalObjects/interface/EcalRecHitConditionsSoA.h" +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + using ::EcalRecHitConditionsHost; + using EcalRecHitConditionsDevice = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h b/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h new file mode 100644 index 0000000000000..f63c8ac34b800 --- /dev/null +++ b/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h @@ -0,0 +1,18 @@ +#ifndef CondFormats_EcalObjects_interface_alpaka_EcalRecHitParametersDevice_h +#define CondFormats_EcalObjects_interface_alpaka_EcalRecHitParametersDevice_h + +#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h" +#include "CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h" +#include "DataFormats/Portable/interface/alpaka/PortableObject.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + using ::EcalRecHitParametersHost; + using EcalRecHitParametersDevice = PortableObject; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +ASSERT_DEVICE_MATCHES_HOST_COLLECTION(EcalRecHitParametersDevice, EcalRecHitParametersHost); + +#endif diff --git a/CondFormats/EcalObjects/src/ES_EcalRecHitConditionsHost.cc b/CondFormats/EcalObjects/src/ES_EcalRecHitConditionsHost.cc new file mode 100644 index 0000000000000..59c4ff8ef07d4 --- /dev/null +++ b/CondFormats/EcalObjects/src/ES_EcalRecHitConditionsHost.cc @@ -0,0 +1,4 @@ +#include "CondFormats/EcalObjects/interface/EcalRecHitConditionsHost.h" +#include "FWCore/Utilities/interface/typelookup.h" + +TYPELOOKUP_DATA_REG(EcalRecHitConditionsHost); diff --git a/CondFormats/EcalObjects/src/ES_EcalRecHitParametersHost.cc b/CondFormats/EcalObjects/src/ES_EcalRecHitParametersHost.cc new file mode 100644 index 0000000000000..aa6bfbe86371e --- /dev/null +++ b/CondFormats/EcalObjects/src/ES_EcalRecHitParametersHost.cc @@ -0,0 +1,4 @@ +#include "CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h" +#include "FWCore/Utilities/interface/typelookup.h" + +TYPELOOKUP_DATA_REG(EcalRecHitParametersHost); diff --git a/CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitConditionsDevice.cc b/CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitConditionsDevice.cc new file mode 100644 index 0000000000000..a148ad126a87a --- /dev/null +++ b/CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitConditionsDevice.cc @@ -0,0 +1,4 @@ +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/typelookup.h" + +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h" +TYPELOOKUP_ALPAKA_DATA_REG(EcalRecHitConditionsDevice); diff --git a/CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitParametersDevice.cc b/CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitParametersDevice.cc new file mode 100644 index 0000000000000..ab43d28e35dcf --- /dev/null +++ b/CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitParametersDevice.cc @@ -0,0 +1,4 @@ +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/typelookup.h" + +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" +TYPELOOKUP_ALPAKA_DATA_REG(EcalRecHitParametersDevice); diff --git a/CondFormats/JetMETObjects/interface/JetCorrectionUncertainty.h b/CondFormats/JetMETObjects/interface/JetCorrectionUncertainty.h index 87d4b7bf9bf09..93d743c688b36 100644 --- a/CondFormats/JetMETObjects/interface/JetCorrectionUncertainty.h +++ b/CondFormats/JetMETObjects/interface/JetCorrectionUncertainty.h @@ -1,11 +1,10 @@ #ifndef JetCorrectionUncertainty_h #define JetCorrectionUncertainty_h -#include "CondFormats/Serialization/interface/Serializable.h" - #include #include -class SimpleJetCorrectionUncertainty; +#include "CondFormats/JetMETObjects/interface/SimpleJetCorrectionUncertainty.h" + class JetCorrectorParameters; class JetCorrectionUncertainty { @@ -15,7 +14,8 @@ class JetCorrectionUncertainty { JetCorrectionUncertainty(const JetCorrectorParameters& fParameters); JetCorrectionUncertainty(const JetCorrectionUncertainty&) = delete; JetCorrectionUncertainty& operator=(const JetCorrectionUncertainty&) = delete; - ~JetCorrectionUncertainty(); + JetCorrectionUncertainty& operator=(JetCorrectionUncertainty&&) = default; + ~JetCorrectionUncertainty() = default; void setParameters(const std::string& fDataFile); void setJetEta(float fEta); @@ -50,7 +50,7 @@ class JetCorrectionUncertainty { bool mIsLepPxset; bool mIsLepPyset; bool mIsLepPzset; - SimpleJetCorrectionUncertainty* mUncertainty; + SimpleJetCorrectionUncertainty mUncertainty; }; #endif diff --git a/CondFormats/JetMETObjects/interface/SimpleJetCorrectionUncertainty.h b/CondFormats/JetMETObjects/interface/SimpleJetCorrectionUncertainty.h index c30d9783f95c6..40355911e9f40 100644 --- a/CondFormats/JetMETObjects/interface/SimpleJetCorrectionUncertainty.h +++ b/CondFormats/JetMETObjects/interface/SimpleJetCorrectionUncertainty.h @@ -1,28 +1,26 @@ #ifndef SimpleJetCorrectionUncertainty_h #define SimpleJetCorrectionUncertainty_h -#include "CondFormats/Serialization/interface/Serializable.h" - #include #include -class JetCorrectorParameters; +#include "CondFormats/JetMETObjects/interface/JetCorrectorParameters.h" class SimpleJetCorrectionUncertainty { public: - SimpleJetCorrectionUncertainty(); + SimpleJetCorrectionUncertainty() = default; SimpleJetCorrectionUncertainty(const std::string& fDataFile); SimpleJetCorrectionUncertainty(const JetCorrectorParameters& fParameters); SimpleJetCorrectionUncertainty(const SimpleJetCorrectionUncertainty&) = delete; SimpleJetCorrectionUncertainty& operator=(const SimpleJetCorrectionUncertainty&) = delete; - ~SimpleJetCorrectionUncertainty(); - const JetCorrectorParameters& parameters() const { return *mParameters; } + SimpleJetCorrectionUncertainty& operator=(SimpleJetCorrectionUncertainty&&) = default; + ~SimpleJetCorrectionUncertainty() = default; + const JetCorrectorParameters& parameters() const { return mParameters; } float uncertainty(const std::vector& fX, float fY, bool fDirection) const; private: - int findBin(const std::vector& v, float x) const; float uncertaintyBin(unsigned fBin, float fY, bool fDirection) const; float linearInterpolation(float fZ, const float fX[2], const float fY[2]) const; - JetCorrectorParameters* mParameters; + JetCorrectorParameters mParameters; }; #endif diff --git a/CondFormats/JetMETObjects/src/FactorizedJetCorrectorCalculator.cc b/CondFormats/JetMETObjects/src/FactorizedJetCorrectorCalculator.cc index e610b07cfe9a2..2c1bbf8b8a794 100644 --- a/CondFormats/JetMETObjects/src/FactorizedJetCorrectorCalculator.cc +++ b/CondFormats/JetMETObjects/src/FactorizedJetCorrectorCalculator.cc @@ -118,15 +118,15 @@ void FactorizedJetCorrectorCalculator::initCorrectors(const std::string& fLevels if (mLevels[i] == kL1 || mLevels[i] == kL1JPT || mLevels[i] == kL2 || mLevels[i] == kL3 || mLevels[i] == kL4 || mLevels[i] == kL6 || mLevels[i] == kL1fj) mCorrectors.push_back(new SimpleJetCorrector(Files[i])); - else if (mLevels[i] == kL5 && FlavorOption.length() == 0) + else if (mLevels[i] == kL5 && FlavorOption.empty()) handleError("FactorizedJetCorrectorCalculator", "must specify flavor option when requesting L5Flavor correction!"); - else if (mLevels[i] == kL5 && FlavorOption.length() > 0) + else if (mLevels[i] == kL5 && !FlavorOption.empty()) mCorrectors.push_back(new SimpleJetCorrector(Files[i], FlavorOption)); - else if (mLevels[i] == kL7 && PartonOption.length() == 0) + else if (mLevels[i] == kL7 && PartonOption.empty()) handleError("FactorizedJetCorrectorCalculator", "must specify parton option when requesting L7Parton correction!"); - else if (mLevels[i] == kL7 && PartonOption.length() > 0) + else if (mLevels[i] == kL7 && !PartonOption.empty()) mCorrectors.push_back(new SimpleJetCorrector(Files[i], PartonOption)); else { std::stringstream sserr; diff --git a/CondFormats/JetMETObjects/src/JetCorrectionUncertainty.cc b/CondFormats/JetMETObjects/src/JetCorrectionUncertainty.cc index ba2969903f962..a991a45a3a2ea 100644 --- a/CondFormats/JetMETObjects/src/JetCorrectionUncertainty.cc +++ b/CondFormats/JetMETObjects/src/JetCorrectionUncertainty.cc @@ -27,10 +27,9 @@ JetCorrectionUncertainty::JetCorrectionUncertainty() { mIsLepPyset = false; mIsLepPzset = false; mAddLepToJet = false; - mUncertainty = new SimpleJetCorrectionUncertainty(); } ///////////////////////////////////////////////////////////////////////// -JetCorrectionUncertainty::JetCorrectionUncertainty(const std::string& fDataFile) { +JetCorrectionUncertainty::JetCorrectionUncertainty(const std::string& fDataFile) : mUncertainty{fDataFile} { mJetEta = -9999; mJetPt = -9999; mJetPhi = -9999; @@ -48,10 +47,10 @@ JetCorrectionUncertainty::JetCorrectionUncertainty(const std::string& fDataFile) mIsLepPyset = false; mIsLepPzset = false; mAddLepToJet = false; - mUncertainty = new SimpleJetCorrectionUncertainty(fDataFile); } ///////////////////////////////////////////////////////////////////////// -JetCorrectionUncertainty::JetCorrectionUncertainty(const JetCorrectorParameters& fParameters) { +JetCorrectionUncertainty::JetCorrectionUncertainty(const JetCorrectorParameters& fParameters) + : mUncertainty{fParameters} { mJetEta = -9999; mJetPt = -9999; mJetPhi = -9999; @@ -69,23 +68,18 @@ JetCorrectionUncertainty::JetCorrectionUncertainty(const JetCorrectorParameters& mIsLepPyset = false; mIsLepPzset = false; mAddLepToJet = false; - mUncertainty = new SimpleJetCorrectionUncertainty(fParameters); } ///////////////////////////////////////////////////////////////////////// -JetCorrectionUncertainty::~JetCorrectionUncertainty() { delete mUncertainty; } -///////////////////////////////////////////////////////////////////////// void JetCorrectionUncertainty::setParameters(const std::string& fDataFile) { - //---- delete the mParameters pointer before setting the new address --- - delete mUncertainty; - mUncertainty = new SimpleJetCorrectionUncertainty(fDataFile); + mUncertainty = SimpleJetCorrectionUncertainty(fDataFile); } ///////////////////////////////////////////////////////////////////////// float JetCorrectionUncertainty::getUncertainty(bool fDirection) { float result; std::vector vx, vy; - vx = fillVector(mUncertainty->parameters().definitions().binVar()); - vy = fillVector(mUncertainty->parameters().definitions().parVar()); - result = mUncertainty->uncertainty(vx, vy[0], fDirection); + vx = fillVector(mUncertainty.parameters().definitions().binVar()); + vy = fillVector(mUncertainty.parameters().definitions().parVar()); + result = mUncertainty.uncertainty(vx, vy[0], fDirection); mIsJetEset = false; mIsJetPtset = false; mIsJetPhiset = false; diff --git a/CondFormats/JetMETObjects/src/SimpleJetCorrectionUncertainty.cc b/CondFormats/JetMETObjects/src/SimpleJetCorrectionUncertainty.cc index 8be58693a0a00..3370c9e26959a 100644 --- a/CondFormats/JetMETObjects/src/SimpleJetCorrectionUncertainty.cc +++ b/CondFormats/JetMETObjects/src/SimpleJetCorrectionUncertainty.cc @@ -5,21 +5,14 @@ #include ///////////////////////////////////////////////////////////////////////// -SimpleJetCorrectionUncertainty::SimpleJetCorrectionUncertainty() { mParameters = new JetCorrectorParameters(); } +SimpleJetCorrectionUncertainty::SimpleJetCorrectionUncertainty(const std::string& fDataFile) : mParameters{fDataFile} {} ///////////////////////////////////////////////////////////////////////// -SimpleJetCorrectionUncertainty::SimpleJetCorrectionUncertainty(const std::string& fDataFile) { - mParameters = new JetCorrectorParameters(fDataFile); -} -///////////////////////////////////////////////////////////////////////// -SimpleJetCorrectionUncertainty::SimpleJetCorrectionUncertainty(const JetCorrectorParameters& fParameters) { - mParameters = new JetCorrectorParameters(fParameters); -} -///////////////////////////////////////////////////////////////////////// -SimpleJetCorrectionUncertainty::~SimpleJetCorrectionUncertainty() { delete mParameters; } +SimpleJetCorrectionUncertainty::SimpleJetCorrectionUncertainty(const JetCorrectorParameters& fParameters) + : mParameters{fParameters} {} ///////////////////////////////////////////////////////////////////////// float SimpleJetCorrectionUncertainty::uncertainty(const std::vector& fX, float fY, bool fDirection) const { float result = 1.; - int bin = mParameters->binIndex(fX); + int bin = mParameters.binIndex(fX); if (bin < 0) { edm::LogError("SimpleJetCorrectionUncertainty") << " bin variables out of range"; result = -999.0; @@ -28,31 +21,49 @@ float SimpleJetCorrectionUncertainty::uncertainty(const std::vector& fX, return result; } ///////////////////////////////////////////////////////////////////////// +namespace { + class Span3 { + public: + Span3(std::vector const& iFrom, int offset = 0) : start_{iFrom.data() + offset}, size_{iFrom.size() / 3} {} + float last() const { return fromIndex(size_ - 1); } + float operator[](std::size_t i) const { return fromIndex(i); } + std::size_t size() const { return size_; } + + private: + float fromIndex(std::size_t i) const { return *(start_ + 3 * i); } + float const* start_; + std::size_t size_; + }; + int findBin(const Span3& v, float x) { + int n = v.size() - 1; + if (n <= 0) + return -1; + if (x < v[0] || x >= v[n]) + return -1; + for (int i = 0; i < n; i++) { + if (x >= v[i] && x < v[i + 1]) + return i; + } + return 0; + } +} // namespace float SimpleJetCorrectionUncertainty::uncertaintyBin(unsigned fBin, float fY, bool fDirection) const { - if (fBin >= mParameters->size()) { + if (fBin >= mParameters.size()) { edm::LogError("SimpleJetCorrectionUncertainty") - << " wrong bin: " << fBin << ": only " << mParameters->size() << " are available"; + << " wrong bin: " << fBin << ": only " << mParameters.size() << " are available"; return -999.0; } - const std::vector& p = mParameters->record(fBin).parameters(); - if ((p.size() % 3) != 0) + const std::vector& p = mParameters.record(fBin).parameters(); + if ((p.size() % 3) != 0 or p.empty()) throw cms::Exception("SimpleJetCorrectionUncertainty") << "wrong # of parameters: multiple of 3 expected, " << p.size() << " got"; - std::vector yGrid, value; - unsigned int N = p.size() / 3; + Span3 yGrid{p}; + Span3 value{p, fDirection ? 1 : 2}; float result = -1.0; - for (unsigned i = 0; i < N; i++) { - unsigned ind = 3 * i; - yGrid.push_back(p[ind]); - if (fDirection) // true = UP - value.push_back(p[ind + 1]); - else // false = DOWN - value.push_back(p[ind + 2]); - } if (fY <= yGrid[0]) result = value[0]; - else if (fY >= yGrid[N - 1]) - result = value[N - 1]; + else if (fY >= yGrid.last()) + result = value.last(); else { int bin = findBin(yGrid, fY); float vx[2], vy[2]; @@ -83,17 +94,3 @@ float SimpleJetCorrectionUncertainty::linearInterpolation(float fZ, const float } return r; } -///////////////////////////////////////////////////////////////////////// -int SimpleJetCorrectionUncertainty::findBin(const std::vector& v, float x) const { - int i; - int n = v.size() - 1; - if (n <= 0) - return -1; - if (x < v[0] || x >= v[n]) - return -1; - for (i = 0; i < n; i++) { - if (x >= v[i] && x < v[i + 1]) - return i; - } - return 0; -} diff --git a/CondFormats/L1TObjects/src/L1MuDTEtaPatternLut.cc b/CondFormats/L1TObjects/src/L1MuDTEtaPatternLut.cc index 8c2334765028c..0dbaa540a0411 100644 --- a/CondFormats/L1TObjects/src/L1MuDTEtaPatternLut.cc +++ b/CondFormats/L1TObjects/src/L1MuDTEtaPatternLut.cc @@ -78,7 +78,7 @@ int L1MuDTEtaPatternLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + eau_dir + "ETFPatternList.lut")); - string etf_file = lut_f.fullPath(); + const string& etf_file = lut_f.fullPath(); // open file L1TriggerLutFile file(etf_file); diff --git a/CondFormats/L1TObjects/src/L1MuDTExtLut.cc b/CondFormats/L1TObjects/src/L1MuDTExtLut.cc index c1780afab1317..d04d63c9646bc 100644 --- a/CondFormats/L1TObjects/src/L1MuDTExtLut.cc +++ b/CondFormats/L1TObjects/src/L1MuDTExtLut.cc @@ -141,7 +141,7 @@ int L1MuDTExtLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + ext_dir + ext_str + ".lut")); - string ext_file = lut_f.fullPath(); + const string& ext_file = lut_f.fullPath(); // open file L1TriggerLutFile file(ext_file); diff --git a/CondFormats/L1TObjects/src/L1MuDTPhiLut.cc b/CondFormats/L1TObjects/src/L1MuDTPhiLut.cc index 4f61b1c5e2cc1..aa9c952ad49d3 100644 --- a/CondFormats/L1TObjects/src/L1MuDTPhiLut.cc +++ b/CondFormats/L1TObjects/src/L1MuDTPhiLut.cc @@ -110,7 +110,7 @@ int L1MuDTPhiLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + phi_dir + phi_str + ".lut")); - string phi_file = lut_f.fullPath(); + const string& phi_file = lut_f.fullPath(); // open file L1TriggerLutFile file(phi_file); diff --git a/CondFormats/L1TObjects/src/L1MuDTPtaLut.cc b/CondFormats/L1TObjects/src/L1MuDTPtaLut.cc index 0219c5e979523..6d9c002022e50 100644 --- a/CondFormats/L1TObjects/src/L1MuDTPtaLut.cc +++ b/CondFormats/L1TObjects/src/L1MuDTPtaLut.cc @@ -221,7 +221,7 @@ int L1MuDTPtaLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + pta_dir + pta_str + ".lut")); - string pta_file = lut_f.fullPath(); + const string& pta_file = lut_f.fullPath(); // open file L1TriggerLutFile file(pta_file); diff --git a/CondFormats/L1TObjects/src/L1MuDTQualPatternLut.cc b/CondFormats/L1TObjects/src/L1MuDTQualPatternLut.cc index 8f5d2d43b578f..7dd1de0246e7a 100644 --- a/CondFormats/L1TObjects/src/L1MuDTQualPatternLut.cc +++ b/CondFormats/L1TObjects/src/L1MuDTQualPatternLut.cc @@ -118,7 +118,7 @@ int L1MuDTQualPatternLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + eau_dir + emu_str + ".lut")); - string emu_file = lut_f.fullPath(); + const string& emu_file = lut_f.fullPath(); // open file L1TriggerLutFile file(emu_file); diff --git a/CondFormats/MFObjects/test/writeAllMagFieldConfigDB.py b/CondFormats/MFObjects/test/writeAllMagFieldConfigDB.py index 3d38b4b707d26..e7155e866fbc8 100755 --- a/CondFormats/MFObjects/test/writeAllMagFieldConfigDB.py +++ b/CondFormats/MFObjects/test/writeAllMagFieldConfigDB.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os import sys diff --git a/CondFormats/Serialization/python/condformats_serialization_generate.py b/CondFormats/Serialization/python/condformats_serialization_generate.py index 43253e6233490..404ab9a512b6d 100755 --- a/CondFormats/Serialization/python/condformats_serialization_generate.py +++ b/CondFormats/Serialization/python/condformats_serialization_generate.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function '''CMS Conditions DB Serialization generator. Generates the non-intrusive serialization code required for the classes diff --git a/CondFormats/SiStripObjects/test/SiStripBadChannelInspector.py b/CondFormats/SiStripObjects/test/SiStripBadChannelInspector.py index 689e10cd75b70..5c10f2d98768b 100644 --- a/CondFormats/SiStripObjects/test/SiStripBadChannelInspector.py +++ b/CondFormats/SiStripObjects/test/SiStripBadChannelInspector.py @@ -1,4 +1,3 @@ -from __future__ import print_function import DLFCN, sys, os sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) import pluginCondDBPyInterface as condDB diff --git a/CondFormats/SiStripObjects/test/SiStripConfObjectInspector.py b/CondFormats/SiStripObjects/test/SiStripConfObjectInspector.py index b3aef5b58b187..69fe1180949be 100644 --- a/CondFormats/SiStripObjects/test/SiStripConfObjectInspector.py +++ b/CondFormats/SiStripObjects/test/SiStripConfObjectInspector.py @@ -1,4 +1,3 @@ -from __future__ import print_function import DLFCN, sys, os sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) import pluginCondDBPyInterface as condDB diff --git a/CondFormats/SiStripObjects/test/SiStripLatencyInspector.py b/CondFormats/SiStripObjects/test/SiStripLatencyInspector.py index f8e6300fa2a11..bbf6fd8649b02 100644 --- a/CondFormats/SiStripObjects/test/SiStripLatencyInspector.py +++ b/CondFormats/SiStripObjects/test/SiStripLatencyInspector.py @@ -1,4 +1,3 @@ -from __future__ import print_function import DLFCN, sys, os sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) import pluginCondDBPyInterface as condDB diff --git a/CondTools/BTau/python/bTagCalibrationDbCreation.py b/CondTools/BTau/python/bTagCalibrationDbCreation.py index a6bb9430940aa..6c428db415e4b 100644 --- a/CondTools/BTau/python/bTagCalibrationDbCreation.py +++ b/CondTools/BTau/python/bTagCalibrationDbCreation.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import sys import FWCore.ParameterSet.Config as cms diff --git a/CondTools/BTau/python/checkBTagCalibrationConsistency.py b/CondTools/BTau/python/checkBTagCalibrationConsistency.py index 5db9ddb02a527..e278ff0df6d9e 100755 --- a/CondTools/BTau/python/checkBTagCalibrationConsistency.py +++ b/CondTools/BTau/python/checkBTagCalibrationConsistency.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import import itertools import unittest import sys diff --git a/CondTools/BTau/python/combineBTagCalibrationData.py b/CondTools/BTau/python/combineBTagCalibrationData.py index a581c357b3ac0..b0cf0ab8b7809 100755 --- a/CondTools/BTau/python/combineBTagCalibrationData.py +++ b/CondTools/BTau/python/combineBTagCalibrationData.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import import os import sys import itertools diff --git a/CondTools/BTau/python/dataLoader.py b/CondTools/BTau/python/dataLoader.py index d7559de8924b3..993ffe797e350 100644 --- a/CondTools/BTau/python/dataLoader.py +++ b/CondTools/BTau/python/dataLoader.py @@ -1,4 +1,3 @@ -from __future__ import print_function import itertools import ROOT try: diff --git a/CondTools/BTau/python/generateFlavCfromFlavB.py b/CondTools/BTau/python/generateFlavCfromFlavB.py index 665a500a48e50..435ad0b2f552d 100755 --- a/CondTools/BTau/python/generateFlavCfromFlavB.py +++ b/CondTools/BTau/python/generateFlavCfromFlavB.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import import os import sys import itertools diff --git a/CondTools/BTau/python/generateStandaloneCode.py b/CondTools/BTau/python/generateStandaloneCode.py index 902a6b96b833c..22d716a7424ab 100755 --- a/CondTools/BTau/python/generateStandaloneCode.py +++ b/CondTools/BTau/python/generateStandaloneCode.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os from os.path import join diff --git a/CondTools/CTPPS/test/largeXMLmanipulations/script_tables.py b/CondTools/CTPPS/test/largeXMLmanipulations/script_tables.py index 89db9ee287a22..4e1d0937dbcac 100644 --- a/CondTools/CTPPS/test/largeXMLmanipulations/script_tables.py +++ b/CondTools/CTPPS/test/largeXMLmanipulations/script_tables.py @@ -1,5 +1,4 @@ import subprocess -from __future__ import print_function infile = open("alignment_export_2018_12_07.1.xml","rt") xmllines = infile.readlines() diff --git a/CondTools/CTPPS/test/retrieve_sqlite_PixGainCalib_cfg.py b/CondTools/CTPPS/test/retrieve_sqlite_PixGainCalib_cfg.py index fe07e30927c6b..31dffc1a28ea2 100644 --- a/CondTools/CTPPS/test/retrieve_sqlite_PixGainCalib_cfg.py +++ b/CondTools/CTPPS/test/retrieve_sqlite_PixGainCalib_cfg.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms import sys,os -from __future__ import print_function arguments=sys.argv sqlitename="ctppspixgain.db" diff --git a/CondTools/CTPPS/test/run_rp_realalignment_table.py b/CondTools/CTPPS/test/run_rp_realalignment_table.py index a75f5988593b9..3c3f1be527852 100644 --- a/CondTools/CTPPS/test/run_rp_realalignment_table.py +++ b/CondTools/CTPPS/test/run_rp_realalignment_table.py @@ -1,6 +1,5 @@ #! python3 -from __future__ import print_function ### this script takes a file with a list of IOVs and subdir name where separated xmls files are located ### the xml files have the iov start runno in the name and in the body (iov node of the xml) which should match diff --git a/CondTools/CTPPS/test/testReadDB_PixGainCalib_cfg.py b/CondTools/CTPPS/test/testReadDB_PixGainCalib_cfg.py index 581d2c8c17ede..48e5ecd9bf31a 100644 --- a/CondTools/CTPPS/test/testReadDB_PixGainCalib_cfg.py +++ b/CondTools/CTPPS/test/testReadDB_PixGainCalib_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys,os diff --git a/CondTools/CTPPS/test/write-ctpps-pixel-gainscalibrations_cfg.py b/CondTools/CTPPS/test/write-ctpps-pixel-gainscalibrations_cfg.py index 3300f0f3f1d4b..7a03587ace4e1 100644 --- a/CondTools/CTPPS/test/write-ctpps-pixel-gainscalibrations_cfg.py +++ b/CondTools/CTPPS/test/write-ctpps-pixel-gainscalibrations_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys,os diff --git a/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_cfg.py b/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_cfg.py index d62baf1602d30..e57b4dd4bcbf2 100644 --- a/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_cfg.py +++ b/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process('test') diff --git a/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_test.py b/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_test.py index 125e03f49af50..c4ca04f71518e 100644 --- a/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_test.py +++ b/CondTools/CTPPS/test/write-ctpps-rprealalignment_table_test.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process('test') diff --git a/CondTools/DQM/test/DQMXMLFileEventSetupAnalyzer_cfg.py b/CondTools/DQM/test/DQMXMLFileEventSetupAnalyzer_cfg.py index 835cb43c35649..2703c003bf264 100644 --- a/CondTools/DQM/test/DQMXMLFileEventSetupAnalyzer_cfg.py +++ b/CondTools/DQM/test/DQMXMLFileEventSetupAnalyzer_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing diff --git a/CondTools/Ecal/python/EcalCondDB.py b/CondTools/Ecal/python/EcalCondDB.py index 7f3ca0131fe8c..1fc468259a9a7 100755 --- a/CondTools/Ecal/python/EcalCondDB.py +++ b/CondTools/Ecal/python/EcalCondDB.py @@ -5,8 +5,6 @@ # Main script to list, plot, draw, dump Ecal conditions # # -from __future__ import print_function -from __future__ import absolute_import import os,sys,getopt diff --git a/CondTools/Ecal/python/EcalCondTools.py b/CondTools/Ecal/python/EcalCondTools.py index c24ca3f84165c..41eca56fb0522 100644 --- a/CondTools/Ecal/python/EcalCondTools.py +++ b/CondTools/Ecal/python/EcalCondTools.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import # # Misc functions to manipulate Ecal records # author: Stefano Argiro diff --git a/CondTools/Ecal/python/SplitLinear.py b/CondTools/Ecal/python/SplitLinear.py index 1721939bd5ca6..31a5d35eea43f 100644 --- a/CondTools/Ecal/python/SplitLinear.py +++ b/CondTools/Ecal/python/SplitLinear.py @@ -2,7 +2,6 @@ #from G.Benelli and Arun Mittal # 2016 November 17 #Quick script to split a large sqlite file (holding all of our Noise payloads (Run1+Run2) into a set of smaller ones. -from __future__ import print_function import subprocess IOVs=[] for line in subprocess.Popen("conddb --noLimit --db Linear.db list EcalLinearCorrections_from2011_offline",shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT).stdout.readlines(): diff --git a/CondTools/Ecal/python/SplitSqlite.py b/CondTools/Ecal/python/SplitSqlite.py index e79fead99f113..53543346588eb 100644 --- a/CondTools/Ecal/python/SplitSqlite.py +++ b/CondTools/Ecal/python/SplitSqlite.py @@ -2,7 +2,6 @@ #from G.Benelli and Arun Mittal # 2016 November 17 #Quick script to split a large sqlite file (holding all of our Noise payloads (Run1+Run2) into a set of smaller ones. -from __future__ import print_function import subprocess #Input IOVs: #Reference for the use of subprocess Popen to execute a command: diff --git a/CondTools/Ecal/scripts/loadConditions.py b/CondTools/Ecal/scripts/loadConditions.py index 305bed440ea2b..8d3032ddba641 100644 --- a/CondTools/Ecal/scripts/loadConditions.py +++ b/CondTools/Ecal/scripts/loadConditions.py @@ -1,4 +1,3 @@ -from __future__ import print_function # $Id: loadConditions.py,v 1.4 2008/12/19 11:02:21 argiro Exp $ # # Author: Stefano Argiro' diff --git a/CondTools/Ecal/test/tools/inspectEcal.py b/CondTools/Ecal/test/tools/inspectEcal.py index 7052b592186ce..09cf617926fbf 100755 --- a/CondTools/Ecal/test/tools/inspectEcal.py +++ b/CondTools/Ecal/test/tools/inspectEcal.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import os,sys, DLFCN,getopt sys.setdlopenflags(DLFCN.RTLD_GLOBAL+DLFCN.RTLD_LAZY) diff --git a/CondTools/Geometry/test/writehelpers/createExtended2025DD4hepPayloads.sh b/CondTools/Geometry/test/writehelpers/createExtended2025DD4hepPayloads.sh new file mode 100644 index 0000000000000..aadcdfa37cd40 --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/createExtended2025DD4hepPayloads.sh @@ -0,0 +1,88 @@ +#!/bin/sh +function die { echo $1: status $2 ; exit $2; } + +if [ $# -ne 1 ] +then + echo Error: createExtended2025Payloads.sh requires exactly one argument which is the tag + exit 1 +fi +mytag=$1 +echo ${mytag} + +# Set the tag in all the scripts and the metadata text files +#sed -i {s/TagXX/${mytag}/g} *.py +compgen -G "*.txt" > /dev/null && sed -i {s/TagXX/${mytag}/g} *.txt +sed -i {s/TagXX/${mytag}/g} splitExtended2025Database.sh + +# First read in the little XML files and create the +# big XML file for the Extended2025DD4hep scenario. +cmsRun geometryExtended2025DD4hep_xmlwriter.py || die 'failed geometryExtended2025DD4hep_xmlwriter.py' $? + +# Now convert the content of the large XML file into +# a "blob" and write it to the database. +# Also reads in the little XML files again and fills +# the DDCompactView. From the DDCompactView the +# reco parts of the database are also filled. +cmsRun geometryExtended2025DD4hep_writer.py --tag=${mytag} || die 'failed geometryExtended2025DD4hep_writer.py' $? + +# Now put the other scenarios into the database. +# Input the many XML files referenced by the cff file and +# output a single big XML file. +# This is repeated several times below. The sed commands +# serve to give the correct sequence of input and output +# files + +#sed -i '{s/ExtendedGeometry2025/ExtendedGeometry2025ZeroMaterial/g}' geometryExtended2025DD4hep_xmlwriter.py +#sed -i '{s/\/ge/\/gez/g}' geometryExtended2025DD4hep_xmlwriter.py +cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025ZeroMaterial --out=gez || die 'failed geometryExtended2025DD4hep_xmlwriter.py ExtendedGeometry2025ZeroMaterial' $? + +#sed -i '{s/ExtendedGeometry2025ZeroMaterial/ExtendedGeometry2025FlatMinus05Percent/g}' geometryExtended2025DD4hep_xmlwriter.py +#sed -i '{s/\/gez/\/geFM05/g}' geometryExtended2025DD4hep_xmlwriter.py +cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatMinus05Percent --out=geFM05 || die 'failed geometryExtended2025DD4hep_xmlwriter.py ExtendedGeometry2025FlatMinus05Percent' $? + +#sed -i '{s/ExtendedGeometry2025FlatMinus05Percent/ExtendedGeometry2025FlatMinus10Percent/g}' geometryExtended2025DD4hep_xmlwriter.py +#sed -i '{s/\/geFM05/\/geFM10/g}' geometryExtended2025DD4hep_xmlwriter.py +cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatMinus10Percent --out=geFM10 || die 'failed geometryExtended2025DD4hep_xmlwriter.py' $? + +#sed -i '{s/ExtendedGeometry2025FlatMinus10Percent/ExtendedGeometry2025FlatPlus05Percent/g}' geometryExtended2025DD4hep_xmlwriter.py +#sed -i '{s/\/geFM10/\/geFP05/g}' geometryExtended2025DD4hep_xmlwriter.py +cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatPlus05Percent --out=geFP05 || die 'failed geometryExtended2025DD4hep_xmlwriter.py ExtendedGeometry2025FlatPlus05Percent' $? + +#sed -i '{s/ExtendedGeometry2025FlatPlus05Percent/ExtendedGeometry2025FlatPlus10Percent/g}' geometryExtended2025DD4hep_xmlwriter.py +#sed -i '{s/\/geFP05/\/geFP10/g}' geometryExtended2025DD4hep_xmlwriter.py +cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatPlus05Percent --out=geFP10 || die 'failed geometryExtended2025DD4hep_xmlwriter.py' $? + +# Read the one big XML file and output a record to the +# database with the an identifying tag +# This is repeated several times below. The sed commands +# serve to give the correct sequence of input file and output +# tag +# To start: +# Input file Output tag +# gezSingleBigFile.xml XMLFILE_Geometry_${mytag}_Extended2025ZeroMaterial_mc + +#sed -i '{s/Extended/Extended2025ZeroMaterial/g}' xmlgeometrywriter.py +#sed -i '{s/\/ge/\/gez/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025ZeroMaterial --inPre=gez|| die 'failed xmlgeometrywriter.py Extended2025ZeroMaterial' $? + +#sed -i '{s/Extended2025ZeroMaterial/Extended2025FlatMinus05Percent/g}' xmlgeometrywriter.py +#sed -i '{s/\/gez/\/geFM05/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatMinus05Percent --inPre=geFM05 || die 'failed xmlgeometrywriter.py Extended2025FlatMinus05Percent' $? + +#sed -i '{s/Extended2025FlatMinus05Percent/Extended2025FlatMinus10Percent/g}' xmlgeometrywriter.py +#sed -i '{s/\/geFM05/\/geFM10/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatMinus10Percent --inPre=geFM10 || die 'failed xmlgeometrywriter.py Extended2025FlatMinus10Percent' $? + +#sed -i '{s/Extended2025FlatMinus10Percent/Extended2025FlatPlus05Percent/g}' xmlgeometrywriter.py +#sed -i '{s/\/geFM10/\/geFP05/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatPlus05Percent --inPre=geFP05 || die 'failed xmlgeometrywriter.py Extended2025FlatPlus05Percent' $? + +#sed -i '{s/Extended2025FlatPlus05Percent/Extended2025FlatPlus10Percent/g}' xmlgeometrywriter.py +#sed -i '{s/\/geFP05/\/geFP10/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatPlus10Percent --inPre=geFP10 || die 'failed xmlgeometrywriter.py Extended2025FlatPlus10Percent' $? + +# All the database objects were written into one database +# (myfile.db) in the steps above. Extract the different +# pieces into separate database files. These are the payloads +# that get uploaded to the DB. There is one for each tag +./splitExtended2025Database.sh diff --git a/CondTools/Geometry/test/writehelpers/createExtended2025Payloads.sh b/CondTools/Geometry/test/writehelpers/createExtended2025Payloads.sh new file mode 100644 index 0000000000000..fa36995fec4a3 --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/createExtended2025Payloads.sh @@ -0,0 +1,93 @@ +#!/bin/sh + + +if [ $# -ne 1 ] +then + echo Error: createExtended2025Payloads.sh requires exactly one argument which is the tag + exit 1 +fi +mytag=$1 +echo ${mytag} + +# Set the tag in all the scripts and the metadata text files +sed -i {s/TagXX/${mytag}/g} *.py +compgen -G "*.txt" > /dev/null && sed -i {s/TagXX/${mytag}/g} *.txt +sed -i {s/TagXX/${mytag}/g} splitExtended2025Database.sh + +# First read in the little XML files and create the +# large XML file for the Phase1_R30F12_HCal Ideal scenario. +# Input cff Output file +# GeometryExtended2025_cff geSingleBigFile.xml +cmsRun geometryExtended2025_xmlwriter.py + +# Now convert the content of the large XML file into +# a "blob" and write it to the database. +# Also reads in the little XML files again and fills +# the DDCompactView. From the DDCompactView the +# reco parts of the database are also filled. +cmsRun geometryExtended2025_writer.py + +# Now put the other scenarios into the database. +# Input the many XML files referenced by the cff file and +# output a single big XML file. +# This is repeated several times below. The sed commands +# serve to give the following sequence of input and output +# files +# +# Input cff Output file +# GeometryIdeal_cff giSingleBigFile.xml +# +sed -i '{s/Extended2025/Extended2025ZeroMaterial/g}' geometryExtended2025_xmlwriter.py +sed -i '{s/\/ge/\/gez/g}' geometryExtended2025_xmlwriter.py +cmsRun geometryExtended2025_xmlwriter.py + +sed -i '{s/Extended2025ZeroMaterial/Extended2025FlatMinus05Percent/g}' geometryExtended2025_xmlwriter.py +sed -i '{s/\/gez/\/geFM05/g}' geometryExtended2025_xmlwriter.py +cmsRun geometryExtended2025_xmlwriter.py + +sed -i '{s/Extended2025FlatMinus05Percent/Extended2025FlatMinus10Percent/g}' geometryExtended2025_xmlwriter.py +sed -i '{s/\/geFM05/\/geFM10/g}' geometryExtended2025_xmlwriter.py +cmsRun geometryExtended2025_xmlwriter.py + +sed -i '{s/Extended2025FlatMinus10Percent/Extended2025FlatPlus05Percent/g}' geometryExtended2025_xmlwriter.py +sed -i '{s/\/geFM10/\/geFP05/g}' geometryExtended2025_xmlwriter.py +cmsRun geometryExtended2025_xmlwriter.py + +sed -i '{s/Extended2025FlatPlus05Percent/Extended2025FlatPlus10Percent/g}' geometryExtended2025_xmlwriter.py +sed -i '{s/\/geFP05/\/geFP10/g}' geometryExtended2025_xmlwriter.py +cmsRun geometryExtended2025_xmlwriter.py + +# Read the one big XML file and output a record to the +# database with the an identifying tag +# This is repeated several times below. The sed commands +# serve to give the following sequence of input file and output +# tag +# +# Input file Output tag +# gezSingleBigFile.xml XMLFILE_Geometry_${mytag}_Extended2025ZeroMaterial_mc +# +sed -i '{s/Extended/Extended2025ZeroMaterial/g}' xmlgeometrywriter.py +sed -i '{s/\/ge/\/gez/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py + +sed -i '{s/Extended2025ZeroMaterial/Extended2025FlatMinus05Percent/g}' xmlgeometrywriter.py +sed -i '{s/\/gez/\/geFM05/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py + +sed -i '{s/Extended2025FlatMinus05Percent/Extended2025FlatMinus10Percent/g}' xmlgeometrywriter.py +sed -i '{s/\/geFM05/\/geFM10/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py + +sed -i '{s/Extended2025FlatMinus10Percent/Extended2025FlatPlus05Percent/g}' xmlgeometrywriter.py +sed -i '{s/\/geFM10/\/geFP05/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py + +sed -i '{s/Extended2025FlatPlus05Percent/Extended2025FlatPlus10Percent/g}' xmlgeometrywriter.py +sed -i '{s/\/geFP05/\/geFP10/g}' xmlgeometrywriter.py +cmsRun xmlgeometrywriter.py + +# All the database objects were written into one database +# (myfile.db) in the steps above. Extract the different +# pieces into separate database files. These are the payloads +# that get uploaded to the dropbox. There is one for each tag +./splitExtended2025Database.sh diff --git a/CondTools/Geometry/test/writehelpers/geometryExtended2025DD4hep_writer.py b/CondTools/Geometry/test/writehelpers/geometryExtended2025DD4hep_writer.py new file mode 100644 index 0000000000000..00bc68d163a8b --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/geometryExtended2025DD4hep_writer.py @@ -0,0 +1,90 @@ +import FWCore.ParameterSet.Config as cms +import argparse +import sys + +parser = argparse.ArgumentParser(prog=sys.argv[0], description='Generate XML geometry.') +parser.add_argument("--tag", help="global tag to use", type=str) +args = parser.parse_args() + + +import FWCore.ParameterSet.Config as cms +from Configuration.Eras.Era_Run3_dd4hep_cff import Run3_dd4hep + +process = cms.Process("GeometryWriter", Run3_dd4hep) + +from Configuration.ProcessModifiers.dd4hep_cff import dd4hep + +process.load('CondCore.CondDB.CondDB_cfi') + +process.load('Configuration.Geometry.GeometryDD4hepExtended2025_cff') +process.load('Geometry.CaloEventSetup.CaloGeometryDBWriter_cfi') +process.load('CondTools.Geometry.HcalParametersWriter_cff') +process.load("Geometry.MuonNumbering.muonGeometryConstants_cff") +process.load("Geometry.ForwardGeometry.ZdcGeometry_cfi") + +process.CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring( + 'HCAL', + 'ZDC', + 'EcalBarrel', + 'EcalEndcap', + 'EcalPreshower', + 'TOWER' + ) +) + +process.source = cms.Source("EmptyIOVSource", + lastValue = cms.uint64(1), + timetype = cms.string('runnumber'), + firstValue = cms.uint64(1), + interval = cms.uint64(1) + ) + +# This reads the big XML file and the only way to fill the +# nonreco part of the database is to read this file. +process.XMLGeometryWriter = cms.EDAnalyzer("XMLGeometryBuilder", + XMLFileName = cms.untracked.string("./geSingleBigFile.xml"), + ZIP = cms.untracked.bool(True) + ) + +process.TrackerGeometryWriter = cms.EDAnalyzer("PGeometricDetBuilder",fromDD4hep=cms.bool(True)) +process.TrackerParametersWriter = cms.EDAnalyzer("PTrackerParametersDBBuilder",fromDD4hep=cms.bool(True)) + +process.CaloGeometryWriter = cms.EDAnalyzer("PCaloGeometryBuilder",fromDD4hep = cms.untracked.bool(True)) + +process.CSCGeometryWriter = cms.EDAnalyzer("CSCRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True)) + +process.DTGeometryWriter = cms.EDAnalyzer("DTRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True)) + +process.RPCGeometryWriter = cms.EDAnalyzer("RPCRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True)) + +process.GEMGeometryWriter = cms.EDAnalyzer("GEMRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True)) + +process.CondDB.timetype = cms.untracked.string('runnumber') +process.CondDB.connect = cms.string('sqlite_file:myfile.db') +process.PoolDBOutputService = cms.Service("PoolDBOutputService", + process.CondDB, + toPut = cms.VPSet(cms.PSet(record = cms.string('GeometryFileRcd'),tag = cms.string('XMLFILE_Geometry_'+args.tag+'_Extended2025_mc')), + cms.PSet(record = cms.string('IdealGeometryRecord'),tag = cms.string('TKRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PTrackerParametersRcd'),tag = cms.string('TKParameters_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PEcalBarrelRcd'), tag = cms.string('EBRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PEcalEndcapRcd'), tag = cms.string('EERECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PEcalPreshowerRcd'),tag = cms.string('EPRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PHcalRcd'), tag = cms.string('HCALRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('HcalParametersRcd'), tag = cms.string('HCALParameters_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PCaloTowerRcd'), tag = cms.string('CTRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PZdcRcd'), tag = cms.string('ZDCRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('PCastorRcd'), tag = cms.string('CASTORRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('CSCRecoGeometryRcd'),tag = cms.string('CSCRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('CSCRecoDigiParametersRcd'),tag = cms.string('CSCRECODIGI_Geometry_'+args.tag)), + cms.PSet(record = cms.string('DTRecoGeometryRcd'),tag = cms.string('DTRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('RPCRecoGeometryRcd'),tag = cms.string('RPCRECO_Geometry_'+args.tag)), + cms.PSet(record = cms.string('GEMRecoGeometryRcd'),tag = cms.string('GEMRECO_Geometry_'+args.tag)) + ) + ) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) + ) + +process.p1 = cms.Path(process.XMLGeometryWriter+process.TrackerGeometryWriter+process.TrackerParametersWriter+process.CaloGeometryWriter+process.HcalParametersWriter+process.CSCGeometryWriter+process.DTGeometryWriter+process.RPCGeometryWriter+process.GEMGeometryWriter) diff --git a/CondTools/Geometry/test/writehelpers/geometryExtended2025DD4hep_xmlwriter.py b/CondTools/Geometry/test/writehelpers/geometryExtended2025DD4hep_xmlwriter.py new file mode 100644 index 0000000000000..cac3a8c34ee90 --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/geometryExtended2025DD4hep_xmlwriter.py @@ -0,0 +1,40 @@ +import FWCore.ParameterSet.Config as cms + +import argparse +import sys + +parser = argparse.ArgumentParser(prog=sys.argv[0], description='Generate XML geometry.') +parser.add_argument("--geom", help="Name of parameter", type=str, default='ExtendedGeometry2025') +parser.add_argument("--out", help="Prefix for output file", type=str, default='ge') + +args = parser.parse_args() + +process = cms.Process("GeometryXMLWriter") + +process.source = cms.Source("EmptyIOVSource", + lastValue = cms.uint64(1), + timetype = cms.string('runnumber'), + firstValue = cms.uint64(1), + interval = cms.uint64(1) + ) + +process.DDDetectorESProducer = cms.ESSource("DDDetectorESProducer", + confGeomXMLFiles = cms.FileInPath('Geometry/CMSCommonData/data/dd4hep/cms'+args.geom+'.xml'), + appendToDataLabel = cms.string('make-payload') + ) + +process.DDCompactViewESProducer = cms.ESProducer("DDCompactViewESProducer", + appendToDataLabel = cms.string('make-payload') + ) + +process.BigXMLWriter = cms.EDAnalyzer("OutputDD4hepToDDL", + fileName = cms.untracked.string("./"+args.out+"SingleBigFile.xml") + ) + + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) + ) + +process.p1 = cms.Path(process.BigXMLWriter) + diff --git a/CondTools/Geometry/test/writehelpers/geometryExtended2025_writer.py b/CondTools/Geometry/test/writehelpers/geometryExtended2025_writer.py new file mode 100644 index 0000000000000..e1255855b1bbe --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/geometryExtended2025_writer.py @@ -0,0 +1,73 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("GeometryWriter") + +process.load('CondCore.CondDB.CondDB_cfi') + +# This will read all the little XML files and from +# that fill the DDCompactView. The modules that fill +# the reco part of the database need the DDCompactView. +process.load('Configuration.Geometry.GeometryExtended2025_cff') +process.load('Geometry.MuonNumbering.muonNumberingInitialization_cfi') +process.load("Geometry.MuonNumbering.muonGeometryConstants_cff") +process.load('Geometry.CaloEventSetup.CaloGeometryDBWriter_cfi') +process.load('CondTools.Geometry.HcalParametersWriter_cff') + +process.source = cms.Source("EmptyIOVSource", + lastValue = cms.uint64(1), + timetype = cms.string('runnumber'), + firstValue = cms.uint64(1), + interval = cms.uint64(1) + ) + +# This reads the big XML file and the only way to fill the +# nonreco part of the database is to read this file. It +# somewhat duplicates the information read from the little +# XML files, but there is no way to directly build the +# DDCompactView from this. +process.XMLGeometryWriter = cms.EDAnalyzer("XMLGeometryBuilder", + XMLFileName = cms.untracked.string("./geSingleBigFile.xml"), + ZIP = cms.untracked.bool(True) + ) + +process.TrackerGeometryWriter = cms.EDAnalyzer("PGeometricDetBuilder",fromDD4hep=cms.bool(False)) +process.TrackerParametersWriter = cms.EDAnalyzer("PTrackerParametersDBBuilder",fromDD4hep=cms.bool(False)) + +process.CaloGeometryWriter = cms.EDAnalyzer("PCaloGeometryBuilder") + +process.CSCGeometryWriter = cms.EDAnalyzer("CSCRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(False)) + +process.DTGeometryWriter = cms.EDAnalyzer("DTRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(False)) + +process.RPCGeometryWriter = cms.EDAnalyzer("RPCRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(False)) + +process.GEMGeometryWriter = cms.EDAnalyzer("GEMRecoIdealDBLoader") + +process.CondDB.timetype = cms.untracked.string('runnumber') +process.CondDB.connect = cms.string('sqlite_file:myfile.db') +process.PoolDBOutputService = cms.Service("PoolDBOutputService", + process.CondDB, + toPut = cms.VPSet(cms.PSet(record = cms.string('GeometryFileRcd'),tag = cms.string('XMLFILE_Geometry_TagXX_Extended2025_mc')), + cms.PSet(record = cms.string('IdealGeometryRecord'),tag = cms.string('TKRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('PTrackerParametersRcd'),tag = cms.string('TKParameters_Geometry_TagXX')), + cms.PSet(record = cms.string('PEcalBarrelRcd'), tag = cms.string('EBRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('PEcalEndcapRcd'), tag = cms.string('EERECO_Geometry_TagXX')), + cms.PSet(record = cms.string('PEcalPreshowerRcd'),tag = cms.string('EPRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('PHcalRcd'), tag = cms.string('HCALRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('HcalParametersRcd'), tag = cms.string('HCALParameters_Geometry_TagXX')), + cms.PSet(record = cms.string('PCaloTowerRcd'), tag = cms.string('CTRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('PZdcRcd'), tag = cms.string('ZDCRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('PCastorRcd'), tag = cms.string('CASTORRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('CSCRecoGeometryRcd'),tag = cms.string('CSCRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('CSCRecoDigiParametersRcd'),tag = cms.string('CSCRECODIGI_Geometry_TagXX')), + cms.PSet(record = cms.string('DTRecoGeometryRcd'),tag = cms.string('DTRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('RPCRecoGeometryRcd'),tag = cms.string('RPCRECO_Geometry_TagXX')), + cms.PSet(record = cms.string('GEMRecoGeometryRcd'),tag = cms.string('GEMRECO_Geometry_TagXX')) + ) + ) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) + ) + +process.p1 = cms.Path(process.XMLGeometryWriter+process.TrackerGeometryWriter+process.TrackerParametersWriter+process.CaloGeometryWriter+process.HcalParametersWriter+process.CSCGeometryWriter+process.DTGeometryWriter+process.RPCGeometryWriter+process.GEMGeometryWriter) diff --git a/CondTools/Geometry/test/writehelpers/geometryExtended2025_xmlwriter.py b/CondTools/Geometry/test/writehelpers/geometryExtended2025_xmlwriter.py new file mode 100644 index 0000000000000..3331fb444ba59 --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/geometryExtended2025_xmlwriter.py @@ -0,0 +1,25 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("GeometryXMLWriter") + +process.load('Configuration.Geometry.GeometryExtended2025_cff') + +process.source = cms.Source("EmptyIOVSource", + lastValue = cms.uint64(1), + timetype = cms.string('runnumber'), + firstValue = cms.uint64(1), + interval = cms.uint64(1) + ) + +process.BigXMLWriter = cms.EDAnalyzer("OutputDDToDDL", + rotNumSeed = cms.int32(0), + fileName = cms.untracked.string("./geSingleBigFile.xml") + ) + + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) + ) + +process.p1 = cms.Path(process.BigXMLWriter) + diff --git a/CondTools/Geometry/test/writehelpers/splitExtended2025Database.sh b/CondTools/Geometry/test/writehelpers/splitExtended2025Database.sh new file mode 100644 index 0000000000000..d9a3e8bd0c012 --- /dev/null +++ b/CondTools/Geometry/test/writehelpers/splitExtended2025Database.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +conddb --yes --db myfile.db copy XMLFILE_Geometry_TagXX_Extended2025_mc --destdb GeometryFileExtended2025.db +conddb --yes --db myfile.db copy XMLFILE_Geometry_TagXX_Extended2025ZeroMaterial_mc --destdb GeometryFileExtended2025ZeroMaterial.db +conddb --yes --db myfile.db copy XMLFILE_Geometry_TagXX_Extended2025FlatMinus05Percent_mc --destdb GeometryFileExtended2025FlatMinus05Percent.db +conddb --yes --db myfile.db copy XMLFILE_Geometry_TagXX_Extended2025FlatMinus10Percent_mc --destdb GeometryFileExtended2025FlatMinus10Percent.db +conddb --yes --db myfile.db copy XMLFILE_Geometry_TagXX_Extended2025FlatPlus05Percent_mc --destdb GeometryFileExtended2025FlatPlus05Percent.db +conddb --yes --db myfile.db copy XMLFILE_Geometry_TagXX_Extended2025FlatPlus10Percent_mc --destdb GeometryFileExtended2025FlatPlus10Percent.db +conddb --yes --db myfile.db copy TKRECO_Geometry_TagXX --destdb TKRECO_Geometry.db +conddb --yes --db myfile.db copy TKParameters_Geometry_TagXX --destdb TKParameters_Geometry.db +conddb --yes --db myfile.db copy EBRECO_Geometry_TagXX --destdb EBRECO_Geometry.db +conddb --yes --db myfile.db copy EERECO_Geometry_TagXX --destdb EERECO_Geometry.db +conddb --yes --db myfile.db copy EPRECO_Geometry_TagXX --destdb EPRECO_Geometry.db +conddb --yes --db myfile.db copy HCALRECO_Geometry_TagXX --destdb HCALRECO_Geometry.db +conddb --yes --db myfile.db copy HCALParameters_Geometry_TagXX --destdb HCALParameters_Geometry.db +conddb --yes --db myfile.db copy CTRECO_Geometry_TagXX --destdb CTRECO_Geometry.db +conddb --yes --db myfile.db copy ZDCRECO_Geometry_TagXX --destdb ZDCRECO_Geometry.db +conddb --yes --db myfile.db copy CSCRECO_Geometry_TagXX --destdb CSCRECO_Geometry.db +conddb --yes --db myfile.db copy CSCRECODIGI_Geometry_TagXX --destdb CSCRECODIGI_Geometry.db +conddb --yes --db myfile.db copy DTRECO_Geometry_TagXX --destdb DTRECO_Geometry.db +conddb --yes --db myfile.db copy RPCRECO_Geometry_TagXX --destdb RPCRECO_Geometry.db +conddb --yes --db myfile.db copy GEMRECO_Geometry_TagXX --destdb GEMRECO_Geometry.db diff --git a/CondTools/HLT/scripts/run_AlCaRecoTriggerBitsUpdateWorkflow.py b/CondTools/HLT/scripts/run_AlCaRecoTriggerBitsUpdateWorkflow.py index 72717615f6122..1e96e3b8933b7 100755 --- a/CondTools/HLT/scripts/run_AlCaRecoTriggerBitsUpdateWorkflow.py +++ b/CondTools/HLT/scripts/run_AlCaRecoTriggerBitsUpdateWorkflow.py @@ -3,7 +3,6 @@ """ Example script to test reading from local sqlite db. """ -from __future__ import print_function import os import sys import ast diff --git a/CondTools/Hcal/test/runDumpHcalCond_cfg.py b/CondTools/Hcal/test/runDumpHcalCond_cfg.py index fa56c00e7ff8a..a9f9b805d4ddd 100644 --- a/CondTools/Hcal/test/runDumpHcalCond_cfg.py +++ b/CondTools/Hcal/test/runDumpHcalCond_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing diff --git a/CondTools/L1Trigger/test/L1ConfigWriteSinglePayload_cfg.py b/CondTools/L1Trigger/test/L1ConfigWriteSinglePayload_cfg.py index 1249a34699979..b1080bc6fe493 100644 --- a/CondTools/L1Trigger/test/L1ConfigWriteSinglePayload_cfg.py +++ b/CondTools/L1Trigger/test/L1ConfigWriteSinglePayload_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Example using L1RCTParameters import FWCore.ParameterSet.Config as cms diff --git a/CondTools/SiPhase2Tracker/test/SiPhase2OuterTrackerLorentzAngleWriter_cfg.py b/CondTools/SiPhase2Tracker/test/SiPhase2OuterTrackerLorentzAngleWriter_cfg.py index b93bbf3f627e6..883dd42f30611 100644 --- a/CondTools/SiPhase2Tracker/test/SiPhase2OuterTrackerLorentzAngleWriter_cfg.py +++ b/CondTools/SiPhase2Tracker/test/SiPhase2OuterTrackerLorentzAngleWriter_cfg.py @@ -1,6 +1,5 @@ #! /usr/bin/env cmsRun # Author: Marco Musich (May 2020) -from __future__ import print_function import os, shlex, shutil, getpass ################################################################### diff --git a/CondTools/SiPixel/test/SiPixelDynamicInefficiencyDB_cfg.py b/CondTools/SiPixel/test/SiPixelDynamicInefficiencyDB_cfg.py index e69046695247d..2667a025d820b 100644 --- a/CondTools/SiPixel/test/SiPixelDynamicInefficiencyDB_cfg.py +++ b/CondTools/SiPixel/test/SiPixelDynamicInefficiencyDB_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import shlex, shutil, getpass #import subprocess diff --git a/CondTools/SiPixel/test/SiPixelDynamicInefficiencyReader_cfg.py b/CondTools/SiPixel/test/SiPixelDynamicInefficiencyReader_cfg.py index 884b95bfa1ba4..c259cc5b9ce85 100644 --- a/CondTools/SiPixel/test/SiPixelDynamicInefficiencyReader_cfg.py +++ b/CondTools/SiPixel/test/SiPixelDynamicInefficiencyReader_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("Test") diff --git a/CondTools/SiPixel/test/SiPixelGainCalibScaler_cfg.py b/CondTools/SiPixel/test/SiPixelGainCalibScaler_cfg.py index 883987ffef159..62f14fb6fe1c9 100644 --- a/CondTools/SiPixel/test/SiPixelGainCalibScaler_cfg.py +++ b/CondTools/SiPixel/test/SiPixelGainCalibScaler_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/CondTools/SiPixel/test/SiPixelInclusiveBuilder_cfg.py b/CondTools/SiPixel/test/SiPixelInclusiveBuilder_cfg.py index e7a89d06ff697..eabe5aa88f89c 100644 --- a/CondTools/SiPixel/test/SiPixelInclusiveBuilder_cfg.py +++ b/CondTools/SiPixel/test/SiPixelInclusiveBuilder_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import shlex, subprocess import shutil, getpass diff --git a/CondTools/SiPixel/test/SiPixelLorentzAngleDB_cfg.py b/CondTools/SiPixel/test/SiPixelLorentzAngleDB_cfg.py index 16e96ab480f3d..c9c3fd77c3eaf 100644 --- a/CondTools/SiPixel/test/SiPixelLorentzAngleDB_cfg.py +++ b/CondTools/SiPixel/test/SiPixelLorentzAngleDB_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import shlex, shutil, getpass #import subprocess diff --git a/CondTools/SiPixel/test/SiPixelLorentzAngleReader_cfg.py b/CondTools/SiPixel/test/SiPixelLorentzAngleReader_cfg.py index b1197d86b6372..182dd4227b6a2 100644 --- a/CondTools/SiPixel/test/SiPixelLorentzAngleReader_cfg.py +++ b/CondTools/SiPixel/test/SiPixelLorentzAngleReader_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("Test") diff --git a/CondTools/SiPixel/test/SiPixelQualityPlotter_cfg.py b/CondTools/SiPixel/test/SiPixelQualityPlotter_cfg.py index 90682233d0fda..e65e7f7225ec3 100644 --- a/CondTools/SiPixel/test/SiPixelQualityPlotter_cfg.py +++ b/CondTools/SiPixel/test/SiPixelQualityPlotter_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import shlex, shutil, getpass import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/CondTools/SiPixel/test/SiPixelVCalDB_cfg.py b/CondTools/SiPixel/test/SiPixelVCalDB_cfg.py index a7650efb88a8c..a73648bd2184d 100755 --- a/CondTools/SiPixel/test/SiPixelVCalDB_cfg.py +++ b/CondTools/SiPixel/test/SiPixelVCalDB_cfg.py @@ -1,6 +1,5 @@ #! /usr/bin/env cmsRun # Author: Izaak Neutelings (March 2020) -from __future__ import print_function #import os import os, shlex, shutil, getpass #import subprocess diff --git a/CondTools/SiPixel/test/SiPixelVCalReader_cfg.py b/CondTools/SiPixel/test/SiPixelVCalReader_cfg.py index a8ac21fb9fea5..1330fca79ba85 100644 --- a/CondTools/SiPixel/test/SiPixelVCalReader_cfg.py +++ b/CondTools/SiPixel/test/SiPixelVCalReader_cfg.py @@ -1,6 +1,5 @@ #! /usr/bin/env cmsRun # Author: Izaak Neutelings (March 2020) -from __future__ import print_function import FWCore.ParameterSet.Config as cms from Configuration.StandardSequences.Eras import eras diff --git a/CondTools/SiPixel/test/runPixelPopConCalib.py b/CondTools/SiPixel/test/runPixelPopConCalib.py index a5d8810f01f87..15e8f66cf7534 100755 --- a/CondTools/SiPixel/test/runPixelPopConCalib.py +++ b/CondTools/SiPixel/test/runPixelPopConCalib.py @@ -6,7 +6,6 @@ Initial version: M. Eads, Sep 2008 """ -from __future__ import print_function import os, sys, getopt, shutil from socket import getfqdn diff --git a/CondTools/SiStrip/plugins/SiStripApvGainFromDeDxCalibration.cc b/CondTools/SiStrip/plugins/SiStripApvGainFromDeDxCalibration.cc new file mode 100644 index 0000000000000..ee3a00bc02408 --- /dev/null +++ b/CondTools/SiStrip/plugins/SiStripApvGainFromDeDxCalibration.cc @@ -0,0 +1,107 @@ +// system include files +#include +#include + +// user include files +#include "CalibTracker/SiStripCommon/interface/SiStripDetInfoFileReader.h" +#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" +#include "CondFormats/SiStripObjects/interface/SiStripApvGain.h" +#include "CondFormats/PhysicsToolsObjects/interface/DeDxCalibration.h" +#include "CondFormats/DataRecord/interface/DeDxCalibrationRcd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/Utilities/interface/Exception.h" + +class SiStripApvGainFromDeDxCalibration : public edm::one::EDAnalyzer<> { +public: + explicit SiStripApvGainFromDeDxCalibration(const edm::ParameterSet& iConfig); + + ~SiStripApvGainFromDeDxCalibration() override = default; + + void analyze(const edm::Event&, const edm::EventSetup&) override; + + static void fillDescriptions(edm::ConfigurationDescriptions&); + + typedef std::pair ChipId; + +private: + const edm::ESGetToken dedxCalibToken_; + const edm::FileInPath fp_; + const bool printdebug_; +}; + +SiStripApvGainFromDeDxCalibration::SiStripApvGainFromDeDxCalibration(const edm::ParameterSet& iConfig) + : dedxCalibToken_(esConsumes()), + fp_(iConfig.getUntrackedParameter("file", + edm::FileInPath(SiStripDetInfoFileReader::kDefaultFile))), + printdebug_(iConfig.getUntrackedParameter("printDebug", 1)) {} + +void SiStripApvGainFromDeDxCalibration::analyze(const edm::Event& evt, const edm::EventSetup& iSetup) { + unsigned int run = evt.id().run(); + + edm::LogInfo("SiStripApvGainFromDeDxCalibration") + << "... creating dummy SiStripApvGain Data for Run " << run << "\n " << std::endl; + + SiStripApvGain obj; + + const auto& reader = SiStripDetInfoFileReader::read(fp_.fullPath()); + const auto& DetInfos = reader.getAllData(); + const auto& dedxCalib = iSetup.getData(dedxCalibToken_); + + int count = -1; + for (const auto& it : DetInfos) { + const auto& nAPVs = it.second.nApvs; + count++; + //Generate Gain for det detid + std::vector theSiStripVector; + for (unsigned short j = 0; j < nAPVs; j++) { + const auto& chipId = ChipId(it.first, j); + const auto& g = dedxCalib.gain().find(chipId); + + if (g == dedxCalib.gain().end()) + continue; + + if (count < printdebug_) + edm::LogInfo("SiStripApvGainFromDeDxCalibration") << "detid " << it.first << " \t" + << " apv " << j << " \t" << g->second << " \t" << std::endl; + theSiStripVector.push_back(g->second); + } + + SiStripApvGain::Range range(theSiStripVector.begin(), theSiStripVector.end()); + if (!obj.put(it.first, range)) + edm::LogError("SiStripApvGainFromDeDxCalibration") + << "[SiStripApvGainFromDeDxCalibration::analyze] detid already exists" << std::endl; + } + + //End now write sistripnoises data in DB + edm::Service mydbservice; + + if (mydbservice.isAvailable()) { + if (mydbservice->isNewTagRequest("SiStripApvGainRcd")) { + mydbservice->createOneIOV(obj, mydbservice->beginOfTime(), "SiStripApvGainRcd"); + } else { + mydbservice->appendOneIOV(obj, mydbservice->currentTime(), "SiStripApvGainRcd"); + } + } else { + edm::LogError("SiStripApvGainFromDeDxCalibration") << "Service is unavailable" << std::endl; + } +} + +void SiStripApvGainFromDeDxCalibration::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.addUntracked("file", edm::FileInPath(SiStripDetInfoFileReader::kDefaultFile)); + desc.addUntracked("printDebug", 1); + descriptions.addWithDefaultLabel(desc); +} + +#include "FWCore/PluginManager/interface/ModuleDef.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +DEFINE_FWK_MODULE(SiStripApvGainFromDeDxCalibration); diff --git a/CondTools/SiStrip/test/CheckDetVOff.py b/CondTools/SiStrip/test/CheckDetVOff.py index 3ff6077fa96bf..4c3bd8ec4c2e5 100755 --- a/CondTools/SiStrip/test/CheckDetVOff.py +++ b/CondTools/SiStrip/test/CheckDetVOff.py @@ -4,7 +4,6 @@ This script checks the outputs from SiStripDetVOffFakeBuilder and reader. It compares the status of all detIds both for low and high voltage and it checks that the values written in the database are correctly read back. ''' -from __future__ import print_function import os diff --git a/CondTools/SiStrip/test/SiStripApvGainFromDeDxCalibration_cfg.py b/CondTools/SiStrip/test/SiStripApvGainFromDeDxCalibration_cfg.py new file mode 100644 index 0000000000000..70b9caacfd9c7 --- /dev/null +++ b/CondTools/SiStrip/test/SiStripApvGainFromDeDxCalibration_cfg.py @@ -0,0 +1,65 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("ICALIB") +process.source = cms.Source("EmptyIOVSource", + firstValue = cms.uint64(1), + lastValue = cms.uint64(1), + timetype = cms.string('runnumber'), + interval = cms.uint64(1) +) + +process.load('FWCore.MessageService.MessageLogger_cfi') +process.MessageLogger.cerr.enable = False +process.MessageLogger.SiStripApvGainFromDeDxCalibration=dict() +process.MessageLogger.cout = cms.untracked.PSet( + enable = cms.untracked.bool(True), + threshold = cms.untracked.string("DEBUG"), + default = cms.untracked.PSet(limit = cms.untracked.int32(0)), + FwkReport = cms.untracked.PSet(limit = cms.untracked.int32(-1), + reportEvery = cms.untracked.int32(1000) + ), + SiStripApvGainFromDeDxCalibration = cms.untracked.PSet( limit = cms.untracked.int32(-1)), + enableStatistics = cms.untracked.bool(True) + ) + + +process.load("Configuration.Geometry.GeometryExtended2024_cff") +process.load("Geometry.TrackerGeometryBuilder.trackerParameters_cfi") +process.TrackerTopologyEP = cms.ESProducer("TrackerTopologyEP") + +#Setup the SiSTripFedCabling and the SiStripDetCabling +process.load("CondCore.CondDB.CondDB_cfi") +process.CondDB.connect='frontier://FrontierProd/CMS_CONDITIONS' + +process.poolDBESSource = cms.ESSource('PoolDBESSource', + process.CondDB, + BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'), + toGet = cms.VPSet( cms.PSet(record = cms.string('DeDxCalibrationRcd'), + tag = cms.string('DeDxCalibration_HI_2024_prompt_v2') + ) + ) + ) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) +) + +process.PoolDBOutputService = cms.Service("PoolDBOutputService", + BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'), + DBParameters = cms.PSet( + authenticationPath = cms.untracked.string('/afs/cern.ch/cms/DB/conddb') + ), + timetype = cms.untracked.string('runnumber'), + connect = cms.string('sqlite_file:SiStripApvGainFromDeDxCalibration_HI_2024_prompt_v2.db'), + toPut = cms.VPSet(cms.PSet( + record = cms.string('SiStripApvGainRcd'), + tag = cms.string('SiStripApvGainFromDeDxCalibration_HI_2024_prompt_v2') + )) +) + +from CondTools.SiStrip.siStripApvGainFromDeDxCalibration_cfi import siStripApvGainFromDeDxCalibration +process.prod = siStripApvGainFromDeDxCalibration.clone( + file = cms.untracked.FileInPath('CalibTracker/SiStripCommon/data/SiStripDetInfo.dat'), + printDebug = cms.untracked.uint32(100) +) +process.p = cms.Path(process.prod) diff --git a/CondTools/SiStrip/test/SiStripChannelGainFromDBMiscalibrator_cfg.py b/CondTools/SiStrip/test/SiStripChannelGainFromDBMiscalibrator_cfg.py index 66e8bf63752c1..b1b06b707fb70 100644 --- a/CondTools/SiStrip/test/SiStripChannelGainFromDBMiscalibrator_cfg.py +++ b/CondTools/SiStrip/test/SiStripChannelGainFromDBMiscalibrator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/CondTools/SiStrip/test/SiStripNoiseFromDBMiscalibrator_cfg.py b/CondTools/SiStrip/test/SiStripNoiseFromDBMiscalibrator_cfg.py index ddbd9e5c3c33b..d576ae21d2ce4 100644 --- a/CondTools/SiStrip/test/SiStripNoiseFromDBMiscalibrator_cfg.py +++ b/CondTools/SiStrip/test/SiStripNoiseFromDBMiscalibrator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import copy diff --git a/CondTools/SiStrip/test/SiStripNoisesAndBadCompsChecker_cfg.py b/CondTools/SiStrip/test/SiStripNoisesAndBadCompsChecker_cfg.py index e71f29c1dbded..340bf468f6315 100644 --- a/CondTools/SiStrip/test/SiStripNoisesAndBadCompsChecker_cfg.py +++ b/CondTools/SiStrip/test/SiStripNoisesAndBadCompsChecker_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import copy diff --git a/Configuration/AlCa/python/autoAlca.py b/Configuration/AlCa/python/autoAlca.py index 3e5441087ffea..599bfc1a99a84 100644 --- a/Configuration/AlCa/python/autoAlca.py +++ b/Configuration/AlCa/python/autoAlca.py @@ -16,6 +16,7 @@ "ExpressCosmics" : "SiStripPCLHistos+SiStripCalZeroBias+TkAlCosmics0T+SiPixelCalZeroBias+SiPixelCalCosmics+SiStripCalCosmics", "HcalNZS" : "HcalCalMinBias", "HLTPhysics" : "TkAlMinBias+TkAlV0s", + "HLTMonitor" : "TkAlHLTTracks+TkAlHLTTracksZMuMu", "JetHT" : "HcalCalIsoTrkProducerFilter+TkAlJetHT", "JetMET" : "HcalCalIsoTrkProducerFilter+TkAlJetHT+HcalCalNoise", "MinimumBias" : "SiStripCalZeroBias+SiStripCalMinBias+TkAlMinBias", @@ -63,6 +64,7 @@ def buildList(pdList, matrix): 'PromptCalibProdSiPixelAli', # AlignmentProducerAsAnalyzer, MillePedeFileConverter 'PromptCalibProdSiPixelAliHG', # AlignmentProducerAsAnalyzer, MillePedeFileConverter 'PromptCalibProdSiPixelAliHGComb', # AlignmentProducerAsAnalyzer, MillePedeFileConverter + 'PromptCalibProdSiPixelAliHLTHGC', # AlignmentProducerAsAnalyzer, MillePedeFileConverter 'PromptCalibProdBeamSpotHP', # AlcaBeamSpotProducer 'PromptCalibProdBeamSpotHPLowPU', # AlcaBeamSpotProducer ] diff --git a/Configuration/AlCa/python/autoCond.py b/Configuration/AlCa/python/autoCond.py index 857dea178e4d9..240a1473c7ce5 100644 --- a/Configuration/AlCa/python/autoCond.py +++ b/Configuration/AlCa/python/autoCond.py @@ -31,14 +31,14 @@ 'run2_data_promptlike_hi' : '140X_dataRun2_PromptLike_HI_v1', # GlobalTag with fixed snapshot time for Run2 HLT RelVals: customizations to run with fixed L1 Menu 'run2_hlt_relval' : '140X_dataRun2_HLT_relval_v1', - # GlobalTag for Run3 HLT: identical the online GT 140X_dataRun3_HLT_v3 with snapshot at 2024-06-13 14:22:43 (UTC) - 'run3_hlt' : '141X_dataRun3_HLT_frozen_v1', - # GlobalTag for Run3 data relvals (express GT): same as 141X_dataRun3_Express_v2 but with snapshot at 2024-09-12 10:35:04 (UTC) - 'run3_data_express' : '141X_dataRun3_Express_frozen_v3', - # GlobalTag for Run3 data relvals (prompt GT): same as 141X_dataRun3_Prompt_v3 but with snapshot at 2024-09-12 11:03:32 (UTC) - 'run3_data_prompt' : '141X_dataRun3_Prompt_frozen_v3', + # GlobalTag for Run3 HLT: identical the online GT 140X_dataRun3_HLT_v4 with snapshot at 2024-11-28 13:17:51 (UTC) + 'run3_hlt' : '141X_dataRun3_HLT_frozen_v2', + # GlobalTag for Run3 data relvals (express GT): same as 141X_dataRun3_Express_v4 but with snapshot at 2024-11-28 13:23:29 (UTC) + 'run3_data_express' : '141X_dataRun3_Express_frozen_v4', + # GlobalTag for Run3 data relvals (prompt GT): same as 141X_dataRun3_Prompt_v4 but with snapshot at 2024-11-28 13:26:44 (UTC) + 'run3_data_prompt' : '141X_dataRun3_Prompt_frozen_v4', # GlobalTag for Run3 offline data reprocessing - snapshot at 2024-11-12 07:39:42 (UTC) - 'run3_data' : '141X_dataRun3_v4', + 'run3_data' : '141X_dataRun3_v5', # GlobalTag for Run3 offline data reprocessing with Prompt GT, currently for 2022FG - snapshot at 2024-02-12 12:00:00 (UTC) 'run3_data_PromptAnalysis' : '140X_dataRun3_PromptAnalysis_v2', # GlobalTag for MC production with perfectly aligned and calibrated detector for Phase1 2017 (and 0,0,~0-centred beamspot) @@ -98,13 +98,13 @@ # GlobalTag for MC production (cosmics) with perfectly aligned and calibrated detector for Phase1 2024, Strip tracker in DECO mode 'phase1_2024_cosmics_design' : '140X_mcRun3_2024cosmics_design_deco_v11', # GlobalTag for MC production with realistic conditions for Phase1 2024 detector for Heavy Ion - 'phase1_2024_realistic_hi' : '141X_mcRun3_2024_realistic_HI_v8', + 'phase1_2024_realistic_hi' : '141X_mcRun3_2024_realistic_HI_v13', # GlobalTag for MC production with realistic conditions for Phase1 2024 detector for ppRef5TeV - 'phase1_2024_realistic_ppRef5TeV' : '141X_mcRun3_2024_realistic_ppRef5TeV_v5', + 'phase1_2024_realistic_ppRef5TeV' : '141X_mcRun3_2024_realistic_ppRef5TeV_v7', # GlobalTag for MC production with perfectly aligned and calibrated detector for Phase1 2025 'phase1_2025_design' : '140X_mcRun3_2024_design_v11', # GlobalTag for MC production with realistic conditions for Phase1 2024 - 'phase1_2025_realistic' : '142X_mcRun3_2025_realistic_v1', + 'phase1_2025_realistic' : '142X_mcRun3_2025_realistic_v2', # GlobalTag for MC production with realistic conditions for Phase2 'phase2_realistic' : '141X_mcRun4_realistic_v3' } diff --git a/Configuration/AlCa/python/autoPCL.py b/Configuration/AlCa/python/autoPCL.py index b212d5494c1a9..382330f33dd8f 100644 --- a/Configuration/AlCa/python/autoPCL.py +++ b/Configuration/AlCa/python/autoPCL.py @@ -13,6 +13,7 @@ 'PromptCalibProdSiPixelAli' : 'SiPixelAli', 'PromptCalibProdSiPixelAliHG' : 'SiPixelAliHG', 'PromptCalibProdSiPixelAliHGComb': 'SiPixelAliHGCombined', + 'PromptCalibProdSiPixelAliHLTHGC': 'SiPixelAliHLTHGCombined', 'PromptCalibProdSiPixel' : 'SiPixelQuality', 'PromptCalibProdSiPixelLA' : 'SiPixelLA', 'PromptCalibProdSiPixelLAMCS' : 'SiPixelLAMCS', diff --git a/Configuration/DataProcessing/python/Impl/AlCa.py b/Configuration/DataProcessing/python/Impl/AlCa.py index f460660712f54..f1e9d72e96ad5 100644 --- a/Configuration/DataProcessing/python/Impl/AlCa.py +++ b/Configuration/DataProcessing/python/Impl/AlCa.py @@ -5,7 +5,6 @@ Scenario supporting proton collisions """ -from __future__ import print_function import os import sys diff --git a/Configuration/DataProcessing/python/Impl/AlCaNano.py b/Configuration/DataProcessing/python/Impl/AlCaNano.py index 883e74f253db9..4bd92c2bed64c 100644 --- a/Configuration/DataProcessing/python/Impl/AlCaNano.py +++ b/Configuration/DataProcessing/python/Impl/AlCaNano.py @@ -5,7 +5,6 @@ Scenario supporting proton collisions for AlCa needs when ALCANANO is produced """ -from __future__ import print_function import os import sys diff --git a/Configuration/DataProcessing/python/Impl/AlCaPPS_Run3.py b/Configuration/DataProcessing/python/Impl/AlCaPPS_Run3.py index f7ce53355fef8..8f7b8ebd078e1 100644 --- a/Configuration/DataProcessing/python/Impl/AlCaPPS_Run3.py +++ b/Configuration/DataProcessing/python/Impl/AlCaPPS_Run3.py @@ -5,7 +5,6 @@ Scenario supporting proton collisions for AlCa needs for the CT-PPS detector """ -from __future__ import print_function import os import sys diff --git a/Configuration/DataProcessing/python/Impl/hltScouting.py b/Configuration/DataProcessing/python/Impl/hltScouting.py index 4734e5b8caa14..44dcc38ce8dab 100644 --- a/Configuration/DataProcessing/python/Impl/hltScouting.py +++ b/Configuration/DataProcessing/python/Impl/hltScouting.py @@ -6,7 +6,6 @@ """ -from __future__ import print_function import os import sys diff --git a/Configuration/DataProcessing/python/Reco.py b/Configuration/DataProcessing/python/Reco.py index f5c199c6ff344..9fa987c34b5de 100644 --- a/Configuration/DataProcessing/python/Reco.py +++ b/Configuration/DataProcessing/python/Reco.py @@ -5,7 +5,6 @@ Scenario supporting proton collisions """ -from __future__ import print_function import os import sys diff --git a/Configuration/DataProcessing/python/RecoTLR.py b/Configuration/DataProcessing/python/RecoTLR.py index d78af0520ea68..9d85cfea56cb1 100644 --- a/Configuration/DataProcessing/python/RecoTLR.py +++ b/Configuration/DataProcessing/python/RecoTLR.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms ############################################################################## diff --git a/Configuration/DataProcessing/test/RunAlcaHarvesting.py b/Configuration/DataProcessing/test/RunAlcaHarvesting.py index 4695ad58df987..b909742b2e063 100644 --- a/Configuration/DataProcessing/test/RunAlcaHarvesting.py +++ b/Configuration/DataProcessing/test/RunAlcaHarvesting.py @@ -6,7 +6,6 @@ testing with a few input files etc from the command line """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/DataProcessing/test/RunAlcaSkimming.py b/Configuration/DataProcessing/test/RunAlcaSkimming.py index 0670e5b2b2125..b84bd6862df62 100644 --- a/Configuration/DataProcessing/test/RunAlcaSkimming.py +++ b/Configuration/DataProcessing/test/RunAlcaSkimming.py @@ -6,7 +6,6 @@ testing with a few input files etc from the command line """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/DataProcessing/test/RunDQMHarvesting.py b/Configuration/DataProcessing/test/RunDQMHarvesting.py index a74f5c6b57621..a17bfe335db84 100644 --- a/Configuration/DataProcessing/test/RunDQMHarvesting.py +++ b/Configuration/DataProcessing/test/RunDQMHarvesting.py @@ -6,7 +6,6 @@ testing with a few input files etc from the command line """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/DataProcessing/test/RunExpressProcessing.py b/Configuration/DataProcessing/test/RunExpressProcessing.py index 6672301909dfa..90d1d0609799a 100644 --- a/Configuration/DataProcessing/test/RunExpressProcessing.py +++ b/Configuration/DataProcessing/test/RunExpressProcessing.py @@ -6,7 +6,6 @@ it into cmsRun for testing with a few input files etc from the command line """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/DataProcessing/test/RunMerge.py b/Configuration/DataProcessing/test/RunMerge.py index 3ef6f7473fb46..a78e7e18471cb 100644 --- a/Configuration/DataProcessing/test/RunMerge.py +++ b/Configuration/DataProcessing/test/RunMerge.py @@ -5,7 +5,6 @@ Test/Debugging harness for the merge configuration builder """ -from __future__ import print_function diff --git a/Configuration/DataProcessing/test/RunPromptReco.py b/Configuration/DataProcessing/test/RunPromptReco.py index 919c00a1a4f1e..ba6d81a9f1a58 100644 --- a/Configuration/DataProcessing/test/RunPromptReco.py +++ b/Configuration/DataProcessing/test/RunPromptReco.py @@ -4,7 +4,6 @@ Test wrapper to generate a reco config and actually push it into cmsRun for testing with a few input files etc from the command line """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/DataProcessing/test/RunRepack.py b/Configuration/DataProcessing/test/RunRepack.py index dac4c8c725a86..677adaa73ac1e 100644 --- a/Configuration/DataProcessing/test/RunRepack.py +++ b/Configuration/DataProcessing/test/RunRepack.py @@ -5,7 +5,6 @@ Test/Debugging harness for the repack configuration builder """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/DataProcessing/test/RunVisualizationProcessing.py b/Configuration/DataProcessing/test/RunVisualizationProcessing.py index 46017dab3721f..60006a906182f 100644 --- a/Configuration/DataProcessing/test/RunVisualizationProcessing.py +++ b/Configuration/DataProcessing/test/RunVisualizationProcessing.py @@ -6,7 +6,6 @@ it into cmsRun for testing with a few input files etc from the command line """ -from __future__ import print_function import sys import getopt diff --git a/Configuration/Eras/python/Era_Run3_2025_OXY_cff.py b/Configuration/Eras/python/Era_Run3_2025_OXY_cff.py new file mode 100644 index 0000000000000..3b17e6b0c8560 --- /dev/null +++ b/Configuration/Eras/python/Era_Run3_2025_OXY_cff.py @@ -0,0 +1,6 @@ +import FWCore.ParameterSet.Config as cms + +from Configuration.Eras.Era_Run3_2025_UPC_cff import Run3_2025_UPC +from Configuration.Eras.Modifier_run3_oxygen_cff import run3_oxygen + +Run3_2025_OXY = cms.ModifierChain(Run3_2025_UPC, run3_oxygen) diff --git a/Configuration/Eras/python/Era_Run3_2025_UPC_cff.py b/Configuration/Eras/python/Era_Run3_2025_UPC_cff.py new file mode 100644 index 0000000000000..f70a8749df7c5 --- /dev/null +++ b/Configuration/Eras/python/Era_Run3_2025_UPC_cff.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +from Configuration.Eras.Era_Run3_2025_cff import Run3_2025 +from Configuration.ProcessModifiers.egamma_lowPt_exclusive_cff import egamma_lowPt_exclusive +from Configuration.Eras.Modifier_highBetaStar_cff import highBetaStar +from Configuration.Eras.Modifier_run3_upc_cff import run3_upc + +Run3_2025_UPC = cms.ModifierChain(Run3_2025, egamma_lowPt_exclusive, highBetaStar, run3_upc) diff --git a/Configuration/Eras/python/Modifier_run3_oxygen_cff.py b/Configuration/Eras/python/Modifier_run3_oxygen_cff.py new file mode 100644 index 0000000000000..0483232082616 --- /dev/null +++ b/Configuration/Eras/python/Modifier_run3_oxygen_cff.py @@ -0,0 +1,3 @@ +import FWCore.ParameterSet.Config as cms + +run3_oxygen =cms.Modifier() diff --git a/Configuration/EventContent/python/AlCaRecoOutput_cff.py b/Configuration/EventContent/python/AlCaRecoOutput_cff.py index 4f1eaa6cff3dc..9cfeb2141aa34 100644 --- a/Configuration/EventContent/python/AlCaRecoOutput_cff.py +++ b/Configuration/EventContent/python/AlCaRecoOutput_cff.py @@ -43,6 +43,9 @@ from Alignment.CommonAlignmentProducer.ALCARECOTkAlJetHT_Output_cff import * # AlCaReco for track based alignment using V0s from Alignment.CommonAlignmentProducer.ALCARECOTkAlV0s_Output_cff import * +# AlCaReco for track based alignment using HLT tracks +from Alignment.CommonAlignmentProducer.ALCARECOTkAlHLTTracks_Output_cff import * +from Alignment.CommonAlignmentProducer.ALCARECOTkAlHLTTracksZMuMu_Output_cff import * # AlCaReco for pixel calibration using muons from Calibration.TkAlCaRecoProducers.ALCARECOSiPixelCalSingleMuon_Output_cff import * @@ -173,6 +176,7 @@ from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAli_Output_cff import * from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAliHG_Output_cff import * from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAliHGCombined_Output_cff import * +from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAliHLTHGCombined_Output_cff import * from CalibTracker.SiPixelQuality.ALCARECOPromptCalibProdSiPixel_Output_cff import * diff --git a/Configuration/EventContent/python/EventContent_cff.py b/Configuration/EventContent/python/EventContent_cff.py index 396b424cd3da2..ab9643bf38e48 100644 --- a/Configuration/EventContent/python/EventContent_cff.py +++ b/Configuration/EventContent/python/EventContent_cff.py @@ -670,6 +670,12 @@ def SwapKeepAndDrop(l): FEVTDEBUGHLTEventContent.outputCommands.append('keep *_*_StripDigiSimLink_*') FEVTDEBUGHLTEventContent.outputCommands.append('keep *_*_PixelDigiSimLink_*') +from Configuration.ProcessModifiers.hltClusterSplitting_cff import hltClusterSplitting +hltClusterSplitting.toModify(FEVTDEBUGHLTEventContent, + outputCommands = FEVTDEBUGHLTEventContent.outputCommands+[ + 'keep *_hltPixelVertices_*_*' + ]) + approxSiStripClusters.toModify(FEVTDEBUGHLTEventContent, outputCommands = FEVTDEBUGHLTEventContent.outputCommands+[ 'keep *_hltSiStripClusters2ApproxClusters_*_*', @@ -682,6 +688,8 @@ def SwapKeepAndDrop(l): 'keep *_hltPhase2PixelTracks_*_*', 'keep *_hltPhase2PixelVertices_*_*', 'keep *_hltGeneralTracks_*_*', + 'keep *_hltInitialStepTrackSelectionHighPurity_*_*', + 'keep *_hltHighPtTripletStepTrackSelectionHighPurity_*_*', 'keep *_hltOfflinePrimaryVertices_*_*', 'keep *_hltHGCalRecHit_*_*' ]) @@ -692,7 +700,22 @@ def SwapKeepAndDrop(l): ]) phase2_muon.toModify(FEVTDEBUGHLTEventContent, - outputCommands = FEVTDEBUGHLTEventContent.outputCommands + ['keep recoMuons_muons1stStep_*_*']) + outputCommands = FEVTDEBUGHLTEventContent.outputCommands + [ + 'keep recoMuons_muons1stStep_*_*', + 'keep *_hltL2MuonSeedsFromL1TkMuon_*_*', + 'keep *_hltL2MuonsFromL1TkMuon_*_*', + 'keep *_hltIter2Phase2L3FromL1TkMuonMerged_*_*', + 'keep *_hltPhase2L3OIMuonTrackSelectionHighPurity_*_*', + 'keep *_hltPhase2L3MuonMerged_*_*', + 'keep *_hltPhase2L3GlbMuon_*_*', + 'keep *_hltPhase2L3MuonsNoID_*_*', + 'keep *_hltPhase2L3Muons_*_*']) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +(phase2_muon & phase2L2AndL3Muons).toModify(FEVTDEBUGHLTEventContent, + outputCommands = FEVTDEBUGHLTEventContent.outputCommands + [ + 'keep *_hltPhase2L3MuonFilter_*_*' + ]) phase2_hgcal.toModify(FEVTDEBUGHLTEventContent, outputCommands = FEVTDEBUGHLTEventContent.outputCommands + TICL_FEVTHLT.outputCommands) diff --git a/Configuration/EventContent/test/fragments.py b/Configuration/EventContent/test/fragments.py index 37b7ca025bd18..985e00b0a18d7 100644 --- a/Configuration/EventContent/test/fragments.py +++ b/Configuration/EventContent/test/fragments.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os import pickle diff --git a/Configuration/EventContent/test/makeSkim.py b/Configuration/EventContent/test/makeSkim.py index 3af507a3e739c..e2beffa40549d 100644 --- a/Configuration/EventContent/test/makeSkim.py +++ b/Configuration/EventContent/test/makeSkim.py @@ -4,7 +4,6 @@ cmsRun Configuration file that skims the data from the reconstructed events. It is very general and allows to set in the metaconfig the parameters for the skimming. ''' -from __future__ import print_function import FWCore.ParameterSet.Config as cms # The meta configuration: 3 parameters diff --git a/Configuration/EventContent/test/makeSkimDriver.py b/Configuration/EventContent/test/makeSkimDriver.py index fc73c8077f43d..b83662f34fad6 100755 --- a/Configuration/EventContent/test/makeSkimDriver.py +++ b/Configuration/EventContent/test/makeSkimDriver.py @@ -3,7 +3,6 @@ r''' The Wrapper for makeSkim.py, the general config for cmsRun. ''' -from __future__ import print_function import optparse import os diff --git a/Configuration/Geometry/README.md b/Configuration/Geometry/README.md index 1e8c40f1a6112..3d01738bcb186 100644 --- a/Configuration/Geometry/README.md +++ b/Configuration/Geometry/README.md @@ -34,6 +34,7 @@ Muon system: * M1: 2021 baseline with additional chambers in GE21 and iRPC31/41 * M2: 2023 GE21 shifted in position * M3: 2024 with additional chambers in GE21 and iRPC31 +* M4: 2025 with additional chambers in GE21 and iRPC PPS: * P7: 2021 baseline (after removing overlaps and using common materials whenever possible) @@ -42,29 +43,38 @@ The script also handles the common and forward elements of the geometry: * O4: as O6, but with zero material * O5: as O6, but with trackermaterial removed (they are in T5, T6, T7, T8) * O6: 2021 baseline +* O7: 2021 with added material for muon shield +* O8: as O4 with added material for muon shield +* O9: as O5 with added material for muon shield * F1: 2021 baseline * F2: same as F1 with modified file zdc.xmlfrom ZDC group * F3: same as F2 with added simulti geometry for RPD Several detector combinations have been generated: -* 2021 = T3+C1+M1+P7+O6+F1 +* 2021 = T3+C3+M1+P7+O6+F1 * 2021ZeroMaterial = T4+C1+M1+P7+O4+F1 * 2021FlatMinus05Percent = T5+C1+M1+P7+O5+F1 * 2021FlatMinus10Percent = T6+C1+M1+P7+O5+F1 * 2021FlatPlus05Percent = T7+C1+M1+P7+O5+F1 * 2021FlatPlus10Percent = T8+C1+M1+P7+O5+F1 -* 2023 = T3+C1+M2+P7+O6+F3 +* 2023 = T3+C2+M2+P7+O6+F3 * 2023ZeroMaterial = T4+C1+M2+P7+O4+F2 * 2023FlatMinus05Percent = T5+C1+M2+P7+O5+F2 * 2023FlatMinus10Percent = T6+C1+M2+P7+O5+F2 * 2023FlatPlus05Percent = T7+C1+M2+P7+O5+F2 * 2023FlatPlus10Percent = T8+C1+M2+P7+O5+F2 -* 2024 = T3+C1+M3+P7+O6+F3 -* 2024ZeroMaterial = T4+C1+M3+P7+O4+F2 -* 2024FlatMinus05Percent = T5+C1+M3+P7+O5+F2 -* 2024FlatMinus10Percent = T6+C1+M3+P7+O5+F2 -* 2024FlatPlus05Percent = T7+C1+M3+P7+O5+F2 -* 2024FlatPlus10Percent = T8+C1+M3+P7+O5+F2 +* 2024 = T3+C2+M3+P7+O6+F3 +* 2024ZeroMaterial = T4+C2+M3+P7+O4+F2 +* 2024FlatMinus05Percent = T5+C2+M3+P7+O5+F2 +* 2024FlatMinus10Percent = T6+C2+M3+P7+O5+F2 +* 2024FlatPlus05Percent = T7+C2+M3+P7+O5+F2 +* 2024FlatPlus10Percent = T8+C2+M3+P7+O5+F2 +* 2025 = T3+C2+M4+P7+O7+F3 +* 2025ZeroMaterial = T4+C2+M4+P7+O8+F3 +* 2025FlatMinus05Percent = T5+C2+M4+P7+O9+F3 +* 2025FlatMinus10Percent = T6+C2+M4+P7+O9+F3 +* 2025FlatPlus05Percent = T7+C2+M4+P7+O9+F3 +* 2025FlatPlus10Percent = T8+C2+M4+P7+O9+F3 # Phase 2 Geometries @@ -106,6 +116,7 @@ Calorimeters: * C22: HGCal (v18 version of HGCal geometry as in C18 with calibration cells, nonzero cssette retraction, correct mousebite, guard ring, proper cell size) + Phase2 HCAL and EB (used in Run4D104) * C23: HGCal (same as the v18 version which is in C22 but without internal cells in the Geant4 geometry defintiion) + Phase2 HCAL and EB (used in Run4D106) * C24: HGCal (v18 version of HGCal geometry as in C122 but turning off all dead areas and gaps) + Phase2 HCAL and EB (used in Run4D109) +* C25: sane as C18 but changing ebalgo.xml to make it more conformant with standard Muon system: * M4: Phase2 muon system for TDR w/ GE2/1, ME0, RE3/1, RE4/1 (incl. granularity in ME0, staggered GE2/1), 96 iRPC strips, no overlaps, MB4Shields @@ -115,6 +126,7 @@ Muon system: * M9: same as M8 with GE0 replacing ME0 * M10: same as M9 but with a realistic support structure for GE0, Shield structure modified in muonYoke * M11: same as M10 but with a corrected eta partition sizes for GE21 +* M12: same as M11 but removing overlaps in yoke, MB3, GE0 + adding DT shield Fast Timing system: * I10: Fast Timing detector (LYSO barrel (bars along phi flat), silicon endcap), w/ passive materials, ETL in position defined in O4, material adjustments @@ -133,6 +145,7 @@ The script also handles the common and forward elements of the geometry: * O7: same as O6 with changes needed for new defintion of calorimeter boundaries * O8: same as O7 with changes needed for a newer definition of calorimeter boundaries * O9: same as O8 with changes needed to support the additional notch in ETL +*O10: same as O9 with changes needed to support the shields for DT * F2: modifications needed to accommodate detailed cavern, ZDC description is removed. * F3: same as F2 but changes due to HFNose @@ -141,6 +154,7 @@ The script also handles the common and forward elements of the geometry: * F6: same as F4 with modifications needed for BRM and forward shield * F7: same as F6 with modifications needed for HFNose * F8: same as F6 or F7 without BRM +* F9: same as F8 after removing overlap in rotated shield Several detector combinations have been generated: * D95 = T31+C17+M10+I16+O9+F8 @@ -162,4 +176,6 @@ Several detector combinations have been generated: * D112 = T37+C24+M11+I17+O9+F8 * D113 = T38+C24+M11+I17+O9+F8 * D114 = T39+C19+M11+I17+O9+F8 +* D115 = T35+C20+M11+I17+O9+F8 +* D116 = T35+C25+M12+I17+O10+F9 diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus05PercentReco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus05PercentReco_cff.py new file mode 100644 index 0000000000000..4c9df4c5c719d --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus05PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2025FlatMinus05Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus05Percent_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus05Percent_cff.py new file mode 100644 index 0000000000000..381ec0e41dab8 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus05Percent_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus05Percent.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus10PercentReco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus10PercentReco_cff.py new file mode 100644 index 0000000000000..0040bb4b6d703 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus10PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2025FlatMinus10Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus10Percent_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus10Percent_cff.py new file mode 100644 index 0000000000000..f50b57b0f6800 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatMinus10Percent_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus10Percent.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus05PercentReco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus05PercentReco_cff.py new file mode 100644 index 0000000000000..37e172981bedd --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus05PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2025FlatPlus05Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus05Percent_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus05Percent_cff.py new file mode 100644 index 0000000000000..eca920315519f --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus05Percent_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus05Percent.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus10PercentReco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus10PercentReco_cff.py new file mode 100644 index 0000000000000..82cf508475512 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus10PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2025FlatPlus10Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus10Percent_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus10Percent_cff.py new file mode 100644 index 0000000000000..6c50891d68585 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025FlatPlus10Percent_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus10Percent.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025Reco_cff.py new file mode 100644 index 0000000000000..17b67589ad895 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025Reco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2025_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025ZeroMaterialReco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025ZeroMaterialReco_cff.py new file mode 100644 index 0000000000000..ce4149f1cb67a --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025ZeroMaterialReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2025ZeroMaterial_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025ZeroMaterial_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025ZeroMaterial_cff.py new file mode 100644 index 0000000000000..2096a8817b3a4 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025ZeroMaterial_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025ZeroMaterial.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2025_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2025_cff.py new file mode 100644 index 0000000000000..89656ffe72ac9 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2025_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D116Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D116Reco_cff.py new file mode 100644 index 0000000000000..422575b532001 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D116Reco_cff.py @@ -0,0 +1,61 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtendedRun4D116_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * +trackerGeometry.applyAlignment = True + +# calo +from Geometry.CaloEventSetup.HGCalTopology_cfi import * +from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import * +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "TOWER", + "HGCalEESensitive", + "HGCalHESiliconSensitive", + "HGCalHEScintillatorSensitive" + ) +) +from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.ForwardGeometry.ZdcGeometry_cfi import * + +# timing +from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import * +from Geometry.MTDGeometryBuilder.mtdParameters_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * +from Geometry.MTDNumberingBuilder.mtdTopology_cfi import * +from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import * +from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import * +mtdGeometry.applyAlignment = False + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D116_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D116_cff.py new file mode 100644 index 0000000000000..c49cf2870330f --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D116_cff.py @@ -0,0 +1,17 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D116.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import * +from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatMinus05PercentReco_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatMinus05PercentReco_cff.py new file mode 100644 index 0000000000000..2e824d8c518bd --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatMinus05PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2025FlatMinus05Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatMinus05Percent_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatMinus05Percent_cff.py new file mode 100644 index 0000000000000..e8d273dbbec31 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatMinus05Percent_cff.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2025FlatMinus05PercentXML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatMinus10PercentReco_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatMinus10PercentReco_cff.py new file mode 100644 index 0000000000000..8f9c170d62104 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatMinus10PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2025FlatMinus10Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatMinus10Percent_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatMinus10Percent_cff.py new file mode 100644 index 0000000000000..13031c902ec02 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatMinus10Percent_cff.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2025FlatMinus10PercentXML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatPlus05PercentReco_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatPlus05PercentReco_cff.py new file mode 100644 index 0000000000000..047fb7a82fbc5 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatPlus05PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2025FlatPlus05Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatPlus05Percent_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatPlus05Percent_cff.py new file mode 100644 index 0000000000000..418b008cbd967 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatPlus05Percent_cff.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2025FlatPlus05PercentXML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatPlus10PercentReco_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatPlus10PercentReco_cff.py new file mode 100644 index 0000000000000..0766fd81041bd --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatPlus10PercentReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2025FlatPlus10Percent_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryExtended2025FlatPlus10Percent_cff.py b/Configuration/Geometry/python/GeometryExtended2025FlatPlus10Percent_cff.py new file mode 100644 index 0000000000000..4e861f737f7e9 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025FlatPlus10Percent_cff.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2025FlatPlus10PercentXML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryExtended2025Reco_cff.py b/Configuration/Geometry/python/GeometryExtended2025Reco_cff.py new file mode 100644 index 0000000000000..c9347746fe067 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025Reco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2025_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryExtended2025ZeroMaterialReco_cff.py b/Configuration/Geometry/python/GeometryExtended2025ZeroMaterialReco_cff.py new file mode 100644 index 0000000000000..cbbcb8d8de7af --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025ZeroMaterialReco_cff.py @@ -0,0 +1,51 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2025ZeroMaterial_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * + +# calo +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "EcalEndcap", + "EcalPreshower", + "TOWER", + ) +) +from Geometry.EcalAlgo.EcalGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.ForwardGeometry_cfi import * + +# pps + + diff --git a/Configuration/Geometry/python/GeometryExtended2025ZeroMaterial_cff.py b/Configuration/Geometry/python/GeometryExtended2025ZeroMaterial_cff.py new file mode 100644 index 0000000000000..63e0dd7df1b2f --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025ZeroMaterial_cff.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2025ZeroMaterialXML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryExtended2025_cff.py b/Configuration/Geometry/python/GeometryExtended2025_cff.py new file mode 100644 index 0000000000000..f87744a11bdf8 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2025_cff.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2025XML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * + diff --git a/Configuration/Geometry/python/GeometryExtendedRun4D116Reco_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D116Reco_cff.py new file mode 100644 index 0000000000000..48d3b4754c934 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D116Reco_cff.py @@ -0,0 +1,61 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtendedRun4D116_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * +trackerGeometry.applyAlignment = True + +# calo +from Geometry.CaloEventSetup.HGCalTopology_cfi import * +from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import * +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "TOWER", + "HGCalEESensitive", + "HGCalHESiliconSensitive", + "HGCalHEScintillatorSensitive" + ) +) +from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.ForwardGeometry.ZdcGeometry_cfi import * + +# timing +from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import * +from Geometry.MTDGeometryBuilder.mtdParameters_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * +from Geometry.MTDNumberingBuilder.mtdTopology_cfi import * +from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import * +from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import * +mtdGeometry.applyAlignment = False + diff --git a/Configuration/Geometry/python/GeometryExtendedRun4D116_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D116_cff.py new file mode 100644 index 0000000000000..ccf526aad9c86 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D116_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometryRun4D116XML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import * +from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * diff --git a/Configuration/Geometry/python/GeometrySLHCSimDB_cff.py b/Configuration/Geometry/python/GeometrySLHCSimDB_cff.py index a92749dfadcc4..ace8ba61d5c6a 100644 --- a/Configuration/Geometry/python/GeometrySLHCSimDB_cff.py +++ b/Configuration/Geometry/python/GeometrySLHCSimDB_cff.py @@ -5,7 +5,7 @@ # # Ideal geometry, needed for simulation from GeometryReaders.XMLIdealGeometryESSource.cmsGeometryDB_cff import * -from Geometry.TrackerNumberingBuilder.trackerNumbering2026GeometryDB_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometryDB_cfi import * from Geometry.EcalCommonData.ecalSimulationParameters_cff import * from Geometry.HcalCommonData.hcalSimulationParameters_cff import * from Geometry.HcalCommonData.hcalDDDSimConstants_cfi import * diff --git a/Configuration/Geometry/python/GeometrySLHCSimIdeal_cff.py b/Configuration/Geometry/python/GeometrySLHCSimIdeal_cff.py index 741439917b675..c88f2e32ee1ca 100644 --- a/Configuration/Geometry/python/GeometrySLHCSimIdeal_cff.py +++ b/Configuration/Geometry/python/GeometrySLHCSimIdeal_cff.py @@ -2,4 +2,4 @@ # Ideal geometry, needed for simulation from SLHCUpgradeSimulations.Geometry.Phase1_R30F12_cmsSimIdealGeometryXML_cff import * -from Geometry.TrackerNumberingBuilder.trackerNumbering2026Geometry_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi import * diff --git a/Configuration/Geometry/python/dependencies.py b/Configuration/Geometry/python/dependencies.py index 7ed3e0a09b8f8..1fabb1afe77dd 100644 --- a/Configuration/Geometry/python/dependencies.py +++ b/Configuration/Geometry/python/dependencies.py @@ -1,2 +1,2 @@ -# this file exists to enforce dependencies for the generate2026Geometry unit test +# this file exists to enforce dependencies for the generateRun4Geometry unit test from Configuration.StandardSequences.GeometryConf import GeometryConf diff --git a/Configuration/Geometry/python/dict2021Geometry.py b/Configuration/Geometry/python/dict2021Geometry.py index d829d79dd405c..7ae42b78fb6fd 100644 --- a/Configuration/Geometry/python/dict2021Geometry.py +++ b/Configuration/Geometry/python/dict2021Geometry.py @@ -87,6 +87,89 @@ ], "era" : "run3_common, stage2L1Trigger_2021", }, + "O7" : { + 1 : [ + 'Geometry/CMSCommonData/data/materials/2021/v4/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + ], + 5 : [ + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ], + "era" : "run3_common, stage2L1Trigger_2021", + }, + "O8" : { + 1 : [ + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + ], + 5 : [ + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ], + "era" : "run3_common, stage2L1Trigger_2021", + }, + "O9" : { + 1 : [ + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + ], + 5 : [ + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ], + "era" : "run3_common, stage2L1Trigger_2021", + }, } trackerDict = { @@ -1637,7 +1720,7 @@ 'Geometry/MuonCommonData/data/rpcf/2024/v1/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2024/v1/gem21.xml', + 'Geometry/MuonCommonData/data/gem21/2024/v2/gem21.xml', 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', ], @@ -1676,13 +1759,13 @@ 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', - 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', - 'Geometry/MuonCommonData/data/rpcf/2024/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2024/v2/gem21.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', ], @@ -1940,13 +2023,19 @@ ("O5","T6","C1","M2","F2","P7") : "2023FlatMinus10Percent", ("O5","T7","C1","M2","F2","P7") : "2023FlatPlus05Percent", ("O5","T8","C1","M2","F2","P7") : "2023FlatPlus10Percent", - ("O6","T3","C2","M4","F3","P7") : "2024", - ("O4","T4","C2","M4","F2","P7") : "2024ZeroMaterial", - ("O5","T5","C2","M4","F2","P7") : "2024FlatMinus05Percent", - ("O5","T6","C2","M4","F2","P7") : "2024FlatMinus10Percent", - ("O5","T7","C2","M4","F2","P7") : "2024FlatPlus05Percent", - ("O5","T8","C2","M4","F2","P7") : "2024FlatPlus10Percent", + ("O6","T3","C2","M3","F3","P7") : "2024", + ("O4","T4","C2","M3","F2","P7") : "2024ZeroMaterial", + ("O5","T5","C2","M3","F2","P7") : "2024FlatMinus05Percent", + ("O5","T6","C2","M3","F2","P7") : "2024FlatMinus10Percent", + ("O5","T7","C2","M3","F2","P7") : "2024FlatPlus05Percent", + ("O5","T8","C2","M3","F2","P7") : "2024FlatPlus10Percent", + ("O7","T3","C2","M4","F3","P7") : "2025", + ("O8","T4","C2","M4","F3","P7") : "2025ZeroMaterial", + ("O9","T5","C2","M4","F3","P7") : "2025FlatMinus05Percent", + ("O9","T6","C2","M4","F3","P7") : "2025FlatMinus10Percent", + ("O9","T7","C2","M4","F3","P7") : "2025FlatPlus05Percent", + ("O9","T8","C2","M4","F3","P7") : "2025FlatPlus10Percent", } -deprecatedSubdets = set([ "T1", "T2", "O1", "O2", "O3", "P1", "P2", "P3", +deprecatedSubdets = set([ "T1", "T2", "O1", "O2", "O3", "P1", "P2", "P3", "P4", "P5", "P6" ]) diff --git a/Configuration/Geometry/python/dictRun4Geometry.py b/Configuration/Geometry/python/dictRun4Geometry.py index 649d52d65fe73..715994175f7ba 100644 --- a/Configuration/Geometry/python/dictRun4Geometry.py +++ b/Configuration/Geometry/python/dictRun4Geometry.py @@ -10,17 +10,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -37,17 +37,45 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + ], + 5 : [ + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ], + "era" : "phase2_common, phase2_trigger", + }, + "O10" : { + 1 : [ + 'Geometry/CMSCommonData/data/materials/2030/v1/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -510,9 +538,9 @@ "default" : 18, "C17" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -541,11 +569,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -584,9 +612,9 @@ }, "C18" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -615,11 +643,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -658,9 +686,9 @@ }, "C19" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -688,11 +716,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -731,9 +759,9 @@ }, "C20" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -767,12 +795,12 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/ForwardSimData/data/hfnosesens.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', 'Geometry/ForwardSimData/data/hfnoseProdCuts.xml', @@ -817,9 +845,9 @@ }, "C21" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -847,11 +875,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -890,9 +918,9 @@ }, "C22" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -922,11 +950,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -965,9 +993,9 @@ }, "C23" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -996,11 +1024,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -1039,9 +1067,9 @@ }, "C24" : { 1 : [ - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -1070,11 +1098,11 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', ], 4 : [ - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', ], @@ -1111,6 +1139,80 @@ ], "era" : "phase2_ecal, phase2_hcal, phase2_hgcal, hcalHardcodeConditions, phase2_hgcalV10, phase2_hgcalV11, phase2_hgcalV16, phase2_hfnose, phase2-hgcalV18", }, + "C25" : { + 1 : [ + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo/2021/v1/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/v2/hcalRecNumbering.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v17/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v17/hgcalCons.xml', + 'Geometry/HGCalCommonData/data/hgcalConsData/v17/hgcalConsData.xml', + ], + 3 : [ + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/v1/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', + 'Geometry/HGCalSimData/data/hgcsensv15.xml', + ], + 4 : [ + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', + ], + "sim" : [ + 'from Geometry.EcalCommonData.ecalSimulationParameters_cff import *', + 'from Geometry.HcalCommonData.hcalDDDSimConstants_cff import *', + 'from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import *', + 'from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import *' + ], + "reco" : [ + 'from Geometry.CaloEventSetup.HGCalTopology_cfi import *', + 'from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import *', + 'from Geometry.CaloEventSetup.CaloTopology_cfi import *', + 'from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import *', + 'CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder",', + ' SelectedCalos = cms.vstring("HCAL",', + ' "ZDC",', + ' "EcalBarrel",', + ' "TOWER",', + ' "HGCalEESensitive",', + ' "HGCalHESiliconSensitive",', + ' "HGCalHEScintillatorSensitive"', + ' )', + ')', + 'from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import *', + 'from Geometry.HcalEventSetup.HcalGeometry_cfi import *', + 'from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import *', + 'from Geometry.HcalEventSetup.CaloTowerTopology_cfi import *', + 'from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import *', + 'from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import *', + 'from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import *', + 'from Geometry.EcalMapping.EcalMapping_cfi import *', + 'from Geometry.EcalMapping.EcalMappingRecord_cfi import *', + ], + "era" : "phase2_ecal, phase2_hcal, phase2_hgcal, hcalHardcodeConditions, phase2_hgcalV10, phase2_hgcalV11, phase2_hgcalV16, phase2_hfnose", + }, } @@ -1126,16 +1228,16 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', ], 2 : [ 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', @@ -1145,12 +1247,12 @@ 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', ], 4 : [ - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', ], "sim" : [ 'from Geometry.MuonNumbering.muonGeometryConstants_cff import *', @@ -1173,16 +1275,16 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', ], 2 : [ 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', @@ -1192,12 +1294,59 @@ 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', ], 4 : [ - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', + ], + "sim" : [ + 'from Geometry.MuonNumbering.muonGeometryConstants_cff import *', + 'from Geometry.MuonNumbering.muonOffsetESProducer_cff import *', + ], + "reco" : [ + 'from Geometry.MuonNumbering.muonNumberingInitialization_cfi import *', + 'from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import *', + 'from Geometry.GEMGeometryBuilder.gemGeometry_cff import *', + 'from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import *', + 'from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import *', + ], + "era" : "phase2_muon, phase2_GEM, phase2_GE0", + }, + "M12" : { + 1 : [ + 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2015/v2/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2015/v2/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2030/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', + 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + ], + 2 : [ + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', + ], + 3 : [ + 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', + ], + 4 : [ + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', ], "sim" : [ 'from Geometry.MuonNumbering.muonGeometryConstants_cff import *', @@ -1220,12 +1369,35 @@ "default" : 8, "F8" : { 1 : [ - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + ], + 3 : [ + 'Geometry/ForwardSimData/data/zdcsens.xml', + ], + 4 : [ + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + ], + "reco" :[ + 'from Geometry.ForwardGeometry.zdcTopologyEP_cfi import *', + 'from Geometry.ForwardGeometry.ZdcGeometry_cfi import *', + ] + }, + "F9" : { + 1 : [ + 'Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', ], @@ -1384,6 +1556,7 @@ ("O9","T38","C24","M11","F8","I17") : "D113", ("O9","T39","C19","M11","F8","I17") : "D114", ("O9","T35","C20","M11","F8","I17") : "D115", + ("O10","T35","C25","M12","F9","I17") : "D116", } deprecatedDets = set([ "D1", "D2", "D3", "D5", "D6" , "D7", "D4", "D8" , "D9", "D12", "D13", "D15", "D10", "D11", "D14", "D16", "D17", "D18", "D19", "D20", "D21", "D22", "D23", "D24", "D25", "D26", "D27", "D28", "D29", "D30", "D31", "D32", "D33", "D34", "D36", "D37", "D38", "D39", "D40", "D42", "D35", "D41", "D43", "D44", "D45", "D46", "D48", "D47", "D50", "D51", "D52", "D53", "D54", "D55", "D56", "D57", "D58", "D59", "D61", "D62", "D63", "D64", "D65", "D66", "D67", "D69", "D71", "D72", "D73", "D74", "D75", "D78", "D79", "D87", "D89", "D90", "D49", "D60", "D68", "D70", "D76", "D77", "D80", "D81", "D82", "D83", "D84", "D85","D86","D88","D91","D92","D93","D94","D97"]) diff --git a/Configuration/Geometry/python/generateGeometry.py b/Configuration/Geometry/python/generateGeometry.py index 677909bf2ac6d..0730eb41ee281 100644 --- a/Configuration/Geometry/python/generateGeometry.py +++ b/Configuration/Geometry/python/generateGeometry.py @@ -1,4 +1,3 @@ -from __future__ import print_function from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, RawTextHelpFormatter, RawDescriptionHelpFormatter import sys, os, operator from pprint import pprint diff --git a/Configuration/HLT/python/addOnTestsHLT.py b/Configuration/HLT/python/addOnTestsHLT.py index 78b21cb48e4e3..999e2968f73f7 100644 --- a/Configuration/HLT/python/addOnTestsHLT.py +++ b/Configuration/HLT/python/addOnTestsHLT.py @@ -34,19 +34,19 @@ def addOnTestsHLT(): 'hlt_data_Fake2': ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run2_hlt_Fake2 --relval 9000,50 --datatier "RAW" --eventcontent RAW --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run2_2016 --fileout file:RelVal_Raw_Fake2_DATA.root --filein /store/data/Run2016B/JetHT/RAW/v1/000/272/762/00000/C666CDE2-E013-E611-B15A-02163E011DBE.root', 'HLTrigger/Configuration/test/OnLine_HLT_Fake2.py', 'cmsDriver.py RelVal -s HLT:Fake2,RAW2DIGI,L1Reco,RECO --data --scenario=pp -n 10 --conditions auto:run2_data_Fake2 --relval 9000,50 --datatier "RAW-HLT-RECO" --eventcontent FEVTDEBUGHLT --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --customise=HLTrigger/Configuration/CustomConfigs.HLTRECO --era Run2_2016 --processName=HLTRECO --filein file:RelVal_Raw_Fake2_DATA.root --fileout file:RelVal_Raw_Fake2_DATA_HLT_RECO.root'], - 'hlt_data_GRun' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_GRun --relval 9000,50 --datatier "RAW" --eventcontent RAW --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --fileout file:RelVal_Raw_GRun_DATA.root --filein /store/data/Run2024H/EphemeralHLTPhysics0/RAW/v1/000/386/071/00000/3a502248-b2ac-4e8a-b9bf-5f98d5c688dd.root', + 'hlt_data_GRun' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_GRun --relval 9000,50 --datatier "RAW" --eventcontent RAW --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --fileout file:RelVal_Raw_GRun_DATA.root --filein /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root', 'HLTrigger/Configuration/test/OnLine_HLT_GRun.py', 'cmsDriver.py RelVal -s HLT:GRun,RAW2DIGI,L1Reco,RECO --data --scenario=pp -n 10 --conditions auto:run3_data_GRun --relval 9000,50 --datatier "RAW-HLT-RECO" --eventcontent FEVTDEBUGHLT --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --customise=HLTrigger/Configuration/CustomConfigs.HLTRECO --customise=HLTrigger/Configuration/CustomConfigs.customiseGlobalTagForOnlineBeamSpot --era Run3_2024 --processName=HLTRECO --filein file:RelVal_Raw_GRun_DATA.root --fileout file:RelVal_Raw_GRun_DATA_HLT_RECO.root'], 'hlt_data_HIon' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_HIon --relval 9000,50 --datatier "RAW" --eventcontent RAW --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_pp_on_PbPb_2024 --fileout file:RelVal_Raw_HIon_DATA.root --filein /store/hidata/HIRun2022A/HITestRaw0/RAW/v1/000/362/321/00000/f467ee64-fc64-47a6-9d8a-7ca73ebca2bd.root --customise=HLTrigger/Configuration/CustomConfigs.customiseL1TforHIonRepackedRAW', 'HLTrigger/Configuration/test/OnLine_HLT_HIon.py', 'cmsDriver.py RelVal -s HLT:HIon,RAW2DIGI,L1Reco,RECO --data --scenario=pp -n 10 --conditions auto:run3_data_HIon --relval 9000,50 --datatier "RAW-HLT-RECO" --eventcontent FEVTDEBUGHLT --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --customise=HLTrigger/Configuration/CustomConfigs.HLTRECO --customise=HLTrigger/Configuration/CustomConfigs.customiseGlobalTagForOnlineBeamSpot --era Run3_pp_on_PbPb_2024 --processName=HLTRECO --filein file:RelVal_Raw_HIon_DATA.root --fileout file:RelVal_Raw_HIon_DATA_HLT_RECO.root'], - 'hlt_data_PIon' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_PIon --relval 9000,50 --datatier "RAW" --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --eventcontent RAW --fileout file:RelVal_Raw_PIon_DATA.root --filein /store/data/Run2024H/EphemeralHLTPhysics0/RAW/v1/000/386/071/00000/3a502248-b2ac-4e8a-b9bf-5f98d5c688dd.root', + 'hlt_data_PIon' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_PIon --relval 9000,50 --datatier "RAW" --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --eventcontent RAW --fileout file:RelVal_Raw_PIon_DATA.root --filein /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root', 'HLTrigger/Configuration/test/OnLine_HLT_PIon.py', 'cmsDriver.py RelVal -s HLT:PIon,RAW2DIGI,L1Reco,RECO --data --scenario=pp -n 10 --conditions auto:run3_data_PIon --relval 9000,50 --datatier "RAW-HLT-RECO" --eventcontent FEVTDEBUGHLT --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --customise=HLTrigger/Configuration/CustomConfigs.HLTRECO --customise=HLTrigger/Configuration/CustomConfigs.customiseGlobalTagForOnlineBeamSpot --era Run3_2024 --processName=HLTRECO --filein file:RelVal_Raw_PIon_DATA.root --fileout file:RelVal_Raw_PIon_DATA_HLT_RECO.root'], - 'hlt_data_PRef' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_PRef --relval 9000,50 --datatier "RAW" --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --eventcontent RAW --fileout file:RelVal_Raw_PRef_DATA.root --filein /store/data/Run2024H/EphemeralHLTPhysics0/RAW/v1/000/386/071/00000/3a502248-b2ac-4e8a-b9bf-5f98d5c688dd.root', + 'hlt_data_PRef' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_PRef --relval 9000,50 --datatier "RAW" --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --eventcontent RAW --fileout file:RelVal_Raw_PRef_DATA.root --filein /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root', 'HLTrigger/Configuration/test/OnLine_HLT_PRef.py', 'cmsDriver.py RelVal -s HLT:PRef,RAW2DIGI,L1Reco,RECO --data --scenario=pp -n 10 --conditions auto:run3_data_PRef --relval 9000,50 --datatier "RAW-HLT-RECO" --eventcontent FEVTDEBUGHLT --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --customise=HLTrigger/Configuration/CustomConfigs.HLTRECO --customise=HLTrigger/Configuration/CustomConfigs.customiseGlobalTagForOnlineBeamSpot --era Run3_2024 --processName=HLTRECO --filein file:RelVal_Raw_PRef_DATA.root --fileout file:RelVal_Raw_PRef_DATA_HLT_RECO.root'], - 'hlt_data_Special' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_Special --relval 9000,50 --datatier "RAW" --eventcontent RAW --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --fileout file:RelVal_Raw_Special_DATA.root --filein /store/data/Run2024H/EphemeralHLTPhysics0/RAW/v1/000/386/071/00000/3a502248-b2ac-4e8a-b9bf-5f98d5c688dd.root', + 'hlt_data_Special' : ['cmsDriver.py RelVal -s L1REPACK:Full --data --scenario=pp -n 10 --conditions auto:run3_hlt_Special --relval 9000,50 --datatier "RAW" --eventcontent RAW --customise=HLTrigger/Configuration/CustomConfigs.L1T --era Run3_2024 --fileout file:RelVal_Raw_Special_DATA.root --filein /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root', 'HLTrigger/Configuration/test/OnLine_HLT_Special.py', 'cmsDriver.py RelVal -s HLT:Special,RAW2DIGI,L1Reco,RECO --data --scenario=pp -n 10 --conditions auto:run3_data_Special --relval 9000,50 --datatier "RAW-HLT-RECO" --eventcontent FEVTDEBUGHLT --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --customise=HLTrigger/Configuration/CustomConfigs.HLTRECO --customise=HLTrigger/Configuration/CustomConfigs.customiseGlobalTagForOnlineBeamSpot --era Run3_2024 --processName=HLTRECO --filein file:RelVal_Raw_Special_DATA.root --fileout file:RelVal_Raw_Special_DATA_HLT_RECO.root'], } diff --git a/Configuration/HLT/python/autoCondHLT.py b/Configuration/HLT/python/autoCondHLT.py index 28a2d403ff47b..e6b819a30d862 100644 --- a/Configuration/HLT/python/autoCondHLT.py +++ b/Configuration/HLT/python/autoCondHLT.py @@ -18,13 +18,13 @@ 'Fake' : ( ','.join( [ 'L1GtTriggerMenu_L1Menu_Collisions2012_v3_mc' , l1MenuRecord,connectionString, l1MenuLabel, "2015-10-26 12:00:00.000"] ), ), 'Fake1' : ( ','.join( [ 'L1Menu_Collisions2015_25nsStage1_v5' , l1MenuRecord,connectionString, l1MenuLabel, "2015-10-26 12:00:00.000"] ), ), 'Fake2' : ( ','.join( [ 'L1Menu_Collisions2016_v9_m2_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2016-10-06 19:36:53.000"] ), ), - 'FULL' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-03 09:00:00.000"] ), ), - 'GRun' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-03 09:00:00.000"] ), ), - '2024v14' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-03 09:00:00.000"] ), ), - 'HIon' : ( ','.join( [ 'L1Menu_CollisionsHeavyIons2024_v1_0_5_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-10-11 21:16:08.000"] ), ), + 'FULL' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0-d1_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-26 09:00:00.000"] ), ), + 'GRun' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0-d1_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-26 09:00:00.000"] ), ), + '2024v14' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0-d1_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-26 09:00:00.000"] ), ), + 'HIon' : ( ','.join( [ 'L1Menu_CollisionsHeavyIons2024_v1_0_6_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-11-05 11:11:22.000"] ), ), 'PIon' : ( ','.join( [ 'L1Menu_HeavyIons2016_v3_m2_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2016-11-22 11:11:00.000"] ), ), 'PRef' : ( ','.join( [ 'L1Menu_CollisionsPPRef2024_v1_0_0_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-09-24 11:45:00.000"] ), ), - 'Special' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-03 09:00:00.000"] ), ), + 'Special' : ( ','.join( [ 'L1Menu_Collisions2024_v1_3_0-d1_xml' ,l1tMenuRecord,connectionString,l1tMenuLabel, "2024-07-26 09:00:00.000"] ), ), } hltGTs = { diff --git a/Configuration/ProcessModifiers/python/alpakaValidationEcal_cff.py b/Configuration/ProcessModifiers/python/alpakaValidationEcal_cff.py new file mode 100644 index 0000000000000..1b35527f48228 --- /dev/null +++ b/Configuration/ProcessModifiers/python/alpakaValidationEcal_cff.py @@ -0,0 +1,5 @@ +import FWCore.ParameterSet.Config as cms + +# This modifier is for turning on alpaka validation modules for ECAL DQM + +alpakaValidationEcal = cms.Modifier() diff --git a/Configuration/ProcessModifiers/python/alpakaValidation_cff.py b/Configuration/ProcessModifiers/python/alpakaValidation_cff.py index 3399bdda7c4df..a8e0ba3853ad8 100644 --- a/Configuration/ProcessModifiers/python/alpakaValidation_cff.py +++ b/Configuration/ProcessModifiers/python/alpakaValidation_cff.py @@ -1,11 +1,13 @@ import FWCore.ParameterSet.Config as cms from Configuration.ProcessModifiers.alpaka_cff import * +from Configuration.ProcessModifiers.alpakaValidationEcal_cff import * from Configuration.ProcessModifiers.alpakaValidationPixel_cff import * # This modifier chain is for turning on DQM modules used for alpaka device/host validation alpakaValidation = cms.ModifierChain( alpaka, + alpakaValidationEcal, alpakaValidationPixel ) diff --git a/Configuration/ProcessModifiers/python/hltClusterSplitting_cff.py b/Configuration/ProcessModifiers/python/hltClusterSplitting_cff.py new file mode 100644 index 0000000000000..b7855664076cd --- /dev/null +++ b/Configuration/ProcessModifiers/python/hltClusterSplitting_cff.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +# This modifier enables +# - saving pixel vertices at HLT; +# - using those vertices in input for the cluster splitting and ak4CaloJets; + +hltClusterSplitting = cms.Modifier() + diff --git a/Configuration/ProcessModifiers/python/phase2L2AndL3Muons_cff.py b/Configuration/ProcessModifiers/python/phase2L2AndL3Muons_cff.py new file mode 100644 index 0000000000000..13bfbf79edc62 --- /dev/null +++ b/Configuration/ProcessModifiers/python/phase2L2AndL3Muons_cff.py @@ -0,0 +1,5 @@ +import FWCore.ParameterSet.Config as cms + +# this modifier is for enabling Phase 2 L2 Muon seeding from L1Tk Muons +# and the simplified L3 Tracker Muon reconstruction (Inside-Out first) +phase2L2AndL3Muons = cms.Modifier() diff --git a/Configuration/ProcessModifiers/python/phase2L3MuonsOIFirst_cff.py b/Configuration/ProcessModifiers/python/phase2L3MuonsOIFirst_cff.py new file mode 100644 index 0000000000000..715f86fef6af3 --- /dev/null +++ b/Configuration/ProcessModifiers/python/phase2L3MuonsOIFirst_cff.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +# this modifier is for enabling Phase 2 L3 Tracker Muon Outside-In first reconstruction +phase2L3MuonsOIFirst = cms.Modifier() diff --git a/Configuration/ProcessModifiers/python/pixelNtupletFit_cff.py b/Configuration/ProcessModifiers/python/pixelNtupletFit_cff.py deleted file mode 100644 index 94b14a4f5a6e3..0000000000000 --- a/Configuration/ProcessModifiers/python/pixelNtupletFit_cff.py +++ /dev/null @@ -1,7 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -# This modifier is for replacing the legacy pixel tracks with the "Patatrack" pixel ntuplets, -# fishbone cleaning, and either the Broken Line fit (by default) or the Riemann fit. -# It also replaces the "gap" pixel vertices with a density-based vertex reconstruction algorithm. - -pixelNtupletFit = cms.Modifier() diff --git a/Configuration/ProcessModifiers/python/seedingLST_cff.py b/Configuration/ProcessModifiers/python/seedingLST_cff.py new file mode 100644 index 0000000000000..9f17df5d81d78 --- /dev/null +++ b/Configuration/ProcessModifiers/python/seedingLST_cff.py @@ -0,0 +1,5 @@ +import FWCore.ParameterSet.Config as cms + +# This modifier sets the LST (Phase-2 line segment tracking) used for track seeding +# Needs to be used on top of the trackingLST modifier +seedingLST = cms.Modifier() diff --git a/Configuration/ProcessModifiers/python/singleIterPatatrack_cff.py b/Configuration/ProcessModifiers/python/singleIterPatatrack_cff.py new file mode 100644 index 0000000000000..7d1931e2a969c --- /dev/null +++ b/Configuration/ProcessModifiers/python/singleIterPatatrack_cff.py @@ -0,0 +1,5 @@ +import FWCore.ParameterSet.Config as cms + +# This modifier merges the initialStep and highPtTripletStep iterations +# to a single iteration using Patatrack pixel tracks with >3 hits as seeds +singleIterPatatrack = cms.Modifier() diff --git a/Configuration/PyReleaseValidation/README.md b/Configuration/PyReleaseValidation/README.md index a114e81d7146c..ccd8b4aabd0d4 100644 --- a/Configuration/PyReleaseValidation/README.md +++ b/Configuration/PyReleaseValidation/README.md @@ -37,39 +37,28 @@ The offsets currently in use are: * 0.407: Alpaka, pixel only triplets, portable vs. CPU validation * 0.407: Alpaka, pixel only triplets, portable profiling * 0.412: Alpaka, ECAL only, portable +* 0.413: Alpaka, ECAL only, portable vs. CPU validation * 0.422: Alpaka, HCAL only, portable * 0.423: Alpaka, HCAL only, portable vs CPU validation * 0.424: Alpaka, HCAL only, portable profiling * 0.492: Alpaka, full reco with pixel quadruplets * 0.496: Alpaka, full reco with pixel triplets -* 0.5: Pixel tracking only + 0.1 -* 0.501: Patatrack, pixel only quadruplets, on CPU -* 0.502: Patatrack, pixel only quadruplets, with automatic offload to GPU if available -* 0.504: Patatrack, pixel only quadruplets, GPU profiling -* 0.505: Patatrack, pixel only triplets, on CPU -* 0.506: Patatrack, pixel only triplets, with automatic offload to GPU if available -* 0.508: Patatrack, pixel only triplets, GPU profiling -* 0.511: Patatrack, ECAL only, on CPU -* 0.512: Patatrack, ECAL only, with automatic offload to GPU if available -* 0.513: Patatrack, ECAL only, GPU vs. CPU validation -* 0.514: Patatrack, ECAL only, GPU profiling -* 0.521: Patatrack, HCAL only, on CPU -* 0.522: Patatrack, HCAL only, with automatic offload to GPU if available -* 0.524: Patatrack, HCAL only, GPU profiling -* 0.591: Patatrack, full reco with pixel quadruplets, on CPU -* 0.592: Patatrack, full reco with pixel quadruplets, with automatic offload to GPU if available -* 0.595: Patatrack, full reco with pixel triplets, on CPU -* 0.596: Patatrack, full reco with pixel triplets, with automatic offload to GPU if available +* 0.5: Legacy pixel tracking only (CPU) +* 0.511: Legacy ECAL reco only (CPU) +* 0.521: Legacy HCAL reco only (CPU) * 0.6: HE Collapse (old depth segmentation for 2018) * 0.601: HLT as separate step * 0.7: trackingMkFit modifier * 0.701: DisplacedRegionalStep tracking iteration for Run-3 * 0.702: trackingMkFit modifier for Phase-2 (initialStep only) * 0.703: LST tracking (Phase-2 only), initialStep+HighPtTripletStep only, on CPU -* 0.704: LST tracking (Phase-2 only), initialStep+HighPtTripletStep only, on GPU +* 0.704: LST tracking (Phase-2 only), initialStep+HighPtTripletStep only, on GPU (if available) * 0.75: HLT phase-2 timing menu * 0.751: HLT phase-2 timing menu Alpaka variant * 0.752: HLT phase-2 timing menu ticl_v5 variant +* 0.753: HLT phase-2 timing menu Alpaka, single tracking iteration variant +* 0.754: HLT phase-2 timing menu Alpaka, single tracking iteration, LST building variant +* 0.755: HLT phase-2 timing menu Alpaka, LST building variant * 0.78: Complete L1 workflow * 0.8: BPH Parking (Run-2) * 0.81: Running also HeavyFlavor DQM @@ -91,7 +80,6 @@ The offsets currently in use are: * 0.633: ECAL phase2 Trigger Primitive * 0.634: ECAL phase2 Trigger Primitive + component-method based digis * 0.635: ECAL phase2 Trigger Primitive + component-method based finely-sampled waveforms -* 0.75: Phase-2 HLT Timing menu * 0.91: Track DNN modifier * 0.97: Premixing stage1 * 0.98: Premixing stage2 diff --git a/Configuration/PyReleaseValidation/data/runall.py b/Configuration/PyReleaseValidation/data/runall.py index 9f427da86f1ad..5d7677632d96b 100755 --- a/Configuration/PyReleaseValidation/data/runall.py +++ b/Configuration/PyReleaseValidation/data/runall.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import time import sys diff --git a/Configuration/PyReleaseValidation/python/MatrixInjector.py b/Configuration/PyReleaseValidation/python/MatrixInjector.py index 331461774c5b7..b0524b71860e9 100644 --- a/Configuration/PyReleaseValidation/python/MatrixInjector.py +++ b/Configuration/PyReleaseValidation/python/MatrixInjector.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import json import os diff --git a/Configuration/PyReleaseValidation/python/MatrixReader.py b/Configuration/PyReleaseValidation/python/MatrixReader.py index 68c94a0c0952b..15bbc4fc31655 100644 --- a/Configuration/PyReleaseValidation/python/MatrixReader.py +++ b/Configuration/PyReleaseValidation/python/MatrixReader.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys, os from Configuration.PyReleaseValidation.WorkFlow import WorkFlow diff --git a/Configuration/PyReleaseValidation/python/MatrixRunner.py b/Configuration/PyReleaseValidation/python/MatrixRunner.py index 0120e65f5b865..752272ab11cff 100644 --- a/Configuration/PyReleaseValidation/python/MatrixRunner.py +++ b/Configuration/PyReleaseValidation/python/MatrixRunner.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os, sys, time from Configuration.PyReleaseValidation.WorkFlow import WorkFlow diff --git a/Configuration/PyReleaseValidation/python/MatrixToProcess.py b/Configuration/PyReleaseValidation/python/MatrixToProcess.py index 6ed9282085fe2..5800a87070358 100644 --- a/Configuration/PyReleaseValidation/python/MatrixToProcess.py +++ b/Configuration/PyReleaseValidation/python/MatrixToProcess.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 -from __future__ import print_function class MatrixToProcess: def __init__(self,what='standard',strict=True): diff --git a/Configuration/PyReleaseValidation/python/MatrixUtil.py b/Configuration/PyReleaseValidation/python/MatrixUtil.py index 8dcc10ce98fdc..bd10cf37a2079 100644 --- a/Configuration/PyReleaseValidation/python/MatrixUtil.py +++ b/Configuration/PyReleaseValidation/python/MatrixUtil.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os class Matrix(dict): def __setitem__(self,key,value): diff --git a/Configuration/PyReleaseValidation/python/Options.py b/Configuration/PyReleaseValidation/python/Options.py index 37a2def3d9976..87c8af8743e78 100644 --- a/Configuration/PyReleaseValidation/python/Options.py +++ b/Configuration/PyReleaseValidation/python/Options.py @@ -1,3 +1,2 @@ -from __future__ import print_function print("This file has moved to Configuration/Applications; please update") from Configuration.Applications.Options import * diff --git a/Configuration/PyReleaseValidation/python/WorkFlowRunner.py b/Configuration/PyReleaseValidation/python/WorkFlowRunner.py index 78a11ed4c09f3..2cf5b8a0d4184 100644 --- a/Configuration/PyReleaseValidation/python/WorkFlowRunner.py +++ b/Configuration/PyReleaseValidation/python/WorkFlowRunner.py @@ -1,4 +1,3 @@ -from __future__ import print_function from threading import Thread from Configuration.PyReleaseValidation import WorkFlow import os,time diff --git a/Configuration/PyReleaseValidation/python/cmsDriverOptions.py b/Configuration/PyReleaseValidation/python/cmsDriverOptions.py index 16f6f769bbcf1..2caa156130cff 100755 --- a/Configuration/PyReleaseValidation/python/cmsDriverOptions.py +++ b/Configuration/PyReleaseValidation/python/cmsDriverOptions.py @@ -1,3 +1,2 @@ -from __future__ import print_function print("This file has moved to Configuration/Applications; please update") from Configuration.Applications.cmsDriverOptions import * diff --git a/Configuration/PyReleaseValidation/python/relval_Run4.py b/Configuration/PyReleaseValidation/python/relval_Run4.py index 95f75dcee7a6a..a4e587868c493 100644 --- a/Configuration/PyReleaseValidation/python/relval_Run4.py +++ b/Configuration/PyReleaseValidation/python/relval_Run4.py @@ -35,9 +35,7 @@ numWFIB.extend([30834.0]) #Run4D113 numWFIB.extend([31234.0]) #Run4D114 numWFIB.extend([32034.0]) #Run4D115 - -# Temporary placement for LST workflow to workaround PR conflicts - to be formatted and placed in an upcoming PR -numWFIB.extend([24834.703]) #Run4D98 LST tracking (initialStep+HighPtTripletStep only) +numWFIB.extend([32434.0]) #Run4D116 #Additional sample for short matrix and IB #Default Phase-2 Det NoPU @@ -46,6 +44,7 @@ numWFIB.extend([prefixDet+34.5]) #pixelTrackingOnly numWFIB.extend([prefixDet+34.9]) #vector hits numWFIB.extend([prefixDet+34.402]) #Alpaka local reconstruction offloaded on device (GPU if available) +numWFIB.extend([prefixDet+34.703]) #LST tracking on CPU (initialStep+HighPtTripletStep only) numWFIB.extend([prefixDet+34.21]) #prodlike numWFIB.extend([prefixDet+96.0]) #CloseByPGun CE_E_Front_120um numWFIB.extend([prefixDet+100.0]) #CloseByPGun CE_H_Coarse_Scint @@ -59,6 +58,7 @@ numWFIB.extend([prefixDet+234.21]) #prodlike PU numWFIB.extend([prefixDet+234.9921]) #prodlike premix stage1+stage2 numWFIB.extend([prefixDet+234.114]) #PU, with 10% OT inefficiency +numWFIB.extend([prefixDet+234.703]) #LST tracking on CPU (initialStep+HighPtTripletStep only) # numWFIB.extend([24834.911]) #D98 XML, to monitor instability of DD4hep for numWF in numWFIB: diff --git a/Configuration/PyReleaseValidation/python/relval_gpu.py b/Configuration/PyReleaseValidation/python/relval_gpu.py index e70d877c1daaa..71e474303bf87 100644 --- a/Configuration/PyReleaseValidation/python/relval_gpu.py +++ b/Configuration/PyReleaseValidation/python/relval_gpu.py @@ -42,13 +42,11 @@ # Alpaka pixel-only: TTbar with PU: quadruplets any backend, any backend vs cpu validation, profiling numWFIB = [ - # 2023, Alpaka-based noPU - 12434.402,12434.403,12434.412,12434.422,12434.423, # 2024, Alpaka-based noPU 12834.402, 12834.403, 12834.404, 12834.406, 12834.407, 12834.408, - 12834.412,#12834.413, 12834.414, + 12834.412, 12834.413,#12834.414, 12834.422, 12834.423, 12834.424, #12834.482, 12834.483, 12834.484 #12834.486, 12834.487, 12834.488 @@ -60,7 +58,7 @@ # 2024 with PU, Alpaka-based 13034.402, 13034.403, 13034.404, 13034.406, 13034.407, 13034.408, - 13034.412, #13034.413, 13034.414 + 13034.412, 13034.413, #13034.414 13034.422, 13034.423, 13034.424, #13034.482, 13034.483, 13034.484 #13034.486, 13034.487, 13034.488 @@ -70,13 +68,11 @@ 13061.402, # Run4, Alpaka-based noPU - 29634.402, 29634.403, 29634.404, 29634.406, + 29634.402, 29634.403, 29634.404, 29634.406, 29634.704, 29661.402, - # Run4, Alpaka-based noPU GPU LST tracking D98 - 24834.704, # Run4, Alpaka-based PU - 29834.402, 29834.403, 29834.404 + 29834.402, 29834.403, 29834.404, 29834.704 ] for numWF in numWFIB: @@ -86,68 +82,69 @@ # data WFs to run in IB: -# data 2023 Patatrack pixel-only triplets: RunJetMET2022D on GPU (optional), RunJetMET2022D GPU-vs-CPU validation, RunJetMET2022D profiling -# Patatrack ECAL-only: RunJetMET2022D on GPU (optional), RunJetMET2022D GPU-vs-CPU validation, RunJetMET2022D profiling -# Patatrack HCAL-only: RunJetMET2022D on GPU (optional), RunJetMET2022D GPU-vs-CPU validation, RunJetMET2022D profiling -workflows[141.008506] = ['Run3-2023_JetMET2023B_RecoPixelOnlyTripletsGPU',[ - 'RunJetMET2023B', +# data 2023 Alpaka pixel-only triplets: RunJetMET2023D on GPU (optional), RunJetMET2023D GPU-vs-CPU validation, RunJetMET2023D profiling +# Alpaka ECAL-only: RunJetMET2023D on GPU (optional), RunJetMET2023D GPU-vs-CPU validation, RunJetMET2023D profiling +# Alpaka HCAL-only: RunJetMET2023D on GPU (optional), RunJetMET2023D GPU-vs-CPU validation, RunJetMET2023D profiling + +workflows[141.044406] = ['Run3-2023_JetMET2023D_RecoPixelOnlyTripletsGPU',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPU', + 'RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPU', 'HARVESTRUN3_pixelTrackingOnly' ]] -workflows[141.008507] = ['Run3-2023_JetMET2023B_RecoPixelOnlyTripletsGPU_Validation',[ - 'RunJetMET2023B', +workflows[141.044407] = ['Run3-2023_JetMET2023D_RecoPixelOnlyTripletsGPU_Validation',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPUValidation', + 'RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPUValidation', 'HARVESTRUN3_pixelTrackingOnlyGPUValidation' ]] -workflows[141.008508] = ['Run3-2023_JetMET2023B_RecoPixelOnlyTripletsGPU_Profiling',[ - 'RunJetMET2023B', +workflows[141.044408] = ['Run3-2023_JetMET2023D_RecoPixelOnlyTripletsGPU_Profiling',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPUProfiling' + 'RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPUProfiling' ]] -workflows[141.008512] = ['Run3-2023_JetMET2023B_RecoECALOnlyGPU',[ - 'RunJetMET2023B', +workflows[141.044412] = ['Run3-2023_JetMET2023D_RecoECALOnlyGPU',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_ECALOnlyGPU', + 'RECODR3_reHLT_Alpaka_ECALOnlyGPU', 'HARVESTRUN3_ECALOnly' ]] -workflows[141.008513] = ['Run3-2023_JetMET2023B_RecoECALOnlyGPU_Validation',[ - 'RunJetMET2023B', +workflows[141.044413] = ['Run3-2023_JetMET2023D_RecoECALOnlyGPU_Validation',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_ECALOnlyGPUValidation', + 'RECODR3_reHLT_Alpaka_ECALOnlyGPUValidation', 'HARVESTRUN3_ECALOnlyGPUValidation' ]] -workflows[141.008514] = ['Run3-2023_JetMET2023B_RecoECALOnlyGPU_Profiling',[ - 'RunJetMET2023B', +workflows[141.044414] = ['Run3-2023_JetMET2023D_RecoECALOnlyGPU_Profiling',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_ECALOnlyGPUProfiling' + 'RECODR3_reHLT_Alpaka_ECALOnlyGPUProfiling' ]] -workflows[141.008522] = ['Run3-2023_JetMET2023B_RecoHCALOnlyGPU',[ - 'RunJetMET2023B', +workflows[141.044422] = ['Run3-2023_JetMET2023D_RecoHCALOnlyGPU',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_HCALOnlyGPU', + 'RECODR3_reHLT_Alpaka_HCALOnlyGPU', 'HARVESTRUN3_HCALOnly' ]] -workflows[141.008523] = ['Run3-2023_JetMET2023B_RecoHCALOnlyGPU_Validation',[ - 'RunJetMET2023B', +workflows[141.044423] = ['Run3-2023_JetMET2023D_RecoHCALOnlyGPU_Validation',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_HCALOnlyGPUValidation', + 'RECODR3_reHLT_Alpaka_HCALOnlyGPUValidation', 'HARVESTRUN3_HCALOnlyGPUValidation' ]] -workflows[141.008524] = ['Run3-2023_JetMET2023B_RecoHCALOnlyGPU_Profiling',[ - 'RunJetMET2023B', +workflows[141.044424] = ['Run3-2023_JetMET2023D_RecoHCALOnlyGPU_Profiling',[ + 'RunJetMET2023D', 'HLTDR3_2023', - 'RECODR3_reHLT_HCALOnlyGPUProfiling' + 'RECODR3_reHLT_Alpaka_HCALOnlyGPUProfiling' ]] -workflows[141.008583] = ['Run3-2023_JetMET2023B_GPUValidation',[ - 'RunJetMET2023B', - 'RecoData_Patatrack_AllGPU_Validation_2023', - 'HARVESTData_Patatrack_AllGPU_Validation_2023' +workflows[141.044483] = ['Run3-2023_JetMET2023D_GPUValidation',[ + 'RunJetMET2023D', + 'RecoData_Alpaka_AllGPU_Validation_2023', + 'HARVESTData_Alpaka_AllGPU_Validation_2023' ]] -# 2023 HIon MC Patatrack pixel-only quadruplets on HydjetQ_MinBias_5362GeV_2023_ppReco on GPU (optional) -workflows[160.03502] = ['',['HydjetQ_MinBias_5362GeV_2023_ppReco','DIGIHI2023PPRECO','RAWPRIMESIMHI18','RECOHI2023PPRECOMB_PatatrackGPU','MINIHI2023PROD']] +# 2023 HIon MC Alpaka pixel-only quadruplets on HydjetQ_MinBias_5362GeV_2023_ppReco on GPU (optional) +workflows[160.03502] = ['',['HydjetQ_MinBias_5362GeV_2023_ppReco','DIGIHI2023PPRECO','RAWPRIMESIMHI18','RECOHI2023PPRECOMB_AlpakaGPU','MINIHI2023PROD']] diff --git a/Configuration/PyReleaseValidation/python/relval_machine.py b/Configuration/PyReleaseValidation/python/relval_machine.py index 66bd00577629d..9d19080779eab 100644 --- a/Configuration/PyReleaseValidation/python/relval_machine.py +++ b/Configuration/PyReleaseValidation/python/relval_machine.py @@ -1,4 +1,3 @@ -from __future__ import print_function from Configuration.PyReleaseValidation.relval_steps import Matrix, InputInfo, Steps import os import json diff --git a/Configuration/PyReleaseValidation/python/relval_nano.py b/Configuration/PyReleaseValidation/python/relval_nano.py index 4254f63c4a57f..29bbfc54fff8e 100644 --- a/Configuration/PyReleaseValidation/python/relval_nano.py +++ b/Configuration/PyReleaseValidation/python/relval_nano.py @@ -200,6 +200,9 @@ def subnext(self): steps['scoutingNANO_mc14.0'] = merge([{'-s': 'NANO:@Scout'}, steps['NANO_mc14.0']]) +steps['scoutingNANO_withPrompt_mc14.0'] = merge([{'-s': 'NANO:@Prompt+@Scout'}, + steps['NANO_mc14.0']]) + # 14.0 workflows -- data lumis_Run2024D = {380306: [[28, 273]]} steps['MuonEG2024MINIAOD14.0'] = {'INPUT': InputInfo(location='STD', ls=lumis_Run2024D, @@ -208,6 +211,9 @@ def subnext(self): steps['ScoutingPFRun32024RAW14.0'] = {'INPUT': InputInfo(location='STD', ls=lumis_Run2024D, dataSet='/ScoutingPFRun3/Run2024D-v1/HLTSCOUT')} +steps['ScoutingPFMonitor2024MINIAOD14.0'] = {'INPUT': InputInfo(location='STD', ls=lumis_Run2024D, + dataSet='/ScoutingPFMonitor/Run2024D-PromptReco-v1/MINIAOD')} + steps['ZMuSkim2024RAWRECO14.0'] = {'INPUT': InputInfo(location='STD', ls=lumis_Run2024D, dataSet='/Muon0/Run2024D-ZMu-PromptReco-v1/RAW-RECO')} @@ -244,6 +250,12 @@ def subnext(self): steps['scoutingNANO_data14.0'] = merge([{'-s': 'NANO:@Scout'}, steps['NANO_data14.0']]) +# Process.options.TryToContinue = cms.untracked.vstring(\'ProductNotFound\') is needed here because some events in ScoutingPFMonitor in 2024 do not contain scouting objects. +# This should be fixed in 2025 (https://its.cern.ch/jira/browse/CMSHLT-3331) so customise_commands won't be needed for 2025 workflow. +steps['scoutingNANO_withPrompt_data14.0'] = merge([{'-s': 'NANO:@Prompt+@Scout', + '--customise_commands': '"process.options.TryToContinue = cms.untracked.vstring(\'ProductNotFound\')"'}, + steps['NANO_data14.0']]) + # DPG custom NANO steps['muDPGNANO_data14.0'] = merge([{'-s': 'RAW2DIGI,NANO:@MUDPG', '-n': '100'}, steps['NANO_data14.0']]) @@ -336,6 +348,7 @@ def subnext(self): workflows[_wfn()] = ['jmeNANOrePuppimc140X', ['TTbarMINIAOD14.0', 'jmeNANO_rePuppi_mc14.0']] workflows[_wfn()] = ['lepTrackInfoNANOmc140X', ['TTbarMINIAOD14.0', 'lepTrackInfoNANO_mc14.0']] workflows[_wfn()] = ['ScoutingNANOmc140X', ['TTbarMINIAOD14.0', 'scoutingNANO_mc14.0']] +workflows[_wfn()] = ['ScoutingNANOwithPromptmc140X', ['TTbarMINIAOD14.0', 'scoutingNANO_withPrompt_mc14.0']] # POG/PAG custom NANOs, data _wfn.subnext() @@ -346,6 +359,7 @@ def subnext(self): workflows[_wfn()] = ['jmeNANOrePuppidata140Xrun3', ['MuonEG2024MINIAOD14.0', 'jmeNANO_rePuppi_data14.0']] workflows[_wfn()] = ['lepTrackInfoNANOdata140Xrun3', ['MuonEG2024MINIAOD14.0', 'lepTrackInfoNANO_data14.0']] workflows[_wfn()] = ['ScoutingNANOdata140Xrun3', ['ScoutingPFRun32024RAW14.0', 'scoutingNANO_data14.0']] +workflows[_wfn()] = ['ScoutingNANOwithPromptdata140Xrun3', ['ScoutingPFMonitor2024MINIAOD14.0', 'scoutingNANO_withPrompt_data14.0']] # DPG custom NANOs, data _wfn.subnext() diff --git a/Configuration/PyReleaseValidation/python/relval_production.py b/Configuration/PyReleaseValidation/python/relval_production.py index aef9c3c2d6b28..97098d2668c2a 100644 --- a/Configuration/PyReleaseValidation/python/relval_production.py +++ b/Configuration/PyReleaseValidation/python/relval_production.py @@ -16,6 +16,7 @@ workflows[1001.4] = [ '',['RunDoubleMuon2022B','TIER0EXPRUN3','ALCAEXPSIPIXELALIRUN3','ALCAHARVD4','ALCAHARVDSIPIXELALIHG','ALCAHARVDSIPIXELALIHGCOMBINED']] # special workflow to run the SiPixelAli HG combined workflow workflows[1002.3] = [ '',['RunZeroBias2022B','TIER0PROMPTRUN3','ALCASPLITRUN3','ALCAHARVDEXPRUN3']] workflows[1002.4] = [ '',['RunDoubleMuon2022B','TIER0PROMPTRUN3','HARVESTPROMPTRUN3']] +workflows[1002.5] = [ '',['RunHLTMonitor2024I','ReAlCaHLT','ALCAReAlCaHLTHGComb','ALCAReAlCaHLTHGCombZMUMU','ALCAHARVDSIPIXELALIHLTHGCOMBINED']] workflows[1002]=['RRD',['RunMinBias2011A','RECODR1','COPYPASTE']] workflows[1003]=['', ['RunMinBias2012A','RECODDQM','HARVESTDDQM']] diff --git a/Configuration/PyReleaseValidation/python/relval_standard.py b/Configuration/PyReleaseValidation/python/relval_standard.py index 9d368812a5f51..94f18b9f8047a 100644 --- a/Configuration/PyReleaseValidation/python/relval_standard.py +++ b/Configuration/PyReleaseValidation/python/relval_standard.py @@ -544,9 +544,9 @@ workflows[141.114] = ['',['RunParkingDoubleMuonLowMass2023C','HLTDR3_2023','SKIMPARKINGDOUBLEMUONLOWMASS0RUN3_reHLT_2023','HARVESTRUN3_2023']] ### run3-2023 (2023 data) - Pixel-only (triplets), ECAL-only and HCAL-only -workflows[141.008505] = ['Run3-2023_JetMET2023B_RecoPixelOnlyTripletsCPU',['RunJetMET2023B','HLTDR3_2023','RECODR3_reHLT_Patatrack_PixelOnlyTripletsCPU','HARVESTRUN3_pixelTrackingOnly']] -workflows[141.008511] = ['Run3-2023_JetMET2023B_RecoECALOnlyCPU',['RunJetMET2023B','HLTDR3_2023','RECODR3_reHLT_ECALOnlyCPU','HARVESTRUN3_ECALOnly']] -workflows[141.008521] = ['Run3-2023_JetMET2023B_RecoHCALOnlyCPU',['RunJetMET2023B','HLTDR3_2023','RECODR3_reHLT_HCALOnlyCPU','HARVESTRUN3_HCALOnly']] +workflows[141.008405] = ['Run3-2023_JetMET2023B_RecoPixelOnlyTripletsCPU',['RunJetMET2023B','HLTDR3_2023','RECODR3_reHLT_Alpaka_PixelOnlyTripletsCPU','HARVESTRUN3_pixelTrackingOnly']] +workflows[141.008411] = ['Run3-2023_JetMET2023B_RecoECALOnlyCPU',['RunJetMET2023B','HLTDR3_2023','RECODR3_reHLT_Alpaka_ECALOnlyCPU','HARVESTRUN3_ECALOnly']] +workflows[141.008421] = ['Run3-2023_JetMET2023B_RecoHCALOnlyCPU',['RunJetMET2023B','HLTDR3_2023','RECODR3_reHLT_Alpaka_HCALOnlyCPU','HARVESTRUN3_HCALOnly']] ### run3-2023 (2023 HI UPC data) workflows[141.901] = ['',['RunUPC2023','RECODR3_2023_UPC','HARVESTDPROMPTR3']] @@ -556,8 +556,8 @@ workflows[142.0] = ['',['RunHIPhysicsRawPrime2023A','HLTDR3_HI2023ARawprime','RECOHIRUN3_reHLT_2023','HARVESTRUN3_HI2023A']] ### run3-2024 (2024 HI UPC data) -workflows[142.901] = ['',['RunUPC2023','RECODR3_2024_UPC','HARVESTDPROMPTR3']] -workflows[142.902] = ['',['RunUPC2023','RECODR3_2024_HIN','HARVESTDPROMPTR3']] +workflows[142.901] = ['',['RunUPC2024','RECODR3_2024_UPC','HARVESTDPROMPTR3']] +workflows[142.902] = ['',['RunUPC2024','RECODR3_2024_HIN','HARVESTDPROMPTR3']] ### run3-2024 skim (2024 HI MC temp) workflows[143.201] = ['',['HydjetQ_B12_5362GeV_2024','DIGIHI2024','SKIMHIFORWARDRUN3_2024','HARVESTHI2024']] @@ -566,57 +566,26 @@ ### run2-2016 (2024 PA UPC rereco data) workflows[142.903] = ['',['RunUPC2016PA','RECODR2_2016_UPC','HARVEST2016']] -################################################################## -### Golden Data Wfs -# for a limited set of eras and PDs not to overflow the IB matrices -# the full set in relval_data_highstats.py +### run3-2025 (2025 HI UPC data) +workflows[143.901] = ['',['RunUPC2024','RECODR3_2025_UPC','HARVESTDPROMPTR3']] +workflows[143.902] = ['',['RunUPC2024','RECODR3_2025_HIN','HARVESTDPROMPTR3']] + +### run3-2025 (2025 HI OXY data) +workflows[143.911] = ['',['RunUPC2024','RECODR3_2025_OXY','HARVESTDPROMPTR3']] + -offset_era = 0.1 # less than 10 eras per year +## Lumi mask fixed 2024 wfs +base_wf = 145.0 +offset_era = 0.1 # less than 10 eras per year (hopefully) offset_pd = 0.001 # less than 100 pds per year -# 2024 -base_wf = 2024 -for e_n,era in enumerate(['Run2024B','Run2024C','Run2024D','Run2024E']): - for p_n,pd in enumerate(['ZeroBias','BTagMu','JetMET0','DisplacedJet']): - wf_number = base_wf - wf_number = wf_number + offset_era * e_n - wf_number = wf_number + offset_pd * p_n - wf_number = wf_number + 0.0001 * 0.01 - wf_number = round(wf_number,6) - - step_name = "Run" + pd.replace("ParkingDouble","Park2") + era.split("Run")[1] + "_10k" - y = str(base_wf) - suff = "ZB_" if "ZeroBias" in step_name else "" - workflows[wf_number] = ['',[step_name,'HLTDR3_' + y,'RECONANORUN3_' + suff + 'reHLT_'+y,'HARVESTRUN3_' + suff + y]] - -# 2023 -base_wf = 2023 -for e_n,era in enumerate(['Run2023D']): - for p_n,pd in enumerate(['MuonEG','DisplacedJet','ZeroBias']): - wf_number = base_wf - wf_number = wf_number + offset_era * e_n - wf_number = wf_number + offset_pd * p_n - wf_number = wf_number + 0.0001 * 0.01 - wf_number = round(wf_number,6) - - step_name = "Run" + pd.replace("ParkingDouble","Park2") + era.split("Run")[1] + "_10k" - y = str(base_wf) + "B" if "2023B" in era else str(base_wf) - suff = "ZB_" if "ZeroBias" in step_name else "" - workflows[wf_number] = ['',[step_name,'HLTDR3_' + y,'RECONANORUN3_' + suff + 'reHLT_'+y,'HARVESTRUN3_' + suff + y]] - -# 2022 -base_wf = 2022 -for e_n,era in enumerate(['Run2022C']): - for p_n,pd in enumerate(['JetHT','EGamma','ZeroBias']): - wf_number = base_wf - wf_number = wf_number + offset_era * e_n - wf_number = wf_number + offset_pd * p_n - wf_number = wf_number + 0.0001 * 0.01 - wf_number = round(wf_number,6) - step_name = "Run" + pd + era.split("Run")[1] + "_10k" - y = str(base_wf) +for e_n,era in enumerate(era_mask_2024): + for p_n,pd in enumerate(pds_2024): + wf_number = round(base_wf + offset_era * e_n + offset_pd * p_n,3) + dataset = "/" + pd + "/" + era + "-v1/RAW" + step_name = "Run" + pd.replace("ParkingDouble","Park2") + era.split("Run")[1] suff = "ZB_" if "ZeroBias" in step_name else "" - workflows[wf_number] = ['',[step_name,'HLTDR3_' + y,'RECONANORUN3_' + suff + 'reHLT_'+y,'HARVESTRUN3_' + suff + y]] + workflows[wf_number] = ['',[step_name,'HLTDR3_2024','RECONANORUN3_' + suff + 'reHLT_2024','HARVESTRUN3_' + suff + '2024']] ################################################################## @@ -876,7 +845,7 @@ workflows[160.3] = ['',['ZMM_5362_HI_2023','DIGIHI2023PPRECO','RECOHI2023PPRECO','HARVESTHI2023PPRECO']] workflows[160.4] = ['',['ZEE_5362_HI_2023','DIGIHI2023PPRECO','RECOHI2023PPRECO','HARVESTHI2023PPRECO']] # Patatrack Pixel Tracks on CPU -workflows[160.501] = ['',['HydjetQ_MinBias_5362GeV_2023_ppReco','DIGIHI2023PPRECO','RAWPRIMESIMHI18','RECOHI2023PPRECOMB_PatatrackCPU','MINIHI2023PROD']] +workflows[160.401] = ['',['HydjetQ_MinBias_5362GeV_2023_ppReco','DIGIHI2023PPRECO','RAWPRIMESIMHI18','RECOHI2023PPRECOMB_AlpakaCPU','MINIHI2023PROD']] ### Run 3 cond., 2024 workflows[161] = ['',['HydjetQ_B12_5362GeV_2024','DIGIHI2024','RECOHI2024MB','ALCARECOHI2023PPRECO','HARVESTHI2024']] workflows[161.02] = ['',['HydjetQ_B12_5362GeV_2024','DIGIHI2024','RAWPRIMESIMHI18','RECOHI2024MBAPPROXCLUSTERS','ALCARECOHI2024','HARVESTHI2024S4']] @@ -890,8 +859,10 @@ ### UPC test ### workflows[180] = ['',['Pythia8_GammaNucleus_5360_HI_2023','DIGIHI2023PPRECO','RECOUPC2023','ALCARECOUPC2023','HARVESTUPC2023']] workflows[180.1] = ['',['Starlight_DoubleDiffraction_5360_HI_2023','DIGIHI2023PPRECO','RECOUPC2023','ALCARECOUPC2023','HARVESTUPC2023']] -workflows[181] = ['',['Pythia8_GammaNucleus_5360_HI_2024','DIGIHI2024','RECOUPC2024','ALCARECOUPC2024','HARVESTUPC2024']] -workflows[181.1] = ['',['Starlight_DoubleDiffraction_5360_HI_2024','DIGIHI2024','RECOUPC2024','ALCARECOUPC2024','HARVESTUPC2024']] +workflows[181] = ['',['Pythia8_GammaNucleus_5360_UPC_2024','DIGIUPC2024','RECOUPC2024','ALCARECOUPC2024','HARVESTUPC2024']] +workflows[181.1] = ['',['Starlight_DoubleDiffraction_5360_UPC_2024','DIGIUPC2024','RECOUPC2024','ALCARECOUPC2024','HARVESTUPC2024']] +workflows[182] = ['',['Pythia8_GammaNucleus_5360_UPC_2025','DIGIUPC2025','RECOUPC2025','ALCARECOUPC2025','HARVESTUPC2025']] +workflows[182.1] = ['',['Starlight_DoubleDiffraction_5360_UPC_2025','DIGIUPC2025','RECOUPC2025','ALCARECOUPC2025','HARVESTUPC2025']] ### pp reference test ### workflows[149] = ['',['QCD_Pt_80_120_13_PPREF','DIGIPPREF2017','RECOPPREF2017','HARVESTPPREF2017']] diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index 455bcb17a0976..baa2b62ae755a 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from .MatrixUtil import * from Configuration.HLT.autoHLT import autoHLT @@ -41,6 +40,10 @@ step1Up2024Defaults = merge ([{'--conditions':'auto:phase1_2024_realistic','--era':'Run3','--beamspot':'DBrealistic'},step1Up2018Defaults]) # step1 gensim: for 2024 HI prod step1Up2024HiProdDefaults = merge ([{'--conditions':'auto:phase1_2024_realistic_hi','--era':'Run3_pp_on_PbPb_2024','--beamspot':'DBrealistic'},step1Up2023HiProdDefaults]) +# step1 gensim: for 2024 UPC prod +step1Up2024UPCProdDefaults = merge ([{'--era':'Run3_2024_UPC'},step1Up2024HiProdDefaults]) +# step1 gensim: for 2025 UPC prod +step1Up2025UPCProdDefaults = merge ([{'--era':'Run3_2025_UPC'},step1Up2024HiProdDefaults]) steps = Steps() @@ -635,9 +638,13 @@ Run2023UPC={375463: [[52,52]]} steps['RunUPC2023']={'INPUT':InputInfo(dataSet='/HIForward1/HIRun2023A-v1/RAW',label='upc2023',events=10000,location='STD',ls=Run2023UPC)} +Run2024UPC={388784: [[344,344]]} +steps['RunUPC2024']={'INPUT':InputInfo(dataSet='/HIForward0/HIRun2024B-v1/RAW',label='upc2024',events=10000,location='STD',ls=Run2024UPC)} + RunHI2023={375491: [[100, 100]]} steps['RunHIPhysicsRawPrime2023A']={'INPUT':InputInfo(dataSet='/HIPhysicsRawPrime0/HIRun2023A-v1/RAW',label='HI2023A',events=100000,location='STD', ls=RunHI2023)} +steps['RunHLTMonitor2024I']={'INPUT':InputInfo(dataSet='/HLTMonitor/Run2024I-Express-v2/FEVTHLTALL',label='2024I',events=100000,location='STD', ls={386801: [[32, 111]]})} ################################################################## ### Golden Data Steps # Reading good runs directly from the latest golden json @@ -648,7 +655,7 @@ ###2024 pds_2024 = ['BTagMu', 'DisplacedJet', 'EGamma0', 'HcalNZS', 'JetMET0', 'Muon0', 'MuonEG', 'NoBPTX', 'ParkingDoubleMuonLowMass0', 'ParkingHH', 'ParkingLLP', 'ParkingSingleMuon0', 'ParkingVBF0', 'Tau', 'ZeroBias'] -eras_2024 = ['Run2024B', 'Run2024C', 'Run2024D', 'Run2024E', 'Run2024F'] +eras_2024 = ['Run2024B', 'Run2024C', 'Run2024D', 'Run2024E', 'Run2024F','Run2024G','Run2024H','Run2024I'] for era in eras_2024: for pd in pds_2024: dataset = "/" + pd + "/" + era + "-v1/RAW" @@ -692,6 +699,21 @@ steps[step_name] = {'INPUT':InputInfo(dataSet=dataset,label=era.split("Run")[1],events=int(evs*1e6), skimEvents=True, location='STD')} +### 2024 single lumi mask wfs for the limited matrix only +### Mask chosen from golden json away from run start + +good_runs_2024 = [379238,379454,380360,381079,382258,383814,385889,386593] +lumi_mask_2024 = [{ r : [[110, 111]]} for r in good_runs_2024] +era_mask_2024 = dict(zip(eras_2024,lumi_mask_2024)) + +for era in era_mask_2024: + for pd in pds_2024: + dataset = "/" + pd + "/" + era + "-v1/RAW" + lm = era_mask_2024[era] + step_name = "Run" + pd.replace("ParkingDouble","Park2") + era.split("Run")[1] + steps[step_name]={'INPUT':InputInfo(dataSet=dataset,label=era.split("Run")[1],events=100000,location='STD', ls=lm)} + + ################################################################## # Highstat HLTPhysics @@ -820,6 +842,12 @@ def gen2024(fragment,howMuch): def gen2024hiprod(fragment,howMuch): global step1Up2024HiProdDefaults return merge([{'cfg':fragment},howMuch,step1Up2024HiProdDefaults]) +def gen2024upcprod(fragment,howMuch): + global step1Up2024UPCProdDefaults + return merge([{'cfg':fragment},howMuch,step1Up2024UPCProdDefaults]) +def gen2025upcprod(fragment,howMuch): + global step1Up2025UPCProdDefaults + return merge([{'cfg':fragment},howMuch,step1Up2025UPCProdDefaults]) ### Production test: 13 TeV equivalents steps['ProdMinBias_13']=gen2015('MinBias_13TeV_pythia8_TuneCUETP8M1_cfi',Kby(9,100)) @@ -1272,6 +1300,8 @@ def genS(fragment,howMuch): hiDefaults2024 = {'--conditions':'auto:phase1_2024_realistic_hi', '--era':'Run3_pp_on_PbPb_2024'} hiDefaults2024_approxClusters = {'--conditions':'auto:phase1_2024_realistic_hi', '--era':'Run3_pp_on_PbPb_approxSiStripClusters_2024'} upcDefaults2024 = {'--conditions':'auto:phase1_2024_realistic_hi', '--era':'Run3_2024_UPC'} +upcDefaults2025 = {'--conditions':'auto:phase1_2024_realistic_hi', '--era':'Run3_2025_UPC'} +oxyDefaults2025 = {'--conditions':'auto:phase1_2024_realistic_hi', '--era':'Run3_2025_OXY'} steps['Hydjet2Q_MinBias_5020GeV_2018_ppReco']=merge([{'-n':1},hiDefaults2018_ppReco,gen2018hiprod('Hydjet2_Quenched_MinBias_5020GeV_cfi',U2000by1)]) steps['HydjetQ_MinBias_XeXe_5442GeV_2017']=merge([{'-n':1},hiDefaults2017,gen2017('Hydjet_Quenched_MinBias_XeXe_5442GeV_cfi',U2000by1)]) @@ -1303,9 +1333,11 @@ def genS(fragment,howMuch): steps['ZEE_5362_HI_2024']=merge([hiDefaults2024,gen2024hiprod('ZEE_5362GeV_TuneCP5_cfi',Kby(18,300))]) steps['Starlight_DoubleDiffraction_5360_HI_2023']=merge([{'-s':'LHE,GEN,SIM'},gen2023hiprod('Configuration/Generator/python/Starlight_DoubleDiffraction_5p36TeV_cfi.py',Kby(9,150))]) -steps['Starlight_DoubleDiffraction_5360_HI_2024']=merge([{'-s':'LHE,GEN,SIM'},gen2024hiprod('Configuration/Generator/python/Starlight_DoubleDiffraction_5p36TeV_cfi.py',Kby(9,150))]) +steps['Starlight_DoubleDiffraction_5360_UPC_2024']=merge([{'-s':'LHE,GEN,SIM'},gen2024upcprod('Configuration/Generator/python/Starlight_DoubleDiffraction_5p36TeV_cfi.py',Kby(9,150))]) +steps['Starlight_DoubleDiffraction_5360_UPC_2025']=merge([{'-s':'LHE,GEN,SIM'},gen2025upcprod('Configuration/Generator/python/Starlight_DoubleDiffraction_5p36TeV_cfi.py',Kby(9,150))]) steps['Pythia8_GammaNucleus_5360_HI_2023']=gen2023hiprod('Pythia8_GammaNucleus_5p36TeV_cfi',Kby(9,150)) -steps['Pythia8_GammaNucleus_5360_HI_2024']=gen2024hiprod('Pythia8_GammaNucleus_5p36TeV_cfi',Kby(9,150)) +steps['Pythia8_GammaNucleus_5360_UPC_2024']=gen2024upcprod('Pythia8_GammaNucleus_5p36TeV_cfi',Kby(9,150)) +steps['Pythia8_GammaNucleus_5360_UPC_2025']=gen2025upcprod('Pythia8_GammaNucleus_5p36TeV_cfi',Kby(9,150)) ## pp reference tests ppRefDefaults2017 = {'--conditions':'auto:phase1_2017_realistic_ppref', '--era':'Run2_2017_ppRef', '--beamspot':'Fixed_EmitRealistic5TeVppCollision2017', '-n':2} @@ -2045,6 +2077,8 @@ def lhegensim2018ml(fragment,howMuch): #steps['RESIMDIGI']=merge([{'-s':'reGEN,reSIM,DIGI,L1,DIGI2RAW,HLT:@fake,RAW2DIGI,L1Reco','-n':10,'--restoreRNDSeeds':'','--process':'HLT'},steps['DIGI']]) +steps['DIGIUPC2025']=merge([{'-s':'DIGI,L1,DIGI2RAW,HLT:HIon'}, upcDefaults2025, step2Upg2015Defaults]) +steps['DIGIUPC2024']=merge([{'-s':'DIGI,L1,DIGI2RAW,HLT:HIon'}, upcDefaults2024, step2Upg2015Defaults]) steps['DIGIHI2024APPROXCLUSTERS']=merge([{'-s':'DIGI:pdigi_hi_nogen,L1,DIGI2RAW,HLT:HIon'}, hiDefaults2024_approxClusters, {'--pileup':'HiMixNoPU'}, step2Upg2015Defaults]) steps['DIGIHI2024']=merge([{'-s':'DIGI:pdigi_hi_nogen,L1,DIGI2RAW,HLT:HIon'}, hiDefaults2024, {'--pileup':'HiMixNoPU'}, step2Upg2015Defaults]) steps['DIGIHI2023PPRECOAPPROXCLUSTERS']=merge([{'-s':'DIGI:pdigi_hi_nogen,L1,DIGI2RAW,HLT:@fake2'}, hiDefaults2023_ppReco_approxClusters, {'--pileup':'HiMixNoPU'}, step2Upg2015Defaults]) @@ -2427,6 +2461,16 @@ def lhegensim2018ml(fragment,howMuch): '--era':'Run3', '--conditions':'auto:run3_data_express' },steps['TIER0']]) +steps['ReAlCaHLT']={'-s':'ALCA:TkAlHLTTracks+TkAlHLTTracksZMuMu', + '--conditions':'140X_dataRun3_Express_v3', + '--scenario': 'pp', + '--data': '', + '--era':'Run3_2024', + '--datatier':'ALCARECO', + '--eventcontent':'ALCARECO', + '--process':'RECO', + '--processName':'ReAlCa', + } steps['TIER0EXPCOSMICSRUN3']=merge([{'--scenario':'cosmics', '-s':'RAW2DIGI,L1Reco,RECO,ALCAPRODUCER:@allForExpressCosmics,ENDJOB', '-n':1000, @@ -2711,6 +2755,15 @@ def lhegensim2018ml(fragment,howMuch): '--filein':'file:PromptCalibProdSiPixelAliHGComb.root', '--customise':'Alignment/CommonAlignmentProducer/customizeLSNumberFilterForRelVals.lowerHitsPerStructure'} +steps['ALCAHARVDSIPIXELALIHLTHGCOMBINED']={'-s':'ALCAHARVEST:%s'%(autoPCL['PromptCalibProdSiPixelAliHLTHGC']), + '--conditions':'140X_dataRun3_Express_v3', + '--scenario':'pp', + '--era':'Run3_2024', + '--data':'', + '-n':'-1', + '--filein':'file:PromptCalibProdSiPixelAliHLTHGC_0.root,file:PromptCalibProdSiPixelAliHLTHGC_1.root', + '--customise':'Alignment/CommonAlignmentProducer/customizeLSNumberFilterForRelVals.lowerHitsPerStructure'} + steps['ALCAHARVDPPSCAL']={'-s':'ALCAHARVEST:%s'%(autoPCL['PromptCalibProdPPSTimingCalib']), '--conditions':'auto:run3_data_express', '--scenario':'pp', @@ -2771,6 +2824,7 @@ def lhegensim2018ml(fragment,howMuch): steps['RECODR3_2023']=merge([{'--era':'Run3_2023'},steps['RECODR3']]) steps['RECODR3_2024']=merge([{'--era':'Run3_2024'},steps['RECODR3']]) +steps['RECODR3_2025']=merge([{'--era':'Run3_2025'},steps['RECODR3']]) steps['RECODR3_reHLT_2022']=merge([{'--conditions':'auto:run3_data_relval', '--hltProcess':'reHLT'},steps['RECODR3']]) steps['RECODR3_reHLT_2023']=merge([{'--conditions':'auto:run3_data_relval', '--hltProcess':'reHLT'},steps['RECODR3_2023']]) @@ -2782,6 +2836,9 @@ def lhegensim2018ml(fragment,howMuch): steps['RECODR3_2023_UPC']=merge([{'--conditions':'auto:run3_data', '--era':'Run3_2023_UPC'},steps['RECODR3_2023_HIN']]) steps['RECODR3_2024_HIN']=merge([{'--conditions':'auto:run3_data_prompt', '-s':'RAW2DIGI,L1Reco,RECO,DQM:@commonFakeHLT+@standardDQMFakeHLT', '--repacked':'', '-n':1000},steps['RECODR3_2024']]) steps['RECODR3_2024_UPC']=merge([{'--era':'Run3_2024_UPC'},steps['RECODR3_2024_HIN']]) +steps['RECODR3_2025_HIN']=merge([{'--conditions':'auto:run3_data_prompt', '-s':'RAW2DIGI,L1Reco,RECO,DQM:@commonFakeHLT+@standardDQMFakeHLT', '--repacked':'', '-n':1000},steps['RECODR3_2025']]) +steps['RECODR3_2025_UPC']=merge([{'--era':'Run3_2025_UPC'},steps['RECODR3_2025_HIN']]) +steps['RECODR3_2025_OXY']=merge([{'--era':'Run3_2025_OXY'},steps['RECODR3_2025_HIN']]) steps['RECODR3Splash']=merge([{'-n': 2, '-s': 'RAW2DIGI,L1Reco,RECO,PAT,ALCA:SiStripCalZeroBias+SiStripCalMinBias+TkAlMinBias+EcalESAlign,DQM:@standardDQMFakeHLT+@miniAODDQM' @@ -2879,14 +2936,18 @@ def gen2024HiMix(fragment,howMuch): '--era' :'Run2_2016' } -step3_pixel_ntuplet_cpu = { - '--procModifiers': 'pixelNtupletFit' +step3_alpaka_cpu = { + '--procModifiers': 'alpaka', + '--accelerators' : 'cpu' } -step3_pixel_ntuplet_gpu = { - '--procModifiers': 'pixelNtupletFit,gpu' +step3_alpaka_gpu = { + '--procModifiers': 'alpaka', + '--accelerators' : '*' ## redundant, here just for readability } -step3_pixel_ntuplet_gpu_validation = { - '--procModifiers': 'pixelNtupletFit,gpuValidation' + +step3_alpaka_gpu_validation = { + '--procModifiers': 'alpaka,alpakaValidation', + '--accelerators' : 'gpu*' } step3_pixel_triplets = { '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' @@ -2897,9 +2958,14 @@ def gen2024HiMix(fragment,howMuch): step3_pixel_triplets_profiling = { '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly' } -step3_gpu = { - '--procModifiers': 'gpu', +step3_ecal_profiling = { + '--customise': 'RecoLocalCalo/Configuration/customizeEcalOnlyForProfiling.customizeEcalOnlyForProfilingGPUOnly' +} +step3_hcal_profiling = { + '--customise': 'RecoLocalCalo/Configuration/customizeHcalOnlyForProfiling.customizeHcalOnlyForProfilingGPUOnly' } + + step3_trackingLowPU = { '--era': 'Run2_2016_trackingLowPU' } @@ -3108,23 +3174,45 @@ def gen2024HiMix(fragment,howMuch): steps['RECODR3_reHLT_ZBOffline']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,PAT,ALCA:SiStripCalZeroBias+SiStripCalMinBias+TkAlMinBias+EcalESAlign+HcalCalIsoTrkProducerFilter,DQM:@rerecoZeroBias+@miniAODDQM','--procModifiers':'siPixelQualityRawToDigi'},steps['RECODR3_reHLT_2022']]) steps['RECODR3_reHLT_HLTPhysics_Offline']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,PAT,ALCA:TkAlMinBias+HcalCalIterativePhiSym+HcalCalIsoTrkProducerFilter+HcalCalHO+HcalCalHBHEMuonProducerFilter,DQM:@commonReduced+@miniAODDQM','--procModifiers':'siPixelQualityRawToDigi'},steps['RECODR3_reHLT_2022']]) steps['RECODR3_reHLT_AlCaTkCosmics_Offline']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,SKIM:EXONoBPTXSkim,PAT,ALCA:TkAlCosmicsInCollisions,DQM:@standardDQMFakeHLT+@miniAODDQM'},steps['RECODR3_reHLT_2022']]) -steps['RECODR3_reHLT_pixelTrackingOnly']=merge([{'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,DQM:@pixelTrackingOnlyDQM'},steps['RECODR3_reHLT_2023']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyCPU']=merge([step3_pixel_ntuplet_cpu, steps['RECODR3_reHLT_pixelTrackingOnly']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyGPU']=merge([step3_pixel_ntuplet_gpu, steps['RECODR3_reHLT_pixelTrackingOnly']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyGPUValidation']=merge([{'--accelerators':'gpu-nvidia'},step3_pixel_ntuplet_gpu_validation,steps['RECODR3_reHLT_Patatrack_PixelOnlyGPU']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyGPUProfiling']=merge([{'-s':'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly','--customise':'RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'},steps['RECODR3_reHLT_Patatrack_PixelOnlyGPU']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyTripletsCPU']=merge([step3_pixel_ntuplet_cpu, step3_pixel_triplets, steps['RECODR3_reHLT_pixelTrackingOnly']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPU']=merge([step3_pixel_ntuplet_gpu, step3_pixel_triplets, steps['RECODR3_reHLT_pixelTrackingOnly']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPUValidation']=merge([{'--accelerators':'gpu-nvidia'},step3_pixel_ntuplet_gpu_validation,steps['RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPU']]) -steps['RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPUProfiling']=merge([{'-s':'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly','--customise':'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'},steps['RECODR3_reHLT_Patatrack_PixelOnlyTripletsGPU']]) -steps['RECODR3_reHLT_ECALOnlyCPU']=merge([{'-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,DQM:@ecalOnly'},steps['RECODR3_reHLT_2023']]) -steps['RECODR3_reHLT_ECALOnlyGPU']=merge([step3_gpu, steps['RECODR3_reHLT_ECALOnlyCPU']]) -steps['RECODR3_reHLT_ECALOnlyGPUValidation']=merge([{'--accelerators':'gpu-nvidia','--procModifiers':'gpuValidation'},steps['RECODR3_reHLT_ECALOnlyGPU']]) -steps['RECODR3_reHLT_ECALOnlyGPUProfiling']=merge([{'-s':'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly', '--customise':'RecoLocalCalo/Configuration/customizeEcalOnlyForProfiling.customizeEcalOnlyForProfilingGPUOnly'},steps['RECODR3_reHLT_ECALOnlyGPU']]) -steps['RECODR3_reHLT_HCALOnlyCPU']=merge([{'-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,DQM:@hcalOnly+@hcal2Only'},steps['RECODR3_reHLT_2023']]) -steps['RECODR3_reHLT_HCALOnlyGPU']=merge([step3_gpu, steps['RECODR3_reHLT_HCALOnlyCPU']]) -steps['RECODR3_reHLT_HCALOnlyGPUValidation']=merge([{'--accelerators':'gpu-nvidia','--procModifiers':'gpuValidation'},steps['RECODR3_reHLT_HCALOnlyGPU']]) -steps['RECODR3_reHLT_HCALOnlyGPUProfiling']=merge([{'-s':'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly','--customise':'RecoLocalCalo/Configuration/customizeHcalOnlyForProfiling.customizeHcalOnlyForProfilingGPUOnly'},steps['RECODR3_reHLT_HCALOnlyGPU']]) + +###################################################### +###### Single detector wfs (pixel,ECAL,HCAL) + +### Pixel Only wfs +## Legacy wf (CPUs) +steps['RECODR3_reHLT_pixelTrackingOnly']=merge([{'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,DQM:@pixelTrackingOnlyDQM'}, steps['RECODR3_reHLT_2023']]) +steps['RECODR3_reHLT_pixelTrackingOnlyProfiling']=merge([{'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly'}, steps['RECODR3_reHLT_2023']]) +## Alpaka Quadruplets Wfs +steps['RECODR3_reHLT_Alpaka_PixelOnlyCPU']=merge([step3_alpaka_cpu, steps['RECODR3_reHLT_pixelTrackingOnly']]) +steps['RECODR3_reHLT_Alpaka_PixelOnlyGPU']=merge([step3_alpaka_gpu, steps['RECODR3_reHLT_pixelTrackingOnly']]) +steps['RECODR3_reHLT_Alpaka_PixelOnlyGPUValidation']=merge([step3_alpaka_gpu_validation,steps['RECODR3_reHLT_Alpaka_PixelOnlyGPU']]) +steps['RECODR3_reHLT_Alpaka_PixelOnlyGPUProfiling']=merge([step3_alpaka_gpu, step3_pixel_profiling, steps['RECODR3_reHLT_pixelTrackingOnlyProfiling']]) +## Alpaka Triplets Wfs +steps['RECODR3_reHLT_Alpaka_PixelOnlyTripletsCPU']=merge([step3_alpaka_cpu, step3_pixel_triplets, steps['RECODR3_reHLT_pixelTrackingOnly']]) +steps['RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPU']=merge([step3_alpaka_gpu, step3_pixel_triplets, steps['RECODR3_reHLT_pixelTrackingOnly']]) +steps['RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPUValidation']=merge([step3_alpaka_gpu_validation,steps['RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPU']]) +steps['RECODR3_reHLT_Alpaka_PixelOnlyTripletsGPUProfiling']=merge([step3_alpaka_gpu, step3_pixel_triplets_profiling, steps['RECODR3_reHLT_pixelTrackingOnlyProfiling']]) + +### ECAL Only +## Legacy wfs (CPU) +steps['RECODR3_reHLT_ECALOnly']=merge([{'-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,DQM:@ecalOnly'}, steps['RECODR3_reHLT_2023']]) +steps['RECODR3_reHLT_ECALOnlyProfiling']=merge([{'-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly'}, steps['RECODR3_reHLT_2023']]) +## Alpaka +steps['RECODR3_reHLT_Alpaka_ECALOnlyCPU']=merge([step3_alpaka_cpu, steps['RECODR3_reHLT_ECALOnly']]) +steps['RECODR3_reHLT_Alpaka_ECALOnlyGPU']=merge([step3_alpaka_gpu, steps['RECODR3_reHLT_ECALOnly']]) +steps['RECODR3_reHLT_Alpaka_ECALOnlyGPUValidation']=merge([step3_alpaka_gpu_validation, steps['RECODR3_reHLT_Alpaka_ECALOnlyGPU']]) +steps['RECODR3_reHLT_Alpaka_ECALOnlyGPUProfiling']=merge([step3_ecal_profiling, steps['RECODR3_reHLT_ECALOnlyProfiling'], steps['RECODR3_reHLT_Alpaka_ECALOnlyGPU']]) + +### HCAL Only +## Legacy wfs (CPU) +steps['RECODR3_reHLT_HCALOnly']=merge([{'-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,DQM:@hcalOnly+@hcal2Only'}, steps['RECODR3_reHLT_2023']]) +steps['RECODR3_reHLT_HCALOnlyProfiling']=merge([{'-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly'}, steps['RECODR3_reHLT_2023']]) +## Alpaka +steps['RECODR3_reHLT_Alpaka_HCALOnlyCPU']=merge([step3_alpaka_cpu, steps['RECODR3_reHLT_HCALOnly']]) +steps['RECODR3_reHLT_Alpaka_HCALOnlyGPU']=merge([step3_alpaka_gpu, steps['RECODR3_reHLT_HCALOnly']]) +steps['RECODR3_reHLT_Alpaka_HCALOnlyGPUValidation']=merge([step3_alpaka_gpu_validation, steps['RECODR3_reHLT_Alpaka_HCALOnlyGPU']]) +steps['RECODR3_reHLT_Alpaka_HCALOnlyGPUProfiling']=merge([step3_hcal_profiling, steps['RECODR3_reHLT_HCALOnlyProfiling'], steps['RECODR3_reHLT_Alpaka_HCALOnlyGPU']]) +###################################################### steps['RECONANORUN3_reHLT_2022']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,PAT,NANO,DQM:@standardDQMFakeHLT+@miniAODDQM+@nanoAODDQM','--datatier':'RECO,MINIAOD,NANOAOD,DQMIO','--eventcontent':'RECO,MINIAOD,NANOEDMAOD,DQM'},steps['RECODR3_reHLT_2022']]) steps['RECONANORUN3_ZB_reHLT_2022']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,PAT,NANO,DQM:@rerecoZeroBiasFakeHLT+@miniAODDQM+@nanoAODDQM'},steps['RECONANORUN3_reHLT_2022']]) @@ -3147,16 +3235,16 @@ def gen2024HiMix(fragment,howMuch): steps['RECONANORUN3_ZB_reHLT_2024']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,PAT,NANO,DQM:@rerecoZeroBias+@miniAODDQM+@nanoAODDQM'},steps['RECONANORUN3_reHLT_2024']]) steps['AODNANORUN3_reHLT_2024']=merge([{'-s':'RAW2DIGI,L1Reco,RECO,PAT,NANO,DQM:@standardDQM+@miniAODDQM+@nanoAODDQM','--datatier':'AOD,MINIAOD,NANOAOD,DQMIO','--eventcontent':'AOD,MINIAOD,NANOEDMAOD,DQM'},steps['RECODR3_reHLT_2024']]) -# patatrack validation in data -steps['RecoData_Patatrack_AllGPU_Validation_2023'] = merge([{'-s':'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', +# Patatrack Alpaka validation in data +steps['RecoData_Alpaka_AllGPU_Validation_2023'] = merge([{'-s':'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', '--conditions':'auto:run3_data_prompt', '--datatier':'RECO,MINIAOD,DQMIO', '-n':'100', '--eventcontent':'RECO,MINIAOD,DQM', '--geometry':'DB:Extended', '--era':'Run3', - '--accelerators': 'gpu-nvidia', - '--procModifiers':'pixelNtupletFit,gpuValidation'},dataReco]) + '--accelerators': 'gpu-*', + '--procModifiers':'alpakaValidation'},dataReco]) # Run-3 2022 skim for s in autoSkim.keys(): @@ -3241,6 +3329,14 @@ def gen2024HiMix(fragment,howMuch): steps['RECOUP15_ID']=merge([{'--hltProcess':'HLT2'},steps['RECOUP15']]) +steps['RECOOXY2025']=merge([oxyDefaults2025,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@miniAODDQM','--datatier':'GEN-SIM-RECO,MINIAODSIM,DQMIO','--eventcontent':'RECOSIM,MINIAODSIM,DQM'},step3Up2015Defaults]) +steps['MINIOXY2025']=merge([oxyDefaults2025,{'-s':'PAT','--datatier':'MINIAODSIM','--eventcontent':'MINIAODSIM'},step3Up2015Defaults]) +steps['ALCARECOOXY2025']=merge([oxyDefaults2025,{'-s':'ALCA:TkAlMinBias+SiStripCalMinBias','--datatier':'ALCARECO','--eventcontent':'ALCARECO'}]) + +steps['RECOUPC2025']=merge([upcDefaults2025,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@miniAODDQM','--datatier':'GEN-SIM-RECO,MINIAODSIM,DQMIO','--eventcontent':'RECOSIM,MINIAODSIM,DQM'},step3Up2015Defaults]) +steps['MINIUPC2025']=merge([upcDefaults2025,{'-s':'PAT','--datatier':'MINIAODSIM','--eventcontent':'MINIAODSIM'},step3Up2015Defaults]) +steps['ALCARECOUPC2025']=merge([upcDefaults2025,{'-s':'ALCA:TkAlMinBias+SiStripCalMinBias','--datatier':'ALCARECO','--eventcontent':'ALCARECO'}]) + steps['RECOUPC2024']=merge([upcDefaults2024,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@miniAODDQM','--datatier':'GEN-SIM-RECO,MINIAODSIM,DQMIO','--eventcontent':'RECOSIM,MINIAODSIM,DQM'},step3Up2015Defaults]) steps['MINIUPC2024']=merge([upcDefaults2024,{'-s':'PAT','--datatier':'MINIAODSIM','--eventcontent':'MINIAODSIM'},step3Up2015Defaults]) steps['ALCARECOUPC2024']=merge([upcDefaults2024,{'-s':'ALCA:TkAlMinBias+SiStripCalMinBias','--datatier':'ALCARECO','--eventcontent':'ALCARECO'}]) @@ -3273,7 +3369,7 @@ def gen2024HiMix(fragment,howMuch): '--procModifiers':'genJetSubEvent', },step3Up2015Defaults]) -steps['SKIMHIFORWARDRUN3_2024'] = merge([hiDefaults2024, {'-s':'RAW2DIGI,L1Reco,RECO,SKIM:UPCMonopole,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@miniAODDQM'},steps['RECOHI2024']]) +steps['SKIMHIFORWARDRUN3_2024'] = merge([upcDefaults2024, {'-s':'RAW2DIGI,L1Reco,RECO,SKIM:UPCMonopole,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@miniAODDQM'},steps['RECOUPC2024']]) steps['SKIMHIPHYSICSRAWPRIMERUN3_2024'] = merge([hiDefaults2024_approxClusters, {'-s':'RAW2DIGI,L1Reco,RECO,SKIM:PbPbEMu+PbPbZEE+PbPbZMu+PbPbHighPtJets,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@miniAODDQM'},steps['RECOHI2024']]) steps['MINIHI2024PROD']=merge([hiDefaults2024,{'-s':'PAT', @@ -3322,13 +3418,13 @@ def gen2024HiMix(fragment,howMuch): '--era':'Run3_pp_on_PbPb_2023', '--procModifiers':'genJetSubEvent', },step3Up2015Defaults]) -steps['RECOHI2023PPRECOMB_PatatrackGPU']=merge([hiDefaults2023_ppReco,step3_pixel_ntuplet_gpu,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidationNoHLT+@miniAODValidation,DQM:@standardDQMFakeHLT+@miniAODDQM', +steps['RECOHI2023PPRECOMB_AlpakaGPU']=merge([hiDefaults2023_ppReco,step3_alpaka_gpu,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidationNoHLT+@miniAODValidation,DQM:@standardDQMFakeHLT+@miniAODDQM', '--datatier':'GEN-SIM-RECO,MINIAODSIM,DQMIO', '--eventcontent':'RECOSIM,MINIAODSIM,DQM', '--era':'Run3_pp_on_PbPb', '--procModifiers':'genJetSubEvent', },step3Up2015Defaults]) -steps['RECOHI2023PPRECOMB_PatatrackCPU']=merge([hiDefaults2023_ppReco,step3_pixel_ntuplet_cpu,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidationNoHLT+@miniAODValidation,DQM:@standardDQMFakeHLT+@miniAODDQM', +steps['RECOHI2023PPRECOMB_AlpakaCPU']=merge([hiDefaults2023_ppReco,step3_alpaka_cpu,{'-s':'RAW2DIGI,L1Reco,RECO,PAT,VALIDATION:@standardValidationNoHLT+@miniAODValidation,DQM:@standardDQMFakeHLT+@miniAODDQM', '--datatier':'GEN-SIM-RECO,MINIAODSIM,DQMIO', '--eventcontent':'RECOSIM,MINIAODSIM,DQM', '--era':'Run3_pp_on_PbPb', @@ -3514,6 +3610,47 @@ def gen2024HiMix(fragment,howMuch): '--datatier':'ALCARECO', '--eventcontent':'ALCARECO', '--triggerResultsProcess': 'RECO'} + +steps['ALCAReAlCaHLTHGComb'] = {'-s': 'ALCA:PromptCalibProdSiPixelAliHLTHGC', + '--conditions': '140X_dataRun3_Express_v3', + '--customise': 'Alignment/CommonAlignmentProducer/customizeLSNumberFilterForRelVals.doNotFilterLS', + '--scenario': 'pp', + '--data': '', + '--era': 'Run3_2024', + '--datatier': 'ALCARECO', + '--eventcontent': 'ALCARECO', + '--processName': 'ReAlCaHLTHGC', + '-n': '-1', + '--filein': 'file:TkAlHLTTracks.root', + '--fileout': 'PromptCalibProdSiPixelAliHLTHGC_0.root', + '--customise_commands': '\"process.ALCARECOTkAlZMuMuFilterForSiPixelAliHLT.throw = False; ' + 'process.ALCARECOTkAlMinBiasFilterForSiPixelAliHLTHG.TriggerResultsTag = ' + '\\"TriggerResults::ReAlCa\\"; ' + 'process.ALCARECOStreamPromptCalibProdSiPixelAliHLTHGC.fileName = ' + '\\"PromptCalibProdSiPixelAliHLTHGC_0.root\\"\"', + '--triggerResultsProcess': 'ReAlCa' + } + +steps['ALCAReAlCaHLTHGCombZMUMU'] = {'-s': 'ALCA:PromptCalibProdSiPixelAliHLTHGC', + '--conditions': '140X_dataRun3_Express_v3', + '--customise': 'Alignment/CommonAlignmentProducer/customizeLSNumberFilterForRelVals.doNotFilterLS', + '--scenario': 'pp', + '--data': '', + '--era': 'Run3_2024', + '--datatier': 'ALCARECO', + '--eventcontent': 'ALCARECO', + '--processName': 'ReAlCaHLTHGC', + '-n': '-1', + '--filein': 'file:TkAlHLTTracksZMuMu.root', + '--fileout': 'PromptCalibProdSiPixelAliHLTHGC_1.root', + '--customise_commands': '\"process.ALCARECOTkAlZMuMuFilterForSiPixelAliHLT.throw = False; ' + 'process.ALCARECOTkAlMinBiasFilterForSiPixelAliHLTHG.TriggerResultsTag = ' + '\\"TriggerResults::ReAlCa\\"; ' + 'process.ALCARECOStreamPromptCalibProdSiPixelAliHLTHGC.fileName = ' + '\\"PromptCalibProdSiPixelAliHLTHGC_1.root\\"\"', + '--triggerResultsProcess': 'ReAlCa' + } + steps['ALCAEXPCOSMICSRUN3']={'-s':'ALCAOUTPUT:@allForExpressCosmics,ALCA:PromptCalibProdSiStrip+PromptCalibProdSiPixelLAMCS+PromptCalibProdSiStripLA', '-n':1000, '--scenario':'cosmics', @@ -3901,7 +4038,7 @@ def gen2024HiMix(fragment,howMuch): steps['HARVESTRUN3_HCALOnly'] = merge([ {'-s':'HARVESTING:@hcalOnly'}, steps['HARVESTRUN3_2023']]) steps['HARVESTRUN3_HCALOnlyGPUValidation'] = merge([ {'--procModifiers':'gpuValidation'}, steps['HARVESTRUN3_HCALOnly']]) -steps['HARVESTData_Patatrack_AllGPU_Validation_2023'] = merge([{'--data':'', +steps['HARVESTData_Alpaka_AllGPU_Validation_2023'] = merge([{'--data':'', '-s':'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only', '--conditions':'auto:run3_data_prompt', '--geometry':'DB:Extended', @@ -4002,6 +4139,8 @@ def gen2024HiMix(fragment,howMuch): '--filetype':'DQM', '--scenario':'pp'} +steps['HARVESTOXY2025']=merge([oxyDefaults2025,{'-s':'HARVESTING:validationHarvesting+dqmHarvesting','--filein':'file:step3_inDQM.root','--mc':'','--filetype':'DQM'}]) +steps['HARVESTUPC2025']=merge([upcDefaults2025,{'-s':'HARVESTING:validationHarvesting+dqmHarvesting','--filein':'file:step3_inDQM.root','--mc':'','--filetype':'DQM'}]) steps['HARVESTUPC2024']=merge([upcDefaults2024,{'-s':'HARVESTING:validationHarvesting+dqmHarvesting','--filein':'file:step3_inDQM.root','--mc':'','--filetype':'DQM'}]) steps['HARVESTUPC2023']=merge([upcDefaults2023,{'-s':'HARVESTING:validationHarvestingNoHLT+dqmHarvestingFakeHLT','--filein':'file:step3_inDQM.root','--mc':'','--filetype':'DQM'}]) @@ -4382,9 +4521,9 @@ def gen2024HiMix(fragment,howMuch): defaultDataSets['2017Design']='CMSSW_12_0_0_pre4-113X_mc2017_design_v5-v' defaultDataSets['2018']='CMSSW_12_0_0_pre4-113X_upgrade2018_realistic_v5-v' defaultDataSets['2018Design']='CMSSW_12_0_0_pre4-113X_upgrade2018_design_v5-v' -defaultDataSets['2021']='CMSSW_13_1_0_pre1-130X_mcRun3_2022_realistic_withNewBSFromEOY2022Data_v2_RV186-v' -defaultDataSets['2021Design']='CMSSW_12_5_0_pre4-124X_mcRun3_2022_design_v7_design_BS2022-v' -defaultDataSets['2021FS']='CMSSW_12_4_13-124X_mcRun3_2022_realistic_v12_2021_FastSim-v' +defaultDataSets['2022']='CMSSW_14_0_18-140X_mcRun3_2022_realistic_v12_STD_noPU_2022_reMC-v' +defaultDataSets['2022Design']='CMSSW_12_5_0_pre4-124X_mcRun3_2022_design_v7_design_BS2022-v' +defaultDataSets['2022FS']='CMSSW_14_0_18-140X_mcRun3_2022_realistic_v12_2022_FastSim_Run3_FastSim-v' defaultDataSets['2023']='CMSSW_13_0_10-130X_mcRun3_2023_realistic_withEarly2023BS_v1_2023-v' defaultDataSets['2023FS']='CMSSW_13_0_11-130X_mcRun3_2023_realistic_withEarly2023BS_v1_FastSim-v' defaultDataSets['2024']='CMSSW_14_1_0_pre7-140X_mcRun3_2024_realistic_v21_STD_RegeneratedGS_2024_noPU-v' @@ -4429,12 +4568,12 @@ def gen2024HiMix(fragment,howMuch): PUDataSets[ds]={'-n':10,'--pileup':'AVE_35_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)} elif '2018' in ds or 'postLS2' in ds: PUDataSets[ds]={'-n':10,'--pileup':'AVE_50_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)} - elif '2021' in ds or '2023' in ds or '2024' in ds: + elif '2022' in ds or '2023' in ds or '2024' in ds: if 'FS' not in ds: PUDataSets[ds]={'-n':10,'--pileup':'Run3_Flat55To75_PoissonOOTPU','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)} else: PUDataSets[ds]={'-n':10,'--pileup':'Run3_Flat55To75_PoissonOOTPU','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM-RECO'%(name,)} - elif '2026' in ds: + elif 'Run4' in ds: PUDataSets[ds]={'-n':10,'--pileup':'AVE_200_BX_25ns','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)} else: PUDataSets[ds]={'-n':10,'--pileup':'AVE_35_BX_25ns','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)} diff --git a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py index 31543ebd3b380..8275172ecfbda 100644 --- a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py +++ b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py @@ -18,18 +18,18 @@ '2018PU', '2018Design', '2018DesignPU', - '2021', - '2021PU', - '2021Design', - '2021DesignPU', + '2022', + '2022PU', + '2022Design', + '2022DesignPU', '2023', '2023PU', '2024', '2024PU', - '2021FS', - '2021FSPU', - '2021postEE', - '2021postEEPU', + '2022FS', + '2022FSPU', + '2022postEE', + '2022postEEPU', '2023FS', '2023FSPU', '2022HI', @@ -93,6 +93,8 @@ 'Run4D110SimOnGen', 'Run4D115', 'Run4D115PU', + 'Run4D116', + 'Run4D116PU', ] # pre-generation of WF numbers @@ -270,9 +272,9 @@ def setup_(self, step, stepName, stepDict, k, properties): if 'Digi' in step and 'NoHLT' not in step: stepDict[stepName][k] = merge([{'-s': re.sub(',HLT.*', '', stepDict[step][k]['-s'])}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - if ('TTbar_14TeV' in fragment and '2021' == key): - stepList.insert(stepList.index('Digi_DigiNoHLT_2021')+1, 'HLTRun3_2021') - return ('TTbar_14TeV' in fragment and '2021' == key) + if ('TTbar_14TeV' in fragment and '2022' == key): + stepList.insert(stepList.index('Digi_DigiNoHLT_2022')+1, 'HLTRun3_2022') + return ('TTbar_14TeV' in fragment and '2022' == key) upgradeWFs['DigiNoHLT'] = UpgradeWorkflow_DigiNoHLT( steps = [ 'Digi', @@ -445,7 +447,7 @@ def setup__(self, step, stepName, stepDict, k, properties): if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step): stepDict[stepName][k] = merge([self.step2, stepDict[step][k]]) if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) def condition_(self, fragment, stepList, key, hasHarvest): - return any(y in key for y in ['2017','2021','2023','2024','2025']) and ('FS' not in key) + return any(y in key for y in ['2017','2022','2023','2024','2025']) and ('FS' not in key) upgradeWFs['trackingMkFit'] = UpgradeWorkflow_trackingMkFit( steps = [ 'Digi', @@ -496,8 +498,9 @@ def setup__(self, step, stepName, stepDict, k, properties): if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]]) elif 'ALCA' in step: stepDict[stepName][k] = None - def condition_(self, fragment, stepList, key, hasHarvest): - return ('Run4' in key) + def condition(self, fragment, stepList, key, hasHarvest): + result = (fragment=="TTbar_14TeV") and hasHarvest and ('Run4' in key) + return result upgradeWFs['lstOnCPUIters01TrackingOnly'] = UpgradeWorkflow_lstOnCPUIters01TrackingOnly( steps = [ 'RecoGlobal', @@ -506,7 +509,10 @@ def condition_(self, fragment, stepList, key, hasHarvest): 'ALCA', 'ALCAPhase2' ], - PU = [], + PU = [ + 'RecoGlobal', + 'HARVESTGlobal', + ], suffix = '_lstOnCPUIters01TrackingOnly', offset = 0.703, ) @@ -515,14 +521,15 @@ def condition_(self, fragment, stepList, key, hasHarvest): '--accelerators' : 'cpu' } -# LST on GPU, initialStep+highPtTripletStep-only tracking-only +# LST on GPU (if available), initialStep+highPtTripletStep-only tracking-only class UpgradeWorkflow_lstOnGPUIters01TrackingOnly(UpgradeWorkflowTracking): def setup__(self, step, stepName, stepDict, k, properties): if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]]) elif 'ALCA' in step: stepDict[stepName][k] = None - def condition_(self, fragment, stepList, key, hasHarvest): - return ('Run4' in key) + def condition(self, fragment, stepList, key, hasHarvest): + result = (fragment=="TTbar_14TeV") and hasHarvest and ('Run4' in key) + return result upgradeWFs['lstOnGPUIters01TrackingOnly'] = UpgradeWorkflow_lstOnGPUIters01TrackingOnly( steps = [ 'RecoGlobal', @@ -531,13 +538,15 @@ def condition_(self, fragment, stepList, key, hasHarvest): 'ALCA', 'ALCAPhase2' ], - PU = [], + PU = [ + 'RecoGlobal', + 'HARVESTGlobal', + ], suffix = '_lstOnGPUIters01TrackingOnly', offset = 0.704, ) upgradeWFs['lstOnGPUIters01TrackingOnly'].step3 = upgradeWFs['trackingOnly'].step3 | { '--procModifiers': 'trackingIters01,trackingLST', - '--accelerators' : 'gpu-*' } #DeepCore seeding for JetCore iteration workflow @@ -548,7 +557,7 @@ def setup_(self, step, stepName, stepDict, k, properties): stepDict[stepName][k] = None elif 'Reco' in step or 'HARVEST' in step: stepDict[stepName][k] = merge([{'--procModifiers': 'seedingDeepCore'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - result = (fragment=="QCD_Pt_1800_2400_14" or fragment=="TTbar_14TeV" ) and any(y in key for y in ['2021','2024','2025']) and hasHarvest + result = (fragment=="QCD_Pt_1800_2400_14" or fragment=="TTbar_14TeV" ) and any(y in key for y in ['2022','2024','2025']) and hasHarvest return result upgradeWFs['seedingDeepCore'] = UpgradeWorkflow_seedingDeepCore( steps = [ @@ -584,7 +593,7 @@ class UpgradeWorkflow_displacedRegional(UpgradeWorkflowTracking): def setup__(self, step, stepName, stepDict, k, properties): if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) def condition_(self, fragment, stepList, key, hasHarvest): - return any(y in key for y in ['2021','2023','2024','2025']) + return any(y in key for y in ['2022','2023','2024','2025']) upgradeWFs['displacedRegional'] = UpgradeWorkflow_displacedRegional( steps = [ 'Reco', @@ -663,7 +672,7 @@ def setup_(self, step, stepName, stepDict, k, properties): def condition(self, fragment, stepList, key, hasHarvest): # select only a subset of the workflows selected = (fragment == "TTbar_14TeV") and ('FS' not in key) and hasHarvest - result = selected and any(y in key for y in ['2021','2024','2025','Run4']) + result = selected and any(y in key for y in ['2022','2024','2025','Run4']) return result @@ -814,13 +823,77 @@ def condition(self, fragment, stepList, key, hasHarvest): upgradeWFs['ticl_v5_superclustering_mustache_pf'].step3 = {'--procModifiers': 'ticl_v5,ticl_superclustering_mustache_pf'} upgradeWFs['ticl_v5_superclustering_mustache_pf'].step4 = {'--procModifiers': 'ticl_v5,ticl_superclustering_mustache_pf'} +# Improved L2 seeding from L1Tk Muons and L3 Tracker Muon Inside-Out reconstruction first (Phase-2 Muon default) +class UpgradeWorkflow_phase2L2AndL3Muons(UpgradeWorkflow): + def setup_(self, step, stepName, stepDict, k, properties): + if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step): + stepDict[stepName][k] = merge([self.step2, stepDict[step][k]]) + if 'RecoGlobal' in step: + stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) + if 'HARVESTGlobal' in step: + stepDict[stepName][k] = merge([self.step4, stepDict[step][k]]) + def condition(self, fragment, stepList, key, hasHarvest): + return (fragment=="ZMM_14" or 'SingleMu' in fragment or 'TTbar_14' in fragment) and 'Run4' in key + +upgradeWFs['phase2L2AndL3Muons'] = UpgradeWorkflow_phase2L2AndL3Muons( + steps = [ + 'HLTOnly', + 'DigiTrigger', + 'RecoGlobal', + 'HARVESTGlobal' + ], + PU = [ + 'HLTOnly', + 'DigiTrigger', + 'RecoGlobal', + 'HARVESTGlobal' + ], + suffix = '_phase2L2AndL3MuonsIOFirst', + offset = 0.777, +) +upgradeWFs['phase2L2AndL3Muons'].step2 = {'--procModifiers':'phase2L2AndL3Muons'} +upgradeWFs['phase2L2AndL3Muons'].step3 = {'--procModifiers':'phase2L2AndL3Muons'} +upgradeWFs['phase2L2AndL3Muons'].step4 = {'--procModifiers':'phase2L2AndL3Muons'} + +# Improved L2 seeding from L1Tk Muons and L3 Tracker Muon Outside-In reconstruction first +class UpgradeWorkflow_phase2L3MuonsOIFirst(UpgradeWorkflow): + def setup_(self, step, stepName, stepDict, k, properties): + if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step): + stepDict[stepName][k] = merge([self.step2, stepDict[step][k]]) + if 'RecoGlobal' in step: + stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) + if 'HARVESTGlobal' in step: + stepDict[stepName][k] = merge([self.step4, stepDict[step][k]]) + def condition(self, fragment, stepList, key, hasHarvest): + return (fragment=="ZMM_14" or 'SingleMu' in fragment or 'TTbar_14' in fragment) and 'Run4' in key + +upgradeWFs['phase2L3MuonsOIFirst'] = UpgradeWorkflow_phase2L3MuonsOIFirst( + steps = [ + 'HLTOnly', + 'DigiTrigger', + 'RecoGlobal', + 'HARVESTGlobal' + ], + PU = [ + 'HLTOnly', + 'DigiTrigger', + 'RecoGlobal', + 'HARVESTGlobal' + ], + suffix = '_phase2L2AndL3MuonsOIFirst', + offset = 0.778, +) +upgradeWFs['phase2L3MuonsOIFirst'].step2 = {'--procModifiers':'phase2L2AndL3Muons,phase2L3MuonsOIFirst'} +upgradeWFs['phase2L3MuonsOIFirst'].step3 = {'--procModifiers':'phase2L2AndL3Muons,phase2L3MuonsOIFirst'} +upgradeWFs['phase2L3MuonsOIFirst'].step4 = {'--procModifiers':'phase2L2AndL3Muons,phase2L3MuonsOIFirst'} + # Track DNN workflows class UpgradeWorkflow_trackdnn(UpgradeWorkflow): def setup_(self, step, stepName, stepDict, k, properties): stepDict[stepName][k] = merge([{'--procModifiers': 'trackdnn'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return fragment=="TTbar_14TeV" and '2021' in key + return fragment=="TTbar_14TeV" and '2022' in key upgradeWFs['trackdnn'] = UpgradeWorkflow_trackdnn( steps = [ 'Reco', @@ -845,7 +918,7 @@ def setup_(self, step, stepName, stepDict, k, properties): if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return (fragment=="TTbar_14TeV" or fragment=="QCD_FlatPt_15_3000HS_14") and '2021PU' in key + return (fragment=="TTbar_14TeV" or fragment=="QCD_FlatPt_15_3000HS_14") and '2022PU' in key upgradeWFs['mlpf'] = UpgradeWorkflow_mlpf( steps = [ @@ -929,7 +1002,7 @@ def condition(self, fragment, stepList, key, hasHarvest): # Patatrack workflows (NoPU and PU): # - TTbar_14, ZMM_14", ZEE_14, ZTT_14, NuGun, SingleMu, QCD_Pt15To7000_Flat for -# > 2021, 2022, 2023, 2024 and Run4 conditions, TTbar +# > 2022, 2023, 2024, 2025 and Run4 conditions, TTbar # - Hydjet for HI conditions class PatatrackWorkflow(UpgradeWorkflow): def __init__(self, digi = {}, reco = {}, mini = {}, harvest = {}, **kwargs): @@ -986,7 +1059,7 @@ def __init__(self, digi = {}, reco = {}, mini = {}, harvest = {}, **kwargs): def condition(self, fragment, stepList, key, hasHarvest): # select only a subset of the workflows - years = ['2021','2023','2024','2025','Run4'] + years = ['2022','2023','2024','2025','Run4'] fragments = ["TTbar_14","ZMM_14","ZEE_14","ZTT_14","NuGun","SingleMu","QCD_Pt15To7000_Flat"] selected = [ (any(y in key for y in years) and ('FS' not in key) and any( f in fragment for f in fragments)), @@ -1028,169 +1101,51 @@ def setup_(self, step, stepName, stepDict, k, properties): else: stepDict[stepName][k] = merge([self.__harvest, stepDict[step][k]]) -# Pixel-only quadruplets workflow running on CPU -# - HLT on CPU -# - Pixel-only reconstruction on CPU, with DQM and validation -# - harvesting - -upgradeWFs['PatatrackPixelOnlyCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM' - }, - suffix = 'Patatrack_PixelOnlyCPU', - offset = 0.501, -) +############################################################################################################### +### Calorimeter-only reco +### these are not technically Patarack workflows but for +### the moment we can still leverage on the PatatrackWorkflow +### constructor for simplicity -# Pixel-only quadruplets workflow running on CPU or GPU -# - HLT on GPU (optional) -# - Pixel-only reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackPixelOnlyGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit,gpu' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM' - }, - suffix = 'Patatrack_PixelOnlyGPU', - offset = 0.502, -) - -# Pixel-only quadruplets workflow running on CPU and GPU -# - HLT on GPU (required) -# - Pixel-only reconstruction on both CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons -# - harvesting -upgradeWFs['PatatrackPixelOnlyGPUValidation'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'pixelNtupletFit,gpuValidation' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM', - '--procModifiers': 'gpuValidation' - }, - suffix = 'Patatrack_PixelOnlyGPU_Validation', - offset = 0.503, -) - -# Pixel-only quadruplets workflow running on CPU or GPU, trimmed down for benchmarking -# - HLT on GPU (optional) -# - Pixel-only reconstruction on GPU (optional) -upgradeWFs['PatatrackPixelOnlyGPUProfiling'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly', - '--procModifiers': 'pixelNtupletFit,gpu', - '--customise' : 'RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly' - }, - harvest = None, - suffix = 'Patatrack_PixelOnlyGPU_Profiling', - offset = 0.504, -) - -# Pixel-only triplets workflow running on CPU +# ECAL-only workflow running on CPU # - HLT on CPU -# - Pixel-only reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackPixelOnlyTripletsCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit', - '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM' - }, - suffix = 'Patatrack_PixelOnlyTripletsCPU', - offset = 0.505, -) - -# Pixel-only triplets workflow running on CPU or GPU -# - HLT on GPU (optional) -# - Pixel-only reconstruction on GPU (optional), with DQM and validation +# - ECAL-only reconstruction on CPU, with DQM and validation # - harvesting -upgradeWFs['PatatrackPixelOnlyTripletsGPU'] = PatatrackWorkflow( +upgradeWFs['ECALOnlyCPU'] = PatatrackWorkflow( digi = { # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' }, reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit,gpu', - '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' + '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly', }, harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM' + '-s': 'HARVESTING:@ecalOnlyValidation+@ecal' }, - suffix = 'Patatrack_PixelOnlyTripletsGPU', - offset = 0.506, + suffix = 'ECALOnlyCPU', + offset = 0.511, ) -# Pixel-only triplets workflow running on CPU and GPU -# - HLT on GPU (required) -# - Pixel-only reconstruction on both CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons +# HCAL-only workflow running on CPU +# - HLT on CPU +# - HCAL-only reconstruction on CPU, with DQM and validation # - harvesting -upgradeWFs['PatatrackPixelOnlyTripletsGPUValidation'] = PatatrackWorkflow( +upgradeWFs['HCALOnlyCPU'] = PatatrackWorkflow( digi = { # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' }, reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'pixelNtupletFit,gpuValidation', - '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' + '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only', }, harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM', - '--procModifiers': 'gpuValidation', + '-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only' }, - suffix = 'Patatrack_PixelOnlyTripletsGPU_Validation', - offset = 0.507, + suffix = 'HCALOnlyCPU', + offset = 0.521, ) -# Pixel-only triplets workflow running on CPU or GPU, trimmed down for benchmarking -# - HLT on GPU (optional) -# - Pixel-only reconstruction on GPU (optional) -upgradeWFs['PatatrackPixelOnlyTripletsGPUProfiling'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly', - '--procModifiers': 'pixelNtupletFit,gpu', - '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly' - }, - harvest = None, - suffix = 'Patatrack_PixelOnlyTripletsGPU_Profiling', - offset = 0.508, -) +############################################################################################################### +### Alpaka workflows +### # ECAL-only workflow running on CPU or GPU with Alpaka code # - HLT with Alpaka @@ -1199,7 +1154,6 @@ def setup_(self, step, stepName, stepDict, k, properties): upgradeWFs['PatatrackECALOnlyAlpaka'] = PatatrackWorkflow( digi = { # customize the ECAL Local Reco part of the HLT menu for Alpaka - '--procModifiers': 'alpaka', '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, reco = { @@ -1214,168 +1168,33 @@ def setup_(self, step, stepName, stepDict, k, properties): offset = 0.412, ) -# ECAL-only workflow running on CPU -# - HLT on CPU -# - ECAL-only reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackECALOnlyCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly', - }, - harvest = { - '-s': 'HARVESTING:@ecalOnlyValidation+@ecal' - }, - suffix = 'Patatrack_ECALOnlyCPU', - offset = 0.511, -) - -# ECAL-only workflow running on CPU or GPU -# - HLT on GPU (optional) -# - ECAL-only reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackECALOnlyGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly', - '--procModifiers': 'gpu' - }, - harvest = { - '-s': 'HARVESTING:@ecalOnlyValidation+@ecal' - }, - suffix = 'Patatrack_ECALOnlyGPU', - offset = 0.512, -) - -# ECAL-only workflow running on CPU and GPU -# - HLT on GPU (required) -# - ECAL-only reconstruction on both CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons +# ECAL-only workflow running on CPU or GPU with Alpaka code +# - HLT with Alpaka +# - ECAL-only reconstruction with Alpaka on both CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons # - harvesting -upgradeWFs['PatatrackECALOnlyGPUValidation'] = PatatrackWorkflow( +upgradeWFs['PatatrackECALOnlyAlpakaValidation'] = PatatrackWorkflow( digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' + # customize the ECAL Local Reco part of the HLT menu for Alpaka + '--procModifiers': 'alpaka', + '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, reco = { '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpuValidation' + '--procModifiers': 'alpakaValidation', + '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, harvest = { '-s': 'HARVESTING:@ecalOnlyValidation+@ecal' }, - suffix = 'Patatrack_ECALOnlyGPU_Validation', - offset = 0.513, -) - -# ECAL-only workflow running on CPU or GPU, trimmed down for benchmarking -# - HLT on GPU (optional) -# - ECAL-only reconstruction on GPU (optional) -upgradeWFs['PatatrackECALOnlyGPUProfiling'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly', - '--procModifiers': 'gpu', - '--customise' : 'RecoLocalCalo/Configuration/customizeEcalOnlyForProfiling.customizeEcalOnlyForProfilingGPUOnly' - }, - harvest = None, - suffix = 'Patatrack_ECALOnlyGPU_Profiling', - offset = 0.514, -) - -# HCAL-only workflow running on CPU -# - HLT on CPU -# - HCAL-only reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackHCALOnlyCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only', - }, - harvest = { - '-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only' - }, - suffix = 'Patatrack_HCALOnlyCPU', - offset = 0.521, -) - -# HCAL-only workflow running on CPU or GPU -# - HLT on GPU (optional) -# - HCAL-only reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackHCALOnlyGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only', - '--procModifiers': 'gpu' - }, - harvest = { - '-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only' - }, - suffix = 'Patatrack_HCALOnlyGPU', - offset = 0.522, -) - -# HCAL-only workflow running on CPU and GPU -# - HLT on GPU (required) -# - HCAL-only reconstruction on both CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons -# - harvesting -upgradeWFs['PatatrackHCALOnlyGPUValidation'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpuValidation' - }, - harvest = { - '-s': 'HARVESTING:@hcalOnlyValidation+@hcal' - }, - suffix = 'Patatrack_HCALOnlyGPU_Validation', - offset = 0.523, -) - -# HCAL-only workflow running on CPU or GPU, trimmed down for benchmarking -# - HLT on GPU (optional) -# - HCAL-only reconstruction on GPU (optional) -upgradeWFs['PatatrackHCALOnlyGPUProfiling'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly', - '--procModifiers': 'gpu', - '--customise' : 'RecoLocalCalo/Configuration/customizeHcalOnlyForProfiling.customizeHcalOnlyForProfilingGPUOnly' - }, - harvest = None, - suffix = 'Patatrack_HCALOnlyGPU_Profiling', - offset = 0.524, + suffix = 'Patatrack_ECALOnlyAlpakaValidation', + offset = 0.413, ) # HCAL-PF Only workflow running HCAL local reco on GPU and PF with Alpaka with DQM and Validation # - HLT-alpaka # - HCAL-only reconstruction using Alpaka with DQM and Validation upgradeWFs['PatatrackHCALOnlyAlpakaValidation'] = PatatrackWorkflow( - digi = { - '--procModifiers': 'alpaka', + digi = { '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, reco = { @@ -1395,7 +1214,6 @@ def setup_(self, step, stepName, stepDict, k, properties): # - HCAL-only reconstruction using GPU and Alpaka with DQM and Validation for PF Alpaka vs CPU comparisons upgradeWFs['PatatrackHCALOnlyGPUandAlpakaValidation'] = PatatrackWorkflow( digi = { - '--procModifiers': 'alpaka', '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, reco = { @@ -1415,7 +1233,6 @@ def setup_(self, step, stepName, stepDict, k, properties): # - HCAL-only reconstruction using Alpaka upgradeWFs['PatatrackHCALOnlyAlpakaProfiling'] = PatatrackWorkflow( digi = { - '--procModifiers': 'alpaka', }, reco = { '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly', @@ -1432,7 +1249,6 @@ def setup_(self, step, stepName, stepDict, k, properties): # - harvesting upgradeWFs['PatatrackFullRecoAlpaka'] = PatatrackWorkflow( digi = { - '--procModifiers': 'alpaka', '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, reco = { @@ -1452,9 +1268,9 @@ def setup_(self, step, stepName, stepDict, k, properties): # - HLT on GPU (optional) # - reconstruction on Alpaka, with DQM and validation # - harvesting + upgradeWFs['PatatrackFullRecoAlpaka'] = PatatrackWorkflow( digi = { - '--procModifiers': 'alpaka', '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling', }, reco = { @@ -1470,309 +1286,9 @@ def setup_(self, step, stepName, stepDict, k, properties): offset = 0.496, ) -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU -# - HLT on CPU -# - reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackAllCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', - '--procModifiers': 'pixelNtupletFit' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only' - }, - suffix = 'Patatrack_AllCPU', - offset = 0.581, -) - -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU or GPU -# - HLT on GPU (optional) -# - reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackAllGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', - '--procModifiers': 'pixelNtupletFit,gpu' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only' - }, - suffix = 'Patatrack_AllGPU', - offset = 0.582, -) - -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU and GPU -# - HLT on GPU (required) -# - reconstruction on CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons -# - harvesting -upgradeWFs['PatatrackAllGPUValidation'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'pixelNtupletFit,gpuValidation' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only', - '--procModifiers': 'gpuValidation' - }, - suffix = 'Patatrack_AllGPU_Validation', - offset = 0.583, -) - -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU or GPU, trimmed down for benchmarking -# - HLT on GPU (optional) -# - minimal reconstruction on GPU (optional) -# FIXME workflow 0.584 to be implemented - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on CPU -# - HLT on CPU -# - reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackAllTripletsCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', - '--procModifiers': 'pixelNtupletFit' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only' - }, - suffix = 'Patatrack_AllTripletsCPU', - offset = 0.585, -) - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on CPU or GPU -# - HLT on GPU (optional) -# - reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackAllTripletsGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', - '--procModifiers': 'pixelNtupletFit,gpu' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only' - }, - suffix = 'Patatrack_AllTripletsGPU', - offset = 0.586, -) - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on CPU and GPU -# - HLT on GPU (required) -# - reconstruction on CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons -# - harvesting -upgradeWFs['PatatrackAllTripletsGPUValidation'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' - }, - reco = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'pixelNtupletFit,gpuValidation' - }, - harvest = { - '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only', - '--procModifiers': 'gpuValidation' - }, - suffix = 'Patatrack_AllTripletsGPU_Validation', - offset = 0.587, -) - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on CPU or GPU, trimmed down for benchmarking -# - HLT on GPU (optional) -# - minimal reconstruction on GPU (optional) -# FIXME workflow 0.588 to be implemented - -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU, together with the full offline reconstruction -# - HLT on CPU -# - reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackFullRecoCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit' - }, - harvest = { - # skip the @pixelTrackingOnlyDQM harvesting - }, - suffix = 'Patatrack_FullRecoCPU', - offset = 0.591, -) - -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on GPU (optional), together with the full offline reconstruction on CPU -# - HLT on GPU (optional) -# - reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackFullRecoGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit,gpu' - }, - harvest = { - # skip the @pixelTrackingOnlyDQM harvesting - }, - suffix = 'Patatrack_FullRecoGPU', - offset = 0.592, -) - -# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU and GPU, together with the full offline reconstruction on CPU -# - HLT on GPU (required) -# - reconstruction on CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons -# - harvesting -upgradeWFs['PatatrackFullRecoGPUValidation'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'pixelNtupletFit,gpuValidation' - }, - harvest = { - # skip the @pixelTrackingOnlyDQM harvesting - }, - suffix = 'Patatrack_FullRecoGPU_Validation', - offset = 0.593, -) - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on CPU, together with the full offline reconstruction -# - HLT on CPU -# - reconstruction on CPU, with DQM and validation -# - harvesting -upgradeWFs['PatatrackFullRecoTripletsCPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit', - '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' - }, - harvest = { - # skip the @pixelTrackingOnlyDQM harvesting - }, - suffix = 'Patatrack_FullRecoTripletsCPU', - offset = 0.595, -) -# - ProdLike -upgradeWFs['PatatrackFullRecoTripletsCPUProdLike'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--datatier':'GEN-SIM-RAW', - '--eventcontent':'RAWSIM', - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM', - '--procModifiers': 'pixelNtupletFit', - '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets', - '--datatier':'AODSIM', - '--eventcontent':'AODSIM', - }, - harvest = None, - suffix = 'Patatrack_FullRecoTripletsCPUProdLike', - offset = 0.59521, -) - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on GPU (optional), together with the full offline reconstruction on CPU -# - HLT on GPU (optional) -# - reconstruction on GPU (optional), with DQM and validation -# - harvesting -upgradeWFs['PatatrackFullRecoTripletsGPU'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu' - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM', - '--procModifiers': 'pixelNtupletFit,gpu', - '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' - }, - harvest = { - # skip the @pixelTrackingOnlyDQM harvesting - }, - suffix = 'Patatrack_FullRecoTripletsGPU', - offset = 0.596, -) -# - ProdLike -upgradeWFs['PatatrackFullRecoTripletsGPUProdLike'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--procModifiers': 'gpu', - '--datatier':'GEN-SIM-RAW', - '--eventcontent':'RAWSIM', - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM', - '--procModifiers': 'pixelNtupletFit,gpu', - '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets', - '--datatier':'AODSIM', - '--eventcontent':'AODSIM', - }, - harvest = None, - suffix = 'Patatrack_FullRecoTripletsGPUProdLike', - offset = 0.59621, -) - -# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on CPU and GPU, together with the full offline reconstruction on CPU -# - HLT on GPU (required) -# - reconstruction on CPU and GPU, with DQM and validation for GPU-vs-CPU comparisons +# Pixel-only quadruplets workflow running on GPU (optional) +# - Pixel-only reconstruction with Alpaka, with DQM and validation # - harvesting -upgradeWFs['PatatrackFullRecoTripletsGPUValidation'] = PatatrackWorkflow( - digi = { - # the HLT menu is already set up for using GPUs if available and if the "gpu" modifier is enabled - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'gpu' - }, - reco = { - # skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction - '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM', - '--accelerators': 'gpu-nvidia', - '--procModifiers': 'pixelNtupletFit,gpuValidation', - '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets' - }, - harvest = { - # skip the @pixelTrackingOnlyDQM harvesting - }, - suffix = 'Patatrack_FullRecoTripletsGPU_Validation', - offset = 0.597, -) upgradeWFs['PatatrackPixelOnlyAlpaka'] = PatatrackWorkflow( digi = { @@ -1791,6 +1307,10 @@ def setup_(self, step, stepName, stepDict, k, properties): offset = 0.402, ) +# Pixel-only quadruplets workflow running on GPU (optional) +# - Pixel-only reconstruction with Alpaka, with standard and CPUvsGPU DQM and validation +# - harvesting for CPUvsGPU validation + upgradeWFs['PatatrackPixelOnlyAlpakaValidation'] = PatatrackWorkflow( digi = { '--procModifiers': 'alpaka', @@ -1809,6 +1329,8 @@ def setup_(self, step, stepName, stepDict, k, properties): offset = 0.403, ) +# Pixel-only quadruplets workflow running on CPU or GPU, trimmed down for benchmarking + upgradeWFs['PatatrackPixelOnlyAlpakaProfiling'] = PatatrackWorkflow( digi = { '--procModifiers': 'alpaka', @@ -1823,6 +1345,11 @@ def setup_(self, step, stepName, stepDict, k, properties): offset = 0.404, ) + +# Pixel-only triplets workflow running on GPU (optional) +# - Pixel-only reconstruction with Alpaka, with standard and CPUvsGPU DQM and validation +# - harvesting for CPUvsGPU validation + upgradeWFs['PatatrackPixelOnlyTripletsAlpaka'] = PatatrackWorkflow( digi = { '--procModifiers': 'alpaka', @@ -1840,6 +1367,10 @@ def setup_(self, step, stepName, stepDict, k, properties): offset = 0.406, ) +# Pixel-only triplets workflow running on GPU (optional) +# - Pixel-only reconstruction with Alpaka, with standard and CPUvsGPU DQM and validation +# - harvesting for CPUvsGPU validation + upgradeWFs['PatatrackPixelOnlyTripletsAlpakaValidation'] = PatatrackWorkflow( digi = { '--procModifiers': 'alpaka', @@ -1872,6 +1403,7 @@ def setup_(self, step, stepName, stepDict, k, properties): ) # end of Patatrack workflows +############################################################################################################### class UpgradeWorkflow_ProdLike(UpgradeWorkflow): def setup_(self, step, stepName, stepDict, k, properties): @@ -1898,7 +1430,7 @@ def setupPU_(self, step, stepName, stepDict, k, properties): stepDict[stepName][k].pop('--pileup', None) stepDict[stepName][k].pop('--pileup_input', None) def condition(self, fragment, stepList, key, hasHarvest): - years = ['2021','2023','2024','2025','Run4'] + years = ['2022','2023','2024','2025','Run4'] return fragment=="TTbar_14TeV" and any(y in key for y in years) upgradeWFs['ProdLike'] = UpgradeWorkflow_ProdLike( steps = [ @@ -1973,7 +1505,7 @@ def setupPU_(self, step, stepName, stepDict, k, properties): stepDict[stepName][k]['--pileup'] = 'AVE_' + str(self.__fixedPU) + '_BX_25ns' def condition(self, fragment, stepList, key, hasHarvest): # lower PUs for Run3 - return (fragment=="TTbar_14TeV") and (('Run4' in key) or ('2021' in key and self.__fixedPU<=100)) + return (fragment=="TTbar_14TeV") and (('Run4' in key) or ('2022' in key and self.__fixedPU<=100)) # The numbering below is following the 0.21 for ProdLike wfs # 0.21N would have been a more natural choice but the @@ -2128,6 +1660,30 @@ def condition(self, fragment, stepList, key, hasHarvest): '--procModifiers': 'ticl_v5' } +upgradeWFs['HLTTiming75e33AlpakaSingleIter'] = deepcopy(upgradeWFs['HLTTiming75e33']) +upgradeWFs['HLTTiming75e33AlpakaSingleIter'].suffix = '_HLT75e33TimingAlpakaSingleIter' +upgradeWFs['HLTTiming75e33AlpakaSingleIter'].offset = 0.753 +upgradeWFs['HLTTiming75e33AlpakaSingleIter'].step2 = { + '-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:75e33_timing', + '--procModifiers': 'alpaka,singleIterPatatrack' +} + +upgradeWFs['HLTTiming75e33AlpakaSingleIterLST'] = deepcopy(upgradeWFs['HLTTiming75e33']) +upgradeWFs['HLTTiming75e33AlpakaSingleIterLST'].suffix = '_HLT75e33TimingAlpakaSingleIterLST' +upgradeWFs['HLTTiming75e33AlpakaSingleIterLST'].offset = 0.754 +upgradeWFs['HLTTiming75e33AlpakaSingleIterLST'].step2 = { + '-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:75e33_timing', + '--procModifiers': 'alpaka,singleIterPatatrack,trackingLST' +} + +upgradeWFs['HLTTiming75e33AlpakaLST'] = deepcopy(upgradeWFs['HLTTiming75e33']) +upgradeWFs['HLTTiming75e33AlpakaLST'].suffix = '_HLT75e33TimingAlpakaLST' +upgradeWFs['HLTTiming75e33AlpakaLST'].offset = 0.755 +upgradeWFs['HLTTiming75e33AlpakaLST'].step2 = { + '-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:75e33_timing', + '--procModifiers': 'alpaka,trackingLST' +} + class UpgradeWorkflow_HLTwDIGI75e33(UpgradeWorkflow): def setup_(self, step, stepName, stepDict, k, properties): @@ -2331,7 +1887,7 @@ def setup_(self, step, stepName, stepDict, k, properties): stepDict[stepName][k] = None def condition(self, fragment, stepList, key, hasHarvest): - return fragment=="TTbar_14TeV" and ('2021' in key or '2023' in key or 'Run4' in key) + return fragment=="TTbar_14TeV" and ('2022' in key or '2023' in key or 'Run4' in key) upgradeWFs['ECALComponent'] = UpgradeWorkflow_ECalComponent( suffix = '_ecalComponent', @@ -2377,7 +1933,7 @@ def setupPU_(self, step, stepName, stepDict, k, properties): # override '-n' setting from PUDataSets in relval_steps.py stepDict[stepName][k] = merge([{'-n':'1'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2021' in key or '2024' in key) and ('FS' not in key) + return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2022' in key or '2024' in key) and ('FS' not in key) upgradeWFs['0T'] = UpgradeWorkflow_0T( steps = [ 'GenSim', @@ -2457,7 +2013,7 @@ def setup_(self, step, stepName, stepDict, k, properties): if 'Nano' in step: stepDict[stepName][k] = merge([{'--customise': 'PhysicsTools/NanoAOD/custom_jme_cff.PrepJMECustomNanoAOD'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2021' in key) and ('FS' not in key) + return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2022' in key) and ('FS' not in key) upgradeWFs['JMENano'] = UpgradeWorkflow_JMENano( steps = [ 'Nano', @@ -2550,6 +2106,72 @@ def condition(self, fragment, stepList, key, hasHarvest): offset = 0.19002, ) +class UpgradeWorkflow_SplittingFromHLT(UpgradeWorkflow): + def setup_(self, step, stepName, stepDict, k, properties): + stepDict[stepName][k] = merge([{'--procModifiers': 'hltClusterSplitting'}, stepDict[step][k]]) + def condition(self, fragment, stepList, key, hasHarvest): + return '2025' in key and fragment=="TTbar_14TeV" + +upgradeWFs['SplittingFromHLT'] = UpgradeWorkflow_SplittingFromHLT( + steps = [ + 'DigiTrigger', + 'Digi', + 'HLTOnly', + 'RecoLocal', + 'Reco', + 'RecoFakeHLT', + 'RecoGlobal', + ], + PU = [ + 'DigiTrigger', + 'Digi', + 'HLTOnly', + 'RecoLocal', + 'Reco', + 'RecoFakeHLT', + 'RecoGlobal', + ], + suffix = '_SplittingFromHLT', + offset = 0.19003, +) + +class UpgradeWorkflow_SplittingProdLike(UpgradeWorkflow_ProdLike): + def __init__(self, suffix, offset,steps, PU): + super(UpgradeWorkflow_SplittingProdLike, self).__init__(steps, PU, suffix, offset) + + def setup_(self, step, stepName, stepDict, k, properties): + # copy steps, then apply specializations + stepDict[stepName][k] = merge([{'--procModifiers': 'hltClusterSplitting'}, stepDict[step][k]]) + + def condition(self, fragment, stepList, key, hasHarvest): + return '2025' in key and fragment=="TTbar_14TeV" + +upgradeWFs['SplittingFromHLTProdLike'] = UpgradeWorkflow_SplittingProdLike( + steps = [ + ], + PU = [ + 'GenSimHLBeamSpot14', + 'Digi', + 'DigiTrigger', + 'HLTOnly', + 'Reco', + 'RecoFakeHLT', + 'RecoGlobal', + 'RecoNano', + 'RecoNanoFakeHLT', + 'HARVEST', + 'HARVESTFakeHLT', + 'HARVESTGlobal', + 'HARVESTNano', + 'HARVESTNanoFakeHLT', + 'MiniAOD', + 'ALCA', + 'Nano', + ], + suffix = '_SplittingFromHLTProdLike', + offset = 0.1900321, +) + # # Simulates Bias Rail in Phase-2 OT PS modules and X% random bad Strips # in PS-s and SS sensors @@ -2733,7 +2355,7 @@ def setupPU_(self, step, stepName, stepDict, k, properties): def condition(self, fragment, stepList, key, hasHarvest): if not 'PU' in key: return False - if not any(y in key for y in ['2021', '2023', '2024', '2025', 'Run4']): + if not any(y in key for y in ['2022', '2023', '2024', '2025', 'Run4']): return False if self.suffix.endswith("S1"): return "NuGun" in fragment @@ -2992,7 +2614,7 @@ def setup_(self, step, stepName, stepDict, k, properties): if 'Run3' in stepDict[step][k]['--era'] and 'Fast' not in stepDict[step][k]['--era']: stepDict[stepName][k] = merge([{'--conditions': 'auto:phase1_2022_realistic', '--geometry': 'DB:Extended'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return fragment=="TTbar_14TeV" and '2021' in key and 'FS' not in key + return fragment=="TTbar_14TeV" and '2022' in key and 'FS' not in key upgradeWFs['DD4hepDB'] = UpgradeWorkflow_DD4hepDB( steps = [ 'GenSim', @@ -3029,7 +2651,7 @@ def setup_(self, step, stepName, stepDict, k, properties): tmp_eras = ','.join(tmp_eras) stepDict[stepName][k] = merge([{'--conditions': 'auto:phase1_2022_realistic_ddd', '--geometry': 'DB:Extended', '--era': tmp_eras}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return fragment=="TTbar_14TeV" and '2021' in key and 'FS' not in key + return fragment=="TTbar_14TeV" and '2022' in key and 'FS' not in key and "HI" not in key upgradeWFs['DDDDB'] = UpgradeWorkflow_DDDDB( steps = [ 'GenSim', @@ -3059,7 +2681,7 @@ class UpgradeWorkflow_SonicTriton(UpgradeWorkflow): def setup_(self, step, stepName, stepDict, k, properties): stepDict[stepName][k] = merge([{'--procModifiers': 'allSonicTriton'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): - return ((fragment=='TTbar_13' or fragment=='TTbar_14TeV') and '2021' in key) \ + return ((fragment=='TTbar_13' or fragment=='TTbar_14TeV') and '2022' in key) \ or (fragment=='TTbar_14TeV' and 'Run4' in key) upgradeWFs['SonicTriton'] = UpgradeWorkflow_SonicTriton( steps = [ @@ -3171,7 +2793,7 @@ def condition(self, fragment, stepList, key, hasHarvest): 'BeamSpot': 'DBdesign', 'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT'], }, - '2021' : { + '2022' : { 'Geom' : 'DB:Extended', 'GT' : 'auto:phase1_2022_realistic', 'HLTmenu': '@relval2022', @@ -3179,7 +2801,7 @@ def condition(self, fragment, stepList, key, hasHarvest): 'BeamSpot': 'DBrealistic', 'ScenToRun' : ['GenSim','Digi','RecoNanoFakeHLT','HARVESTNanoFakeHLT','ALCA'], }, - '2021Design' : { + '2022Design' : { 'Geom' : 'DB:Extended', 'GT' : 'auto:phase1_2022_design', 'HLTmenu': '@relval2022', @@ -3211,7 +2833,7 @@ def condition(self, fragment, stepList, key, hasHarvest): 'BeamSpot': 'DBrealistic', 'ScenToRun' : ['GenSim','DigiNoHLT','HLTOnly','RecoNanoFakeHLT','HARVESTNanoFakeHLT','ALCA'], }, - '2021FS' : { + '2022FS' : { 'Geom' : 'DB:Extended', 'GT' : 'auto:phase1_2022_realistic', 'HLTmenu': '@relval2022', @@ -3219,7 +2841,7 @@ def condition(self, fragment, stepList, key, hasHarvest): 'BeamSpot': 'DBrealistic', 'ScenToRun' : ['Gen','FastSimRun3','HARVESTFastRun3'], }, - '2021postEE' : { + '2022postEE' : { 'Geom' : 'DB:Extended', 'GT' : 'auto:phase1_2022_realistic_postEE', 'HLTmenu': '@relval2022', @@ -3544,6 +3166,13 @@ def condition(self, fragment, stepList, key, hasHarvest): 'Era' : 'Phase2C20I13M9', 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], }, + 'Run4D116' : { + 'Geom' : 'ExtendedRun4D116', + 'HLTmenu': '@relvalRun4', + 'GT' : 'auto:phase2_realistic_T33', + 'Era' : 'Phase2C17I13M9', + 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], + }, } # standard PU sequences diff --git a/Configuration/PyReleaseValidation/scripts/README.md b/Configuration/PyReleaseValidation/scripts/README.md index 829b8f1288e59..e76ab1cc700a4 100644 --- a/Configuration/PyReleaseValidation/scripts/README.md +++ b/Configuration/PyReleaseValidation/scripts/README.md @@ -227,63 +227,62 @@ premix nano matrix> showWorkflow gpu -140.065506 Run3-2023_JetMET2022D_RecoPixelOnlyTripletsGPU -140.065512 Run3-2023_JetMET2022D_RecoECALOnlyGPU -140.065522 Run3-2023_JetMET2022D_RecoHCALOnlyGPU -11634.502 TTbar_14TeV+2021_Patatrack_PixelOnlyGPU -11634.503 TTbar_14TeV+2021_Patatrack_PixelOnlyGPU_Validation -11634.504 TTbar_14TeV+2021_Patatrack_PixelOnlyGPU_Profiling -11634.506 TTbar_14TeV+2021_Patatrack_PixelOnlyTripletsGPU -11634.507 TTbar_14TeV+2021_Patatrack_PixelOnlyTripletsGPU_Validation -11634.508 TTbar_14TeV+2021_Patatrack_PixelOnlyTripletsGPU_Profiling -11634.512 TTbar_14TeV+2021_Patatrack_ECALOnlyGPU -11634.513 TTbar_14TeV+2021_Patatrack_ECALOnlyGPU_Validation -11634.514 TTbar_14TeV+2021_Patatrack_ECALOnlyGPU_Profiling -11634.522 TTbar_14TeV+2021_Patatrack_HCALOnlyGPU -11634.523 TTbar_14TeV+2021_Patatrack_HCALOnlyGPU_Validation -11634.524 TTbar_14TeV+2021_Patatrack_HCALOnlyGPU_Profiling -11634.582 TTbar_14TeV+2021_Patatrack_AllGPU -11634.583 TTbar_14TeV+2021_Patatrack_AllGPU_Validation -11634.586 TTbar_14TeV+2021_Patatrack_AllTripletsGPU -11634.587 TTbar_14TeV+2021_Patatrack_AllTripletsGPU_Validation -11634.592 TTbar_14TeV+2021_Patatrack_FullRecoGPU -11634.593 TTbar_14TeV+2021_Patatrack_FullRecoGPU_Validation -11634.596 TTbar_14TeV+2021_Patatrack_FullRecoTripletsGPU -11634.597 TTbar_14TeV+2021_Patatrack_FullRecoTripletsGPU_Validation -11650.502 ZMM_14+2021_Patatrack_PixelOnlyGPU -11650.503 ZMM_14+2021_Patatrack_PixelOnlyGPU_Validation -11650.504 ZMM_14+2021_Patatrack_PixelOnlyGPU_Profiling -11650.506 ZMM_14+2021_Patatrack_PixelOnlyTripletsGPU -11650.507 ZMM_14+2021_Patatrack_PixelOnlyTripletsGPU_Validation -11650.508 ZMM_14+2021_Patatrack_PixelOnlyTripletsGPU_Profiling -12434.502 TTbar_14TeV+2023_Patatrack_PixelOnlyGPU -12434.503 TTbar_14TeV+2023_Patatrack_PixelOnlyGPU_Validation -12434.504 TTbar_14TeV+2023_Patatrack_PixelOnlyGPU_Profiling -12434.506 TTbar_14TeV+2023_Patatrack_PixelOnlyTripletsGPU -12434.507 TTbar_14TeV+2023_Patatrack_PixelOnlyTripletsGPU_Validation -12434.508 TTbar_14TeV+2023_Patatrack_PixelOnlyTripletsGPU_Profiling -12434.512 TTbar_14TeV+2023_Patatrack_ECALOnlyGPU -12434.513 TTbar_14TeV+2023_Patatrack_ECALOnlyGPU_Validation -12434.514 TTbar_14TeV+2023_Patatrack_ECALOnlyGPU_Profiling -12434.522 TTbar_14TeV+2023_Patatrack_HCALOnlyGPU -12434.523 TTbar_14TeV+2023_Patatrack_HCALOnlyGPU_Validation -12434.524 TTbar_14TeV+2023_Patatrack_HCALOnlyGPU_Profiling -12434.582 TTbar_14TeV+2023_Patatrack_AllGPU -12434.583 TTbar_14TeV+2023_Patatrack_AllGPU_Validation -12434.586 TTbar_14TeV+2023_Patatrack_AllTripletsGPU -12434.587 TTbar_14TeV+2023_Patatrack_AllTripletsGPU_Validation -12434.592 TTbar_14TeV+2023_Patatrack_FullRecoGPU -12434.593 TTbar_14TeV+2023_Patatrack_FullRecoGPU_Validation -12434.596 TTbar_14TeV+2023_Patatrack_FullRecoTripletsGPU -12434.597 TTbar_14TeV+2023_Patatrack_FullRecoTripletsGPU_Validation -12450.502 ZMM_14+2023_Patatrack_PixelOnlyGPU -12450.503 ZMM_14+2023_Patatrack_PixelOnlyGPU_Validation -12450.504 ZMM_14+2023_Patatrack_PixelOnlyGPU_Profiling -12450.506 ZMM_14+2023_Patatrack_PixelOnlyTripletsGPU -12450.507 ZMM_14+2023_Patatrack_PixelOnlyTripletsGPU_Validation -12450.508 ZMM_14+2023_Patatrack_PixelOnlyTripletsGPU_Profiling -gpu contains 55 workflows -matrix> +141.008506 Run3-2023_JetMET2023B_RecoPixelOnlyTripletsGPU +141.008507 Run3-2023_JetMET2023B_RecoPixelOnlyTripletsGPU_Validation +141.008508 Run3-2023_JetMET2023B_RecoPixelOnlyTripletsGPU_Profiling +141.008512 Run3-2023_JetMET2023B_RecoECALOnlyGPU +141.008513 Run3-2023_JetMET2023B_RecoECALOnlyGPU_Validation +141.008514 Run3-2023_JetMET2023B_RecoECALOnlyGPU_Profiling +141.008522 Run3-2023_JetMET2023B_RecoHCALOnlyGPU +141.008523 Run3-2023_JetMET2023B_RecoHCALOnlyGPU_Validation +141.008524 Run3-2023_JetMET2023B_RecoHCALOnlyGPU_Profiling +141.008583 Run3-2023_JetMET2023B_GPUValidation +160.03502 HydjetQ_MinBias_5362GeV_2023_ppReco +12450.406 ZMM_14+2023_Patatrack_PixelOnlyTripletsAlpaka +12450.407 ZMM_14+2023_Patatrack_PixelOnlyTripletsAlpaka_Validation +12450.408 ZMM_14+2023_Patatrack_PixelOnlyTripletsAlpaka_Profiling +12834.402 TTbar_14TeV+2024_Patatrack_PixelOnlyAlpaka +12834.403 TTbar_14TeV+2024_Patatrack_PixelOnlyAlpaka_Validation +12834.404 TTbar_14TeV+2024_Patatrack_PixelOnlyAlpaka_Profiling +12834.406 TTbar_14TeV+2024_Patatrack_PixelOnlyTripletsAlpaka +12834.407 TTbar_14TeV+2024_Patatrack_PixelOnlyTripletsAlpaka_Validation +12834.408 TTbar_14TeV+2024_Patatrack_PixelOnlyTripletsAlpaka_Profiling +12834.412 TTbar_14TeV+2024_Patatrack_ECALOnlyAlpaka +12834.422 TTbar_14TeV+2024_Patatrack_HCALOnlyAlpaka_Validation +12834.423 TTbar_14TeV+2024_Patatrack_HCALOnlyGPUandAlpaka_Validation +12834.424 TTbar_14TeV+2024_Patatrack_HCALOnlyAlpaka_Profiling +12850.402 ZMM_14+2024_Patatrack_PixelOnlyAlpaka +12850.403 ZMM_14+2024_Patatrack_PixelOnlyAlpaka_Validation +12850.404 ZMM_14+2024_Patatrack_PixelOnlyAlpaka_Profiling +12861.402 NuGun+2024_Patatrack_PixelOnlyAlpaka +13034.402 TTbar_14TeV+2024PU_Patatrack_PixelOnlyAlpaka +13034.403 TTbar_14TeV+2024PU_Patatrack_PixelOnlyAlpaka_Validation +13034.404 TTbar_14TeV+2024PU_Patatrack_PixelOnlyAlpaka_Profiling +13034.406 TTbar_14TeV+2024PU_Patatrack_PixelOnlyTripletsAlpaka +13034.407 TTbar_14TeV+2024PU_Patatrack_PixelOnlyTripletsAlpaka_Validation +13034.408 TTbar_14TeV+2024PU_Patatrack_PixelOnlyTripletsAlpaka_Profiling +13034.412 TTbar_14TeV+2024PU_Patatrack_ECALOnlyAlpaka +13034.422 TTbar_14TeV+2024PU_Patatrack_HCALOnlyAlpaka_Validation +13034.423 TTbar_14TeV+2024PU_Patatrack_HCALOnlyGPUandAlpaka_Validation +13034.424 TTbar_14TeV+2024PU_Patatrack_HCALOnlyAlpaka_Profiling +13050.402 ZMM_14+2024PU_Patatrack_PixelOnlyAlpaka +13050.403 ZMM_14+2024PU_Patatrack_PixelOnlyAlpaka_Validation +13050.404 ZMM_14+2024PU_Patatrack_PixelOnlyAlpaka_Profiling +13050.406 ZMM_14+2024PU_Patatrack_PixelOnlyTripletsAlpaka +13050.407 ZMM_14+2024PU_Patatrack_PixelOnlyTripletsAlpaka_Validation +13050.408 ZMM_14+2024PU_Patatrack_PixelOnlyTripletsAlpaka_Profiling +13061.402 NuGun+2024PU_Patatrack_PixelOnlyAlpaka +24834.704 TTbar_14TeV+Run4D98_lstOnGPUIters01TrackingOnly +29634.402 TTbar_14TeV+Run4D110_Patatrack_PixelOnlyAlpaka +29634.403 TTbar_14TeV+Run4D110_Patatrack_PixelOnlyAlpaka_Validation +29634.404 TTbar_14TeV+Run4D110_Patatrack_PixelOnlyAlpaka_Profiling +29634.406 TTbar_14TeV+Run4D110_Patatrack_PixelOnlyTripletsAlpaka +29661.402 NuGun+Run4D110_Patatrack_PixelOnlyAlpaka +29834.402 TTbar_14TeV+Run4D110PU_Patatrack_PixelOnlyAlpaka +29834.403 TTbar_14TeV+Run4D110PU_Patatrack_PixelOnlyAlpaka_Validation +29834.404 TTbar_14TeV+Run4D110PU_Patatrack_PixelOnlyAlpaka_Profiling +gpu contains 54 workflows +matrix> ``` All commands come with dynamic TAB-completion. There's also a transient history @@ -369,12 +368,18 @@ pp Data reRECO workflows: | 2022 | | | | | | 2022.002001 | Run2022D ZeroBias | run3_hlt_relval + run3_data_relval | Run3 | HLT:@relval2022 | | 2022.000001 | Run2022D JetHT | run3_hlt_relval + run3_data_relval | Run3 | HLT:@relval2022 | +| 2023 | | | | | | 2023.002001 | Run2023D ZeroBias | run3_hlt_relval + run3_data_relval| Run3_2023 | HLT:@relval2023 | | 2023.000001 | Run2023D MuonEG | run3_hlt_relval + run3_data_relval| Run3_2023 | HLT:@relval2023 | -| 2024.000001 | Run2024B ZeroBias | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2023 | -| 2024.101001 | Run2024C BTagMu | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | -| 2024.202001 | Run2024D JetMET0 | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | -| 2024.303001 | Run2024E RunDisplacedJet | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 2024 | | | | | +| 145.014 | Run2024B ZeroBias | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.104 | Run2024C JetMet0 | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.202 | Run2024D EGamma0 | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.301 | Run2024E DisplacedJet | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.408 | Run2024B ParkingDoubleMuonLowMass0 | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.500 | Run2024B BTagMu | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.604 | Run2024B JetMET0 | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | +| 145.713 | Run2024B Tau | run3_hlt_relval + run3_data_prompt_relval| Run3_2024 | HLT:@relval2025 | And Heavy Ion workflows: diff --git a/Configuration/PyReleaseValidation/scripts/das-selected-lumis.py b/Configuration/PyReleaseValidation/scripts/das-selected-lumis.py index 9edc6d9438779..055c7fb6b3f93 100755 --- a/Configuration/PyReleaseValidation/scripts/das-selected-lumis.py +++ b/Configuration/PyReleaseValidation/scripts/das-selected-lumis.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import json , sys input_range = [] output_files_list = [] diff --git a/Configuration/PyReleaseValidation/scripts/runTheMatrix.py b/Configuration/PyReleaseValidation/scripts/runTheMatrix.py index 1f771c621b5c2..53a456833b3e8 100755 --- a/Configuration/PyReleaseValidation/scripts/runTheMatrix.py +++ b/Configuration/PyReleaseValidation/scripts/runTheMatrix.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys, os from Configuration.PyReleaseValidation.MatrixReader import MatrixReader @@ -116,18 +115,20 @@ def runSelected(opt): 139.001, # Run2021 MinimumBias Commissioning2021 # 2022 - 2022.002001, # Run2022C ZeroBias - 2022.000001, # Run2022C JetHT + 140.045, # Run2022C JetHT # 2023 - 2023.002001, # Run2023D ZeroBias - 2023.002001, # Run2023D MuonEG + 141.042, # Run2023D ZeroBias # 2024 - 2024.000001, # Run2024B ZeroBias - 2024.101001, # Run2024C BTagMu - 2024.202001, # Run2024D JetMET0 - 2024.303001, # Run2024E DisplacedJet + 145.014, # Run2024B ZeroBias + 145.104, # Run2024C JetMet0 + 145.202, # Run2024D EGamma0 + 145.301, # Run2024E DisplacedJet + 145.408, # Run2024F ParkingDoubleMuonLowMass0 + 145.500, # Run2024G BTagMu + 145.604, # Run2024H JetMET0 + 145.713, # Run2024I Tau ###### Heavy Ions ## Data diff --git a/Configuration/PyReleaseValidation/test/BuildFile.xml b/Configuration/PyReleaseValidation/test/BuildFile.xml index f5c9f797ca5c3..3951621ad943e 100644 --- a/Configuration/PyReleaseValidation/test/BuildFile.xml +++ b/Configuration/PyReleaseValidation/test/BuildFile.xml @@ -4,24 +4,27 @@ - - - - + - + +--> + diff --git a/DQM/L1TMonitor/plugins/L1TBMTFAlgoSelector.cc b/DQM/L1TMonitor/plugins/L1TBMTFAlgoSelector.cc index e0767e21f63f5..c73240e356b26 100644 --- a/DQM/L1TMonitor/plugins/L1TBMTFAlgoSelector.cc +++ b/DQM/L1TMonitor/plugins/L1TBMTFAlgoSelector.cc @@ -82,8 +82,8 @@ void dqmBmtfAlgoSelector::L1TBMTFAlgoSelector::produce(edm::Event &eve, const ed unsigned algo_ver; if (!packet.payload().empty()) { auto payload64 = (packet.payload().at(0)).data(); - const uint32_t *start = (const uint32_t *)payload64.get(); - const uint32_t *end = start + (packet.payload().at(0).size() * 2); + const uint32_t *start = reinterpret_cast(&payload64.front()); + const uint32_t *end = start + (payload64.size() * 2); l1t::MP7Payload payload(start, end, false); algo_ver = payload.getAlgorithmFWVersion(); diff --git a/DQM/L1TMonitor/python/inputsource_file_cfi.py b/DQM/L1TMonitor/python/inputsource_file_cfi.py index 3a4bafeb8d418..add7a7fd785d8 100644 --- a/DQM/L1TMonitor/python/inputsource_file_cfi.py +++ b/DQM/L1TMonitor/python/inputsource_file_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # provide online L1 Trigger DQM input from file(s) # diff --git a/DQM/L1TMonitor/src/L1TMP7ZeroSupp.cc b/DQM/L1TMonitor/src/L1TMP7ZeroSupp.cc index 0d99bb0ae7cd3..5e77c2e452e4d 100644 --- a/DQM/L1TMonitor/src/L1TMP7ZeroSupp.cc +++ b/DQM/L1TMonitor/src/L1TMP7ZeroSupp.cc @@ -231,16 +231,16 @@ void L1TMP7ZeroSupp::analyze(const edm::Event& e, const edm::EventSetup& c) { continue; auto payload64 = amc.data(); - auto start = (const uint32_t*)payload64.get(); + auto start = reinterpret_cast(&payload64.front()); // Want to have payload size in 32 bit words, but AMC measures // it in 64 bit words -> factor 2. - const uint32_t* end = start + (amc.size() * 2); + const uint32_t* end = start + (payload64.size() * 2); auto payload = std::make_unique(start, end, false); - // getBlock() returns a non-null unique_ptr on success - std::unique_ptr block; - while ((block = payload->getBlock()) != nullptr) { + // getBlock() returns a non-nullopt_t optional on success + std::optional block; + while ((block = payload->getBlock())) { if (verbose_) { std::cout << ">>> check zero suppression for block <<<" << std::endl << "hdr: " << std::hex << std::setw(8) << std::setfill('0') << block->header().raw() << std::dec diff --git a/DQM/L1TMonitor/test/l1t_dqm_sourceclient-file_cfg.py b/DQM/L1TMonitor/test/l1t_dqm_sourceclient-file_cfg.py index 972e2a4ef756e..376af091fd978 100644 --- a/DQM/L1TMonitor/test/l1t_dqm_sourceclient-file_cfg.py +++ b/DQM/L1TMonitor/test/l1t_dqm_sourceclient-file_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run online L1 Trigger DQM # the user can choose the environment (live, playback, file-P5, file) diff --git a/DQM/L1TMonitor/test/l1temulator_dqm_sourceclient-file_cfg.py b/DQM/L1TMonitor/test/l1temulator_dqm_sourceclient-file_cfg.py index d67b8240e482a..c5d76b24a03f9 100644 --- a/DQM/L1TMonitor/test/l1temulator_dqm_sourceclient-file_cfg.py +++ b/DQM/L1TMonitor/test/l1temulator_dqm_sourceclient-file_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run online L1 Trigger emulator DQM # the user can choose the environment (live, playback, file-P5, file) diff --git a/DQM/MuonMonitor/test/mutracking_dqm_sourceclient-live_cfg.py b/DQM/MuonMonitor/test/mutracking_dqm_sourceclient-live_cfg.py index 3bfab1e21b5a5..445ffdd587bd9 100644 --- a/DQM/MuonMonitor/test/mutracking_dqm_sourceclient-live_cfg.py +++ b/DQM/MuonMonitor/test/mutracking_dqm_sourceclient-live_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from Configuration.Eras.Era_Run2_2018_pp_on_AA_cff import Run2_2018_pp_on_AA diff --git a/DQM/Physics/interface/TopDQMHelpers.h b/DQM/Physics/interface/TopDQMHelpers.h index 4af769267c823..e6b8eeef1c8f6 100644 --- a/DQM/Physics/interface/TopDQMHelpers.h +++ b/DQM/Physics/interface/TopDQMHelpers.h @@ -378,17 +378,13 @@ bool SelectionStep::select(const edm::Event& event, const std::string& t if (dynamic_cast(&*obj)) { reco::PFCandidate objtmp = dynamic_cast(*obj); - if (objtmp.muonRef().isNonnull() && type == "muon") { + if (type == "muon") { if (select_(*obj)) { ++n; } - } else if (objtmp.gsfElectronRef().isNonnull() && type == "electron") { + } else if (type == "electron") { if (select_(*obj)) { - if (electronId_.isUninitialized()) { - ++n; - } else if (((double)(*electronId)[obj->gsfElectronRef()] >= eidCutValue_)) { - ++n; - } + ++n; } // idx_gsf++; } diff --git a/DQM/Physics/python/qcdLowPtDQM_cfi.py b/DQM/Physics/python/qcdLowPtDQM_cfi.py index ead851164104b..c77a780bb9725 100644 --- a/DQM/Physics/python/qcdLowPtDQM_cfi.py +++ b/DQM/Physics/python/qcdLowPtDQM_cfi.py @@ -7,7 +7,7 @@ from RecoLocalTracker.SiPixelRecHits.SiPixelRecHits_cfi import * from RecoLocalTracker.SiPixelRecHits.PixelCPEESProducers_cff import * -siPixelDigis.cpu.InputLabel = cms.InputTag("source") +siPixelDigis.InputLabel = cms.InputTag("source") myRecoSeq1 = cms.Sequence( siPixelDigis * diff --git a/DQM/Physics/python/singleTopDQM_cfi.py b/DQM/Physics/python/singleTopDQM_cfi.py index 05592145f68f6..7286aa64f0398 100644 --- a/DQM/Physics/python/singleTopDQM_cfi.py +++ b/DQM/Physics/python/singleTopDQM_cfi.py @@ -9,21 +9,21 @@ tightJetCut = "(chargedHadronEnergyFraction()>0 && chargedMultiplicity()>0 && chargedEmEnergyFraction()<0.99 && neutralHadronEnergyFraction()<0.90 && neutralEmEnergyFraction()<0.90 && (chargedMultiplicity()+neutralMultiplicity())>1) && abs(eta)<=2.4 " #Loose muon selection -looseMuonCut = "(muonRef.isNonnull && (muonRef.isGlobalMuon || muonRef.isTrackerMuon) && muonRef.isPFMuon)" -looseIsoCut = "(muonRef.pfIsolationR04.sumChargedHadronPt + max(0., muonRef.pfIsolationR04.sumNeutralHadronEt + muonRef.pfIsolationR04.sumPhotonEt - 0.5 * muonRef.pfIsolationR04.sumPUPt) ) / muonRef.pt < 0.25" +looseMuonCut = "((isGlobalMuon || isTrackerMuon) && isPFMuon)" +looseIsoCut = "((pfIsolationR04.sumChargedHadronPt + max(0., pfIsolationR04.sumNeutralHadronEt + pfIsolationR04.sumPhotonEt - 0.5 * pfIsolationR04.sumPUPt) ) / pt < 0.25)" #Medium muon selection. Also requires either good global muon or tight segment compatibility -mediumMuonCut = looseMuonCut + " muonRef.innerTrack.validFraction > 0.8" +mediumMuonCut = looseMuonCut + " innerTrack.validFraction > 0.8" #Tight muon selection. Lacks distance to primary vertex variables, dz<0.5, dxy < 0.2. Now done at .cc -tightMuonCut = "muonRef.isNonnull && muonRef.isGlobalMuon && muonRef.isPFMuon && muonRef.globalTrack.normalizedChi2 < 10. && muonRef.globalTrack.hitPattern.numberOfValidMuonHits > 0 && " + \ - "muonRef.numberOfMatchedStations > 1 && muonRef.innerTrack.hitPattern.numberOfValidPixelHits > 0 && muonRef.innerTrack.hitPattern.trackerLayersWithMeasurement > 5 " -tightIsoCut = "(muonRef.pfIsolationR04.sumChargedHadronPt + max(0., muonRef.pfIsolationR04.sumNeutralHadronEt + muonRef.pfIsolationR04.sumPhotonEt - 0.5 * muonRef.pfIsolationR04.sumPUPt) ) / muonRef.pt < 0.15" +tightMuonCut = "isGlobalMuon && isPFMuon && globalTrack.normalizedChi2 < 10. && globalTrack.hitPattern.numberOfValidMuonHits > 0 && " + \ + "numberOfMatchedStations > 1 && innerTrack.hitPattern.numberOfValidPixelHits > 0 && innerTrack.hitPattern.trackerLayersWithMeasurement > 5 " +tightIsoCut = "(pfIsolationR04.sumChargedHadronPt + max(0., pfIsolationR04.sumNeutralHadronEt + pfIsolationR04.sumPhotonEt - 0.5 * pfIsolationR04.sumPUPt) ) / pt < 0.15" #Electron selections -looseEleCut = "(( gsfElectronRef.full5x5_sigmaIetaIeta() < 0.011 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00477 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.222 && gsfElectronRef.hadronicOverEm() < 0.298 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.241 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) < 1.479) || (gsfElectronRef.full5x5_sigmaIetaIeta() < 0.0314 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00868 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.213 && gsfElectronRef.hadronicOverEm() < 0.101 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.14 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) > 1.479))" +looseEleCut = "((full5x5_sigmaIetaIeta() < 0.011 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00477 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.222 && hadronicOverEm() < 0.298 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.241 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) < 1.479) || (full5x5_sigmaIetaIeta() < 0.0314 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00868 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.213 && hadronicOverEm() < 0.101 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.14 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) > 1.479))" -tightEleCut = "((gsfElectronRef.full5x5_sigmaIetaIeta() < 0.00998 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00308 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.0816 && gsfElectronRef.hadronicOverEm() < 0.0414 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.0129 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) < 1.479) || (gsfElectronRef.full5x5_sigmaIetaIeta() < 0.0292 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00605 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.0394 && gsfElectronRef.hadronicOverEm() < 0.0641 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.0129 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) > 1.479))" +tightEleCut = "((full5x5_sigmaIetaIeta() < 0.00998 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00308 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.0816 && hadronicOverEm() < 0.0414 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.0129 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) < 1.479) || (full5x5_sigmaIetaIeta() < 0.0292 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00605 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.0394 && hadronicOverEm() < 0.0641 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.0129 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) > 1.479))" from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer @@ -37,8 +37,8 @@ setup = cms.PSet( directory = cms.string("Physics/Top/SingleTopMuonMediumDQM/"), sources = cms.PSet( - muons = cms.InputTag("pfIsolatedMuonsEI"), - elecs = cms.InputTag("pfIsolatedElectronsEI"), + muons = cms.InputTag("muons"), + elecs = cms.InputTag("gedGsfElectrons"), jets = cms.InputTag("ak4PFJetsCHS"), mets = cms.VInputTag("pfMet"), pvs = cms.InputTag("offlinePrimaryVertices") @@ -50,7 +50,7 @@ select = cms.string(PVCut) ), elecExtras = cms.PSet( - select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(gsfElectronRef.superCluster().eta()) <= 1.4442 || abs(gsfElectronRef.superCluster().eta()) >= 1.5660)"), + select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(superCluster().eta()) <= 1.4442 || abs(superCluster().eta()) >= 1.5660)"), rho = cms.InputTag("fixedGridRhoFastjetAll"), ), muonExtras = cms.PSet( @@ -62,10 +62,10 @@ select = cms.string("pt>30 & abs(eta)< 2.4"), jetBTaggers = cms.PSet( cvsVertex = cms.PSet( - label = cms.InputTag("pfCombinedInclusiveSecondaryVertexV2BJetTags"), - workingPoint = cms.double(0.890) + label = cms.InputTag("pfDeepCSVJetTags:probb"), + workingPoint = cms.double(0.4168) ) - ), + ) ), massExtras = cms.PSet( lowerEdge = cms.double( 70.), @@ -87,7 +87,7 @@ selection = cms.VPSet( cms.PSet( label = cms.string("muons/pf:step0"), - src = cms.InputTag("pfIsolatedMuonsEI"), + src = cms.InputTag("muons"), select = cms.string(tightMuonCut + " && pt>20 & abs(eta)<2.4"), min = cms.int32(1), ), @@ -118,8 +118,8 @@ ## communication to TopCom! directory = cms.string("Physics/Top/SingleTopElectronMediumDQM/"), sources = cms.PSet( - muons = cms.InputTag("pfIsolatedMuonsEI"), - elecs = cms.InputTag("pfIsolatedElectronsEI"), + muons = cms.InputTag("muons"), + elecs = cms.InputTag("gedGsfElectrons"), jets = cms.InputTag("ak4PFJetsCHS"), mets = cms.VInputTag("pfMet"), pvs = cms.InputTag("offlinePrimaryVertices") @@ -131,7 +131,7 @@ select = cms.string(PVCut) ), elecExtras = cms.PSet( - select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(gsfElectronRef.superCluster().eta()) <= 1.4442 || abs(gsfElectronRef.superCluster().eta()) >= 1.5660)"), + select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(superCluster().eta()) <= 1.4442 || abs(superCluster().eta()) >= 1.5660)"), rho = cms.InputTag("fixedGridRhoFastjetAll"), ), muonExtras = cms.PSet( @@ -143,10 +143,10 @@ select = cms.string("pt>30 & abs(eta)< 2.4"), jetBTaggers = cms.PSet( cvsVertex = cms.PSet( - label = cms.InputTag("pfCombinedInclusiveSecondaryVertexV2BJetTags"), - workingPoint = cms.double(0.890) + label = cms.InputTag("pfDeepCSVJetTags:probb"), + workingPoint = cms.double(0.4168) ) - ), + ) ), massExtras = cms.PSet( lowerEdge = cms.double( 70.), @@ -175,14 +175,14 @@ # label = cms.string("elecs/pf:step0"), # src = cms.InputTag("pfIsolatedElectronsEI"), # electronId = cms.PSet( src = cms.InputTag("mvaTrigV0"), cutValue = cms.double(0.5) ), -# select = cms.string("pt>30 & abs(eta)<2.5 & abs(gsfElectronRef.gsfTrack.d0)<0.02 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 0 && (abs(gsfElectronRef.superCluster.eta) <= 1.4442 || abs(gsfElectronRef.superCluster.eta) >= 1.5660) && " + EletightIsoCut), +# select = cms.string("pt>30 & abs(eta)<2.5 & abs(gsfTrack.d0)<0.02 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 0 && (abs(superCluster.eta) <= 1.4442 || abs(superCluster.eta) >= 1.5660) && " + EletightIsoCut), # min = cms.int32(1), # max = cms.int32(1), # ),*/ cms.PSet( label = cms.string("elecs/pf:step0"), - src = cms.InputTag("pfIsolatedElectronsEI"), - select = cms.string("pt>20 & abs(eta)<2.5 & (abs(gsfElectronRef.superCluster().eta()) <= 1.4442 || abs(gsfElectronRef.superCluster().eta()) >= 1.5660) &&" + tightEleCut), + src = cms.InputTag("gedGsfElectrons"), + select = cms.string("pt>20 & abs(eta)<2.5 & (abs(superCluster().eta()) <= 1.4442 || abs(superCluster().eta()) >= 1.5660) &&" + tightEleCut), min = cms.int32(1), ), cms.PSet( diff --git a/DQM/Physics/python/topSingleLeptonDQM_cfi.py b/DQM/Physics/python/topSingleLeptonDQM_cfi.py index 1ded8a15af938..cd4d49d19a379 100644 --- a/DQM/Physics/python/topSingleLeptonDQM_cfi.py +++ b/DQM/Physics/python/topSingleLeptonDQM_cfi.py @@ -9,21 +9,21 @@ tightJetCut = "(chargedHadronEnergyFraction()>0 && chargedMultiplicity()>0 && chargedEmEnergyFraction()<0.99 && neutralHadronEnergyFraction()<0.90 && neutralEmEnergyFraction()<0.90 && (chargedMultiplicity()+neutralMultiplicity())>1) && abs(eta)<=2.4 " #Loose muon selection -looseMuonCut = "(muonRef.isNonnull && (muonRef.isGlobalMuon || muonRef.isTrackerMuon) && muonRef.isPFMuon)" -looseIsoCut = "((muonRef.pfIsolationR04.sumChargedHadronPt + max(0., muonRef.pfIsolationR04.sumNeutralHadronEt + muonRef.pfIsolationR04.sumPhotonEt - 0.5 * muonRef.pfIsolationR04.sumPUPt) ) / muonRef.pt < 0.25)" +looseMuonCut = "((isGlobalMuon || isTrackerMuon) && isPFMuon)" +looseIsoCut = "((pfIsolationR04.sumChargedHadronPt + max(0., pfIsolationR04.sumNeutralHadronEt + pfIsolationR04.sumPhotonEt - 0.5 * pfIsolationR04.sumPUPt) ) / pt < 0.25)" #Medium muon selection. Also requires either good global muon or tight segment compatibility -mediumMuonCut = looseMuonCut + " muonRef.innerTrack.validFraction > 0.8" +mediumMuonCut = looseMuonCut + " innerTrack.validFraction > 0.8" #Tight muon selection. Lacks distance to primary vertex variables, dz<0.5, dxy < 0.2. Now done at .cc -tightMuonCut = "muonRef.isNonnull && muonRef.isGlobalMuon && muonRef.isPFMuon && muonRef.globalTrack.normalizedChi2 < 10. && muonRef.globalTrack.hitPattern.numberOfValidMuonHits > 0 && " + \ - "muonRef.numberOfMatchedStations > 1 && muonRef.innerTrack.hitPattern.numberOfValidPixelHits > 0 && muonRef.innerTrack.hitPattern.trackerLayersWithMeasurement > 5 " -tightIsoCut = "(muonRef.pfIsolationR04.sumChargedHadronPt + max(0., muonRef.pfIsolationR04.sumNeutralHadronEt + muonRef.pfIsolationR04.sumPhotonEt - 0.5 * muonRef.pfIsolationR04.sumPUPt) ) / muonRef.pt < 0.15" +tightMuonCut = "isGlobalMuon && isPFMuon && globalTrack.normalizedChi2 < 10. && globalTrack.hitPattern.numberOfValidMuonHits > 0 && " + \ + "numberOfMatchedStations > 1 && innerTrack.hitPattern.numberOfValidPixelHits > 0 && innerTrack.hitPattern.trackerLayersWithMeasurement > 5 " +tightIsoCut = "(pfIsolationR04.sumChargedHadronPt + max(0., pfIsolationR04.sumNeutralHadronEt + pfIsolationR04.sumPhotonEt - 0.5 * pfIsolationR04.sumPUPt) ) / pt < 0.15" #Electron selections -looseEleCut = "(( gsfElectronRef.full5x5_sigmaIetaIeta() < 0.011 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00477 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.222 && gsfElectronRef.hadronicOverEm() < 0.298 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.241 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) < 1.479) || (gsfElectronRef.full5x5_sigmaIetaIeta() < 0.0314 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00868 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.213 && gsfElectronRef.hadronicOverEm() < 0.101 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.14 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) > 1.479))" +looseEleCut = "((full5x5_sigmaIetaIeta() < 0.011 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00477 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.222 && hadronicOverEm() < 0.298 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.241 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) < 1.479) || (full5x5_sigmaIetaIeta() < 0.0314 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00868 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.213 && hadronicOverEm() < 0.101 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.14 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) > 1.479))" -tightEleCut = "((gsfElectronRef.full5x5_sigmaIetaIeta() < 0.00998 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00308 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.0816 && gsfElectronRef.hadronicOverEm() < 0.0414 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.0129 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) < 1.479) || (gsfElectronRef.full5x5_sigmaIetaIeta() < 0.0292 && gsfElectronRef.superCluster().isNonnull() && gsfElectronRef.superCluster().seed().isNonnull() && (gsfElectronRef.deltaEtaSuperClusterTrackAtVtx() - gsfElectronRef.superCluster().eta() + gsfElectronRef.superCluster().seed().eta()) < 0.00605 && abs(gsfElectronRef.deltaPhiSuperClusterTrackAtVtx()) < 0.0394 && gsfElectronRef.hadronicOverEm() < 0.0641 && abs(1.0 - gsfElectronRef.eSuperClusterOverP())*1.0/gsfElectronRef.ecalEnergy() < 0.0129 && gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(gsfElectronRef.superCluster().eta()) > 1.479))" +tightEleCut = "((full5x5_sigmaIetaIeta() < 0.00998 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00308 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.0816 && hadronicOverEm() < 0.0414 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.0129 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) < 1.479) || (full5x5_sigmaIetaIeta() < 0.0292 && superCluster().isNonnull() && superCluster().seed().isNonnull() && (deltaEtaSuperClusterTrackAtVtx() - superCluster().eta() + superCluster().seed().eta()) < 0.00605 && abs(deltaPhiSuperClusterTrackAtVtx()) < 0.0394 && hadronicOverEm() < 0.0641 && abs(1.0 - eSuperClusterOverP())*1.0/ecalEnergy() < 0.0129 && gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 1 && abs(superCluster().eta()) > 1.479))" from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer @@ -38,8 +38,8 @@ setup = cms.PSet( directory = cms.string("Physics/Top/TopSingleMuonMediumDQM/"), sources = cms.PSet( - muons = cms.InputTag("pfIsolatedMuonsEI"), - elecs = cms.InputTag("pfIsolatedElectronsEI"), + muons = cms.InputTag("muons"), + elecs = cms.InputTag("gedGsfElectrons"), jets = cms.InputTag("ak4PFJetsCHS"), mets = cms.VInputTag("pfMet"), pvs = cms.InputTag("offlinePrimaryVertices") @@ -52,7 +52,7 @@ select = cms.string(PVCut) ), elecExtras = cms.PSet( - select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(gsfElectronRef.superCluster().eta()) <= 1.4442 || abs(gsfElectronRef.superCluster().eta()) >= 1.5660)"), + select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(superCluster().eta()) <= 1.4442 || abs(superCluster().eta()) >= 1.5660)"), rho = cms.InputTag("fixedGridRhoFastjetAll"), ), muonExtras = cms.PSet( @@ -61,15 +61,15 @@ isolation = cms.string(looseIsoCut) ), jetExtras = cms.PSet( - jetCorrector = cms.InputTag("dqmAk4PFCHSL1FastL2L3Corrector"), #Use pak4PFCHSL1FastL2L3Residual for data!!! - select = cms.string("pt>30 & abs(eta)< 2.4"), - jetBTaggers = cms.PSet( + jetCorrector = cms.InputTag("dqmAk4PFCHSL1FastL2L3Corrector"), #Use pak4PFCHSL1FastL2L3Residual for data!!! + select = cms.string("pt>30 & abs(eta)<2.4"), + jetBTaggers = cms.PSet( cvsVertex = cms.PSet( - label = cms.InputTag("pfCombinedInclusiveSecondaryVertexV2BJetTags"), - workingPoint = cms.double(0.890) - # CSV Medium from https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation74X + label = cms.InputTag("pfDeepCSVJetTags:probb"), + workingPoint = cms.double(0.4168) + # deepCSV Medium from https://btv-wiki.docs.cern.ch/ScaleFactors/UL2018/ ) - ), + ), ), massExtras = cms.PSet( lowerEdge = cms.double( 70.), @@ -87,7 +87,7 @@ selection = cms.VPSet( cms.PSet( label = cms.string("muons:step0"), - src = cms.InputTag("pfIsolatedMuonsEI"), + src = cms.InputTag("muons"), select = cms.string(tightMuonCut + " && pt>20 & abs(eta)<2.4"), min = cms.int32(1), ), @@ -116,21 +116,20 @@ setup = cms.PSet( directory = cms.string("Physics/Top/TopSingleElectronMediumDQM/"), sources = cms.PSet( - muons = cms.InputTag("pfIsolatedMuonsEI"), - elecs = cms.InputTag("pfIsolatedElectronsEI"), + muons = cms.InputTag("muons"), + elecs = cms.InputTag("gedGsfElectrons"), jets = cms.InputTag("ak4PFJetsCHS"), mets = cms.VInputTag("pfMet"), pvs = cms.InputTag("offlinePrimaryVertices") - ), monitoring = cms.PSet( verbosity = cms.string("DEBUG") ), pvExtras = cms.PSet( - select = cms.string(PVCut) + select = cms.string(PVCut) ), elecExtras = cms.PSet( - select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(gsfElectronRef.superCluster().eta()) <= 1.4442 || abs(gsfElectronRef.superCluster().eta()) >= 1.5660)"), + select = cms.string(tightEleCut + "& pt>20 & abs(eta)<2.5 & (abs(superCluster().eta()) <= 1.4442 || abs(superCluster().eta()) >= 1.5660)"), rho = cms.InputTag("fixedGridRhoFastjetAll"), ), muonExtras = cms.PSet( @@ -140,13 +139,13 @@ jetExtras = cms.PSet( jetCorrector = cms.InputTag("dqmAk4PFCHSL1FastL2L3Corrector"), #Use pak4PFCHSL1FastL2L3Residual for data!!! select = cms.string("pt>30 & abs(eta)<2.4"), - jetBTaggers = cms.PSet( - cvsVertex = cms.PSet( - label = cms.InputTag("pfCombinedInclusiveSecondaryVertexV2BJetTags"), - workingPoint = cms.double(0.890) - # CSV Medium from https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation74X + jetBTaggers = cms.PSet( + cvsVertex = cms.PSet( + label = cms.InputTag("pfDeepCSVJetTags:probb"), + workingPoint = cms.double(0.4168) + # deepCSV Medium from https://btv-wiki.docs.cern.ch/ScaleFactors/UL2018/ ) - ), + ) ), massExtras = cms.PSet( lowerEdge = cms.double( 70.), @@ -162,9 +161,9 @@ selection = cms.VPSet( cms.PSet( label = cms.string("elecs:step0"), - src = cms.InputTag("pfIsolatedElectronsEI"), - select = cms.string("pt>20 & abs(eta)<2.5 & (abs(gsfElectronRef.superCluster().eta()) <= 1.4442 || abs(gsfElectronRef.superCluster().eta()) >= 1.5660) &&" + tightEleCut), - # select = cms.string("pt>30 & abs(eta)<2.5 & abs(gsfElectronRef.gsfTrack.d0)<0.02 & gsfElectronRef.gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 0 & (abs(gsfElectronRef.superCluster.eta) <= 1.4442 || abs(gsfElectronRef.superCluster.eta) >= 1.5660) & " + EletightIsoCut), + src = cms.InputTag("gedGsfElectrons"), + select = cms.string("pt>20 & abs(eta)<2.5 & (abs(superCluster().eta()) <= 1.4442 || abs(superCluster().eta()) >= 1.5660) &&" + tightEleCut), + # select = cms.string("pt>30 & abs(eta)<2.5 & abs(gsfTrack.d0)<0.02 & gsfTrack.hitPattern().numberOfLostHits('MISSING_INNER_HITS') <= 0 & (abs(superCluster.eta) <= 1.4442 || abs(superCluster.eta) >= 1.5660) & " + EletightIsoCut), min = cms.int32(1), ), cms.PSet( diff --git a/DQM/Physics/src/SingleTopTChannelLeptonDQM.cc b/DQM/Physics/src/SingleTopTChannelLeptonDQM.cc index 0633d6becb838..f3463a16501ef 100644 --- a/DQM/Physics/src/SingleTopTChannelLeptonDQM.cc +++ b/DQM/Physics/src/SingleTopTChannelLeptonDQM.cc @@ -4,6 +4,7 @@ #include "DataFormats/GsfTrackReco/interface/GsfTrack.h" #include "DataFormats/JetReco/interface/CaloJet.h" #include "DataFormats/JetReco/interface/PFJet.h" + #include "DataFormats/Math/interface/deltaR.h" #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" #include "DataFormats/VertexReco/interface/Vertex.h" @@ -44,8 +45,8 @@ namespace SingleTopTChannelLepton { logged_(0) { // sources have to be given; this PSet is not optional edm::ParameterSet sources = cfg.getParameter("sources"); - muons_ = iC.consumes>(sources.getParameter("muons")); - elecs_ = iC.consumes>(sources.getParameter("elecs")); + muons_ = iC.consumes>(sources.getParameter("muons")); + elecs_ = iC.consumes>(sources.getParameter("elecs")); jets_ = iC.consumes>(sources.getParameter("jets")); for (edm::InputTag const& tag : sources.getParameter>("mets")) mets_.push_back(iC.consumes>(tag)); @@ -61,7 +62,7 @@ namespace SingleTopTChannelLepton { // select is optional; in case it's not found no // selection will be applied if (elecExtras.existsAs("select")) { - elecSelect_ = std::make_unique>( + elecSelect_ = std::make_unique>( elecExtras.getParameter("select")); } @@ -92,14 +93,14 @@ namespace SingleTopTChannelLepton { // select is optional; in case it's not found no // selection will be applied if (muonExtras.existsAs("select")) { - muonSelect_ = std::make_unique>( - muonExtras.getParameter("select")); + muonSelect_ = + std::make_unique>(muonExtras.getParameter("select")); } // isolation is optional; in case it's not found no // isolation will be applied if (muonExtras.existsAs("isolation")) { - muonIso_ = std::make_unique>( - muonExtras.getParameter("isolation")); + muonIso_ = + std::make_unique>(muonExtras.getParameter("isolation")); } } @@ -131,7 +132,6 @@ namespace SingleTopTChannelLepton { "neutralHadronEnergyFraction()<0.99 && neutralEmEnergyFraction()<0.99 && " "(chargedMultiplicity()+neutralMultiplicity())>1"); } - // jetBDiscriminators are optional; in case they are // not found the InputTag will remain empty; they // consist of pairs of edm::JetFlavorAssociation's & @@ -198,8 +198,8 @@ namespace SingleTopTChannelLepton { hists_["elecPt_"] = ibooker.book1D("ElecPt", "pt(e TightId, TightIso)", 40, 0., 200.); // multiplicity of jets with pt>30 (corrected to L1+L2+L3) hists_["jetMult_"] = ibooker.book1D("JetMult", "N_{30}(jet)", 10, 0., 10.); - // multiplicity of loose Id jets with pt>30 - hists_["jetLooseMult_"] = ibooker.book1D("JetLooseMult", "N_{30,loose}(jet)", 10, 0., 10.); + // multiplicity of loose jets with pt>30 + hists_["jetMultLoose_"] = ibooker.book1D("JetMultLoose", "N_{30,loose}(jet)", 10, 0., 10.); // MET (pflow) hists_["metPflow_"] = ibooker.book1D("METPflow", "MET_{Pflow}", 50, 0., 200.); @@ -240,6 +240,7 @@ namespace SingleTopTChannelLepton { // multiplicity of tight Id, tight Iso electorns hists_["elecMultTight_"] = ibooker.book1D("ElecMultTight", "N_{TightIso,TightId}(e)", 10, 0., 10.); + // eta of the 1. leading jet (corrected to L2+L3) hists_["jet1Eta_"] = ibooker.book1D("Jet1Eta", "#eta_{30,loose}(jet1)", 60, -3., 3.); // pt of the 1. leading jet (corrected to L2+L3) hists_["jet1Pt_"] = ibooker.book1D("Jet1Pt", "pt_{30,loose}(jet1)", 60, 0., 300.); @@ -247,7 +248,14 @@ namespace SingleTopTChannelLepton { hists_["jet2Eta_"] = ibooker.book1D("Jet2Eta", "#eta_{30,loose}(jet2)", 60, -3., 3.); // pt of the 2. leading jet (corrected to L2+L3) hists_["jet2Pt_"] = ibooker.book1D("Jet2Pt", "pt_{30,loose}(jet2)", 60, 0., 300.); - + // eta of the 3. leading jet (corrected to L2+L3) + hists_["jet3Eta_"] = ibooker.book1D("Jet3Eta", "#eta_{30,loose}(jet3)", 60, -3., 3.); + // pt of the 3. leading jet (corrected to L2+L3) + hists_["jet3Pt_"] = ibooker.book1D("Jet3Pt", "pt_{30,loose}(jet3)", 60, 0., 300.); + // eta of the 4. leading jet (corrected to L2+L3) + hists_["jet4Eta_"] = ibooker.book1D("Jet4Eta", "#eta_{30,loose}(jet4)", 60, -3., 3.); + // pt of the 4. leading jet (corrected to L2+L3) + hists_["jet4Pt_"] = ibooker.book1D("Jet4Pt", "pt_{30,loose}(jet4)", 60, 0., 300.); // dz for muons (to suppress cosmis) hists_["muonDelZ_"] = ibooker.book1D("MuonDelZ", "d_{z}(#mu)", 50, -25., 25.); // dxy for muons (to suppress cosmics) @@ -321,7 +329,6 @@ namespace SingleTopTChannelLepton { ------------------------------------------------------------ */ - // fill monitoring plots for primary verices edm::Handle> pvs; @@ -343,11 +350,10 @@ namespace SingleTopTChannelLepton { */ // fill monitoring plots for electrons - edm::Handle> elecs; + edm::Handle> elecs; reco::GsfElectron e; edm::Handle _rhoHandle; event.getByLabel(rhoTag, _rhoHandle); - if (!event.getByToken(elecs_, elecs)) return; @@ -360,23 +366,15 @@ namespace SingleTopTChannelLepton { } // loop electron collection unsigned int eMult = 0, eMultIso = 0; - std::vector isoElecs; - - for (edm::View::const_iterator elec = elecs->begin(); elec != elecs->end(); ++elec) { - if (elec->gsfElectronRef().isNull()) { - continue; - } - reco::GsfElectronRef gsf_el = elec->gsfElectronRef(); + std::vector isoElecs; + for (edm::View::const_iterator elec = elecs->begin(); elec != elecs->end(); ++elec) { // restrict to electrons with good electronId - if (electronId_.isUninitialized() - ? true - : ((double)(*electronId)[gsf_el] >= - eidCutValue_)) { //This Electron Id is not currently used, but we can keep this for future needs + if (electronId_.isUninitialized()) { if (!elecSelect_ || (*elecSelect_)(*elec)) { - double el_ChHadIso = gsf_el->pfIsolationVariables().sumChargedHadronPt; - double el_NeHadIso = gsf_el->pfIsolationVariables().sumNeutralHadronEt; - double el_PhIso = gsf_el->pfIsolationVariables().sumPhotonEt; - double absEta = std::abs(gsf_el->superCluster()->eta()); + double el_ChHadIso = elec->pfIsolationVariables().sumChargedHadronPt; + double el_NeHadIso = elec->pfIsolationVariables().sumNeutralHadronEt; + double el_PhIso = elec->pfIsolationVariables().sumPhotonEt; + double absEta = std::fabs(elec->superCluster()->eta()); //Effective Area computation double eA = 0; @@ -396,7 +394,7 @@ namespace SingleTopTChannelLepton { eA = 0.2393; double rho = _rhoHandle.isValid() ? (float)(*_rhoHandle) : 0; - double el_pfRelIso = (el_ChHadIso + max(0., el_NeHadIso + el_PhIso - rho * eA)) / gsf_el->pt(); + double el_pfRelIso = (el_ChHadIso + max(0., el_NeHadIso + el_PhIso - rho * eA)) / elec->pt(); //Only TightId if (eMult == 0) { // Restricted to the leading tight electron @@ -412,10 +410,10 @@ namespace SingleTopTChannelLepton { // TightId and TightIso if (eMultIso == 0) { //Only leading - e = *gsf_el; - fill("elecPt_", gsf_el->pt()); - fill("elecEta_", gsf_el->eta()); - fill("elecPhi_", gsf_el->phi()); + e = *elec; + fill("elecPt_", elec->pt()); + fill("elecEta_", elec->eta()); + fill("elecPhi_", elec->phi()); } ++eMultIso; } @@ -435,26 +433,22 @@ namespace SingleTopTChannelLepton { // fill monitoring plots for muons unsigned int mMult = 0, mTight = 0, mTightId = 0; - edm::Handle> muons; - edm::View::const_iterator muonit; - reco::MuonRef muon; + edm::Handle> muons; + edm::View::const_iterator muon; + //reco::MuonRef muon; reco::Muon mu; if (!event.getByToken(muons_, muons)) return; - for (edm::View::const_iterator muonit = muons->begin(); muonit != muons->end(); ++muonit) { - if (muonit->muonRef().isNull()) - continue; - reco::MuonRef muon = muonit->muonRef(); - + for (edm::View::const_iterator muon = muons->begin(); muon != muons->end(); ++muon) { // restrict to globalMuons if (muon->isGlobalMuon()) { fill("muonDelZ_", muon->innerTrack()->vz()); // CB using inner track! fill("muonDelXY_", muon->innerTrack()->vx(), muon->innerTrack()->vy()); // apply preselection - if ((!muonSelect_ || (*muonSelect_)(*muonit))) { + if ((!muonSelect_ || (*muonSelect_)(*muon))) { mMult++; double chHadPt = muon->pfIsolationR04().sumChargedHadronPt; double neHadEt = muon->pfIsolationR04().sumNeutralHadronEt; @@ -584,6 +578,8 @@ namespace SingleTopTChannelLepton { } ++multCSV; } + // Fill a vector with Jet b-tag WP for later M3+1tag calculation: CSV + // tagger JetTagValues.push_back((*btagCSV)[jetRef]); } @@ -595,7 +591,15 @@ namespace SingleTopTChannelLepton { if (multLoose == 1) { fill("jet2Pt_", monitorJet.pt()); fill("jet2Eta_", monitorJet.eta()); - } + }; + if (multLoose == 2) { + fill("jet3Pt_", monitorJet.pt()); + fill("jet3Eta_", monitorJet.eta()); + }; + if (multLoose == 3) { + fill("jet4Pt_", monitorJet.pt()); + fill("jet4Eta_", monitorJet.eta()); + }; multLoose++; } } @@ -692,7 +696,7 @@ SingleTopTChannelLeptonDQM::SingleTopTChannelLeptonDQM(const edm::ParameterSet& PFElectronStep(nullptr), PvStep(nullptr), METStep(nullptr) { - JetSteps.clear(); + //JetSteps.clear(); CaloJetSteps.clear(); PFJetSteps.clear(); // configure preselection @@ -732,13 +736,13 @@ SingleTopTChannelLeptonDQM::SingleTopTChannelLeptonDQM(const edm::ParameterSet& MuonStep = std::make_unique>(selection_[key].first, consumesCollector()); } if (type == "muons/pf") { - PFMuonStep = std::make_unique>(selection_[key].first, consumesCollector()); + PFMuonStep = std::make_unique>(selection_[key].first, consumesCollector()); } if (type == "elecs") { ElectronStep = std::make_unique>(selection_[key].first, consumesCollector()); } if (type == "elecs/pf") { - PFElectronStep = std::make_unique>(selection_[key].first, consumesCollector()); + PFElectronStep = std::make_unique>(selection_[key].first, consumesCollector()); } if (type == "pvs") { PvStep = std::make_unique>(selection_[key].first, consumesCollector()); @@ -767,20 +771,24 @@ void SingleTopTChannelLeptonDQM::bookHistograms(DQMStore::IBooker& ibooker, edm: void SingleTopTChannelLeptonDQM::analyze(const edm::Event& event, const edm::EventSetup& setup) { if (!triggerTable__.isUninitialized()) { edm::Handle triggerTable; - if (!event.getByToken(triggerTable__, triggerTable)) + if (!event.getByToken(triggerTable__, triggerTable)) { return; - if (!accept(event, *triggerTable, triggerPaths_)) + } + if (!accept(event, *triggerTable, triggerPaths_)) { return; + } } if (!beamspot__.isUninitialized()) { edm::Handle beamspot; - if (!event.getByToken(beamspot__, beamspot)) + if (!event.getByToken(beamspot__, beamspot)) { return; - if (!(*beamspotSelect_)(*beamspot)) + } + if (!(*beamspotSelect_)(*beamspot)) { return; + } } // apply selection steps - unsigned int nJetSteps = -1; + //unsigned int nJetSteps = -1; unsigned int nPFJetSteps = -1; unsigned int nCaloJetSteps = -1; for (std::vector::const_iterator selIt = selectionOrder_.begin(); selIt != selectionOrder_.end(); @@ -796,44 +804,50 @@ void SingleTopTChannelLeptonDQM::analyze(const edm::Event& event, const edm::Eve if (type == "elecs" && ElectronStep != nullptr) { if (ElectronStep->select(event)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } if (type == "elecs/pf" && PFElectronStep != nullptr) { if (PFElectronStep->select(event, "electron")) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } if (type == "muons" && MuonStep != nullptr) { if (MuonStep->select(event)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } if (type == "muons/pf" && PFMuonStep != nullptr) { if (PFMuonStep->select(event, "muon")) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } - if (type == "jets") { + /*if (type == "jets") { nJetSteps++; if (JetSteps[nJetSteps]) { if (JetSteps[nJetSteps]->select(event, setup)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } - } + }*/ if (type == "jets/pf") { nPFJetSteps++; if (PFJetSteps[nPFJetSteps]) { if (PFJetSteps[nPFJetSteps]->select(event, setup)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } if (type == "jets/calo") { @@ -841,15 +855,17 @@ void SingleTopTChannelLeptonDQM::analyze(const edm::Event& event, const edm::Eve if (CaloJetSteps[nCaloJetSteps]) { if (CaloJetSteps[nCaloJetSteps]->select(event, setup)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } if (type == "met" && METStep != nullptr) { if (METStep->select(event)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } } diff --git a/DQM/Physics/src/SingleTopTChannelLeptonDQM.h b/DQM/Physics/src/SingleTopTChannelLeptonDQM.h index 4899bd5c1bb10..f8ca35d1f03d2 100644 --- a/DQM/Physics/src/SingleTopTChannelLeptonDQM.h +++ b/DQM/Physics/src/SingleTopTChannelLeptonDQM.h @@ -110,14 +110,14 @@ namespace SingleTopTChannelLepton { /// instance label std::string label_; /// considers a vector of METs - std::vector > > mets_; + std::vector>> mets_; // std::vector mets_; /// input sources for monitoring - edm::EDGetTokenT > jets_; - edm::EDGetTokenT > muons_; - edm::EDGetTokenT > elecs_gsf_; - edm::EDGetTokenT > elecs_; - edm::EDGetTokenT > pvs_; + edm::EDGetTokenT> jets_; + edm::EDGetTokenT> muons_; + //edm::EDGetTokenT > elecs_gsf_; + edm::EDGetTokenT> elecs_; + edm::EDGetTokenT> pvs_; // edm::InputTag elecs_, elecs_gsf_, muons_, muons_reco_, jets_, pvs_; @@ -131,7 +131,7 @@ namespace SingleTopTChannelLepton { /// electronId label // edm::InputTag electronId_; - edm::EDGetTokenT > electronId_; + edm::EDGetTokenT> electronId_; /// electronId pattern we expect the following pattern: /// 0: fails /// 1: passes electron ID only @@ -149,27 +149,27 @@ namespace SingleTopTChannelLepton { /// extra isolation criterion on electron std::string elecIso_; /// extra selection on electrons - std::unique_ptr > elecSelect_; + std::unique_ptr> elecSelect_; edm::InputTag rhoTag; /// extra selection on primary vertices; meant to investigate the pile-up /// effect - std::unique_ptr > pvSelect_; + std::unique_ptr> pvSelect_; /// extra isolation criterion on muon - std::unique_ptr > muonIso_; + std::unique_ptr> muonIso_; /// extra selection on muons - std::unique_ptr > muonSelect_; + std::unique_ptr> muonSelect_; /// jetCorrector edm::EDGetTokenT jetCorrector_; /// jetID as an extra selection type edm::EDGetTokenT jetIDLabel_; /// extra jetID selection on calo jets - std::unique_ptr > jetIDSelect_; - std::unique_ptr > jetlooseSelection_; - std::unique_ptr > jetSelection_; + std::unique_ptr> jetIDSelect_; + std::unique_ptr> jetlooseSelection_; + std::unique_ptr> jetSelection_; /// extra selection on jets (here given as std::string as it depends /// on the the jet type, which selections are valid and which not) std::string jetSelect_; @@ -194,11 +194,11 @@ namespace SingleTopTChannelLepton { std::string directory_; - std::unique_ptr > muonSelect; - std::unique_ptr > muonIso; + std::unique_ptr> muonSelect; + std::unique_ptr> muonIso; - std::unique_ptr > elecSelect; - std::unique_ptr > elecIso; + std::unique_ptr> elecSelect; + std::unique_ptr> elecIso; }; inline void MonitorEnsemble::triggerBinLabels(std::string channel, const std::vector labels) { @@ -304,13 +304,13 @@ class SingleTopTChannelLeptonDQM : public DQMOneEDAnalyzer<> { edm::InputTag vertex_; edm::EDGetTokenT vertex__; /// string cut selector - std::unique_ptr > vertexSelect_; + std::unique_ptr> vertexSelect_; /// beamspot edm::InputTag beamspot_; edm::EDGetTokenT beamspot__; /// string cut selector - std::unique_ptr > beamspotSelect_; + std::unique_ptr> beamspotSelect_; /// needed to guarantee the selection order as defined by the order of /// ParameterSets in the _selection_ vector as defined in the config @@ -320,20 +320,20 @@ class SingleTopTChannelLeptonDQM : public DQMOneEDAnalyzer<> { /// the configuration of the selection for the SelectionStep class, /// MonitoringEnsemble keeps an instance of the MonitorEnsemble class to /// be filled _after_ each selection step - std::map > > + std::map>> selection_; - std::unique_ptr > MuonStep; - std::unique_ptr > PFMuonStep; - std::unique_ptr > ElectronStep; - std::unique_ptr > PFElectronStep; - std::unique_ptr > PvStep; + std::unique_ptr> MuonStep; + std::unique_ptr> PFMuonStep; + std::unique_ptr> ElectronStep; + std::unique_ptr> PFElectronStep; + std::unique_ptr> PvStep; - std::vector > > JetSteps; - std::vector > > CaloJetSteps; - std::vector > > PFJetSteps; + std::vector>> JetSteps; + std::vector>> CaloJetSteps; + std::vector>> PFJetSteps; - std::unique_ptr > METStep; + std::unique_ptr> METStep; std::vector sel; }; diff --git a/DQM/Physics/src/SingleTopTChannelLeptonDQM_miniAOD.cc b/DQM/Physics/src/SingleTopTChannelLeptonDQM_miniAOD.cc index 1a8e06bd7022c..f419590d59a8a 100644 --- a/DQM/Physics/src/SingleTopTChannelLeptonDQM_miniAOD.cc +++ b/DQM/Physics/src/SingleTopTChannelLeptonDQM_miniAOD.cc @@ -315,9 +315,9 @@ namespace SingleTopTChannelLepton_miniAOD { //hists_["jetBDiscVtx_"] = ibooker.book1D("JetBDiscVtx", // "Disc_{SSVHE}(Jet)", 35, -1., 6.); // multiplicity for combined secondary vertex - hists_["jetMultBDeepJetM_"] = ibooker.book1D("JetMultBDeepJetM", "N_{30}(DeepJetM)", 10, 0., 10.); + hists_["jetMultBPNetM_"] = ibooker.book1D("JetMultBPNetM", "N_{30}(PNetM)", 10, 0., 10.); // btag discriminator for combined secondary vertex - hists_["jetBDeepJet_"] = ibooker.book1D("JetDiscDeepJet", "BJet Disc_{DeepJet}(JET)", 100, -1., 2.); + hists_["jetBPNet_"] = ibooker.book1D("JetDiscPNet", "BJet Disc_{PNet}(JET)", 100, -1., 2.); // pt of the 1. leading jet (uncorrected) //hists_["jet1PtRaw_"] = ibooker.book1D("Jet1PtRaw", "pt_{Raw}(jet1)", 60, 0., 300.); // pt of the 2. leading jet (uncorrected) @@ -571,7 +571,7 @@ namespace SingleTopTChannelLepton_miniAOD { pat::Jet TaggedJetCand; vector bJetDiscVal; - unsigned int mult = 0, loosemult = 0, multBDeepJetM = 0; + unsigned int mult = 0, loosemult = 0, multBPNetM = 0; edm::Handle> jets; if (!event.getByToken(jets_, jets)) { @@ -603,25 +603,28 @@ namespace SingleTopTChannelLepton_miniAOD { correctedJets.push_back(monitorJet); ++loosemult; // determine jet multiplicity - double discriminator = monitorJet.bDiscriminator("pfDeepFlavourJetTags:probb") + - monitorJet.bDiscriminator("pfDeepFlavourJetTags:probbb") + - monitorJet.bDiscriminator("pfDeepFlavourJetTags:problepb"); + //ParticleNet discriminator - fill("jetBDeepJet_", discriminator); //hard coded discriminator and value right now. - if (discriminator > 0.2435) { - if (multBDeepJetM == 0) { + double discriminator = + monitorJet.bDiscriminator("pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll") > 0 + ? monitorJet.bDiscriminator("pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll") + : -1; + + fill("jetBPNet_", discriminator); //hard coded discriminator and value right now. + if (discriminator > 0.1919) { + if (multBPNetM == 0) { TaggedJetCand = monitorJet; bJetDiscVal.push_back(discriminator); - } else if (multBDeepJetM == 1) { + } else if (multBPNetM == 1) { bJetDiscVal.push_back(discriminator); if (bJetDiscVal[1] > bJetDiscVal[0]) TaggedJetCand = monitorJet; } - ++multBDeepJetM; + ++multBPNetM; } - // Fill a vector with Jet b-tag WP for later M3+1tag calculation: DeepJet + // Fill a vector with Jet b-tag WP for later M3+1tag calculation: PNet // tagger JetTagValues.push_back(discriminator); // } @@ -642,7 +645,7 @@ namespace SingleTopTChannelLepton_miniAOD { } fill("jetMult_", mult); fill("jetLooseMult_", loosemult); - fill("jetMultBDeepJetM_", multBDeepJetM); + fill("jetMultBPNetM_", multBPNetM); /* ------------------------------------------------------------ @@ -665,7 +668,7 @@ namespace SingleTopTChannelLepton_miniAOD { unsigned int idx = met_ - mets_.begin(); if (idx == 0) fill("slimmedMETs_", met->begin()->et()); - if (idx == 2) + if (idx == 1) fill("slimmedMETsPuppi_", met->begin()->et()); } } @@ -688,12 +691,12 @@ namespace SingleTopTChannelLepton_miniAOD { fill("massTop_", topMass); } - // Fill M3 with Btag (DeepJet Tight) requirement + // Fill M3 with Btag (PNet Tight) requirement // if (!includeBTag_) return; //if (correctedJets.size() != JetTagValues.size()) return; //double btopMass = - // eventKinematics.massBTopQuark(correctedJets, JetTagValues, 0.2435); //hard coded DeepJet value + // eventKinematics.massBTopQuark(correctedJets, JetTagValues, 0.2435); //hard coded PNet value //if (btopMass >= 0) fill("massBTop_", btopMass); @@ -722,14 +725,14 @@ namespace SingleTopTChannelLepton_miniAOD { } } - if (multBDeepJetM != 0 && mTight == 1) { + if (multBPNetM != 0 && mTight == 1) { double mtW = eventKinematics.tmassWBoson(&mu, mET, TaggedJetCand); fill("MTWm_", mtW); double MTT = eventKinematics.tmassTopQuark(&mu, mET, TaggedJetCand); fill("mMTT_", MTT); } - if (multBDeepJetM != 0 && eMultIso == 1) { + if (multBPNetM != 0 && eMultIso == 1) { double mtW = eventKinematics.tmassWBoson(&e, mET, TaggedJetCand); fill("MTWe_", mtW); double MTT = eventKinematics.tmassTopQuark(&e, mET, TaggedJetCand); diff --git a/DQM/Physics/src/TopSingleLeptonDQM.cc b/DQM/Physics/src/TopSingleLeptonDQM.cc index 7fe4891ac8a42..e2a2f1e24f88e 100644 --- a/DQM/Physics/src/TopSingleLeptonDQM.cc +++ b/DQM/Physics/src/TopSingleLeptonDQM.cc @@ -38,8 +38,8 @@ namespace TopSingleLepton { logged_(0) { // sources have to be given; this PSet is not optional edm::ParameterSet sources = cfg.getParameter("sources"); - muons_ = iC.consumes>(sources.getParameter("muons")); - elecs_ = iC.consumes>(sources.getParameter("elecs")); + muons_ = iC.consumes>(sources.getParameter("muons")); + elecs_ = iC.consumes>(sources.getParameter("elecs")); pvs_ = iC.consumes>(sources.getParameter("pvs")); jets_ = iC.consumes>(sources.getParameter("jets")); for (edm::InputTag const& tag : sources.getParameter>("mets")) @@ -55,7 +55,7 @@ namespace TopSingleLepton { // select is optional; in case it's not found no // selection will be applied if (elecExtras.existsAs("select")) { - elecSelect_ = std::make_unique>( + elecSelect_ = std::make_unique>( elecExtras.getParameter("select")); } @@ -86,14 +86,14 @@ namespace TopSingleLepton { // select is optional; in case it's not found no // selection will be applied if (muonExtras.existsAs("select")) { - muonSelect_ = std::make_unique>( - muonExtras.getParameter("select")); + muonSelect_ = + std::make_unique>(muonExtras.getParameter("select")); } // isolation is optional; in case it's not found no // isolation will be applied if (muonExtras.existsAs("isolation")) { - muonIso_ = std::make_unique>( - muonExtras.getParameter("isolation")); + muonIso_ = + std::make_unique>(muonExtras.getParameter("isolation")); } } @@ -206,7 +206,7 @@ namespace TopSingleLepton { // multiplicity of jets with pt>30 hists_["jetMult_"] = ibooker.book1D("JetMult", "N_{30}(jet)", 10, 0., 10.); // multiplicity of loose jets with pt>30 - hists_["jetMultLoose_"] = ibooker.book1D("JetMultLoose", "N_{30, loose}(jet)", 10, 0., 10.); + hists_["jetMultLoose_"] = ibooker.book1D("JetMultLoose", "N_{30,loose}(jet)", 10, 0., 10.); // trigger efficiency estimates for single lepton triggers // hists_["triggerEff_"] = ibooker.book1D("TriggerEff", @@ -357,7 +357,6 @@ namespace TopSingleLepton { pvMult++; } fill("pvMult_", pvMult); - /* ------------------------------------------------------------ @@ -367,7 +366,7 @@ namespace TopSingleLepton { */ // fill monitoring plots for electrons - edm::Handle> elecs; + edm::Handle> elecs; edm::Handle _rhoHandle; event.getByLabel(rhoTag, _rhoHandle); if (!event.getByToken(elecs_, elecs)) @@ -376,28 +375,21 @@ namespace TopSingleLepton { // check availability of electron id edm::Handle> electronId; if (!electronId_.isUninitialized()) { - if (!event.getByToken(electronId_, electronId)) + if (!event.getByToken(electronId_, electronId)) { return; + } } - // loop electron collection unsigned int eMult = 0, eMultIso = 0; - std::vector isoElecs; - for (edm::View::const_iterator elec = elecs->begin(); elec != elecs->end(); ++elec) { - if (elec->gsfElectronRef().isNull()) { - continue; - } - reco::GsfElectronRef gsf_el = elec->gsfElectronRef(); + std::vector isoElecs; + for (edm::View::const_iterator elec = elecs->begin(); elec != elecs->end(); ++elec) { // restrict to electrons with good electronId - if (electronId_.isUninitialized() - ? true - : ((double)(*electronId)[gsf_el] >= - eidCutValue_)) { //This Electron Id is not currently used, but we can keep this for future needs + if (electronId_.isUninitialized()) { if (!elecSelect_ || (*elecSelect_)(*elec)) { - double el_ChHadIso = gsf_el->pfIsolationVariables().sumChargedHadronPt; - double el_NeHadIso = gsf_el->pfIsolationVariables().sumNeutralHadronEt; - double el_PhIso = gsf_el->pfIsolationVariables().sumPhotonEt; - double absEta = std::fabs(gsf_el->superCluster()->eta()); + double el_ChHadIso = elec->pfIsolationVariables().sumChargedHadronPt; + double el_NeHadIso = elec->pfIsolationVariables().sumNeutralHadronEt; + double el_PhIso = elec->pfIsolationVariables().sumPhotonEt; + double absEta = std::fabs(elec->superCluster()->eta()); //Effective Area computation double eA = 0; @@ -417,7 +409,7 @@ namespace TopSingleLepton { eA = 0.2393; double rho = _rhoHandle.isValid() ? (float)(*_rhoHandle) : 0; - double el_pfRelIso = (el_ChHadIso + max(0., el_NeHadIso + el_PhIso - rho * eA)) / gsf_el->pt(); + double el_pfRelIso = (el_ChHadIso + max(0., el_NeHadIso + el_PhIso - rho * eA)) / elec->pt(); //Only TightId if (eMult == 0) { // Restricted to the leading tight electron @@ -455,24 +447,20 @@ namespace TopSingleLepton { // fill monitoring plots for muons unsigned int mMult = 0, mTight = 0, mTightId = 0; - edm::Handle> muons; - edm::View::const_iterator muonit; + edm::Handle> muons; + edm::View::const_iterator muonit; if (!event.getByToken(muons_, muons)) return; - for (edm::View::const_iterator muonit = muons->begin(); muonit != muons->end(); ++muonit) { - if (muonit->muonRef().isNull()) - continue; - reco::MuonRef muon = muonit->muonRef(); - + for (edm::View::const_iterator muon = muons->begin(); muon != muons->end(); ++muon) { // restrict to globalMuons if (muon->isGlobalMuon()) { fill("muonDelZ_", muon->innerTrack()->vz()); // CB using inner track! fill("muonDelXY_", muon->innerTrack()->vx(), muon->innerTrack()->vy()); // apply preselection - if ((!muonSelect_ || (*muonSelect_)(*muonit))) { + if ((!muonSelect_ || (*muonSelect_)(*muon))) { mMult++; double chHadPt = muon->pfIsolationR04().sumChargedHadronPt; double neHadEt = muon->pfIsolationR04().sumNeutralHadronEt; @@ -541,8 +529,9 @@ namespace TopSingleLepton { // check availability of the btaggers edm::Handle btagEff, btagPur, btagVtx, btagCSV; if (includeBTag_) { - if (!event.getByToken(btagCSV_, btagCSV)) + if (!event.getByToken(btagCSV_, btagCSV)) { return; + } } // loop jet collection @@ -566,7 +555,6 @@ namespace TopSingleLepton { if (!(*jetSelection_)(sel)) continue; } - // prepare jet to fill monitor histograms reco::Jet monitorJet = *jet; @@ -627,8 +615,9 @@ namespace TopSingleLepton { continue; if (met->begin() != met->end()) { //If we ever have to use more than one type of met again unsigned int idx = met_ - mets_.begin(); - if (idx == 0) + if (idx == 0) { fill("metPflow_", met->begin()->et()); + } } } @@ -641,7 +630,6 @@ namespace TopSingleLepton { */ // fill W boson and top mass estimates - Calculate eventKinematics(MAXJETS, WMASS); double wMass = eventKinematics.massWBoson(correctedJets); double topMass = eventKinematics.massTopQuark(correctedJets); @@ -657,8 +645,9 @@ namespace TopSingleLepton { if (correctedJets.size() != JetTagValues.size()) return; double btopMass = eventKinematics.massBTopQuark(correctedJets, JetTagValues, btagCSVWP_); - if (btopMass >= 0) + if (btopMass >= 0) { fill("massBTop_", btopMass); + } // fill plots for trigger monitoring if ((lowerEdge_ == -1. && upperEdge_ == -1.) || (lowerEdge_ < wMass && wMass < upperEdge_)) { @@ -697,7 +686,9 @@ TopSingleLeptonDQM::TopSingleLeptonDQM(const edm::ParameterSet& cfg) JetSteps.clear(); CaloJetSteps.clear(); PFJetSteps.clear(); + // configure preselection + edm::ParameterSet presel = cfg.getParameter("preselection"); if (presel.existsAs("trigger")) { edm::ParameterSet trigger = presel.getParameter("trigger"); @@ -727,10 +718,10 @@ TopSingleLeptonDQM::TopSingleLeptonDQM(const edm::ParameterSet& cfg) std::string key = selectionStep(*selIt), type = objectType(*selIt); if (selection_.find(key) != selection_.end()) { if (type == "muons") { - MuonStep = std::make_unique>(selection_[key].first, consumesCollector()); + MuonStep = std::make_unique>(selection_[key].first, consumesCollector()); } if (type == "elecs") { - ElectronStep = std::make_unique>(selection_[key].first, consumesCollector()); + ElectronStep = std::make_unique>(selection_[key].first, consumesCollector()); } if (type == "pvs") { PvStep = std::make_unique>(selection_[key].first, consumesCollector()); @@ -759,19 +750,23 @@ void TopSingleLeptonDQM::bookHistograms(DQMStore::IBooker& ibooker, edm::Run con void TopSingleLeptonDQM::analyze(const edm::Event& event, const edm::EventSetup& setup) { if (!triggerTable__.isUninitialized()) { edm::Handle triggerTable; - if (!event.getByToken(triggerTable__, triggerTable)) + if (!event.getByToken(triggerTable__, triggerTable)) { return; - if (!accept(event, *triggerTable, triggerPaths_)) + } + if (!accept(event, *triggerTable, triggerPaths_)) { return; + } } if (!beamspot__.isUninitialized()) { edm::Handle beamspot; - if (!event.getByToken(beamspot__, beamspot)) + if (!event.getByToken(beamspot__, beamspot)) { return; - if (!(*beamspotSelect_)(*beamspot)) + } + if (!(*beamspotSelect_)(*beamspot)) { return; + } } - // cout<<" apply selection steps"<select(event)) { - // cout<<"selected event! "<fill(event, setup); - } else + } else { break; + } } - // cout<<" apply selection steps 2"<select(event, "electron")) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } - // cout<<" apply selection steps 3"<selectVertex(event)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } - // cout<<" apply selection steps 4"<select(event, setup)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } if (type == "jets/pf") { @@ -819,8 +813,9 @@ void TopSingleLeptonDQM::analyze(const edm::Event& event, const edm::EventSetup& if (PFJetSteps[nPFJetSteps] != nullptr) { if (PFJetSteps[nPFJetSteps]->select(event, setup)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } if (type == "jets/calo") { @@ -828,21 +823,18 @@ void TopSingleLeptonDQM::analyze(const edm::Event& event, const edm::EventSetup& if (CaloJetSteps[nCaloJetSteps] != nullptr) { if (CaloJetSteps[nCaloJetSteps]->select(event, setup)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } if (type == "met" && METStep != nullptr) { if (METStep->select(event)) { selection_[key].second->fill(event, setup); - } else + } else { break; + } } } } } - -// Local Variables: -// show-trailing-whitespace: t -// truncate-lines: t -// End: diff --git a/DQM/Physics/src/TopSingleLeptonDQM.h b/DQM/Physics/src/TopSingleLeptonDQM.h index 78217cce9e01d..122102654c050 100644 --- a/DQM/Physics/src/TopSingleLeptonDQM.h +++ b/DQM/Physics/src/TopSingleLeptonDQM.h @@ -105,12 +105,13 @@ namespace TopSingleLepton { /// instance label std::string label_; /// considers a vector of METs - std::vector > > mets_; + std::vector>> mets_; /// input sources for monitoring - edm::EDGetTokenT > jets_; - edm::EDGetTokenT > muons_; - edm::EDGetTokenT > elecs_; - edm::EDGetTokenT > pvs_; + edm::EDGetTokenT> jets_; + edm::EDGetTokenT> muons_; + edm::EDGetTokenT> elecs_; + edm::EDGetTokenT> pvs_; + edm::EDGetTokenT> jetToken_; /// trigger table edm::EDGetTokenT triggerTable_; /// trigger paths for monitoring, expected @@ -118,7 +119,7 @@ namespace TopSingleLepton { std::vector triggerPaths_; /// electronId label - edm::EDGetTokenT > electronId_; + edm::EDGetTokenT> electronId_; /// electronId pattern we expect the following pattern: /// 0: fails @@ -140,17 +141,17 @@ namespace TopSingleLepton { /// extra selection on electrons - std::unique_ptr > elecSelect_; + std::unique_ptr> elecSelect_; /// extra selection on primary vertices; meant to investigate the pile-up /// effect - std::unique_ptr > pvSelect_; + std::unique_ptr> pvSelect_; /// extra isolation criterion on muon - std::unique_ptr > muonIso_; + std::unique_ptr> muonIso_; /// extra selection on muons - std::unique_ptr > muonSelect_; + std::unique_ptr> muonSelect_; /// jetCorrector edm::EDGetTokenT jetCorrector_; @@ -158,11 +159,11 @@ namespace TopSingleLepton { /// jetID as an extra selection type edm::EDGetTokenT jetIDLabel_; - std::unique_ptr > jetIDSelect_; + std::unique_ptr> jetIDSelect_; /// extra selection on jets std::string jetSelect_; - std::unique_ptr > jetlooseSelection_; - std::unique_ptr > jetSelection_; + std::unique_ptr> jetlooseSelection_; + std::unique_ptr> jetSelection_; /// include btag information or not /// to be determined from the cfg bool includeBTag_; @@ -245,8 +246,8 @@ namespace TopSingleLepton { - jets : of type reco::Jet (jets), reco::CaloJet (jets/calo) or reco::PFJet (jets/pflow) - - elecs : of type reco::PFCandidate - - muons : of type reco::PFCandidate + - elecs : of type reco::GsfElectron + - muons : of type reco::Muon - met : of type reco::MET These types have to be present as prefix of the selection step paramter @@ -289,13 +290,13 @@ class TopSingleLeptonDQM : public DQMOneEDAnalyzer<> { /// trigger paths std::vector triggerPaths_; /// string cut selector - std::unique_ptr > vertexSelect_; + std::unique_ptr> vertexSelect_; /// beamspot edm::InputTag beamspot_; edm::EDGetTokenT beamspot__; /// string cut selector - std::unique_ptr > beamspotSelect_; + std::unique_ptr> beamspotSelect_; /// needed to guarantee the selection order as defined by the order of /// ParameterSets in the _selection_ vector as defined in the config @@ -305,14 +306,14 @@ class TopSingleLeptonDQM : public DQMOneEDAnalyzer<> { /// the configuration of the selection for the SelectionStep class, /// MonitoringEnsemble keeps an instance of the MonitorEnsemble class to /// be filled _after_ each selection step - std::map > > selection_; - std::unique_ptr > MuonStep; - std::unique_ptr > ElectronStep; - std::unique_ptr > PvStep; - std::unique_ptr > METStep; - std::vector > > JetSteps; - std::vector > > CaloJetSteps; - std::vector > > PFJetSteps; + std::map>> selection_; + std::unique_ptr> MuonStep; + std::unique_ptr> ElectronStep; + std::unique_ptr> PvStep; + std::unique_ptr> METStep; + std::vector>> JetSteps; + std::vector>> CaloJetSteps; + std::vector>> PFJetSteps; std::vector sel_; edm::ParameterSet setup_; diff --git a/DQM/Physics/src/TopSingleLeptonDQM_miniAOD.cc b/DQM/Physics/src/TopSingleLeptonDQM_miniAOD.cc index f6ed698475165..70a71e00956cb 100644 --- a/DQM/Physics/src/TopSingleLeptonDQM_miniAOD.cc +++ b/DQM/Physics/src/TopSingleLeptonDQM_miniAOD.cc @@ -305,9 +305,9 @@ namespace TopSingleLepton_miniAOD { //hists_["jetBDiscVtx_"] = ibooker.book1D("JetBDiscVtx", // "Disc_{SSVHE}(Jet)", 35, -1., 6.); // multiplicity for combined secondary vertex - hists_["jetMultBDeepJetM_"] = ibooker.book1D("JetMultBDeepJetM", "N_{30}(DeepJetM)", 10, 0., 10.); + hists_["jetMultBPNetM_"] = ibooker.book1D("JetMultBPNetM", "N_{30}(PNetM)", 10, 0., 10.); // btag discriminator for combined secondary vertex - hists_["jetBDeepJet_"] = ibooker.book1D("JetDiscDeepJet", "BJet Disc_{DeepJet}(JET)", 100, -1., 2.); + hists_["jetBPNet_"] = ibooker.book1D("JetDiscPNet", "BJet Disc_{PNet}(JET)", 100, -1., 2.); // pt of the 1. leading jet (uncorrected) //hists_["jet1PtRaw_"] = ibooker.book1D("Jet1PtRaw", "pt_{Raw}(jet1)", 60, 0., 300.); // pt of the 2. leading jet (uncorrected) @@ -550,7 +550,7 @@ namespace TopSingleLepton_miniAOD { // loop jet collection std::vector correctedJets; std::vector JetTagValues; - unsigned int mult = 0, loosemult = 0, multBDeepJetM = 0; + unsigned int mult = 0, loosemult = 0, multBPNetM = 0; edm::Handle> jets; if (!event.getByToken(jets_, jets)) { @@ -579,15 +579,18 @@ namespace TopSingleLepton_miniAOD { correctedJets.push_back(monitorJet); ++loosemult; // determine jet multiplicity - double discriminator = monitorJet.bDiscriminator("pfDeepFlavourJetTags:probb") + - monitorJet.bDiscriminator("pfDeepFlavourJetTags:probbb") + - monitorJet.bDiscriminator("pfDeepFlavourJetTags:problepb"); + //ParticleNet discriminator - fill("jetBDeepJet_", discriminator); //hard coded discriminator and value right now. - if (discriminator > 0.2435) - ++multBDeepJetM; + double discriminator = + monitorJet.bDiscriminator("pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll") > 0 + ? monitorJet.bDiscriminator("pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll") + : -1; - // Fill a vector with Jet b-tag WP for later M3+1tag calculation: DeepJet + fill("jetBPNet_", discriminator); //hard coded discriminator and value right now. + if (discriminator > 0.1919) + ++multBPNetM; + + // Fill a vector with Jet b-tag WP for later M3+1tag calculation: PNet // tagger JetTagValues.push_back(discriminator); // } @@ -618,7 +621,7 @@ namespace TopSingleLepton_miniAOD { } fill("jetMult_", mult); fill("jetLooseMult_", loosemult); - fill("jetMultBDeepJetM_", multBDeepJetM); + fill("jetMultBPNetM_", multBPNetM); /* ------------------------------------------------------------ @@ -638,7 +641,7 @@ namespace TopSingleLepton_miniAOD { unsigned int idx = met_ - mets_.begin(); if (idx == 0) fill("slimmedMETs_", met->begin()->et()); - if (idx == 2) + if (idx == 1) fill("slimmedMETsPuppi_", met->begin()->et()); } } @@ -661,13 +664,13 @@ namespace TopSingleLepton_miniAOD { fill("massTop_", topMass); } - // Fill M3 with Btag (DeepJet Tight) requirement + // Fill M3 with Btag (PNet Tight) requirement // if (!includeBTag_) return; if (correctedJets.size() != JetTagValues.size()) return; - double btopMass = eventKinematics.massBTopQuark(correctedJets, JetTagValues, 0.2435); //hard coded DeepJet value + double btopMass = eventKinematics.massBTopQuark(correctedJets, JetTagValues, 0.2435); //hard coded PNet value if (btopMass >= 0) fill("massBTop_", btopMass); diff --git a/DQM/Physics/test/topDQM_harvesting_cfg.py b/DQM/Physics/test/topDQM_harvesting_cfg.py index 4413a09053c08..23ad2f5c33a7c 100644 --- a/DQM/Physics/test/topDQM_harvesting_cfg.py +++ b/DQM/Physics/test/topDQM_harvesting_cfg.py @@ -36,7 +36,7 @@ process.dqmSaver.saveByRun = cms.untracked.int32( -1) process.dqmSaver.saveAtJobEnd = cms.untracked.bool(True) process.dqmSaver.forceRunNumber = cms.untracked.int32( 1) -process.dqmSaver.workflow = cms.untracked.string('/TopVal/CMSSW_3_8_4/RECO') ## adapt apropriately +process.dqmSaver.workflow = cms.untracked.string('/TopVal/CMSSW_14_2_0_pre4/RECO') ## adapt apropriately ## path definitions diff --git a/DQM/Physics/test/topDQM_production_cfg.py b/DQM/Physics/test/topDQM_production_cfg.py index 8c45904a47945..5b578562b3ae7 100644 --- a/DQM/Physics/test/topDQM_production_cfg.py +++ b/DQM/Physics/test/topDQM_production_cfg.py @@ -14,14 +14,10 @@ #process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic_T15', '') process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic', '') - process.source = cms.Source("PoolSource", fileNames = cms.untracked.vstring()) process.source.skipEvents = cms.untracked.uint32(0) - -#process.source.fileNames = ['/store/relval/CMSSW_11_1_0_pre2/RelValTTbar_14TeV/GEN-SIM-RECO/110X_mcRun4_realistic_v2_2026D49noPU-v1/20000/02837764-A8F6-214F-AEE2-BCAEAAD7952A.root'] - -process.source.fileNames = ['/store/relval/CMSSW_11_1_0_pre2/RelValTTbar_14TeV/GEN-SIM-RECO/110X_mcRun3_2021_realistic_v6-v1/20000/A8E66994-05C0-104A-A0F3-4D393C7E30C8.root'] +process.source.fileNames = ['root://cmsxrootd.fnal.gov//store/relval/CMSSW_14_2_0_pre3/RelValTTbar_14TeV/GEN-SIM-RECO/PU_140X_mcRun3_2024_realistic_v26_STD_2024_PU-v1/2590000/3c568c90-b6ff-43be-9b24-8b4e9d862185.root'] ## number of events process.maxEvents = cms.untracked.PSet( @@ -79,10 +75,10 @@ #process.topSingleMuonMediumDQM + # process.EIsequence * process.jetCorrectorsSeq * process.dqmAk4PFCHSL1FastL2L3CorrectorChain * - process.topSingleMuonMediumDQM + + process.topSingleMuonMediumDQM + #process.topSingleElectronLooseDQM + #process.ak4PFCHSL1FastL2L3CorrectorChain * - process.topSingleElectronMediumDQM + + process.topSingleElectronMediumDQM + #process.ak4PFCHSL1FastL2L3CorrectorChain * process.singleTopMuonMediumDQM + #process.ak4PFCHSL1FastL2L3CorrectorChain * diff --git a/DQM/Physics/test/topDQM_production_miniAOD.py b/DQM/Physics/test/topDQM_production_miniAOD.py index 87052e4d24c1c..a2517d89a3946 100644 --- a/DQM/Physics/test/topDQM_production_miniAOD.py +++ b/DQM/Physics/test/topDQM_production_miniAOD.py @@ -15,10 +15,7 @@ process.source = cms.Source("PoolSource", fileNames = cms.untracked.vstring()) process.source.skipEvents = cms.untracked.uint32(0) -process.source.fileNames = ['/store/mc/Run3Winter24MiniAOD/TT_TuneCP5_13p6TeV_powheg-pythia8/MINIAODSIM/133X_mcRun3_2024_realistic_v8-v2/2540000/01f73297-b0d8-4458-a1c0-34a17148ca4a.root'] - -#process.source.fileNames = ['/store/relval/CMSSW_11_1_0_pre2/RelValTTbar_14TeV/MINIAODSIM/110X_mcRun3_2021_realistic_v6-v1/20000/F594311A-0167-1A41-9984-753E9AFB1279.root'] - +process.source.fileNames = ['/store/relval/CMSSW_14_2_0_pre3/RelValTTbar_14TeV/MINIAODSIM/PU_140X_mcRun3_2024_realistic_v26_STD_2024_PU-v1/2590000/a102b4b1-a67d-4b75-ae76-438f4dde5deb.root'] ## number of events process.maxEvents = cms.untracked.PSet( diff --git a/DQM/SiStripCommissioningAnalysis/src/CalibrationScanAlgorithm.cc b/DQM/SiStripCommissioningAnalysis/src/CalibrationScanAlgorithm.cc index f84cf2421fea4..ea4d4939cb510 100644 --- a/DQM/SiStripCommissioningAnalysis/src/CalibrationScanAlgorithm.cc +++ b/DQM/SiStripCommissioningAnalysis/src/CalibrationScanAlgorithm.cc @@ -425,7 +425,7 @@ void CalibrationScanAlgorithm::tuneIndependently(const int& iapv, imap = 0; // store for each isha value all rise time (changing isha) for (auto map_element : histo_) { - if (fabs(scanned_vfs_.at(imap) - cal_->vfs_[iapv]) < CalibrationScanAnalysis::VFSrange_ and + if (std::abs(scanned_vfs_.at(imap) - cal_->vfs_[iapv]) < CalibrationScanAnalysis::VFSrange_ and cal_->isValid(map_element.first)[iapv]) //around chosen VFS by \pm 20 riseTime_vs_isha[scanned_isha_.at(imap)].push_back(cal_->riseTime(map_element.first)[iapv]); if (name == "") { @@ -568,8 +568,8 @@ void CalibrationScanAlgorithm::fillTunedObservables(const int& apvid) { // find close by ISHA for (size_t i = 0; i < scanned_isha_.size(); i++) { - if (fabs(scanned_isha_.at(i) - cal_->bestISHA().at(apvid)) < distance_apv) { - distance_apv = fabs(scanned_isha_.at(i) - cal_->bestISHA().at(apvid)); + if (std::abs(scanned_isha_.at(i) - cal_->bestISHA().at(apvid)) < distance_apv) { + distance_apv = std::abs(scanned_isha_.at(i) - cal_->bestISHA().at(apvid)); cal_->tunedISHA_.at(apvid) = scanned_isha_.at(i); } } @@ -578,8 +578,8 @@ void CalibrationScanAlgorithm::fillTunedObservables(const int& apvid) { // find close by VFS for (size_t i = 0; i < scanned_vfs_.size(); i++) { - if (fabs(scanned_vfs_.at(i) - cal_->bestVFS().at(apvid)) < distance_apv) { - distance_apv = fabs(scanned_vfs_.at(i) - cal_->bestVFS().at(apvid)); + if (std::abs(scanned_vfs_.at(i) - cal_->bestVFS().at(apvid)) < distance_apv) { + distance_apv = std::abs(scanned_vfs_.at(i) - cal_->bestVFS().at(apvid)); cal_->tunedVFS_.at(apvid) = scanned_vfs_.at(i); } } diff --git a/DQM/SiStripMonitorClient/scripts/DeadROCCounter.py b/DQM/SiStripMonitorClient/scripts/DeadROCCounter.py index d43518becdf60..0e1001b236167 100755 --- a/DQM/SiStripMonitorClient/scripts/DeadROCCounter.py +++ b/DQM/SiStripMonitorClient/scripts/DeadROCCounter.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from ROOT import TFile, gStyle,gPad ,TObject, TCanvas, TH1, TH1F, TH2F, TLegend, TPaletteAxis, TList, TLine, TAttLine, TF1,TAxis import re import sys, string diff --git a/DQM/SiStripMonitorClient/scripts/DeadROCCounter_Phase1.py b/DQM/SiStripMonitorClient/scripts/DeadROCCounter_Phase1.py index 0d1c02561f4c1..31e5df50878cf 100755 --- a/DQM/SiStripMonitorClient/scripts/DeadROCCounter_Phase1.py +++ b/DQM/SiStripMonitorClient/scripts/DeadROCCounter_Phase1.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from ROOT import TFile, gStyle,gPad ,TObject, TCanvas, TH1, TH1F, TH2F, TLegend, TPaletteAxis, TList, TLine, TAttLine, TF1,TAxis import re import sys, string diff --git a/DQM/SiStripMonitorClient/scripts/DeadROC_duringRun.py b/DQM/SiStripMonitorClient/scripts/DeadROC_duringRun.py index 6bda8f2c2a0e0..3f89406b72acc 100755 --- a/DQM/SiStripMonitorClient/scripts/DeadROC_duringRun.py +++ b/DQM/SiStripMonitorClient/scripts/DeadROC_duringRun.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import string from ROOT import TFile diff --git a/DQM/SiStripMonitorClient/scripts/InefficientDoubleROC.py b/DQM/SiStripMonitorClient/scripts/InefficientDoubleROC.py index 22adff7dad1c6..b4691b645625d 100755 --- a/DQM/SiStripMonitorClient/scripts/InefficientDoubleROC.py +++ b/DQM/SiStripMonitorClient/scripts/InefficientDoubleROC.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import math from ROOT import gROOT, TClass, TFile diff --git a/DQM/SiStripMonitorClient/scripts/MergeOccDeadROC.py b/DQM/SiStripMonitorClient/scripts/MergeOccDeadROC.py index c42f347dcdf17..8a8558431f319 100755 --- a/DQM/SiStripMonitorClient/scripts/MergeOccDeadROC.py +++ b/DQM/SiStripMonitorClient/scripts/MergeOccDeadROC.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT from ROOT import TBufferFile, TH1F, TProfile, TProfile2D, TH2F, TFile, TH1D, TH2D import re diff --git a/DQM/SiStripMonitorClient/scripts/MergePCLDeadROC.py b/DQM/SiStripMonitorClient/scripts/MergePCLDeadROC.py index 4e9d8a5a5108f..110e9cb1294ae 100755 --- a/DQM/SiStripMonitorClient/scripts/MergePCLDeadROC.py +++ b/DQM/SiStripMonitorClient/scripts/MergePCLDeadROC.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT from ROOT import TBufferFile, TH1F, TProfile, TProfile2D, TH2F, TFile, TH1D, TH2D import re diff --git a/DQM/SiStripMonitorClient/scripts/MergePCLFedErr.py b/DQM/SiStripMonitorClient/scripts/MergePCLFedErr.py index 331e9b6634338..69caf5e23d1d0 100755 --- a/DQM/SiStripMonitorClient/scripts/MergePCLFedErr.py +++ b/DQM/SiStripMonitorClient/scripts/MergePCLFedErr.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT from ROOT import TBufferFile, TH1F, TProfile, TProfile2D, TH2F, TFile, TH1D, TH2D import re diff --git a/DQM/SiStripMonitorClient/scripts/PCLOthers.py b/DQM/SiStripMonitorClient/scripts/PCLOthers.py index 322d31e2daa75..0b1b812e49690 100755 --- a/DQM/SiStripMonitorClient/scripts/PCLOthers.py +++ b/DQM/SiStripMonitorClient/scripts/PCLOthers.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT from ROOT import TBufferFile, TH1F, TProfile, TProfile2D, TH2F, TFile, TH1D, TH2D import re diff --git a/DQM/SiStripMonitorClient/scripts/PhaseITreeProducer.py b/DQM/SiStripMonitorClient/scripts/PhaseITreeProducer.py index a1ed4718aa5b6..659c9da81761b 100644 --- a/DQM/SiStripMonitorClient/scripts/PhaseITreeProducer.py +++ b/DQM/SiStripMonitorClient/scripts/PhaseITreeProducer.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys from ROOT import TTree, TFile, gROOT, TClass from array import array diff --git a/DQM/SiStripMonitorClient/scripts/PixelMapPlotter.py b/DQM/SiStripMonitorClient/scripts/PixelMapPlotter.py index 6ffb2ec24d3c6..c23222d05567b 100755 --- a/DQM/SiStripMonitorClient/scripts/PixelMapPlotter.py +++ b/DQM/SiStripMonitorClient/scripts/PixelMapPlotter.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT import sys import getopt diff --git a/DQM/SiStripMonitorClient/scripts/TH2PolyOfflineMaps.py b/DQM/SiStripMonitorClient/scripts/TH2PolyOfflineMaps.py index 770dca30e0bc7..5cfd1faca209a 100644 --- a/DQM/SiStripMonitorClient/scripts/TH2PolyOfflineMaps.py +++ b/DQM/SiStripMonitorClient/scripts/TH2PolyOfflineMaps.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import os from ROOT import gROOT, gStyle, gPad, TCanvas, TClass, TGraph, TFile, TArrow, TLatex, TH2Poly, kBlack diff --git a/DQM/SiStripMonitorClient/scripts/TkMap_script_phase1.py b/DQM/SiStripMonitorClient/scripts/TkMap_script_phase1.py index e3b72c956794a..7635bb0be6e42 100755 --- a/DQM/SiStripMonitorClient/scripts/TkMap_script_phase1.py +++ b/DQM/SiStripMonitorClient/scripts/TkMap_script_phase1.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import os from subprocess import call diff --git a/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile.py b/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile.py index 1588ec0e7ecd5..0a6ebdebbf4c6 100755 --- a/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile.py +++ b/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from math import * from ROOT import TFile, TObject, TTree from array import array diff --git a/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile_V2.py b/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile_V2.py index f40ee6b3f8eba..c6754e1f67f67 100755 --- a/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile_V2.py +++ b/DQM/SiStripMonitorClient/scripts/getGTfromDQMFile_V2.py @@ -5,7 +5,6 @@ from ROOT import gDirectory import sys import os -from __future__ import print_function def getGTfromDQMFile(DQMfile, RunNumber, globalTagVar): if not os.path.isfile(DQMfile):# print "Error: file", DQMfile, "not found, exit" diff --git a/DQM/SiStripMonitorClient/scripts/getRunInfo.py b/DQM/SiStripMonitorClient/scripts/getRunInfo.py index 2dd9bf3d86451..4f3b061d5ab74 100755 --- a/DQM/SiStripMonitorClient/scripts/getRunInfo.py +++ b/DQM/SiStripMonitorClient/scripts/getRunInfo.py @@ -10,7 +10,6 @@ # Questions and comments to: volker.adler@cern.ch -from __future__ import print_function import sys import os import string diff --git a/DQM/SiStripMonitorClient/scripts/submitDQMOfflineCAF.py b/DQM/SiStripMonitorClient/scripts/submitDQMOfflineCAF.py index c7b138308ff55..a54ebe9dab201 100755 --- a/DQM/SiStripMonitorClient/scripts/submitDQMOfflineCAF.py +++ b/DQM/SiStripMonitorClient/scripts/submitDQMOfflineCAF.py @@ -10,7 +10,6 @@ # Questions and comments to: volker.adler@cern.ch -from __future__ import print_function import sys import os import os.path diff --git a/DQM/SiStripMonitorHardware/test/makeInputlist.py b/DQM/SiStripMonitorHardware/test/makeInputlist.py index 3ff80af29cbe3..1101281926bd0 100644 --- a/DQM/SiStripMonitorHardware/test/makeInputlist.py +++ b/DQM/SiStripMonitorHardware/test/makeInputlist.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os,sys, glob spyInput = '/eos/cms/store/group/dpg_tracker_strip/tracker/Online/store/streamer/SiStripSpy/Commissioning11/' diff --git a/DQM/SiStripMonitorSummary/scripts/iov_list_tag.py b/DQM/SiStripMonitorSummary/scripts/iov_list_tag.py index 024296bbc7a56..10fad5998aef8 100755 --- a/DQM/SiStripMonitorSummary/scripts/iov_list_tag.py +++ b/DQM/SiStripMonitorSummary/scripts/iov_list_tag.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from optparse import OptionParser, Option, OptionValueError import DLFCN import sys diff --git a/DQM/TrackerCommon/bin/getRunRegistry.py b/DQM/TrackerCommon/bin/getRunRegistry.py index e211eb870b957..1fcc1bf11fdc6 100755 --- a/DQM/TrackerCommon/bin/getRunRegistry.py +++ b/DQM/TrackerCommon/bin/getRunRegistry.py @@ -2,7 +2,6 @@ # For documentation of the RR XML-RPC handler, look into https://twiki.cern.ch/twiki//bin/view/CMS/DqmRrApi -from __future__ import print_function import sys import xmlrpclib diff --git a/DQM/TrackerCommon/test/DQMXMLFile_SiPixelDQM_create_cfg.py b/DQM/TrackerCommon/test/DQMXMLFile_SiPixelDQM_create_cfg.py index 861d2164dc1ac..8e55d7b2727a3 100644 --- a/DQM/TrackerCommon/test/DQMXMLFile_SiPixelDQM_create_cfg.py +++ b/DQM/TrackerCommon/test/DQMXMLFile_SiPixelDQM_create_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/DQM/TrackerCommon/test/DQMXMLFile_SiStripDQM_create_cfg.py b/DQM/TrackerCommon/test/DQMXMLFile_SiStripDQM_create_cfg.py index 67f1b5da79c6a..91e70be55c929 100644 --- a/DQM/TrackerCommon/test/DQMXMLFile_SiStripDQM_create_cfg.py +++ b/DQM/TrackerCommon/test/DQMXMLFile_SiStripDQM_create_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/DQM/TrackerRemapper/test/PrintTkMap.py b/DQM/TrackerRemapper/test/PrintTkMap.py index a504a159786ae..a4c35fa8070c6 100644 --- a/DQM/TrackerRemapper/test/PrintTkMap.py +++ b/DQM/TrackerRemapper/test/PrintTkMap.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import os from ROOT import gROOT, TArrow, TCanvas, TGraph, TH2Poly, gPad, TLatex diff --git a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py index faef9e465b492..aaeb59bb3fe03 100644 --- a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py +++ b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py @@ -395,6 +395,11 @@ def _copyIfExists(mod, pset, name): from Configuration.ProcessModifiers.seedingDeepCore_cff import seedingDeepCore seedingDeepCore.toReplaceWith(TrackSeedMonSequence,_seedingDeepCore_TrackSeedMonSequence) +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toModify(locals()["TrackSeedMonhighPtTripletStep"], + SeedProducer = "lstPixelSeedInputProducer" +) + TrackingDQMSourceTier0 += TrackSeedMonSequence from DQM.TrackingMonitorSource.shortTrackResolution_cff import * diff --git a/DQMOffline/Alignment/test/alcarecoTester.py b/DQMOffline/Alignment/test/alcarecoTester.py index d617df0300135..2388e3870e90d 100755 --- a/DQMOffline/Alignment/test/alcarecoTester.py +++ b/DQMOffline/Alignment/test/alcarecoTester.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import sys import configparser as ConfigParser diff --git a/DQMOffline/CalibCalo/plugins/DQMHcalPhiSymAlCaReco.cc b/DQMOffline/CalibCalo/plugins/DQMHcalPhiSymAlCaReco.cc index 50fb72e341b83..8771705683234 100644 --- a/DQMOffline/CalibCalo/plugins/DQMHcalPhiSymAlCaReco.cc +++ b/DQMOffline/CalibCalo/plugins/DQMHcalPhiSymAlCaReco.cc @@ -456,8 +456,8 @@ void DQMHcalPhiSymAlCaReco::analyze(const edm::Event &iEvent, const edm::EventSe hiDistrNoisePl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy()); hiDistrNoise2Pl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } else { - hiDistrNoiseMin2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy()); - hiDistrNoise2Min2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); + hiDistrNoiseMin2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy()); + hiDistrNoise2Min2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } } } @@ -473,8 +473,8 @@ void DQMHcalPhiSymAlCaReco::analyze(const edm::Event &iEvent, const edm::EventSe hiDistrMBPl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy()); hiDistrMB2Pl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } else { - hiDistrMBMin2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy()); - hiDistrMB2Min2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); + hiDistrMBMin2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy()); + hiDistrMB2Min2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } } } @@ -492,8 +492,8 @@ void DQMHcalPhiSymAlCaReco::analyze(const edm::Event &iEvent, const edm::EventSe hiDistrNoisePl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy()); hiDistrNoise2Pl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } else { - hiDistrNoiseMin2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy()); - hiDistrNoise2Min2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); + hiDistrNoiseMin2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy()); + hiDistrNoise2Min2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } } } @@ -509,8 +509,8 @@ void DQMHcalPhiSymAlCaReco::analyze(const edm::Event &iEvent, const edm::EventSe hiDistrMBPl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy()); hiDistrMB2Pl2D_->Fill(hid.ieta(), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } else { - hiDistrMBMin2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy()); - hiDistrMB2Min2D_->Fill(fabs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); + hiDistrMBMin2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy()); + hiDistrMB2Min2D_->Fill(std::abs(hid.ieta()), hid.iphi(), hbheItr->energy() * hbheItr->energy()); } } } diff --git a/DQMOffline/CalibCalo/test/dohistos.py b/DQMOffline/CalibCalo/test/dohistos.py index 795fcfdf7b095..379ee2a1f8168 100755 --- a/DQMOffline/CalibCalo/test/dohistos.py +++ b/DQMOffline/CalibCalo/test/dohistos.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import sys import errno diff --git a/DQMOffline/CalibTracker/test/testSuite/CheckSiStripBadCompoentnsDQMService.py b/DQMOffline/CalibTracker/test/testSuite/CheckSiStripBadCompoentnsDQMService.py index cdc8de42175db..f9985369d3a83 100755 --- a/DQMOffline/CalibTracker/test/testSuite/CheckSiStripBadCompoentnsDQMService.py +++ b/DQMOffline/CalibTracker/test/testSuite/CheckSiStripBadCompoentnsDQMService.py @@ -10,7 +10,6 @@ # The output will be all the matching lines and a final count of them # The check is positive if the total number of lines matches the total number of detids in the log -from __future__ import print_function import sys fileIN = open(sys.argv[1], "r") diff --git a/DQMOffline/Configuration/scripts/cmsswConfigtrace.py b/DQMOffline/Configuration/scripts/cmsswConfigtrace.py index e44a58244daab..f62a56e2e7621 100755 --- a/DQMOffline/Configuration/scripts/cmsswConfigtrace.py +++ b/DQMOffline/Configuration/scripts/cmsswConfigtrace.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import re import sys diff --git a/DQMOffline/Configuration/scripts/cmsswFiletrace.py b/DQMOffline/Configuration/scripts/cmsswFiletrace.py index 91889c9ad6511..d85c2cad361c1 100755 --- a/DQMOffline/Configuration/scripts/cmsswFiletrace.py +++ b/DQMOffline/Configuration/scripts/cmsswFiletrace.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import re import sys diff --git a/DQMOffline/Configuration/test/BuildFile.xml b/DQMOffline/Configuration/test/BuildFile.xml index a68710fc8595b..411dd57cdf3c8 100644 --- a/DQMOffline/Configuration/test/BuildFile.xml +++ b/DQMOffline/Configuration/test/BuildFile.xml @@ -4,12 +4,12 @@ - + - + diff --git a/DQMOffline/EGamma/python/electronDataDiscovery.py b/DQMOffline/EGamma/python/electronDataDiscovery.py index 642399f69db0a..4ceb6d517167f 100755 --- a/DQMOffline/EGamma/python/electronDataDiscovery.py +++ b/DQMOffline/EGamma/python/electronDataDiscovery.py @@ -1,4 +1,3 @@ -from __future__ import print_function # =================================================================== # So to get the list of input files. One must call : diff --git a/DQMOffline/EGamma/scripts/electronCompare.py b/DQMOffline/EGamma/scripts/electronCompare.py index 17f8994b6e7c9..9ca2b784da3a5 100755 --- a/DQMOffline/EGamma/scripts/electronCompare.py +++ b/DQMOffline/EGamma/scripts/electronCompare.py @@ -21,7 +21,6 @@ #========================================================================= -from __future__ import print_function import os, sys, datetime, shutil, optparse diff --git a/DQMOffline/EGamma/scripts/electronDataDiscovery.py b/DQMOffline/EGamma/scripts/electronDataDiscovery.py index 128662d237128..9a89e6684650d 100755 --- a/DQMOffline/EGamma/scripts/electronDataDiscovery.py +++ b/DQMOffline/EGamma/scripts/electronDataDiscovery.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os, sys if len(sys.argv) > 1: os.environ['DD_SOURCE'] = sys.argv[1] diff --git a/DQMOffline/EGamma/scripts/electronStore.py b/DQMOffline/EGamma/scripts/electronStore.py index 7fce0af1e0c06..80b51a8de2b94 100755 --- a/DQMOffline/EGamma/scripts/electronStore.py +++ b/DQMOffline/EGamma/scripts/electronStore.py @@ -23,7 +23,6 @@ #========================================================================= -from __future__ import print_function import os, sys, datetime, shutil, optparse diff --git a/DQMOffline/EGamma/test/dbs_discovery.py b/DQMOffline/EGamma/test/dbs_discovery.py index bf13da4b40bb5..c17db6aabd017 100755 --- a/DQMOffline/EGamma/test/dbs_discovery.py +++ b/DQMOffline/EGamma/test/dbs_discovery.py @@ -22,7 +22,6 @@ #=================================================================== -from __future__ import print_function import httplib, urllib, urllib2, types, string, os, sys if 'DBS_RELEASE' not in os.environ: diff --git a/DQMOffline/JetMET/test/DDSearchCLI.py b/DQMOffline/JetMET/test/DDSearchCLI.py index 0f90aab2bb2a6..09a878f418d93 100755 --- a/DQMOffline/JetMET/test/DDSearchCLI.py +++ b/DQMOffline/JetMET/test/DDSearchCLI.py @@ -7,7 +7,6 @@ """ DBS data discovery command line interface """ -from __future__ import print_function import httplib, urllib, urllib2, types, string, os, sys from optparse import OptionParser diff --git a/DQMOffline/JetMET/test/publish/make_html_output.py b/DQMOffline/JetMET/test/publish/make_html_output.py index ec3772d456f94..2890b08443c17 100755 --- a/DQMOffline/JetMET/test/publish/make_html_output.py +++ b/DQMOffline/JetMET/test/publish/make_html_output.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT import sys,os,string,errno,shutil import code diff --git a/DQMOffline/JetMET/test/run_PromptAna33X.py b/DQMOffline/JetMET/test/run_PromptAna33X.py index 8a9bf6e049921..24156bddfbd2a 100644 --- a/DQMOffline/JetMET/test/run_PromptAna33X.py +++ b/DQMOffline/JetMET/test/run_PromptAna33X.py @@ -1,4 +1,3 @@ -from __future__ import print_function ##----- # Set job-specific inputs based on shell # the following enviromental variables diff --git a/DQMOffline/JetMET/test/run_PromptAnaHI.py b/DQMOffline/JetMET/test/run_PromptAnaHI.py index febf5563977d6..2f793367191aa 100644 --- a/DQMOffline/JetMET/test/run_PromptAnaHI.py +++ b/DQMOffline/JetMET/test/run_PromptAnaHI.py @@ -1,4 +1,3 @@ -from __future__ import print_function ##----- # Set job-specific inputs based on shell # the following enviromental variables diff --git a/DQMOffline/JetMET/test/run_PromptAna_CAF.py b/DQMOffline/JetMET/test/run_PromptAna_CAF.py index 7846b723d6244..7ad96c1fae482 100644 --- a/DQMOffline/JetMET/test/run_PromptAna_CAF.py +++ b/DQMOffline/JetMET/test/run_PromptAna_CAF.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/DQMOffline/JetMET/test/run_PromptAna_CAF33x.py b/DQMOffline/JetMET/test/run_PromptAna_CAF33x.py index 0ed3ed78701ba..982c2299a816e 100644 --- a/DQMOffline/JetMET/test/run_PromptAna_CAF33x.py +++ b/DQMOffline/JetMET/test/run_PromptAna_CAF33x.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/DQMOffline/JetMET/test/run_PromptAna_CRT.py b/DQMOffline/JetMET/test/run_PromptAna_CRT.py index f0b54777a39df..f98481694245d 100644 --- a/DQMOffline/JetMET/test/run_PromptAna_CRT.py +++ b/DQMOffline/JetMET/test/run_PromptAna_CRT.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/DQMOffline/Trigger/python/TrackingMonitoring_cff.py b/DQMOffline/Trigger/python/TrackingMonitoring_cff.py index eb779d8bc27dc..e3f67eb16a6fd 100644 --- a/DQMOffline/Trigger/python/TrackingMonitoring_cff.py +++ b/DQMOffline/Trigger/python/TrackingMonitoring_cff.py @@ -118,6 +118,20 @@ TrackProducer = 'hltGeneralTracks', allTrackProducer = 'hltGeneralTracks') +iterInitialStepMonitoringHLT = iterHLTTracksMonitoringHLT.clone( + primaryVertex = 'hltPhase2PixelVertices', + FolderName = 'HLT/Tracking/hltInitialStepTrackSelectionHighPurity', + TrackProducer = 'hltInitialStepTrackSelectionHighPurity', + allTrackProducer = 'hltInitialStepTrackSelectionHighPurity', +) + +iterHighPtTripletsMonitoringHLT = iterHLTTracksMonitoringHLT.clone( + primaryVertex = 'hltPhase2PixelVertices', + FolderName = 'HLT/Tracking/hltHighPtTripletStepTrackSelectionHighPurity', + TrackProducer = 'hltHighPtTripletStepTrackSelectionHighPurity', + allTrackProducer = 'hltHighPtTripletStepTrackSelectionHighPurity', +) + iter3TracksMonitoringHLT = trackingMonHLT.clone( FolderName = 'HLT/Tracking/iter3Merged', TrackProducer = 'hltIter3Merged', @@ -249,7 +263,7 @@ from Configuration.Eras.Modifier_run3_common_cff import run3_common run3_common.toReplaceWith(trackingMonitorHLT, cms.Sequence(pixelTracksMonitoringHLT + iterHLTTracksMonitoringHLT + doubletRecoveryHPTracksMonitoringHLT )) # + iter0HPTracksMonitoringHLT )) -phase2_tracker.toReplaceWith(trackingMonitorHLT, cms.Sequence(pixelTracksMonitoringHLT + iterHLTTracksMonitoringHLT)) +phase2_tracker.toReplaceWith(trackingMonitorHLT, cms.Sequence(pixelTracksMonitoringHLT + iterHLTTracksMonitoringHLT + iterInitialStepMonitoringHLT + iterHighPtTripletsMonitoringHLT)) run3_common.toReplaceWith(trackingMonitorHLTall, cms.Sequence(pixelTracksMonitoringHLT + iter0TracksMonitoringHLT + iterHLTTracksMonitoringHLT)) run3_common.toReplaceWith(egmTrackingMonitorHLT, cms.Sequence(gsfTracksMonitoringHLT)) diff --git a/DQMOffline/Trigger/test/testTriggerBTV.py b/DQMOffline/Trigger/test/testTriggerBTV.py index 8a621f2e2f8ce..9ca02b447d05e 100644 --- a/DQMOffline/Trigger/test/testTriggerBTV.py +++ b/DQMOffline/Trigger/test/testTriggerBTV.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("DQM") diff --git a/DQMOffline/Trigger/test/triggerSequenceTest_cfg.py b/DQMOffline/Trigger/test/triggerSequenceTest_cfg.py index 8517a4c4adbca..9da5e230c6e26 100644 --- a/DQMOffline/Trigger/test/triggerSequenceTest_cfg.py +++ b/DQMOffline/Trigger/test/triggerSequenceTest_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("DQM") diff --git a/DQMServices/Components/python/ROOTData.py b/DQMServices/Components/python/ROOTData.py index b857e5bf0e5e6..d4922297c9a85 100644 --- a/DQMServices/Components/python/ROOTData.py +++ b/DQMServices/Components/python/ROOTData.py @@ -1,4 +1,3 @@ -from __future__ import print_function from ROOT import gDirectory, TBufferFile, TClass from array import array diff --git a/DQMServices/Components/scripts/dqmdumpme.py b/DQMServices/Components/scripts/dqmdumpme.py index cf001965024ba..e56768996f16e 100755 --- a/DQMServices/Components/scripts/dqmdumpme.py +++ b/DQMServices/Components/scripts/dqmdumpme.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import numpy import uproot diff --git a/DQMServices/Components/scripts/dqmiodatasetharvest.py b/DQMServices/Components/scripts/dqmiodatasetharvest.py index 8cc0e10edc750..181b9a84d9ae8 100755 --- a/DQMServices/Components/scripts/dqmiodatasetharvest.py +++ b/DQMServices/Components/scripts/dqmiodatasetharvest.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import re import json import ROOT diff --git a/DQMServices/Components/scripts/dqmiodumpindices.py b/DQMServices/Components/scripts/dqmiodumpindices.py index 6c89be8534981..97707f76972a1 100755 --- a/DQMServices/Components/scripts/dqmiodumpindices.py +++ b/DQMServices/Components/scripts/dqmiodumpindices.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import uproot import argparse diff --git a/DQMServices/Components/scripts/dqmiodumpmetadata.py b/DQMServices/Components/scripts/dqmiodumpmetadata.py index c02d6577e030e..ee62d68a37f24 100755 --- a/DQMServices/Components/scripts/dqmiodumpmetadata.py +++ b/DQMServices/Components/scripts/dqmiodumpmetadata.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import uproot import argparse diff --git a/DQMServices/Components/scripts/dqmiolistmes.py b/DQMServices/Components/scripts/dqmiolistmes.py index ad59532b01b14..1b7ca32578ce5 100755 --- a/DQMServices/Components/scripts/dqmiolistmes.py +++ b/DQMServices/Components/scripts/dqmiolistmes.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import uproot import argparse diff --git a/DQMServices/Components/scripts/dqmiolumiharvest.py b/DQMServices/Components/scripts/dqmiolumiharvest.py index 3b331d2ad8f0a..fe85d079830d4 100755 --- a/DQMServices/Components/scripts/dqmiolumiharvest.py +++ b/DQMServices/Components/scripts/dqmiolumiharvest.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import json import ROOT diff --git a/DQMServices/Components/scripts/root2sqlite.py b/DQMServices/Components/scripts/root2sqlite.py index 73486d5d360c2..0fd626f4618ca 100755 --- a/DQMServices/Components/scripts/root2sqlite.py +++ b/DQMServices/Components/scripts/root2sqlite.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import re import json import ROOT diff --git a/DQMServices/Components/test/test_fastHaddMerge.py b/DQMServices/Components/test/test_fastHaddMerge.py index c57bca239c12d..e4f5f8ed176ab 100644 --- a/DQMServices/Components/test/test_fastHaddMerge.py +++ b/DQMServices/Components/test/test_fastHaddMerge.py @@ -5,7 +5,6 @@ Produce a custom number of identical ROOT files and check that their final merged output matches what is expected. """ -from __future__ import print_function from builtins import range from optparse import OptionParser diff --git a/DQMServices/FileIO/python/DQM.py b/DQMServices/FileIO/python/DQM.py index c4af24b897c37..1958f99b7566a 100644 --- a/DQMServices/FileIO/python/DQM.py +++ b/DQMServices/FileIO/python/DQM.py @@ -1,6 +1,5 @@ #!/bin/env python3 -from __future__ import print_function from builtins import range import ROOT as R import os, re diff --git a/DQMServices/FileIO/scripts/compareDQMOutput.py b/DQMServices/FileIO/scripts/compareDQMOutput.py index 327cc852908f5..53d326ca042a9 100755 --- a/DQMServices/FileIO/scripts/compareDQMOutput.py +++ b/DQMServices/FileIO/scripts/compareDQMOutput.py @@ -70,7 +70,7 @@ def get_file_pairs(base_dir, pr_dir): # Find intersection return [value for value in base_files if value in pr_files] -def upload_to_gui(output_dir, num_procs): +def upload_to_gui(output_dir, num_procs, dqmgui_url): base_files = glob.glob(os.path.join(output_dir, 'base/*.root')) pr_files = glob.glob(os.path.join(output_dir, 'pr/*.root')) @@ -80,14 +80,14 @@ def upload_to_gui(output_dir, num_procs): print(files) for _ in range(min(num_procs, len(files))): - thread = Thread(target=upload, args=(files,)) + thread = Thread(target=upload, args=(files, dqmgui_url)) thread.start() -def upload(files): +def upload(files, dqmgui_url): while files: try: file = files.pop() - command = ['visDQMUpload.py', 'https://cmsweb.cern.ch/dqm/dev', file] + command = ['visDQMUpload.py', dqmgui_url, file] print('Uploading output:') print(' '.join(command)) @@ -98,7 +98,7 @@ def upload(files): # started the loop. In this case this exception can be safely ignored. print('Exception uploading a file: %s' % ex) -def generate_summary_html(output_dir, pr_list, summary_dir): +def generate_summary_html(output_dir, pr_list, summary_dir, dqmgui_url): template_file_path = os.path.join(os.getenv('CMSSW_BASE'), 'src', 'DQMServices', 'FileIO', 'scripts', 'dqm-histo-comparison-summary-template.html') if not os.path.isfile(template_file_path): template_file_path = os.path.join(os.getenv('CMSSW_RELEASE_BASE'), 'src', 'DQMServices', 'FileIO', 'scripts', 'dqm-histo-comparison-summary-template.html') @@ -117,12 +117,12 @@ def generate_summary_html(output_dir, pr_list, summary_dir): overlay_count = baseline_count # Make urls - base_url = 'https://cmsweb.cern.ch/dqm/dev/start?runnr=%s;dataset%%3D%s;sampletype%%3Doffline_relval;workspace%%3DEverything;' % (comp['run_nr'], comp['base_dataset']) - pr_url = 'https://cmsweb.cern.ch/dqm/dev/start?runnr=%s;dataset%%3D%s;sampletype%%3Doffline_relval;workspace%%3DEverything;' % (comp['run_nr'], comp['pr_dataset']) - overlay_url = 'https://cmsweb.cern.ch/dqm/dev/start?runnr=%s;dataset%%3D%s;referenceshow%%3Dall;referencenorm=False;referenceobj1%%3Dother::%s::;sampletype%%3Doffline_relval;workspace%%3DEverything;' \ - % (comp['run_nr'], comp['pr_dataset'], comp['base_dataset']) - base_raw_url = 'https://cmsweb.cern.ch/dqm/dev/jsroot/index.htm?file=https://cmsweb.cern.ch/dqm/dev/data/browse/%s' % comp['base_file_path_in_gui'] - pr_raw_url = 'https://cmsweb.cern.ch/dqm/dev/jsroot/index.htm?file=https://cmsweb.cern.ch/dqm/dev/data/browse/%s' % comp['pr_file_path_in_gui'] + base_url = '%s/start?runnr=%s;dataset%%3D%s;sampletype%%3Doffline_relval;workspace%%3DEverything;' % (dqmgui_url, comp['run_nr'], comp['base_dataset']) + pr_url = '%s/start?runnr=%s;dataset%%3D%s;sampletype%%3Doffline_relval;workspace%%3DEverything;' % (dqmgui_url, comp['run_nr'], comp['pr_dataset']) + overlay_url = '%s/start?runnr=%s;dataset%%3D%s;referenceshow%%3Dall;referencenorm=False;referenceobj1%%3Dother::%s::;sampletype%%3Doffline_relval;workspace%%3DEverything;' \ + % (dqmgui_url, comp['run_nr'], comp['pr_dataset'], comp['base_dataset']) + base_raw_url = '%s/jsroot/index.htm?file=%s/data/browse/%s' % (dqmgui_url, dqmgui_url, comp['base_file_path_in_gui']) + pr_raw_url = '%s/jsroot/index.htm?file=%s/data/browse/%s' % (dqmgui_url, dqmgui_url, comp['pr_file_path_in_gui']) table_items += ' \n' table_items += ' %s baseline GUI (%s)\n' % (base_url, comp['workflow'], baseline_count) @@ -161,6 +161,7 @@ def generate_summary_html(output_dir, pr_list, summary_dir): parser.add_argument('-r', '--release-format', help='Release format in this format: CMSSW_10_5_X_2019-02-17-0000') parser.add_argument('-s', '--summary-dir', help='Directory where summary with all links will be saved', default='') parser.add_argument('-l', '--pr-list', help='A list of PRs participating in the comparison', default='') + parser.add_argument('-u', '--dqmgui-url', help='DQMGUI url to upload to', default='https://cmsweb.cern.ch/dqm/dev', required=False) args = parser.parse_args() # Get the number of the PR which triggered the comparison @@ -179,5 +180,5 @@ def generate_summary_html(output_dir, pr_list, summary_dir): os._exit(1) collect_and_compare_files(args.base_dir, args.pr_dir, args.output_dir, args.nprocs, pr_number, args.test_number, release_format) - upload_to_gui(args.output_dir, args.nprocs) - generate_summary_html(args.output_dir, args.pr_list, args.summary_dir) + upload_to_gui(args.output_dir, args.nprocs, args.dqmgui_url) + generate_summary_html(args.output_dir, args.pr_list, args.summary_dir, args.dqmgui_url) diff --git a/DQMServices/FileIO/scripts/compareHistograms.py b/DQMServices/FileIO/scripts/compareHistograms.py index 070050162bb54..6def3c50d7755 100755 --- a/DQMServices/FileIO/scripts/compareHistograms.py +++ b/DQMServices/FileIO/scripts/compareHistograms.py @@ -1,6 +1,5 @@ #!/bin/env python3 -from __future__ import print_function import ROOT ROOT.PyConfig.IgnoreCommandLineOptions = True import os diff --git a/DQMServices/FileIO/scripts/dqmMemoryStats.py b/DQMServices/FileIO/scripts/dqmMemoryStats.py index e64cf36847ad2..7bbefb83465c8 100755 --- a/DQMServices/FileIO/scripts/dqmMemoryStats.py +++ b/DQMServices/FileIO/scripts/dqmMemoryStats.py @@ -1,6 +1,5 @@ #!/bin/env python3 -from __future__ import print_function import sys from DQMServices.FileIO.DQM import DQMReader diff --git a/DQMServices/FileIO/scripts/visDQMUpload.py b/DQMServices/FileIO/scripts/visDQMUpload.py index a851d150cfb7f..5adfa2ee991b6 100755 --- a/DQMServices/FileIO/scripts/visDQMUpload.py +++ b/DQMServices/FileIO/scripts/visDQMUpload.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import os import re diff --git a/DQMServices/FwkIO/scripts/DQMIO2histo.py b/DQMServices/FwkIO/scripts/DQMIO2histo.py index 253fa3caac43e..a8fb233022a21 100755 --- a/DQMServices/FwkIO/scripts/DQMIO2histo.py +++ b/DQMServices/FwkIO/scripts/DQMIO2histo.py @@ -7,7 +7,6 @@ Thanks for Marco Rovere for giving example script/class needed to browse DQM I/O formatted input. """ -from __future__ import print_function from builtins import range import ROOT as R diff --git a/DQMServices/FwkIO/test/check_guid_file1.py b/DQMServices/FwkIO/test/check_guid_file1.py index e43080c870eca..5abc03d8c1427 100644 --- a/DQMServices/FwkIO/test/check_guid_file1.py +++ b/DQMServices/FwkIO/test/check_guid_file1.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import sys import ROOT diff --git a/DQMServices/FwkIO/test/check_lumi_only_file.py b/DQMServices/FwkIO/test/check_lumi_only_file.py index 8dff09c8a46de..e9595e7d0b982 100644 --- a/DQMServices/FwkIO/test/check_lumi_only_file.py +++ b/DQMServices/FwkIO/test/check_lumi_only_file.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/FwkIO/test/check_merged_file1_file2.py b/DQMServices/FwkIO/test/check_merged_file1_file2.py index 3ac54143eb6da..4c91826d434f5 100644 --- a/DQMServices/FwkIO/test/check_merged_file1_file2.py +++ b/DQMServices/FwkIO/test/check_merged_file1_file2.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_cfg.py b/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_cfg.py index 0ec5ca6a77804..595f710d9c8bf 100644 --- a/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_cfg.py +++ b/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_copy_cfg.py b/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_copy_cfg.py index e4dafcdb6b6ac..544e9625a7621 100644 --- a/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_copy_cfg.py +++ b/DQMServices/FwkIO/test/check_merged_file1_file3_file2_filterOnRun1_copy_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/FwkIO/test/check_multi_types.py b/DQMServices/FwkIO/test/check_multi_types.py index 27881a08d3aa5..8946138eb3973 100644 --- a/DQMServices/FwkIO/test/check_multi_types.py +++ b/DQMServices/FwkIO/test/check_multi_types.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/FwkIO/test/check_run_lumi_file.py b/DQMServices/FwkIO/test/check_run_lumi_file.py index 83e6d6767c086..9277d71b7f246 100644 --- a/DQMServices/FwkIO/test/check_run_lumi_file.py +++ b/DQMServices/FwkIO/test/check_run_lumi_file.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/FwkIO/test/check_run_only_file.py b/DQMServices/FwkIO/test/check_run_only_file.py index 7da1dc3ed51f4..4905d58e7cb85 100644 --- a/DQMServices/FwkIO/test/check_run_only_file.py +++ b/DQMServices/FwkIO/test/check_run_only_file.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT as R import sys diff --git a/DQMServices/StreamerIO/scripts/personalPlayback.py b/DQMServices/StreamerIO/scripts/personalPlayback.py index ed622153fff38..526933f08afde 100755 --- a/DQMServices/StreamerIO/scripts/personalPlayback.py +++ b/DQMServices/StreamerIO/scripts/personalPlayback.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import sys import argparse diff --git a/DQMServices/StreamerIO/test/DQMStreamerOutputRepackerTest_cfg.py b/DQMServices/StreamerIO/test/DQMStreamerOutputRepackerTest_cfg.py index 757a3e00fd513..67f9deba48f0c 100644 --- a/DQMServices/StreamerIO/test/DQMStreamerOutputRepackerTest_cfg.py +++ b/DQMServices/StreamerIO/test/DQMStreamerOutputRepackerTest_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys diff --git a/DataFormats/CaloRecHit/interface/CaloRecHit.h b/DataFormats/CaloRecHit/interface/CaloRecHit.h index e861ed09f2bc3..5a6c2e6aecf53 100644 --- a/DataFormats/CaloRecHit/interface/CaloRecHit.h +++ b/DataFormats/CaloRecHit/interface/CaloRecHit.h @@ -4,17 +4,15 @@ #include "DataFormats/DetId/interface/DetId.h" #include -#ifdef __CUDA_ARCH__ +#if defined(__CUDA_ARCH__) or defined(__HIP_DEVICE_COMPILE__) __constant__ -#else -constexpr #endif - uint32_t calo_rechit_masks[] = {0x00000000u, 0x00000001u, 0x00000003u, 0x00000007u, 0x0000000fu, 0x0000001fu, - 0x0000003fu, 0x0000007fu, 0x000000ffu, 0x000001ffu, 0x000003ffu, 0x000007ffu, - 0x00000fffu, 0x00001fffu, 0x00003fffu, 0x00007fffu, 0x0000ffffu, 0x0001ffffu, - 0x0003ffffu, 0x0007ffffu, 0x000fffffu, 0x001fffffu, 0x003fffffu, 0x007fffffu, - 0x00ffffffu, 0x01ffffffu, 0x03ffffffu, 0x07ffffffu, 0x0fffffffu, 0x1fffffffu, - 0x3fffffffu, 0x7fffffffu, 0xffffffffu}; + constexpr uint32_t calo_rechit_masks[] = { + 0x00000000u, 0x00000001u, 0x00000003u, 0x00000007u, 0x0000000fu, 0x0000001fu, 0x0000003fu, + 0x0000007fu, 0x000000ffu, 0x000001ffu, 0x000003ffu, 0x000007ffu, 0x00000fffu, 0x00001fffu, + 0x00003fffu, 0x00007fffu, 0x0000ffffu, 0x0001ffffu, 0x0003ffffu, 0x0007ffffu, 0x000fffffu, + 0x001fffffu, 0x003fffffu, 0x007fffffu, 0x00ffffffu, 0x01ffffffu, 0x03ffffffu, 0x07ffffffu, + 0x0fffffffu, 0x1fffffffu, 0x3fffffffu, 0x7fffffffu, 0xffffffffu}; /** \class CaloRecHit * diff --git a/DataFormats/Candidate/interface/ParticleState.h b/DataFormats/Candidate/interface/ParticleState.h index 956b874bba4af..d8d2e280f9c98 100644 --- a/DataFormats/Candidate/interface/ParticleState.h +++ b/DataFormats/Candidate/interface/ParticleState.h @@ -10,12 +10,13 @@ * */ +#include + #include "DataFormats/Math/interface/Point3D.h" #include "DataFormats/Math/interface/Vector3D.h" #include "DataFormats/Math/interface/PtEtaPhiMass.h" #include "DataFormats/GeometryVector/interface/GlobalVector.h" #include "DataFormats/Math/interface/LorentzVector.h" -#include "Rtypes.h" namespace reco { diff --git a/DataFormats/Common/interface/DeviceProduct.h b/DataFormats/Common/interface/DeviceProduct.h index 926d7ad16e262..932d74eca6b26 100644 --- a/DataFormats/Common/interface/DeviceProduct.h +++ b/DataFormats/Common/interface/DeviceProduct.h @@ -4,6 +4,8 @@ #include #include +#include "DataFormats/Common/interface/Uninitialized.h" + namespace edm { class DeviceProductBase { public: @@ -45,7 +47,13 @@ namespace edm { template class DeviceProduct : public DeviceProductBase { public: - DeviceProduct() = default; + DeviceProduct() + requires(requires { T(); }) + = default; + + explicit DeviceProduct(edm::Uninitialized) + requires(requires { T(edm::kUninitialized); }) + : data_{edm::kUninitialized} {} template explicit DeviceProduct(std::shared_ptr metadata, Args&&... args) diff --git a/DataFormats/Common/interface/Uninitialized.h b/DataFormats/Common/interface/Uninitialized.h new file mode 100644 index 0000000000000..298229d56c0a8 --- /dev/null +++ b/DataFormats/Common/interface/Uninitialized.h @@ -0,0 +1,19 @@ +#ifndef DataFormats_Common_interface_Uninitialized_h +#define DataFormats_Common_interface_Uninitialized_h + +/* Uninitialized + * + * This is an empty struct used as a tag to signal that a constructor will leave an object (partially) uninitialised, + * with the assumption that it will be overwritten before being used. + * One expected use case is to replace the default constructor used when deserialising objects from a ROOT file. + */ + +namespace edm { + + struct Uninitialized {}; + + constexpr inline Uninitialized kUninitialized; + +} // namespace edm + +#endif // DataFormats_Common_interface_Uninitialized_h diff --git a/DataFormats/Common/interface/Wrapper.h b/DataFormats/Common/interface/Wrapper.h index 97d193779dcf9..8dc9cb09995ae 100644 --- a/DataFormats/Common/interface/Wrapper.h +++ b/DataFormats/Common/interface/Wrapper.h @@ -7,9 +7,10 @@ Wrapper: A template wrapper around EDProducts to hold the product ID. ----------------------------------------------------------------------*/ +#include "DataFormats/Common/interface/Uninitialized.h" +#include "DataFormats/Common/interface/CMS_CLASS_VERSION.h" #include "DataFormats/Common/interface/WrapperBase.h" #include "DataFormats/Common/interface/WrapperDetail.h" -#include "DataFormats/Common/interface/CMS_CLASS_VERSION.h" #include "DataFormats/Provenance/interface/ProductID.h" #include "FWCore/Utilities/interface/Visibility.h" @@ -25,7 +26,7 @@ namespace edm { public: typedef T value_type; typedef T wrapped_type; // used with the dictionary to identify Wrappers - Wrapper() : WrapperBase(), obj(), present(false) {} + Wrapper() : WrapperBase(), obj{construct_()}, present(false) {} explicit Wrapper(std::unique_ptr ptr); Wrapper(Wrapper const& rh) = delete; // disallow copy construction Wrapper& operator=(Wrapper const&) = delete; // disallow assignment @@ -49,6 +50,14 @@ namespace edm { CMS_CLASS_VERSION(4) private: + constexpr T construct_() { + if constexpr (requires { T(); }) { + return T(); + } else { + return T(edm::kUninitialized); + } + } + bool isPresent_() const override { return present; } std::type_info const& dynamicTypeInfo_() const override { return typeid(T); } std::type_info const& wrappedTypeInfo_() const override { return typeid(Wrapper); } @@ -78,7 +87,7 @@ namespace edm { }; template - Wrapper::Wrapper(std::unique_ptr ptr) : WrapperBase(), obj(), present(ptr.get() != nullptr) { + Wrapper::Wrapper(std::unique_ptr ptr) : WrapperBase(), obj{construct_()}, present(ptr.get() != nullptr) { if (present) { obj = std::move(*ptr); } @@ -89,7 +98,7 @@ namespace edm { Wrapper::Wrapper(Emplace, Args&&... args) : WrapperBase(), obj(std::forward(args)...), present(true) {} template - Wrapper::Wrapper(T* ptr) : WrapperBase(), present(ptr != 0), obj() { + Wrapper::Wrapper(T* ptr) : WrapperBase(), present(ptr != 0), obj{construct_()} { std::unique_ptr temp(ptr); if (present) { obj = std::move(*ptr); diff --git a/DataFormats/Common/test/Wrapper_t.cpp b/DataFormats/Common/test/Wrapper_t.cpp index 53de087741a9b..68411bc0b1a2d 100644 --- a/DataFormats/Common/test/Wrapper_t.cpp +++ b/DataFormats/Common/test/Wrapper_t.cpp @@ -1,34 +1,32 @@ -/* - * CMSSW - * - */ - #include #include #include #include -#include "catch.hpp" + +#include #include "DataFormats/Common/interface/Wrapper.h" class CopyNoMove { public: - CopyNoMove() {} + CopyNoMove() = default; CopyNoMove(CopyNoMove const&) { /* std::cout << "copied\n"; */ } CopyNoMove& operator=(CopyNoMove const&) { /*std::cout << "assigned\n";*/ return *this; } - -private: }; class MoveNoCopy { public: - MoveNoCopy() {} + MoveNoCopy() = default; MoveNoCopy(MoveNoCopy const&) = delete; MoveNoCopy& operator=(MoveNoCopy const&) = delete; MoveNoCopy(MoveNoCopy&&) { /* std::cout << "moved\n";*/ } MoveNoCopy& operator=(MoveNoCopy&&) { /* std::cout << "moved\n";*/ return *this; } +}; -private: +class NoDefaultCtor { +public: + NoDefaultCtor() = delete; + NoDefaultCtor(edm::Uninitialized) {} }; TEST_CASE("test Wrapper", "[Wrapper]") { @@ -44,4 +42,7 @@ TEST_CASE("test Wrapper", "[Wrapper]") { edm::Wrapper> wrap3(std::move(thing3)); REQUIRE(wrap3->size() == 10); REQUIRE(thing3.get() == 0); + + auto thing4 = std::make_unique(edm::kUninitialized); + edm::Wrapper wrap4(std::move(thing4)); } diff --git a/DataFormats/EcalRecHit/interface/EcalRecHitHostCollection.h b/DataFormats/EcalRecHit/interface/EcalRecHitHostCollection.h new file mode 100644 index 0000000000000..c5f877988f8ce --- /dev/null +++ b/DataFormats/EcalRecHit/interface/EcalRecHitHostCollection.h @@ -0,0 +1,10 @@ +#ifndef DataFormats_EcalRecHit_EcalRecHitHostCollection_h +#define DataFormats_EcalRecHit_EcalRecHitHostCollection_h + +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitSoA.h" + +// EcalRecHitSoA in host memory +using EcalRecHitHostCollection = PortableHostCollection; + +#endif diff --git a/DataFormats/EcalRecHit/interface/EcalRecHitSoA.h b/DataFormats/EcalRecHit/interface/EcalRecHitSoA.h new file mode 100644 index 0000000000000..b61da3ecd186b --- /dev/null +++ b/DataFormats/EcalRecHit/interface/EcalRecHitSoA.h @@ -0,0 +1,16 @@ +#ifndef DataFormats_EcalRecHit_EcalRecHitSoA_h +#define DataFormats_EcalRecHit_EcalRecHitSoA_h + +#include "DataFormats/SoATemplate/interface/SoALayout.h" + +GENERATE_SOA_LAYOUT(EcalRecHitSoALayout, + SOA_SCALAR(uint32_t, size), + SOA_COLUMN(uint32_t, id), + SOA_COLUMN(float, energy), + SOA_COLUMN(float, time), + SOA_COLUMN(uint32_t, flagBits), + SOA_COLUMN(uint32_t, extra)) + +using EcalRecHitSoA = EcalRecHitSoALayout<>; + +#endif diff --git a/DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h b/DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h new file mode 100644 index 0000000000000..5a7f7761afb89 --- /dev/null +++ b/DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h @@ -0,0 +1,15 @@ +#ifndef DataFormats_EcalRecHit_alpaka_EcalRecHitDeviceCollection_h +#define DataFormats_EcalRecHit_alpaka_EcalRecHitDeviceCollection_h + +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitSoA.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + // EcalRecHitSoA in device global memory + using EcalRecHitDeviceCollection = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h b/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h index e8f1c8d74e657..49a436ed51a59 100644 --- a/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h +++ b/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h @@ -2,3 +2,5 @@ #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" #include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitSoA.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h" diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml b/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml index 6bc692f6e1372..247b0da861868 100644 --- a/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml +++ b/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml @@ -2,4 +2,8 @@ + + + + diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h b/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h index e8f1c8d74e657..49a436ed51a59 100644 --- a/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h +++ b/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h @@ -2,3 +2,5 @@ #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" #include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitSoA.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h" diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml b/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml index a9d31a4bb0de2..dd1aa58d33687 100644 --- a/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml +++ b/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml @@ -2,4 +2,8 @@ + + + + diff --git a/DataFormats/EcalRecHit/src/classes.cc b/DataFormats/EcalRecHit/src/classes.cc index c52911f9a852d..ffc7dc11935b3 100644 --- a/DataFormats/EcalRecHit/src/classes.cc +++ b/DataFormats/EcalRecHit/src/classes.cc @@ -1,4 +1,6 @@ #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitHostCollection.h" #include "DataFormats/Portable/interface/PortableHostCollectionReadRules.h" SET_PORTABLEHOSTCOLLECTION_READ_RULES(EcalUncalibratedRecHitHostCollection); +SET_PORTABLEHOSTCOLLECTION_READ_RULES(EcalRecHitHostCollection); diff --git a/DataFormats/EcalRecHit/src/classes.h b/DataFormats/EcalRecHit/src/classes.h index 98eaae1434ad5..52d605000c21f 100644 --- a/DataFormats/EcalRecHit/src/classes.h +++ b/DataFormats/EcalRecHit/src/classes.h @@ -16,3 +16,5 @@ #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h" #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitHostCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitSoA.h" diff --git a/DataFormats/EcalRecHit/src/classes_def.xml b/DataFormats/EcalRecHit/src/classes_def.xml index 8439f27a50f64..7d1cdb32f56e7 100644 --- a/DataFormats/EcalRecHit/src/classes_def.xml +++ b/DataFormats/EcalRecHit/src/classes_def.xml @@ -42,9 +42,12 @@ - - - + + + + + + diff --git a/DataFormats/FWLite/test/chainEvent_python.py b/DataFormats/FWLite/test/chainEvent_python.py index 81337732ceb33..c87fae6f65dfa 100644 --- a/DataFormats/FWLite/test/chainEvent_python.py +++ b/DataFormats/FWLite/test/chainEvent_python.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range from DataFormats.FWLite import Events, Handle diff --git a/DataFormats/FWLite/test/pyroot_multichain.py b/DataFormats/FWLite/test/pyroot_multichain.py index 5683fb82d6c94..61243c2a23725 100644 --- a/DataFormats/FWLite/test/pyroot_multichain.py +++ b/DataFormats/FWLite/test/pyroot_multichain.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import ROOT from DataFormats.FWLite import Events, Handle import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/DataFormats/ForwardDetId/interface/BTLDetId.h b/DataFormats/ForwardDetId/interface/BTLDetId.h index 0a1bd7eab1699..dacc25bb13fbb 100644 --- a/DataFormats/ForwardDetId/interface/BTLDetId.h +++ b/DataFormats/ForwardDetId/interface/BTLDetId.h @@ -2,8 +2,10 @@ #define DataFormats_BTLDetId_BTLDetId_h #include "DataFormats/ForwardDetId/interface/MTDDetId.h" +#include #include #include +#include /** @class BTLDetId @@ -14,29 +16,59 @@ bit 9-8 : crystal type (1 - 3) bit 7-6 : readout unit sequential number within a type ( 1 - 2 ) bit 5-0 : crystal sequential number within a module ( 0 - 15 ) + + // Geometry v3 new DetID (all type 1 modules) + bit 15: kBTLNewFormat (0 - old BTLDetID, 1 - new BTLDetID) + bit 12-10: Readout unit number ( 1 - 6 ) + bit 9-6 : Detector Module ( 1 - 12 ) + bit 5 : Sensor Module inside DM ( 0 - 1 ) + bit 4-0 : Crystal number in a SM ( 1 - 16 ) */ class BTLDetId : public MTDDetId { public: - static constexpr uint32_t kBTLmoduleOffset = 10; - static constexpr uint32_t kBTLmoduleMask = 0x3F; - static constexpr uint32_t kBTLmodTypeOffset = 8; - static constexpr uint32_t kBTLmodTypeMask = 0x3; - static constexpr uint32_t kBTLRUOffset = 6; - static constexpr uint32_t kBTLRUMask = 0x3; + // old BTLDetID RU and module number scheme + static constexpr uint32_t kBTLoldModuleOffset = 10; + static constexpr uint32_t kBTLoldModuleMask = 0x3F; + static constexpr uint32_t kBTLoldModTypeOffset = 8; + static constexpr uint32_t kBTLoldModTypeMask = 0x3; + static constexpr uint32_t kBTLoldRUOffset = 6; + static constexpr uint32_t kBTLoldRUMask = 0x3; + + // New BTLDetID + static constexpr uint32_t kBTLRodOffset = 16; + static constexpr uint32_t kBTLRodMask = 0x3F; + static constexpr uint32_t kBTLRUOffset = 10; + static constexpr uint32_t kBTLRUMask = 0x7; + static constexpr uint32_t kBTLdetectorModOffset = 6; + static constexpr uint32_t kBTLdetectorModMask = 0xF; + static constexpr uint32_t kBTLsensorModOffset = 5; + static constexpr uint32_t kBTLsensorModMask = 0x1; static constexpr uint32_t kBTLCrystalOffset = 0; - static constexpr uint32_t kBTLCrystalMask = 0x3F; + static constexpr uint32_t kBTLCrystalMask = 0x1F; /// range constants, need two sets for the time being (one for tiles and one for bars) static constexpr uint32_t HALF_ROD = 36; static constexpr uint32_t kModulesPerRODBarPhiFlat = 48; static constexpr uint32_t kModulePerTypeBarPhiFlat = 48 / 3; static constexpr uint32_t kRUPerTypeV2 = 2; + static constexpr uint32_t kRUPerRod = 6; static constexpr uint32_t kModulesPerRUV2 = 24; + static constexpr uint32_t kDModulesPerRU = 12; + static constexpr uint32_t kSModulesPerDM = 2; + static constexpr uint32_t kDModulesInRUCol = 3; + static constexpr uint32_t kDModulesInRURow = 4; + static constexpr uint32_t kSModulesInDM = 2; static constexpr uint32_t kCrystalsPerModuleV2 = 16; static constexpr uint32_t kModulesPerTrkV2 = 3; static constexpr uint32_t kCrystalTypes = 3; + // conversion + static constexpr uint32_t kBTLoldFieldMask = 0x3FFFFF; + static constexpr uint32_t kBTLNewFormat = 1 << 15; + + // + // Number of crystals in BTL according to TDR design, valid also for barphiflat scenario: // 16 crystals x 24 modules x 2 readout units/type x 3 types x 36 rods/side x 2 sides // @@ -50,67 +82,125 @@ class BTLDetId : public MTDDetId { /** Construct a null id */ BTLDetId() : MTDDetId(DetId::Forward, ForwardSubdetector::FastTime) { id_ |= (MTDType::BTL & kMTDsubdMask) << kMTDsubdOffset; + id_ |= kBTLNewFormat; } /** Construct from a raw value */ - BTLDetId(const uint32_t& raw_id) : MTDDetId(raw_id) { ; } + BTLDetId(const uint32_t& raw_id) : MTDDetId(raw_id) { + uint32_t tmpId = raw_id; + if ((tmpId & kBTLNewFormat) == 0) { + tmpId = newForm(tmpId); + } + id_ = MTDDetId(tmpId).rawId(); + } /** Construct from generic DetId */ - BTLDetId(const DetId& det_id) : MTDDetId(det_id.rawId()) { ; } - - /** Construct from complete geometry information, v1 **/ - BTLDetId(uint32_t zside, uint32_t rod, uint32_t module, uint32_t modtyp, uint32_t crystal) - : MTDDetId(DetId::Forward, ForwardSubdetector::FastTime) { - id_ |= (MTDType::BTL & kMTDsubdMask) << kMTDsubdOffset | (zside & kZsideMask) << kZsideOffset | - (rod & kRodRingMask) << kRodRingOffset | (module & kBTLmoduleMask) << kBTLmoduleOffset | - (modtyp & kBTLmodTypeMask) << kBTLmodTypeOffset | ((crystal - 1) & kBTLCrystalMask) << kBTLCrystalOffset; + BTLDetId(const DetId& det_id) : MTDDetId(det_id.rawId()) { + uint32_t tmpId = det_id.rawId(); + if ((tmpId & kBTLNewFormat) == 0) { + tmpId = newForm(tmpId); + } + id_ = MTDDetId(tmpId).rawId(); } - /** Construct from complete geometry information, v2 **/ - BTLDetId(uint32_t zside, uint32_t rod, uint32_t runit, uint32_t module, uint32_t modtyp, uint32_t crystal) + /** Construct from complete geometry information, v2, v3 **/ + /** Geometry v1 is obsolete and not supported **/ + BTLDetId(uint32_t zside, uint32_t rod, uint32_t runit, uint32_t dmodule, uint32_t smodule, uint32_t crystal) : MTDDetId(DetId::Forward, ForwardSubdetector::FastTime) { + //RU, DM, SM & Xtal numbers start from 0 id_ |= (MTDType::BTL & kMTDsubdMask) << kMTDsubdOffset | (zside & kZsideMask) << kZsideOffset | - (rod & kRodRingMask) << kRodRingOffset | (module & kBTLmoduleMask) << kBTLmoduleOffset | - (modtyp & kBTLmodTypeMask) << kBTLmodTypeOffset | (runit & kBTLRUMask) << kBTLRUOffset | - ((crystal - 1) & kBTLCrystalMask) << kBTLCrystalOffset; + (rod & kRodRingMask) << kRodRingOffset | (runit & kBTLRUMask) << kBTLRUOffset | + (dmodule & kBTLdetectorModMask) << kBTLdetectorModOffset | + (smodule & kBTLsensorModMask) << kBTLsensorModOffset | (crystal & kBTLCrystalMask) << kBTLCrystalOffset; + id_ |= kBTLNewFormat; } // ---------- Common methods ---------- - /** Returns BTL module number. */ - inline int module() const { return (id_ >> kBTLmoduleOffset) & kBTLmoduleMask; } + /** Returns BTL crystal number. */ + inline int crystal() const { return ((id_ >> kBTLCrystalOffset) & kBTLCrystalMask); } + + /** Returns BTL crystal number in construction database. */ + inline int crystalConsDB() const { + if (crystal() == kCrystalsPerModuleV2) + return -1; + if (smodule() == 0) + return kCrystalsPerModuleV2 - 1 - crystal(); + else + return crystal(); + } - /** Returns BTL crystal type number. */ - inline int modType() const { return (id_ >> kBTLmodTypeOffset) & kBTLmodTypeMask; } + /** Returns BTL detector module number. */ + inline int dmodule() const { return ((id_ >> kBTLdetectorModOffset) & kBTLdetectorModMask); } - /** Returns BTL crystal number. */ - inline int crystal() const { return ((id_ >> kBTLCrystalOffset) & kBTLCrystalMask) + 1; } + /** Returns BTL sensor module number. */ + inline int smodule() const { return ((id_ >> kBTLsensorModOffset) & kBTLsensorModMask); } - /** Returns BTL readout unit number per type. */ - inline int runit() const { return (id_ >> kBTLRUOffset) & kBTLRUMask; } + /** Returns BTL module number [1-24] (OLD BTL NUMBERING). */ + inline int module() const { + int mod = ((dmodule() % kDModulesInRURow) * (kSModulesInDM * kDModulesInRUCol) + int(dmodule() / kDModulesInRURow) + + kDModulesInRUCol * smodule()) + + 1; + return mod; + } - /** Returns BTL global readout unit number. */ - inline int globalRunit() const { - if (runit() == 0) { - // pre-V2: build a RU identifier from available information - return (module() - 1) / kModulePerTypeBarPhiFlat / kRUPerTypeV2 + 1; - } else if (runit() > 0 && modType() > 0) { - // V2/V3: build global RU identifier from RU per type and type - return (modType() - 1) * kRUPerTypeV2 + runit(); - } - return 0; + /** Returns BTL crystal type number [1-3] (OLD BTL NUMBERING). */ + inline int modType() const { + int gRU = runit(); + return int(gRU / kRUPerTypeV2 + 1); } + /** Returns BTL readout unit number per type [1-2], from Global RU number [1-6]. */ + inline int runitByType() const { return (runit() % kRUPerTypeV2); } + + /** Returns BTL global readout unit number. */ + inline int runit() const { return ((id_ >> kBTLRUOffset) & kBTLRUMask); } + /** return the row in GeomDet language **/ inline int row(unsigned nrows = kCrystalsPerModuleV2) const { - return (crystal() - 1) % nrows; // anything else for now + return crystal() % nrows; // anything else for now } /** return the column in GeomDetLanguage **/ - inline int column(unsigned nrows = kCrystalsPerModuleV2) const { return (crystal() - 1) / nrows; } + inline int column(unsigned nrows = kCrystalsPerModuleV2) const { return crystal() / nrows; } /** create a Geographical DetId for Tracking **/ BTLDetId geographicalId(CrysLayout lay) const; + + /** conversion from old to new BTLDetID**/ + uint32_t newForm(const uint32_t& rawid) { + uint32_t fixedP = rawid & (0xFFFFFFFF - kBTLoldFieldMask); // unchanged part of id + + // convert old tray number into new tray nymber + uint32_t oldTray = (rawid >> kBTLRodOffset) & kBTLRodMask; + uint32_t newTray = oldTray - 1; + + // convert old module number into detector module + sensor module numbers + uint32_t oldModule = (rawid >> kBTLoldModuleOffset) & kBTLoldModuleMask; + uint32_t detModule = int((oldModule - 1) % (kDModulesInRUCol)) * kDModulesInRURow + + int((oldModule - 1) / (kDModulesInRUCol * kSModulesInDM)); + uint32_t senModule = int((oldModule - 1) / kDModulesInRUCol) % kSModulesInDM; + + // change detector module number if on the negative side + int zside = int(mtdSide()); + if (zside < 1) + detModule = detModule - 2 * kDModulesInRURow * (int(detModule / kDModulesInRURow) - 1); + + // convert old RU and type number into new RU number + uint32_t oldRU = (rawid >> kBTLoldRUOffset) & kBTLoldRUMask; + uint32_t oldType = (rawid >> kBTLoldModTypeOffset) & kBTLoldModTypeMask; + uint32_t newRU = ((oldType - 1) * kRUPerTypeV2) + (oldRU - 1); + + // get crystal number + uint32_t crystal = (rawid & kBTLCrystalMask) >> kBTLCrystalOffset; + + // return new BTLDetID for v3 geom + return (fixedP | (newTray & kBTLRodMask) << kBTLRodOffset | (newRU & kBTLRUMask) << kBTLRUOffset | + (detModule & kBTLdetectorModMask) << kBTLdetectorModOffset | + (senModule & kBTLsensorModMask) << kBTLsensorModOffset | + ((crystal & kBTLCrystalMask) << kBTLCrystalOffset)) | + kBTLNewFormat; + } }; std::ostream& operator<<(std::ostream&, const BTLDetId&); diff --git a/DataFormats/ForwardDetId/src/BTLDetId.cc b/DataFormats/ForwardDetId/src/BTLDetId.cc index 7a3ab9461fbdc..b865f2f1efab5 100644 --- a/DataFormats/ForwardDetId/src/BTLDetId.cc +++ b/DataFormats/ForwardDetId/src/BTLDetId.cc @@ -1,15 +1,15 @@ #include "DataFormats/ForwardDetId/interface/BTLDetId.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" BTLDetId BTLDetId::geographicalId(CrysLayout lay) const { // For tracking geometry navigation + // v2,v3: set number of crystals to 17 to distinguish from crystal BTLDetId + // v1: obsolete and not supported - if (lay == CrysLayout::barphiflat) { - // barphiflat: count modules in a rod, combining all types - return BTLDetId(mtdSide(), mtdRR(), module() + kModulePerTypeBarPhiFlat * (modType() - 1), 0, 1); - } else if (lay == CrysLayout::v2 || lay == CrysLayout::v3) { - // v2: set number of crystals to 17 to distinguish from crystal BTLDetId - // v3: set number of crystals to 17 to distinguish from crystal BTLDetId, build V2-like type and RU number as in BTLNumberingScheme - return BTLDetId(mtdSide(), mtdRR(), runit(), module(), modType(), kCrystalsPerModuleV2 + 1); + if (lay == CrysLayout::v2 || lay == CrysLayout::v3) { + return BTLDetId(mtdSide(), mtdRR(), runit(), dmodule(), smodule(), kCrystalsPerModuleV2); + } else { + edm::LogWarning("MTDGeom") << "CrysLayout could only be v2 or v3"; } return 0; @@ -20,12 +20,15 @@ BTLDetId BTLDetId::geographicalId(CrysLayout lay) const { std::ostream& operator<<(std::ostream& os, const BTLDetId& id) { os << (MTDDetId&)id; os << " BTL " << std::endl - << " Side : " << id.mtdSide() << std::endl - << " Rod : " << id.mtdRR() << std::endl - << " Crystal type: " << id.modType() << std::endl - << " Readout unit: " << id.runit() << std::endl - << " Global RU : " << id.globalRunit() << std::endl - << " Module : " << id.module() << std::endl - << " Crystal : " << id.crystal() << std::endl; + << " Side : " << id.mtdSide() << std::endl + << " Rod : " << id.mtdRR() << std::endl + << " Crystal type : " << id.modType() << std::endl // crystal type in v1 geometry scheme + << " Runit by Type : " << id.runitByType() << std::endl + << " Readout unit : " << id.runit() << std::endl + << " Detector module: " << id.dmodule() << std::endl + << " Sensor module : " << id.smodule() << std::endl + << " Module : " << id.module() << std::endl + << " Crystal : " << id.crystal() << std::endl + << " Crystal in ConsDB: " << id.crystalConsDB() << std::endl; return os; } diff --git a/DataFormats/ForwardDetId/src/classes_def.xml b/DataFormats/ForwardDetId/src/classes_def.xml index c61a79616422b..f35c116c0b3e9 100644 --- a/DataFormats/ForwardDetId/src/classes_def.xml +++ b/DataFormats/ForwardDetId/src/classes_def.xml @@ -23,8 +23,15 @@ - + + + + newForm(newObj->rawId())); + *newObj=tmp; + ]]> + diff --git a/DataFormats/HLTReco/interface/TriggerObject.h b/DataFormats/HLTReco/interface/TriggerObject.h index d7785dfc8be4e..ba4cc5dd0c4cb 100644 --- a/DataFormats/HLTReco/interface/TriggerObject.h +++ b/DataFormats/HLTReco/interface/TriggerObject.h @@ -17,6 +17,21 @@ namespace trigger { + namespace impl { + + template + concept FourMomentum = requires(T o) { + o.pt(); + o.eta(); + o.phi(); + o.mass(); + }; + + template + concept FourMomentumWithPdgId = FourMomentum and requires(T o) { o.pdgId(); }; + + } // namespace impl + /// Single trigger physics object (e.g., an isolated muon) class TriggerObject { /// data members - similar to DataFormats/Candidate/interface/Particle.h @@ -34,10 +49,10 @@ namespace trigger { : id_(id), pt_(pt), eta_(eta), phi_(phi), mass_(mass) {} /// any type T object implementing the methods pt(), eta(), phi(), mass() - template + template TriggerObject(int id, const T& o) : id_(id), pt_(o.pt()), eta_(o.eta()), phi_(o.phi()), mass_(o.mass()) {} /// ... and pdgId() - template + template TriggerObject(const T& o) : id_(o.pdgId()), pt_(o.pt()), eta_(o.eta()), phi_(o.phi()), mass_(o.mass()) {} /// setters diff --git a/DataFormats/L1GlobalTrigger/src/L1GtLogicParser.cc b/DataFormats/L1GlobalTrigger/src/L1GtLogicParser.cc index 2ea833255ddf0..4fad30e1d0089 100644 --- a/DataFormats/L1GlobalTrigger/src/L1GtLogicParser.cc +++ b/DataFormats/L1GlobalTrigger/src/L1GtLogicParser.cc @@ -187,7 +187,7 @@ bool L1GtLogicParser::buildRpnVector(const std::string& logicalExpressionVal) { exprStringStream >> std::skipws >> std::ws >> tokenString; // skip the end - if (tokenString.find_first_not_of(whitespaces) == std::string::npos || tokenString.length() == 0) { + if (tokenString.find_first_not_of(whitespaces) == std::string::npos || tokenString.empty()) { //LogTrace("L1GtLogicParser") //<< " Break for token string = " << tokenString //<< std::endl; diff --git a/DataFormats/L1TGlobal/src/GlobalLogicParser.cc b/DataFormats/L1TGlobal/src/GlobalLogicParser.cc index f4130ec70c057..00217dd768b50 100644 --- a/DataFormats/L1TGlobal/src/GlobalLogicParser.cc +++ b/DataFormats/L1TGlobal/src/GlobalLogicParser.cc @@ -187,7 +187,7 @@ bool GlobalLogicParser::buildRpnVector(const std::string& logicalExpressionVal) exprStringStream >> std::skipws >> std::ws >> tokenString; // skip the end - if (tokenString.find_first_not_of(whitespaces) == std::string::npos || tokenString.length() == 0) { + if (tokenString.find_first_not_of(whitespaces) == std::string::npos || tokenString.empty()) { //LogTrace("L1TGlobal") //<< " Break for token string = " << tokenString //<< std::endl; diff --git a/DataFormats/Math/interface/LorentzVector.h b/DataFormats/Math/interface/LorentzVector.h index 6026247d96c6f..07927174632e9 100644 --- a/DataFormats/Math/interface/LorentzVector.h +++ b/DataFormats/Math/interface/LorentzVector.h @@ -1,32 +1,33 @@ -#ifndef Math_LorentzVector_h -#define Math_LorentzVector_h -#include "Math/PtEtaPhiE4D.h" -#include "Math/PtEtaPhiM4D.h" -#include "Math/LorentzVector.h" - -namespace math { - - /// Lorentz vector with cartesian internal representation - typedef ROOT::Math::LorentzVector > PtEtaPhiMLorentzVectorD; - /// Lorentz vector with cartesian internal representation - typedef ROOT::Math::LorentzVector > PtEtaPhiELorentzVectorD; - /// Lorentz vector with cylindrical internal representation using pseudorapidity - typedef ROOT::Math::LorentzVector > XYZTLorentzVectorD; - /// Lorentz vector with cylindrical internal representation using pseudorapidity - - /// Lorentz vector with cartesian internal representation - typedef ROOT::Math::LorentzVector > PtEtaPhiMLorentzVectorF; - /// Lorentz vector with cartesian internal representation - typedef ROOT::Math::LorentzVector > PtEtaPhiELorentzVectorF; - /// Lorentz vector with cylindrical internal representation using pseudorapidity - typedef ROOT::Math::LorentzVector > XYZTLorentzVectorF; - - /// Lorentz vector with cartesian internal representation - typedef PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector; - /// Lorentz vector with cartesian internal representation - typedef PtEtaPhiELorentzVectorD PtEtaPhiELorentzVector; - /// Lorentz vector with cylindrical internal representation using pseudorapidity - typedef XYZTLorentzVectorD XYZTLorentzVector; -} // namespace math - -#endif +#ifndef Math_LorentzVector_h +#define Math_LorentzVector_h + +#include +#include +#include + +namespace math { + + /// Lorentz vector with cartesian internal representation + typedef ROOT::Math::LorentzVector > PtEtaPhiMLorentzVectorD; + /// Lorentz vector with cartesian internal representation + typedef ROOT::Math::LorentzVector > PtEtaPhiELorentzVectorD; + /// Lorentz vector with cylindrical internal representation using pseudorapidity + typedef ROOT::Math::LorentzVector > XYZTLorentzVectorD; + /// Lorentz vector with cylindrical internal representation using pseudorapidity + + /// Lorentz vector with cartesian internal representation + typedef ROOT::Math::LorentzVector > PtEtaPhiMLorentzVectorF; + /// Lorentz vector with cartesian internal representation + typedef ROOT::Math::LorentzVector > PtEtaPhiELorentzVectorF; + /// Lorentz vector with cylindrical internal representation using pseudorapidity + typedef ROOT::Math::LorentzVector > XYZTLorentzVectorF; + + /// Lorentz vector with cartesian internal representation + typedef PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector; + /// Lorentz vector with cartesian internal representation + typedef PtEtaPhiELorentzVectorD PtEtaPhiELorentzVector; + /// Lorentz vector with cylindrical internal representation using pseudorapidity + typedef XYZTLorentzVectorD XYZTLorentzVector; +} // namespace math + +#endif diff --git a/DataFormats/Math/interface/Point3D.h b/DataFormats/Math/interface/Point3D.h index 015dc3ee3d64d..8bfeb8c1b615f 100644 --- a/DataFormats/Math/interface/Point3D.h +++ b/DataFormats/Math/interface/Point3D.h @@ -1,21 +1,22 @@ -#ifndef Math_Point3D_h -#define Math_Point3D_h -#include "Math/Point3D.h" -#include "Math/GenVector/CoordinateSystemTags.h" - -namespace math { - /// point in space with cartesian internal representation - typedef ROOT::Math::PositionVector3D > XYZPointD; - /// point in space with cartesian internal representation - typedef ROOT::Math::PositionVector3D > XYZPointF; - /// point in space with cartesian internal representation - typedef XYZPointD XYZPoint; - - /// point in local coordinate system - typedef ROOT::Math::PositionVector3D, ROOT::Math::LocalCoordinateSystemTag> LocalPoint; - /// point in global coordinate system - typedef ROOT::Math::PositionVector3D, ROOT::Math::GlobalCoordinateSystemTag> - GlobalPoint; -} // namespace math - -#endif +#ifndef Math_Point3D_h +#define Math_Point3D_h + +#include +#include + +namespace math { + /// point in space with cartesian internal representation + typedef ROOT::Math::PositionVector3D > XYZPointD; + /// point in space with cartesian internal representation + typedef ROOT::Math::PositionVector3D > XYZPointF; + /// point in space with cartesian internal representation + typedef XYZPointD XYZPoint; + + /// point in local coordinate system + typedef ROOT::Math::PositionVector3D, ROOT::Math::LocalCoordinateSystemTag> LocalPoint; + /// point in global coordinate system + typedef ROOT::Math::PositionVector3D, ROOT::Math::GlobalCoordinateSystemTag> + GlobalPoint; +} // namespace math + +#endif diff --git a/DataFormats/Math/interface/Vector3D.h b/DataFormats/Math/interface/Vector3D.h index 08a8f82de4b35..5901b7f9ac5d2 100644 --- a/DataFormats/Math/interface/Vector3D.h +++ b/DataFormats/Math/interface/Vector3D.h @@ -1,38 +1,39 @@ -#ifndef Math_Vector3D_h -#define Math_Vector3D_h -#include "Math/Vector3D.h" - -namespace math { - - /// spatial vector with cartesian internal representation - typedef ROOT::Math::DisplacementVector3D > XYZVectorD; - /// spatial vector with cylindrical internal representation using pseudorapidity - typedef ROOT::Math::DisplacementVector3D > RhoEtaPhiVectorD; - /// spatial vector with polar internal representation - /// WARNING: ROOT dictionary not provided for the type below - typedef ROOT::Math::DisplacementVector3D > RThetaPhiVectorD; - - /// spatial vector with cartesian internal representation - typedef ROOT::Math::DisplacementVector3D > XYZVectorF; - /// spatial vector with cylindrical internal representation using pseudorapidity - typedef ROOT::Math::DisplacementVector3D > RhoEtaPhiVectorF; - /// spatial vector with polar internal representation - /// WARNING: ROOT dictionary not provided for the type below - typedef ROOT::Math::DisplacementVector3D > RThetaPhiVectorF; - - /// vector in local coordinate system - typedef ROOT::Math::DisplacementVector3D, ROOT::Math::LocalCoordinateSystemTag> - LocalVector; - /// vector in glovbal coordinate system - typedef ROOT::Math::DisplacementVector3D, ROOT::Math::GlobalCoordinateSystemTag> - GlobalVector; - - /// spatial vector with cartesian internal representation - typedef XYZVectorD XYZVector; - /// spatial vector with cylindrical internal representation using pseudorapidity - typedef RhoEtaPhiVectorD RhoEtaPhiVector; - /// spatial vector with polar internal representation - typedef RThetaPhiVectorD RThetaPhiVector; -} // namespace math - -#endif +#ifndef Math_Vector3D_h +#define Math_Vector3D_h + +#include + +namespace math { + + /// spatial vector with cartesian internal representation + typedef ROOT::Math::DisplacementVector3D > XYZVectorD; + /// spatial vector with cylindrical internal representation using pseudorapidity + typedef ROOT::Math::DisplacementVector3D > RhoEtaPhiVectorD; + /// spatial vector with polar internal representation + /// WARNING: ROOT dictionary not provided for the type below + typedef ROOT::Math::DisplacementVector3D > RThetaPhiVectorD; + + /// spatial vector with cartesian internal representation + typedef ROOT::Math::DisplacementVector3D > XYZVectorF; + /// spatial vector with cylindrical internal representation using pseudorapidity + typedef ROOT::Math::DisplacementVector3D > RhoEtaPhiVectorF; + /// spatial vector with polar internal representation + /// WARNING: ROOT dictionary not provided for the type below + typedef ROOT::Math::DisplacementVector3D > RThetaPhiVectorF; + + /// vector in local coordinate system + typedef ROOT::Math::DisplacementVector3D, ROOT::Math::LocalCoordinateSystemTag> + LocalVector; + /// vector in glovbal coordinate system + typedef ROOT::Math::DisplacementVector3D, ROOT::Math::GlobalCoordinateSystemTag> + GlobalVector; + + /// spatial vector with cartesian internal representation + typedef XYZVectorD XYZVector; + /// spatial vector with cylindrical internal representation using pseudorapidity + typedef RhoEtaPhiVectorD RhoEtaPhiVector; + /// spatial vector with polar internal representation + typedef RThetaPhiVectorD RThetaPhiVector; +} // namespace math + +#endif diff --git a/DataFormats/Math/interface/private/AVXVec.h b/DataFormats/Math/interface/private/AVXVec.h index 776387e339743..1c146204d99c6 100644 --- a/DataFormats/Math/interface/private/AVXVec.h +++ b/DataFormats/Math/interface/private/AVXVec.h @@ -134,22 +134,22 @@ inline mathSSE::Vec4 operator/(mathSSE::Vec4 b, double a) { return _mm256_div_pd(b.vec, _mm256_set1_pd(a)); } -inline double __attribute__((always_inline)) __attribute__((pure)) -dot(mathSSE::Vec4 a, mathSSE::Vec4 b) { +inline double __attribute__((always_inline)) __attribute__((pure)) dot(mathSSE::Vec4 a, + mathSSE::Vec4 b) { using mathSSE::_mm256_dot_pd; mathSSE::Vec4 ret; ret.vec = _mm256_dot_pd(a.vec, b.vec); return ret.arr[0]; } -inline mathSSE::Vec4 __attribute__((always_inline)) __attribute__((pure)) -cross(mathSSE::Vec4 a, mathSSE::Vec4 b) { +inline mathSSE::Vec4 __attribute__((always_inline)) __attribute__((pure)) cross(mathSSE::Vec4 a, + mathSSE::Vec4 b) { using mathSSE::_mm256_cross_pd; return _mm256_cross_pd(a.vec, b.vec); } -inline double __attribute__((always_inline)) __attribute__((pure)) -dotxy(mathSSE::Vec4 a, mathSSE::Vec4 b) { +inline double __attribute__((always_inline)) __attribute__((pure)) dotxy(mathSSE::Vec4 a, + mathSSE::Vec4 b) { mathSSE::Vec4 mul = a * b; mul = hadd(mul, mul); return mul.arr[0]; diff --git a/DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h b/DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h index 2dbc8622b6467..5b7c0955f2a3d 100644 --- a/DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h +++ b/DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h @@ -10,6 +10,7 @@ #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h" +#include "DataFormats/L1TMuonPhase2/interface/TrackerMuon.h" #include "DataFormats/L1Trigger/interface/Muon.h" #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" #include "DataFormats/TrajectoryState/interface/PTrajectoryStateOnDet.h" @@ -31,6 +32,11 @@ class L2MuonTrajectorySeed : public TrajectorySeed { PropagationDirection dir, l1t::MuonRef l1Ref); + L2MuonTrajectorySeed(PTrajectoryStateOnDet const& ptsos, + RecHitContainer const& rh, + PropagationDirection dir, + l1t::TrackerMuonRef l1TkMuRef); + /// Destructor ~L2MuonTrajectorySeed() override {} @@ -39,10 +45,11 @@ class L2MuonTrajectorySeed : public TrajectorySeed { /// Get L1 info inline l1extra::L1MuonParticleRef l1Particle() const { return theL1Particle; } inline l1t::MuonRef l1tParticle() const { return theL1TParticle; } + inline l1t::TrackerMuonRef l1TkMu() const { return theL1TkMu; } -protected: private: l1extra::L1MuonParticleRef theL1Particle; l1t::MuonRef theL1TParticle; + l1t::TrackerMuonRef theL1TkMu; }; #endif diff --git a/DataFormats/MuonSeed/src/L2MuonTrajectorySeed.cc b/DataFormats/MuonSeed/src/L2MuonTrajectorySeed.cc index cfc46b56f158f..5c0c37675ccf6 100644 --- a/DataFormats/MuonSeed/src/L2MuonTrajectorySeed.cc +++ b/DataFormats/MuonSeed/src/L2MuonTrajectorySeed.cc @@ -26,3 +26,11 @@ L2MuonTrajectorySeed::L2MuonTrajectorySeed(PTrajectoryStateOnDet const& ptsos, : TrajectorySeed(ptsos, rh, dir) { theL1TParticle = l1Ref; } + +L2MuonTrajectorySeed::L2MuonTrajectorySeed(PTrajectoryStateOnDet const& ptsos, + RecHitContainer const& rh, + PropagationDirection dir, + l1t::TrackerMuonRef l1TkMuRef) + : TrajectorySeed(ptsos, rh, dir) { + theL1TkMu = l1TkMuRef; +} diff --git a/DataFormats/MuonSeed/src/classes_def.xml b/DataFormats/MuonSeed/src/classes_def.xml index 4fbac9251f4f9..21f77e436c2d7 100644 --- a/DataFormats/MuonSeed/src/classes_def.xml +++ b/DataFormats/MuonSeed/src/classes_def.xml @@ -1,5 +1,6 @@ - + + diff --git a/DataFormats/PatCandidates/src/TriggerObjectStandAlone.cc b/DataFormats/PatCandidates/src/TriggerObjectStandAlone.cc index b60631737c7e3..cf9ffef12b9cb 100644 --- a/DataFormats/PatCandidates/src/TriggerObjectStandAlone.cc +++ b/DataFormats/PatCandidates/src/TriggerObjectStandAlone.cc @@ -99,7 +99,7 @@ bool TriggerObjectStandAlone::hasAnyName(const std::string &name, const std::vec // Empty parts due to // - wild-card at beginning/end or // - multiple wild-cards (should be supressed by 'boost::token_compress_on') - if (iName->length() == 0) + if (iName->empty()) continue; // Search from current index and // set index to found occurence @@ -115,7 +115,7 @@ bool TriggerObjectStandAlone::hasAnyName(const std::string &name, const std::vec index += iName->length(); } // Failed, if end of name not reached - if (index < iVec->length() && namePartsVec.back().length() != 0) + if (index < iVec->length() && !namePartsVec.back().empty()) failed = true; // Match found! if (!failed) diff --git a/DataFormats/PatCandidates/test/dump_parameterization.py b/DataFormats/PatCandidates/test/dump_parameterization.py index 19d3716e904a1..b83dda1b98e7a 100755 --- a/DataFormats/PatCandidates/test/dump_parameterization.py +++ b/DataFormats/PatCandidates/test/dump_parameterization.py @@ -1,5 +1,4 @@ #!/bin/env python -from __future__ import print_function from builtins import range import ROOT from ROOT import gROOT, TFile, TIter diff --git a/DataFormats/Phase2TrackerDigi/interface/Phase2ITChip.h b/DataFormats/Phase2TrackerDigi/interface/Phase2ITChip.h new file mode 100644 index 0000000000000..521061aa870a6 --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/interface/Phase2ITChip.h @@ -0,0 +1,32 @@ +#ifndef DataFormats_Phase2TrackerDigi_Phase2ITChip_H +#define DataFormats_Phase2TrackerDigi_Phase2ITChip_H +#include +#include +#include +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h" + +class Phase2ITChip { + // Quarter cores collected into a chip (only active quarter cores with hits gets collected) + +public: + Phase2ITChip(int rocnum, const std::vector hl); + + unsigned int size(); + int rocnum() const { return rocnum_; } + + std::vector get_organized_QCores(); + std::vector get_chip_code(); + +private: + std::vector hitList_; + int rocnum_; + + std::pair get_QCore_pos(Phase2ITDigiHit hit); + + Phase2ITQCore get_QCore_from_hit(Phase2ITDigiHit pixel); + std::vector rem_duplicates(std::vector qcores); + std::vector organize_QCores(std::vector qcores); +}; + +#endif // DataFormats_Phase2TrackerDigi_Phase2ITChip_H diff --git a/DataFormats/Phase2TrackerDigi/interface/Phase2ITChipBitStream.h b/DataFormats/Phase2TrackerDigi/interface/Phase2ITChipBitStream.h new file mode 100644 index 0000000000000..09fb37dce0267 --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/interface/Phase2ITChipBitStream.h @@ -0,0 +1,25 @@ +#ifndef DataFormats_Phase2TrackerDigi_Phase2ITChipBitStream_H +#define DataFormats_Phase2TrackerDigi_Phase2ITChipBitStream_H +#include + +class Phase2ITChipBitStream { + // Encoded bit stream output from chips +public: + Phase2ITChipBitStream(int rocid, const std::vector& bitstream) { + rocid_ = rocid; + bitstream_ = bitstream; + } + + Phase2ITChipBitStream() { rocid_ = -1; } + + int get_rocid() const { return rocid_; } + + const std::vector& get_bitstream() const { return bitstream_; } + + const bool operator<(const Phase2ITChipBitStream& other) { return rocid_ < other.rocid_; } + +private: + int rocid_; // Chip index + std::vector bitstream_; // Chip bit stream output +}; +#endif // DataFormats_Phase2TrackerDigi_Phase2ITChipBitStream_H diff --git a/DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h b/DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h new file mode 100644 index 0000000000000..cc6d41b6ab0ce --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h @@ -0,0 +1,21 @@ +#ifndef DataFormats_Phase2TrackerDigi_Phase2ITDigiHit_H +#define DataFormats_Phase2TrackerDigi_Phase2ITDigiHit_H + +class Phase2ITDigiHit { +private: + int row_; // Hit position row + int col_; // Hit position column + int adc_; // Hit position adc + +public: + Phase2ITDigiHit(int row_num, int col_num, int adc_num); + + void set_row(int row) { row_ = row; } + void set_col(int col) { col_ = col; } + + int row() const { return row_; } + int col() const { return col_; } + int adc() const { return adc_; } +}; + +#endif // DataFormats_Phase2TrackerDigi_Phase2ITDigiHit_H diff --git a/DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h b/DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h new file mode 100644 index 0000000000000..bdb829ac406db --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h @@ -0,0 +1,61 @@ +#ifndef DataFormats_Phase2TrackerDigi_Phase2ITQCore_H +#define DataFormats_Phase2TrackerDigi_Phase2ITQCore_H +#include + +class Phase2ITQCore { + // Collects hits and creates a quarter core (16 pixel positions) + +public: + Phase2ITQCore(int rocid, + int ccol_in, + int qcrow_in, + bool isneighbour_in, + bool islast_in, + const std::vector& adcs_in, + const std::vector& hits_in); + + Phase2ITQCore() { + rocid_ = -1; + islast_ = false; + isneighbour_ = false; + ccol_ = -1; + qcrow_ = -1; + } + + void setIsLast(bool islast) { islast_ = islast; } + bool islast() const { return islast_; } + + void setIsNeighbour(bool isneighbour) { isneighbour_ = isneighbour; } + + int rocid() const { return rocid_; } + int get_col() const { return ccol_; } + int get_row() const { return qcrow_; } + + std::vector getHitmap(); + std::vector getADCs(); + std::vector encodeQCore(bool is_new_col); + + const bool operator<(const Phase2ITQCore& other) { + if (ccol_ == other.ccol_) { + return (ccol_ < other.ccol_); + } else { + return (qcrow_ < other.qcrow_); + } + } + +private: + std::vector adcs_; // Full array of adc values in a quarter core + std::vector hits_; // Full array of hit occurrences + bool islast_; // RD53 chip encoding bits + bool isneighbour_; // RD53 chip encoding bits + int rocid_; // Chip index number + int ccol_; // QCore position column + int qcrow_; // QCore position row + + std::vector toRocCoordinates(std::vector& hitmap); + std::vector intToBinary(int num, int length); + bool containsHit(std::vector& hitmap); + std::vector getHitmapCode(std::vector hitmap); +}; + +#endif // DataFormats_Phase2TrackerDigi_Phase2ITQCore_H diff --git a/DataFormats/Phase2TrackerDigi/src/Phase2ITChip.cc b/DataFormats/Phase2TrackerDigi/src/Phase2ITChip.cc new file mode 100644 index 0000000000000..14fbcd79c84c2 --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/src/Phase2ITChip.cc @@ -0,0 +1,131 @@ +#include +#include +#include +#include +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITChip.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h" + +Phase2ITChip::Phase2ITChip(int rocnum, const std::vector hl) { + hitList_ = hl; + rocnum_ = rocnum; +} + +unsigned int Phase2ITChip::size() { return hitList_.size(); } + +//Returns the position (row,col) of the 4x4 QCores that contains a hit +std::pair Phase2ITChip::get_QCore_pos(Phase2ITDigiHit hit) { + int row = hit.row() / 4; + int col = hit.col() / 4; + return {row, col}; +} + +//Takes a hit and returns the 4x4 QCore that contains it +Phase2ITQCore Phase2ITChip::get_QCore_from_hit(Phase2ITDigiHit pixel) { + std::vector adcs(16, 0), hits(16, 0); + std::pair pos = get_QCore_pos(pixel); + + for (const auto& hit : hitList_) { + if (get_QCore_pos(hit) == pos) { + int i = (4 * (hit.row() % 4) + (hit.col() % 4) + 8) % 16; + adcs[i] = hit.adc(); + hits[i] = 1; + } + } + + Phase2ITQCore qcore(0, pos.second, pos.first, false, false, adcs, hits); + return qcore; +} + +//Removes duplicated Phase2ITQCores +std::vector Phase2ITChip::rem_duplicates(std::vector qcores) { + std::vector list = {}; + + size_t i = 0; + while (i < qcores.size()) { + for (size_t j = i + 1; j < qcores.size();) { + if (qcores[j].get_col() == qcores[i].get_col() && qcores[j].get_row() == qcores[i].get_row()) { + qcores.erase(qcores.begin() + j); + } else { + ++j; + } + } + list.push_back(qcores[i]); + ++i; + } + + return list; +} + +//Returns a list of the qcores with hits arranged by increasing column and then row numbers +std::vector Phase2ITChip::organize_QCores(std::vector qcores) { + std::vector organized_list = {}; + while (!qcores.empty()) { + int min = 0; + + for (size_t i = 1; i < qcores.size(); i++) { + if (qcores[i].get_col() < qcores[min].get_col()) { + min = i; + } else if (qcores[i].get_col() == qcores[min].get_col() && qcores[i].get_row() < qcores[min].get_row()) { + min = i; + } + } + + organized_list.push_back(qcores[min]); + qcores.erase(qcores.begin() + min); + } + + return organized_list; +} + +//Takes in an oranized list of Phase2ITQCores and sets the islast and isneighbor properties of those qcores +std::vector link_QCores(std::vector qcores) { + for (size_t i = 1; i < qcores.size(); i++) { + if (qcores[i].get_row() == qcores[i - 1].get_row()) { + qcores[i].setIsNeighbour(true); + } + } + + //.size() is unsigned. If size is zero size()-1 is a huge number hence this needs to be protected + if (!qcores.empty()) { + for (size_t i = 0; i < qcores.size() - 1; i++) { + if (qcores[i].get_col() != qcores[i + 1].get_col()) { + qcores[i].setIsLast(true); + } + } + qcores[qcores.size() - 1].setIsLast(true); + } + + return qcores; +} + +//Takes in a list of hits and organizes them into the 4x4 QCores that contains them +std::vector Phase2ITChip::get_organized_QCores() { + std::vector qcores = {}; + + qcores.reserve(hitList_.size()); + for (const auto& hit : hitList_) { + qcores.push_back(get_QCore_from_hit(hit)); + } + + return (link_QCores(organize_QCores(rem_duplicates(qcores)))); +} + +//Returns the encoding of the readout chip +std::vector Phase2ITChip::get_chip_code() { + std::vector code = {}; + + if (!hitList_.empty()) { + std::vector qcores = get_organized_QCores(); + bool is_new_col = true; + + for (auto& qcore : qcores) { + std::vector qcore_code = qcore.encodeQCore(is_new_col); + code.insert(code.end(), qcore_code.begin(), qcore_code.end()); + + is_new_col = qcore.islast(); + } + } + + return code; +} diff --git a/DataFormats/Phase2TrackerDigi/src/Phase2ITDigiHit.cc b/DataFormats/Phase2TrackerDigi/src/Phase2ITDigiHit.cc new file mode 100644 index 0000000000000..6c4497ff9350f --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/src/Phase2ITDigiHit.cc @@ -0,0 +1,8 @@ +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h" + +// Describes the 4x4=16 bit hitmap with its row and column numbers and the ADC values +Phase2ITDigiHit::Phase2ITDigiHit(int row_num, int col_num, int adc_num) { + row_ = row_num; + col_ = col_num; + adc_ = adc_num; +} diff --git a/DataFormats/Phase2TrackerDigi/src/Phase2ITQCore.cc b/DataFormats/Phase2TrackerDigi/src/Phase2ITQCore.cc new file mode 100644 index 0000000000000..2a6a9cdd21fa2 --- /dev/null +++ b/DataFormats/Phase2TrackerDigi/src/Phase2ITQCore.cc @@ -0,0 +1,164 @@ +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h" +#include +#include +#include + +//4x4 region of hits in sensor coordinates +Phase2ITQCore::Phase2ITQCore(int rocid, + int ccol_in, + int qcrow_in, + bool isneighbour_in, + bool islast_in, + const std::vector& adcs_in, + const std::vector& hits_in) { + rocid_ = rocid; + ccol_ = ccol_in; + qcrow_ = qcrow_in; + isneighbour_ = isneighbour_in; + islast_ = islast_in; + adcs_ = adcs_in; + hits_ = hits_in; +} + +//Takes a hitmap in sensor coordinates in 4x4 and converts it to readout chip coordinates with 2x8 +std::vector Phase2ITQCore::toRocCoordinates(std::vector& hitmap) { + std::vector ROC_hitmap(16, false); + + for (size_t i = 0; i < hitmap.size(); i++) { + int row = i / 4; + int col = i % 4; + int new_row; + int new_col; + + if (row % 2 == 0) { + new_row = row / 2; + new_col = 2 * col; + } else { + new_row = row / 2; + new_col = 2 * col + 1; + } + + int new_index = 8 * new_row + new_col; + ROC_hitmap[new_index] = hitmap[i]; + } + + return ROC_hitmap; +} + +//Returns the hitmap for the Phase2ITQCore in 4x4 sensor coordinates +std::vector Phase2ITQCore::getHitmap() { + std::vector hitmap = {}; + + hitmap.reserve(hits_.size()); + for (auto hit : hits_) { + hitmap.push_back(hit > 0); + } + + return (toRocCoordinates(hitmap)); +} + +std::vector Phase2ITQCore::getADCs() { + std::vector adcmap = {}; + + adcmap.reserve(adcs_.size()); + for (auto adc : adcs_) { + adcmap.push_back(adc); + } + + return adcmap; +} + +//Converts an integer into a binary, and formats it with the given length +std::vector Phase2ITQCore::intToBinary(int num, int length) { + std::vector bi_num(length, false); + + for (int i = 0; i < length; ++i) { + // Extract the (length - 1 - i)th bit from num + bi_num[i] = (num >> (length - 1 - i)) & 1; + } + + return bi_num; +} + +//Takes a hitmap and returns true if it contains any hits +bool Phase2ITQCore::containsHit(std::vector& hitmap) { + bool foundHit = false; + for (size_t i = 0; i < hitmap.size(); i++) { + if (hitmap[i]) { + foundHit = true; + break; + } + } + + return foundHit; +} + +//Returns the Huffman encoded hitmap, created iteratively within this function +std::vector Phase2ITQCore::getHitmapCode(std::vector hitmap) { + std::vector code = {}; + // If hitmap is a single bit, there is no need to further split the bits + if (hitmap.size() == 1) { + return code; + } + + std::vector left_hitmap = std::vector(hitmap.begin(), hitmap.begin() + hitmap.size() / 2); + std::vector right_hitmap = std::vector(hitmap.begin() + hitmap.size() / 2, hitmap.end()); + + bool hit_left = containsHit(left_hitmap); + bool hit_right = containsHit(right_hitmap); + + if (hit_left && hit_right) { + code.push_back(true); + code.push_back(true); + + std::vector left_code = getHitmapCode(left_hitmap); + std::vector right_code = getHitmapCode(right_hitmap); + + code.insert(code.end(), left_code.begin(), left_code.end()); + code.insert(code.end(), right_code.begin(), right_code.end()); + + } else if (hit_right) { + //Huffman encoding compresses 01 into 0 + code.push_back(false); + + std::vector right_code = getHitmapCode(right_hitmap); + code.insert(code.end(), right_code.begin(), right_code.end()); + + } else if (hit_left) { + code.push_back(true); + code.push_back(false); + + std::vector left_code = getHitmapCode(left_hitmap); + code.insert(code.end(), left_code.begin(), left_code.end()); + } + + return code; +} + +//Returns the bit code associated with the Phase2ITQCore +std::vector Phase2ITQCore::encodeQCore(bool is_new_col) { + std::vector code = {}; + + if (is_new_col) { + std::vector col_code = intToBinary(ccol_, 6); + code.insert(code.end(), col_code.begin(), col_code.end()); + } + + code.push_back(islast_); + code.push_back(isneighbour_); + + if (!isneighbour_) { + std::vector row_code = intToBinary(qcrow_, 8); + code.insert(code.end(), row_code.begin(), row_code.end()); + } + + std::vector hitmap_code = getHitmapCode(getHitmap()); + code.insert(code.end(), hitmap_code.begin(), hitmap_code.end()); + + for (auto adc : adcs_) { + std::vector adc_code = intToBinary(adc, 4); + code.insert(code.end(), adc_code.begin(), adc_code.end()); + } + + return code; +} diff --git a/DataFormats/Phase2TrackerDigi/src/classes.h b/DataFormats/Phase2TrackerDigi/src/classes.h index 7f6d6c995a67d..37bf4d4087960 100644 --- a/DataFormats/Phase2TrackerDigi/src/classes.h +++ b/DataFormats/Phase2TrackerDigi/src/classes.h @@ -2,6 +2,8 @@ #define PHASE2TRACKERDIGI_CLASSES_H #include "DataFormats/Phase2TrackerDigi/interface/Phase2TrackerDigi.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITChipBitStream.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h" #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/Common/interface/DetSetVector.h" #include "DataFormats/Common/interface/DetSetVectorNew.h" diff --git a/DataFormats/Phase2TrackerDigi/src/classes_def.xml b/DataFormats/Phase2TrackerDigi/src/classes_def.xml index 1738169b5f698..16e654356cc74 100644 --- a/DataFormats/Phase2TrackerDigi/src/classes_def.xml +++ b/DataFormats/Phase2TrackerDigi/src/classes_def.xml @@ -5,12 +5,20 @@ + + + + + + + + diff --git a/DataFormats/Portable/interface/PortableDeviceCollection.h b/DataFormats/Portable/interface/PortableDeviceCollection.h index 4634374cc2d22..8bbb98920db0d 100644 --- a/DataFormats/Portable/interface/PortableDeviceCollection.h +++ b/DataFormats/Portable/interface/PortableDeviceCollection.h @@ -7,9 +7,10 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" +#include "DataFormats/Portable/interface/PortableCollectionCommon.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "HeterogeneousCore/AlpakaInterface/interface/memory.h" -#include "DataFormats/Portable/interface/PortableCollectionCommon.h" // generic SoA-based product in device memory template >> @@ -24,7 +25,9 @@ class PortableDeviceCollection { using Buffer = cms::alpakatools::device_buffer; using ConstBuffer = cms::alpakatools::const_device_buffer; - PortableDeviceCollection() = default; + PortableDeviceCollection() = delete; + + explicit PortableDeviceCollection(edm::Uninitialized) noexcept {} PortableDeviceCollection(int32_t elements, TDev const& device) : buffer_{cms::alpakatools::make_device_buffer(device, Layout::computeDataSize(elements))}, @@ -144,7 +147,9 @@ class PortableDeviceMultiCollection { } public: - PortableDeviceMultiCollection() = default; + PortableDeviceMultiCollection() = delete; + + explicit PortableDeviceMultiCollection(edm::Uninitialized) noexcept {}; PortableDeviceMultiCollection(int32_t elements, TDev const& device) : buffer_{cms::alpakatools::make_device_buffer(device, Layout<>::computeDataSize(elements))}, diff --git a/DataFormats/Portable/interface/PortableDeviceObject.h b/DataFormats/Portable/interface/PortableDeviceObject.h index 9ae0dd529713b..a5ff924574ab4 100644 --- a/DataFormats/Portable/interface/PortableDeviceObject.h +++ b/DataFormats/Portable/interface/PortableDeviceObject.h @@ -7,6 +7,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "HeterogeneousCore/AlpakaInterface/interface/memory.h" @@ -21,7 +22,9 @@ class PortableDeviceObject { using Buffer = cms::alpakatools::device_buffer; using ConstBuffer = cms::alpakatools::const_device_buffer; - PortableDeviceObject() = default; + PortableDeviceObject() = delete; + + PortableDeviceObject(edm::Uninitialized) {} PortableDeviceObject(TDev const& device) // allocate global device memory diff --git a/DataFormats/Portable/interface/PortableHostCollection.h b/DataFormats/Portable/interface/PortableHostCollection.h index 647ddb8648281..581fe23d78988 100644 --- a/DataFormats/Portable/interface/PortableHostCollection.h +++ b/DataFormats/Portable/interface/PortableHostCollection.h @@ -6,10 +6,11 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" +#include "DataFormats/Portable/interface/PortableCollectionCommon.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "HeterogeneousCore/AlpakaInterface/interface/host.h" #include "HeterogeneousCore/AlpakaInterface/interface/memory.h" -#include "DataFormats/Portable/interface/PortableCollectionCommon.h" // generic SoA-based product in host memory template @@ -21,7 +22,9 @@ class PortableHostCollection { using Buffer = cms::alpakatools::host_buffer; using ConstBuffer = cms::alpakatools::const_host_buffer; - PortableHostCollection() = default; + PortableHostCollection() = delete; + + explicit PortableHostCollection(edm::Uninitialized) noexcept {}; PortableHostCollection(int32_t elements, alpaka_common::DevHost const& host) // allocate pageable host memory @@ -154,7 +157,9 @@ class PortableHostMultiCollection { } public: - PortableHostMultiCollection() = default; + PortableHostMultiCollection() = delete; + + explicit PortableHostMultiCollection(edm::Uninitialized) noexcept {}; PortableHostMultiCollection(int32_t elements, alpaka_common::DevHost const& host) // allocate pageable host memory diff --git a/DataFormats/Portable/interface/PortableHostObject.h b/DataFormats/Portable/interface/PortableHostObject.h index e120101fc1795..a2051a6ff2ab9 100644 --- a/DataFormats/Portable/interface/PortableHostObject.h +++ b/DataFormats/Portable/interface/PortableHostObject.h @@ -7,6 +7,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "HeterogeneousCore/AlpakaInterface/interface/host.h" #include "HeterogeneousCore/AlpakaInterface/interface/memory.h" @@ -19,14 +20,30 @@ class PortableHostObject { using Buffer = cms::alpakatools::host_buffer; using ConstBuffer = cms::alpakatools::const_host_buffer; - PortableHostObject() = default; + static_assert(std::is_trivially_destructible_v); + PortableHostObject() = delete; + + PortableHostObject(edm::Uninitialized) noexcept {} + + // Note that in contrast to the variadic template overload, this + // constructor does not initialize the contained object PortableHostObject(alpaka_common::DevHost const& host) // allocate pageable host memory : buffer_{cms::alpakatools::make_host_buffer()}, product_{buffer_->data()} { assert(reinterpret_cast(product_) % alignof(Product) == 0); } + template + PortableHostObject(alpaka_common::DevHost const& host, Args&&... args) + // allocate pageable host memory + : buffer_{cms::alpakatools::make_host_buffer()}, + product_{new(buffer_->data()) Product(std::forward(args)...)} { + assert(reinterpret_cast(product_) % alignof(Product) == 0); + } + + // Note that in contrast to the variadic template overload, this + // constructor does not initialize the contained object template >> PortableHostObject(TQueue const& queue) // allocate pinned host memory associated to the given work queue, accessible by the queue's device @@ -34,6 +51,14 @@ class PortableHostObject { assert(reinterpret_cast(product_) % alignof(Product) == 0); } + template >> + PortableHostObject(TQueue const& queue, Args&&... args) + // allocate pinned host memory associated to the given work queue, accessible by the queue's device + : buffer_{cms::alpakatools::make_host_buffer(queue)}, + product_{new(buffer_->data()) Product(std::forward(args)...)} { + assert(reinterpret_cast(product_) % alignof(Product) == 0); + } + // non-copyable PortableHostObject(PortableHostObject const&) = delete; PortableHostObject& operator=(PortableHostObject const&) = delete; diff --git a/DataFormats/Portable/test/test_catch2_portableObjectOnHost.cc b/DataFormats/Portable/test/test_catch2_portableObjectOnHost.cc index 698605b57f465..4afe56be3e322 100644 --- a/DataFormats/Portable/test/test_catch2_portableObjectOnHost.cc +++ b/DataFormats/Portable/test/test_catch2_portableObjectOnHost.cc @@ -14,10 +14,40 @@ namespace { // This test is currently mostly about the code compiling TEST_CASE("Use of PortableObject on host code", s_tag) { - PortableObject obj(cms::alpakatools::host()); - obj->a = 42; + static_assert(std::is_same_v, PortableHostObject>); - SECTION("Tests") { REQUIRE(obj->a == 42); } + SECTION("Initialize by setting members") { + SECTION("With device") { + PortableObject obj(cms::alpakatools::host()); + obj->a = 42; - static_assert(std::is_same_v, PortableHostObject>); + REQUIRE(obj->a == 42); + } + + SECTION("With queue") { + alpaka::QueueCpuBlocking queue(cms::alpakatools::host()); + + PortableObject obj(queue); + obj->a = 42; + + REQUIRE(obj->a == 42); + } + } + + SECTION("Initialize via constructor") { + SECTION("With device") { + PortableObject obj(cms::alpakatools::host(), Test{42, 3.14f}); + + REQUIRE(obj->a == 42); + REQUIRE(obj->b == 3.14f); + } + + SECTION("With queue") { + alpaka::QueueCpuBlocking queue(cms::alpakatools::host()); + PortableObject obj(queue, Test{42, 3.14f}); + + REQUIRE(obj->a == 42); + REQUIRE(obj->b == 3.14f); + } + } } diff --git a/DataFormats/Provenance/interface/CompactHash.h b/DataFormats/Provenance/interface/CompactHash.h new file mode 100644 index 0000000000000..7f9517d60a5b4 --- /dev/null +++ b/DataFormats/Provenance/interface/CompactHash.h @@ -0,0 +1,163 @@ +#ifndef DataFormats_Provenance_CompactHash_h +#define DataFormats_Provenance_CompactHash_h + +#include +#include +#include + +namespace cms { + class Digest; +} + +namespace edm { + + namespace detail { + // This string is the 16-byte, non-printable version. + std::array const& InvalidCompactHash(); + } // namespace detail + + namespace compact_hash_detail { + using value_type = std::array; + void toString_(std::string& result, value_type const& hash); + void toDigest_(cms::Digest& digest, value_type const& hash); + std::ostream& print_(std::ostream& os, value_type const& hash); + bool isValid_(value_type const& hash); + size_t smallHash_(value_type const& hash); + value_type fromHex_(std::string_view); + void throwIfIllFormed(std::string_view v); + } // namespace compact_hash_detail + + template + class CompactHash { + public: + typedef compact_hash_detail::value_type value_type; + + CompactHash(); + explicit CompactHash(value_type const& v); + explicit CompactHash(std::string_view v); + + CompactHash(CompactHash const&) = default; + CompactHash& operator=(CompactHash const& iRHS) = default; + + CompactHash(CompactHash&&) = default; + CompactHash& operator=(CompactHash&&) = default; + + void reset(); + + // For now, just check the most basic: a default constructed + // ParameterSetID is not valid. This is very crude: we are + // assuming that nobody created a ParameterSetID from an empty + // string, nor from any string that is not a valid string + // representation of an MD5 checksum. + bool isValid() const; + + bool operator<(CompactHash const& other) const; + bool operator>(CompactHash const& other) const; + bool operator==(CompactHash const& other) const; + bool operator!=(CompactHash const& other) const; + std::ostream& print(std::ostream& os) const; + void toString(std::string& result) const; + void toDigest(cms::Digest& digest) const; + + // Return the 16-byte (non-printable) string form. + value_type const& compactForm() const; + + ///returns a short hash which can be used with hashing containers + size_t smallHash() const; + + //Used by ROOT storage + // CMS_CLASS_VERSION(3) // This macro is not defined here, so expand it. + static short Class_Version() { return 3; } + + private: + template + bool compareUsing(CompactHash const& iOther, Op op) const { + return op(this->hash_, iOther.hash_); + } + + value_type hash_; + }; + + //-------------------------------------------------------------------- + // + // Implementation details follow... + //-------------------------------------------------------------------- + + template + inline CompactHash::CompactHash() : hash_(detail::InvalidCompactHash()) {} + + template + inline CompactHash::CompactHash(value_type const& v) : hash_(v) {} + + template + inline CompactHash::CompactHash(std::string_view v) { + if (v.size() == 32) { + hash_ = compact_hash_detail::fromHex_(v); + } else { + compact_hash_detail::throwIfIllFormed(v); + std::copy(v.begin(), v.end(), hash_.begin()); + } + } + + template + inline void CompactHash::reset() { + hash_ = detail::InvalidCompactHash(); + } + + template + inline bool CompactHash::isValid() const { + return compact_hash_detail::isValid_(hash_); + } + + template + inline bool CompactHash::operator<(CompactHash const& other) const { + return this->compareUsing(other, std::less()); + } + + template + inline bool CompactHash::operator>(CompactHash const& other) const { + return this->compareUsing(other, std::greater()); + } + + template + inline bool CompactHash::operator==(CompactHash const& other) const { + return this->compareUsing(other, std::equal_to()); + } + + template + inline bool CompactHash::operator!=(CompactHash const& other) const { + return this->compareUsing(other, std::not_equal_to()); + } + + template + inline std::ostream& CompactHash::print(std::ostream& os) const { + return compact_hash_detail::print_(os, hash_); + } + + template + inline void CompactHash::toString(std::string& result) const { + compact_hash_detail::toString_(result, hash_); + } + + template + inline void CompactHash::toDigest(cms::Digest& digest) const { + compact_hash_detail::toDigest_(digest, hash_); + } + + template + inline typename CompactHash::value_type const& CompactHash::compactForm() const { + return hash_; + } + + template + inline size_t CompactHash::smallHash() const { + return compact_hash_detail::smallHash_(hash_); + } + + template + inline std::ostream& operator<<(std::ostream& os, CompactHash const& h) { + return h.print(os); + } + +} // namespace edm +#endif diff --git a/DataFormats/Provenance/interface/ParentageID.h b/DataFormats/Provenance/interface/ParentageID.h index 4721d99b0525a..7d1b3e75a4f0f 100644 --- a/DataFormats/Provenance/interface/ParentageID.h +++ b/DataFormats/Provenance/interface/ParentageID.h @@ -2,10 +2,13 @@ #define DataFormats_Provenance_ParentageID_h #include "DataFormats/Provenance/interface/HashedTypes.h" +#include "DataFormats/Provenance/interface/CompactHash.h" #include "DataFormats/Provenance/interface/Hash.h" namespace edm { - typedef Hash ParentageID; -} + using ParentageID = CompactHash; + + using StoredParentageID = Hash; +} // namespace edm #endif diff --git a/DataFormats/Provenance/interface/ProductProvenance.h b/DataFormats/Provenance/interface/ProductProvenance.h index 585e392470f44..32eab1d5b0dac 100644 --- a/DataFormats/Provenance/interface/ProductProvenance.h +++ b/DataFormats/Provenance/interface/ProductProvenance.h @@ -39,8 +39,7 @@ namespace edm { ParentageID const& parentageID() const { return parentageID_; } Parentage const& parentage() const; - void set(ParentageID id) { parentageID_ = std::move(id); } - ParentageID moveParentageID() { return std::move(parentageID_); } + void set(ParentageID const& id) { parentageID_ = id; } private: BranchID branchID_; diff --git a/DataFormats/Provenance/interface/ProductProvenanceLookup.h b/DataFormats/Provenance/interface/ProductProvenanceLookup.h index 5b1311cad7cb9..8d820eff723a8 100644 --- a/DataFormats/Provenance/interface/ProductProvenanceLookup.h +++ b/DataFormats/Provenance/interface/ProductProvenanceLookup.h @@ -33,7 +33,7 @@ namespace edm { ProductProvenanceLookup& operator=(ProductProvenanceLookup const&) = delete; ProductProvenance const* branchIDToProvenance(BranchID const& bid) const; - void insertIntoSet(ProductProvenance provenanceProduct) const; + void insertIntoSet(ProductProvenance const& provenanceProduct) const; ProductProvenance const* branchIDToProvenanceForProducedOnly(BranchID const& bid) const; void update(edm::ProductRegistry const&); @@ -78,8 +78,8 @@ namespace edm { bool isParentageSet() const noexcept { return isParentageSet_.load(std::memory_order_acquire); } - void threadsafe_set(ParentageID id) const { - provenance_.set(std::move(id)); + void threadsafe_set(ParentageID const& id) const { + provenance_.set(id); isParentageSet_.store(true, std::memory_order_release); } diff --git a/DataFormats/Provenance/src/BranchID.cc b/DataFormats/Provenance/src/BranchID.cc index 6eec549663ac4..b7fc4a26857a5 100644 --- a/DataFormats/Provenance/src/BranchID.cc +++ b/DataFormats/Provenance/src/BranchID.cc @@ -1,13 +1,10 @@ #include "DataFormats/Provenance/interface/BranchID.h" -#include "FWCore/Utilities/interface/CRC32Calculator.h" +#include "FWCore/Utilities/interface/calculateCRC32.h" #include namespace edm { - BranchID::value_type BranchID::toID(std::string const& branchName) { - cms::CRC32Calculator crc32(branchName); - return crc32.checksum(); - } + BranchID::value_type BranchID::toID(std::string const& branchName) { return cms::calculateCRC32(branchName); } std::ostream& operator<<(std::ostream& os, BranchID const& id) { os << id.id(); diff --git a/DataFormats/Provenance/src/CompactHash.cc b/DataFormats/Provenance/src/CompactHash.cc new file mode 100644 index 0000000000000..593544069a1b8 --- /dev/null +++ b/DataFormats/Provenance/src/CompactHash.cc @@ -0,0 +1,71 @@ +#include "DataFormats/Provenance/interface/CompactHash.h" +#include "FWCore/Utilities/interface/Algorithms.h" +#include "FWCore/Utilities/interface/Digest.h" +#include "FWCore/Utilities/interface/EDMException.h" + +#include +#include + +namespace { + std::array convert(std::string const& v) { + assert(v.size() == 16); + std::array retValue; + std::copy(v.begin(), v.end(), retValue.begin()); + return retValue; + } +} // namespace +namespace edm { + namespace detail { + // This string is the 16-byte, non-printable version. + std::array const& InvalidCompactHash() { + static std::array const invalid = convert(cms::MD5Result().compactForm()); + return invalid; + } + } // namespace detail + + namespace compact_hash_detail { + size_t smallHash_(value_type const& hash) { + //NOTE: In future we could try to xor the first 8bytes into the second 8bytes of the string to make the hash + std::hash h; + return h(std::string_view(reinterpret_cast(hash.data()), hash.size())); + } + + std::array fromHex_(std::string_view v) { + cms::MD5Result temp; + temp.fromHexifiedString(v); + auto hash = temp.compactForm(); + std::array ret; + std::copy(hash.begin(), hash.end(), ret.begin()); + return ret; + } + + bool isValid_(value_type const& hash) { return hash != detail::InvalidCompactHash(); } + + void throwIfIllFormed(std::string_view v) { + // Fixup not needed here. + if (v.size() != 16) { + throw Exception(errors::LogicError) << "Ill-formed CompactHash instance. " + << "A string_view of size " << v.size() << " passed to constructor."; + } + } + + void toString_(std::string& result, value_type const& hash) { + cms::MD5Result temp; + copy_all(hash, temp.bytes.begin()); + result += temp.toString(); + } + + void toDigest_(cms::Digest& digest, value_type const& hash) { + cms::MD5Result temp; + copy_all(hash, temp.bytes.begin()); + digest.append(temp.toString()); + } + + std::ostream& print_(std::ostream& os, value_type const& hash) { + cms::MD5Result temp; + copy_all(hash, temp.bytes.begin()); + os << temp.toString(); + return os; + } + } // namespace compact_hash_detail +} // namespace edm diff --git a/DataFormats/Provenance/src/Parentage.cc b/DataFormats/Provenance/src/Parentage.cc index 60e7b2bfc416b..43c3f5b7f1e81 100644 --- a/DataFormats/Provenance/src/Parentage.cc +++ b/DataFormats/Provenance/src/Parentage.cc @@ -1,7 +1,8 @@ #include "DataFormats/Provenance/interface/Parentage.h" #include "FWCore/Utilities/interface/Digest.h" -#include +#include #include +//#include /*---------------------------------------------------------------------- @@ -15,14 +16,17 @@ namespace edm { Parentage::Parentage(std::vector&& parents) : parents_(std::move(parents)) {} ParentageID Parentage::id() const { - std::ostringstream oss; + //10 is the maximum number of digits for a 2^32 number + std::array buf; + cms::Digest md5alg; for (auto const& parent : parents_) { - oss << parent << ' '; + //assert(start < end); + auto res = std::to_chars(buf.data(), buf.data() + buf.size(), parent.id()); + //assert(res.ec == std::errc()); + *res.ptr = ' '; + md5alg.append(buf.data(), res.ptr - buf.data() + 1); } - - std::string stringrep = oss.str(); - cms::Digest md5alg(stringrep); - ParentageID id(md5alg.digest().toString()); + ParentageID id(md5alg.digest().bytes); return id; } diff --git a/DataFormats/Provenance/src/ProductProvenance.cc b/DataFormats/Provenance/src/ProductProvenance.cc index 15f80680c8220..4a5d9a3dd4ea0 100644 --- a/DataFormats/Provenance/src/ProductProvenance.cc +++ b/DataFormats/Provenance/src/ProductProvenance.cc @@ -16,8 +16,7 @@ namespace edm { ProductProvenance::ProductProvenance(BranchID bid) : branchID_(bid), parentageID_() {} - ProductProvenance::ProductProvenance(BranchID bid, ParentageID edid) - : branchID_(bid), parentageID_(std::move(edid)) {} + ProductProvenance::ProductProvenance(BranchID bid, ParentageID edid) : branchID_(bid), parentageID_(edid) {} ProductProvenance::ProductProvenance(BranchID bid, std::vector const& parents) : branchID_(bid), parentageID_() { diff --git a/DataFormats/Provenance/src/ProductProvenanceLookup.cc b/DataFormats/Provenance/src/ProductProvenanceLookup.cc index 366406e509aad..78d598e03f4ab 100644 --- a/DataFormats/Provenance/src/ProductProvenanceLookup.cc +++ b/DataFormats/Provenance/src/ProductProvenanceLookup.cc @@ -39,7 +39,7 @@ namespace edm { setupEntryInfoSet(iReg); } - void ProductProvenanceLookup::insertIntoSet(ProductProvenance entryInfo) const { + void ProductProvenanceLookup::insertIntoSet(ProductProvenance const& entryInfo) const { //NOTE:do not read provenance here because we only need the full // provenance when someone tries to access it not when doing the insert // doing the delay saves 20% of time when doing an analysis job @@ -53,7 +53,7 @@ namespace edm { throw edm::Exception(edm::errors::LogicError) << "ProductProvenanceLookup::insertIntoSet passed a BranchID " << entryInfo.branchID().id() << " that has not been pre-registered"; } - itFound->threadsafe_set(entryInfo.moveParentageID()); + itFound->threadsafe_set(entryInfo.parentageID()); } ProductProvenance const* ProductProvenanceLookup::branchIDToProvenance(BranchID const& bid) const { diff --git a/DataFormats/Provenance/src/classes_def.xml b/DataFormats/Provenance/src/classes_def.xml index 0cd4c91e3409d..cdb733eff0e4a 100644 --- a/DataFormats/Provenance/src/classes_def.xml +++ b/DataFormats/Provenance/src/classes_def.xml @@ -73,7 +73,8 @@ - + + @@ -162,6 +163,7 @@ + @@ -259,5 +261,10 @@ newObj->initializeTransients(); ]]> + + (onfile.hash_); + ]]> + diff --git a/DataFormats/Provenance/test/BuildFile.xml b/DataFormats/Provenance/test/BuildFile.xml index d5cb05c7beeec..688b612b633ba 100644 --- a/DataFormats/Provenance/test/BuildFile.xml +++ b/DataFormats/Provenance/test/BuildFile.xml @@ -1,12 +1,15 @@ + - - + + + + diff --git a/DataFormats/Provenance/test/CompactHash_t.cpp b/DataFormats/Provenance/test/CompactHash_t.cpp new file mode 100644 index 0000000000000..5cef47f2a6a8e --- /dev/null +++ b/DataFormats/Provenance/test/CompactHash_t.cpp @@ -0,0 +1,35 @@ +#include "catch.hpp" + +#include "DataFormats/Provenance/interface/CompactHash.h" +#include "FWCore/Utilities/interface/Digest.h" + +namespace { + using TestHash = edm::CompactHash<100>; +} + +TEST_CASE("CompactHash", "[CompactHash]") { + SECTION("Default construction is invalid") { REQUIRE(TestHash{}.isValid() == false); } + + SECTION("Basic operations") { + cms::Digest d("foo"); + auto result = d.digest().bytes; + + TestHash id{result}; + REQUIRE(id.isValid() == true); + REQUIRE(id.compactForm() == result); + + TestHash id2 = id; + REQUIRE(id2.isValid() == true); + REQUIRE(id2.compactForm() == result); + + cms::Digest b("bar"); + auto diffResult = b.digest().bytes; + REQUIRE(id2 == TestHash{result}); + REQUIRE(id2 != TestHash{diffResult}); + + REQUIRE(id2 > TestHash{diffResult}); + REQUIRE(TestHash{diffResult} < id2); + + REQUIRE(not(id2 < id2)); + } +} diff --git a/DataFormats/Provenance/test/Parentage_t.cpp b/DataFormats/Provenance/test/Parentage_t.cpp index 347f4a8964efd..e65d3f2c7f1fd 100644 --- a/DataFormats/Provenance/test/Parentage_t.cpp +++ b/DataFormats/Provenance/test/Parentage_t.cpp @@ -32,4 +32,35 @@ TEST_CASE("test Parentage", "[Parentage]") { edm::ParentageID id4 = ed4.id(); CHECK(ed4 == ed2); CHECK(id4 == id2); + + SECTION("ParentageID unchanging") { + { + const std::string idString = "d41d8cd98f00b204e9800998ecf8427e"; + std::string toString; + id1.toString(toString); + CHECK(toString == idString); + } + + { + const std::string idString = "2e5751b7cfd7f053cd29e946fb2649a4"; + std::string toString; + id2.toString(toString); + CHECK(toString == idString); + } + { + const std::string idString = "20e13ca818af45e50e369e50db3914b8"; + std::string toString; + id3.toString(toString); + CHECK(toString == idString); + } + { + edm::Parentage ed_mult; + ed_mult.setParents(std::vector({edm::BranchID(1), edm::BranchID(2), edm::BranchID(3)})); + auto id_mult = ed_mult.id(); + const std::string idString = "6a5cf1697e50ec8e8dbe7a28ccad348b"; + std::string toString; + id_mult.toString(toString); + CHECK(toString == idString); + } + } } diff --git a/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersDevice.h b/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersDevice.h index 2593475bf5c3a..b613a736bc3a8 100644 --- a/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersDevice.h +++ b/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersDevice.h @@ -2,17 +2,20 @@ #define DataFormats_SiPixelClusterSoA_interface_SiPixelClustersDevice_h #include + #include -#include "HeterogeneousCore/AlpakaInterface/interface/config.h" -#include "DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h" + +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableDeviceCollection.h" +#include "DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h" #include "DataFormats/SiPixelClusterSoA/interface/SiPixelClustersSoA.h" #include "HeterogeneousCore/AlpakaInterface/interface/CopyToHost.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" template class SiPixelClustersDevice : public PortableDeviceCollection { public: - SiPixelClustersDevice() = default; + SiPixelClustersDevice(edm::Uninitialized) : PortableDeviceCollection{edm::kUninitialized} {} template explicit SiPixelClustersDevice(size_t maxModules, TQueue queue) diff --git a/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h b/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h index eb086160a6188..287c4b3d5319e 100644 --- a/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h +++ b/DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h @@ -2,16 +2,18 @@ #define DataFormats_SiPixelClusterSoA_interface_SiPixelClustersHost_h #include -#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableHostCollection.h" #include "DataFormats/SiPixelClusterSoA/interface/SiPixelClustersSoA.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" // TODO: The class is created via inheritance of the PortableCollection. // This is generally discouraged, and should be done via composition. // See: https://github.com/cms-sw/cmssw/pull/40465#discussion_r1067364306 class SiPixelClustersHost : public PortableHostCollection { public: - SiPixelClustersHost() = default; + SiPixelClustersHost(edm::Uninitialized) : PortableHostCollection{edm::kUninitialized} {} template explicit SiPixelClustersHost(size_t maxModules, TQueue queue) diff --git a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsDevice.h b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsDevice.h index 36c7d0be7e88a..fa87863dc7b16 100644 --- a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsDevice.h +++ b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsDevice.h @@ -5,6 +5,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableDeviceCollection.h" #include "DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsSoA.h" #include "DataFormats/SiPixelRawData/interface/SiPixelErrorCompact.h" @@ -14,7 +15,9 @@ template class SiPixelDigiErrorsDevice : public PortableDeviceCollection { public: - SiPixelDigiErrorsDevice() = default; + SiPixelDigiErrorsDevice(edm::Uninitialized) + : PortableDeviceCollection{edm::kUninitialized} {} + template explicit SiPixelDigiErrorsDevice(size_t maxFedWords, TQueue queue) : PortableDeviceCollection(maxFedWords, queue), maxFedWords_(maxFedWords) {} diff --git a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsHost.h b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsHost.h index ac706dea4b544..c8974156d29a3 100644 --- a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsHost.h +++ b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsHost.h @@ -5,6 +5,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableHostCollection.h" #include "DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsSoA.h" #include "DataFormats/SiPixelRawData/interface/SiPixelErrorCompact.h" @@ -13,7 +14,8 @@ class SiPixelDigiErrorsHost : public PortableHostCollection { public: - SiPixelDigiErrorsHost() = default; + SiPixelDigiErrorsHost(edm::Uninitialized) : PortableHostCollection{edm::kUninitialized} {} + template explicit SiPixelDigiErrorsHost(int maxFedWords, TQueue queue) : PortableHostCollection(maxFedWords, queue), maxFedWords_(maxFedWords) {} diff --git a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisDevice.h b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisDevice.h index da0914511c99b..081a8875051b6 100644 --- a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisDevice.h +++ b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisDevice.h @@ -5,6 +5,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableDeviceCollection.h" #include "DataFormats/SiPixelDigiSoA/interface/SiPixelDigisSoA.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" @@ -12,7 +13,8 @@ template class SiPixelDigisDevice : public PortableDeviceCollection { public: - SiPixelDigisDevice() = default; + SiPixelDigisDevice(edm::Uninitialized) : PortableDeviceCollection{edm::kUninitialized} {} + template explicit SiPixelDigisDevice(size_t maxFedWords, TQueue queue) : PortableDeviceCollection(maxFedWords + 1, queue) {} diff --git a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisHost.h b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisHost.h index 69633db9db28b..99b498fc5fe14 100644 --- a/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisHost.h +++ b/DataFormats/SiPixelDigiSoA/interface/SiPixelDigisHost.h @@ -1,6 +1,7 @@ #ifndef DataFormats_SiPixelDigiSoA_interface_SiPixelDigisHost_h #define DataFormats_SiPixelDigiSoA_interface_SiPixelDigisHost_h +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableHostCollection.h" #include "DataFormats/SiPixelDigiSoA/interface/SiPixelDigisSoA.h" @@ -9,7 +10,8 @@ // See: https://github.com/cms-sw/cmssw/pull/40465#discussion_r1067364306 class SiPixelDigisHost : public PortableHostCollection { public: - SiPixelDigisHost() = default; + SiPixelDigisHost(edm::Uninitialized) : PortableHostCollection{edm::kUninitialized} {} + template explicit SiPixelDigisHost(size_t maxFedWords, TQueue queue) : PortableHostCollection(maxFedWords + 1, queue) {} diff --git a/DataFormats/TestObjects/interface/ToyProducts.h b/DataFormats/TestObjects/interface/ToyProducts.h index 3c57475997fd8..084b15751c52a 100644 --- a/DataFormats/TestObjects/interface/ToyProducts.h +++ b/DataFormats/TestObjects/interface/ToyProducts.h @@ -12,6 +12,7 @@ Toy EDProducts for testing purposes only. #include "DataFormats/Common/interface/DetSetVectorNew.h" #include "DataFormats/Common/interface/OwnVector.h" #include "DataFormats/Common/interface/SortedCollection.h" +#include "DataFormats/Common/interface/Uninitialized.h" #include "FWCore/Utilities/interface/typedefs.h" #include @@ -48,6 +49,16 @@ namespace edmtest { cms_int32_t value; }; + struct MaybeUninitializedIntProduct { + explicit MaybeUninitializedIntProduct(edm::Uninitialized) {} + explicit MaybeUninitializedIntProduct(int i) : value(i) {} + ~MaybeUninitializedIntProduct() {} + + bool operator==(MaybeUninitializedIntProduct const& rhs) const { return value == rhs.value; } + + cms_int32_t value; + }; + struct UInt64Product { explicit UInt64Product(unsigned long long i = 0) : value(i) {} ~UInt64Product() {} diff --git a/DataFormats/TestObjects/src/classes_def.xml b/DataFormats/TestObjects/src/classes_def.xml index b1841449036b8..c963193dd8ada 100644 --- a/DataFormats/TestObjects/src/classes_def.xml +++ b/DataFormats/TestObjects/src/classes_def.xml @@ -6,6 +6,9 @@ + + + @@ -85,6 +88,7 @@ + diff --git a/DataFormats/TrackReco/src/HitPattern.cc b/DataFormats/TrackReco/src/HitPattern.cc index cdc722cc29679..17bc4d0eca57e 100644 --- a/DataFormats/TrackReco/src/HitPattern.cc +++ b/DataFormats/TrackReco/src/HitPattern.cc @@ -143,7 +143,7 @@ namespace { MTDDetId mtdid(id); switch (mtdid.mtdSubDetector()) { case MTDDetId::BTL: - layer = BTLDetId(id).globalRunit(); + layer = BTLDetId(id).runit(); break; case MTDDetId::ETL: layer = ETLDetId(id).mtdRR(); diff --git a/DataFormats/TrackSoA/interface/TracksDevice.h b/DataFormats/TrackSoA/interface/TracksDevice.h index dd2b25c8794be..7358859b8e397 100644 --- a/DataFormats/TrackSoA/interface/TracksDevice.h +++ b/DataFormats/TrackSoA/interface/TracksDevice.h @@ -2,10 +2,13 @@ #define DataFormats_Track_interface_TracksDevice_h #include + #include -#include "DataFormats/TrackSoA/interface/TracksSoA.h" -#include "DataFormats/TrackSoA/interface/TrackDefinitions.h" + +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableDeviceCollection.h" +#include "DataFormats/TrackSoA/interface/TrackDefinitions.h" +#include "DataFormats/TrackSoA/interface/TracksSoA.h" // TODO: The class is created via inheritance of the PortableCollection. // This is generally discouraged, and should be done via composition. @@ -14,7 +17,10 @@ template class TracksDevice : public PortableDeviceCollection, TDev> { public: static constexpr int32_t S = TrackerTraits::maxNumberOfTuples; //TODO: this could be made configurable at runtime - TracksDevice() = default; // necessary for ROOT dictionaries + + TracksDevice(edm::Uninitialized) + : PortableDeviceCollection, TDev>{edm::kUninitialized} { + } // necessary for ROOT dictionaries using PortableDeviceCollection, TDev>::view; using PortableDeviceCollection, TDev>::const_view; diff --git a/DataFormats/TrackSoA/interface/TracksHost.h b/DataFormats/TrackSoA/interface/TracksHost.h index a8f459eac066c..69b500b9672cd 100644 --- a/DataFormats/TrackSoA/interface/TracksHost.h +++ b/DataFormats/TrackSoA/interface/TracksHost.h @@ -2,11 +2,14 @@ #define DataFormats_Track_TracksHost_H #include + #include -#include "Geometry/CommonTopologies/interface/SimplePixelTopology.h" -#include "DataFormats/TrackSoA/interface/TracksSoA.h" -#include "DataFormats/TrackSoA/interface/TrackDefinitions.h" + +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "DataFormats/TrackSoA/interface/TrackDefinitions.h" +#include "DataFormats/TrackSoA/interface/TracksSoA.h" +#include "Geometry/CommonTopologies/interface/SimplePixelTopology.h" // TODO: The class is created via inheritance of the PortableHostCollection. // This is generally discouraged, and should be done via composition. @@ -15,7 +18,10 @@ template class TracksHost : public PortableHostCollection> { public: static constexpr int32_t S = TrackerTraits::maxNumberOfTuples; //TODO: this could be made configurable at runtime - TracksHost() = default; // Needed for the dictionary; not sure if line above is needed anymore + + TracksHost(edm::Uninitialized) + : PortableHostCollection>{edm::kUninitialized} { + } // necessary for ROOT dictionaries using PortableHostCollection>::view; using PortableHostCollection>::const_view; diff --git a/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsDevice.h b/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsDevice.h index e5b59e03d6ad7..885aba8f106a5 100644 --- a/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsDevice.h +++ b/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsDevice.h @@ -5,6 +5,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableDeviceCollection.h" #include "DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsHost.h" #include "DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsSoA.h" @@ -19,7 +20,8 @@ class TrackingRecHitDevice : public PortableDeviceCollection, TDev>::const_view; using PortableDeviceCollection, TDev>::buffer; - TrackingRecHitDevice() = default; + TrackingRecHitDevice(edm::Uninitialized) + : PortableDeviceCollection, TDev>{edm::kUninitialized} {} // Constructor which specifies the SoA size, number of BPIX1 hits, and the modules entry points template diff --git a/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsHost.h b/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsHost.h index e7212ce9a6252..1480236f9517b 100644 --- a/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsHost.h +++ b/DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsHost.h @@ -5,6 +5,7 @@ #include +#include "DataFormats/Common/interface/Uninitialized.h" #include "DataFormats/Portable/interface/PortableHostCollection.h" #include "DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsSoA.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" @@ -19,7 +20,8 @@ class TrackingRecHitHost : public PortableHostCollection>::const_view; using PortableHostCollection>::buffer; - TrackingRecHitHost() = default; + TrackingRecHitHost(edm::Uninitialized) + : PortableHostCollection>{edm::kUninitialized} {} // Constructor which specifies only the SoA size, to be used when copying the results from the device to the host template diff --git a/DataFormats/TrackingRecHitSoA/interface/alpaka/TrackingRecHitsSoACollection.h b/DataFormats/TrackingRecHitSoA/interface/alpaka/TrackingRecHitsSoACollection.h index 3374863ea1327..7c3fef745c669 100644 --- a/DataFormats/TrackingRecHitSoA/interface/alpaka/TrackingRecHitsSoACollection.h +++ b/DataFormats/TrackingRecHitSoA/interface/alpaka/TrackingRecHitsSoACollection.h @@ -51,8 +51,15 @@ namespace cms::alpakatools { assert(deviceData.nHits() == hostData.nHits()); assert(deviceData.offsetBPIX2() == hostData.offsetBPIX2()); #endif - // Update the contents address of the phiBinner histo container after the copy from device happened - alpaka::wait(queue); + return hostData; + } + + // Update the contents address of the phiBinner histo container after the copy from device happened + static void postCopy(TrackingRecHitHost& hostData) { + // Don't bother if zero hits + if (hostData.view().metadata().size() == 0) { + return; + } typename TrackingRecHitSoA::PhiBinnerView pbv; pbv.assoc = &(hostData.view().phiBinner()); pbv.offSize = -1; @@ -60,8 +67,6 @@ namespace cms::alpakatools { pbv.contentSize = hostData.nHits(); pbv.contentStorage = hostData.view().phiBinnerStorage(); hostData.view().phiBinner().initStorage(pbv); - - return hostData; } }; } // namespace cms::alpakatools diff --git a/DataFormats/TrackingRecHitSoA/test/alpaka/Hits_test.cc b/DataFormats/TrackingRecHitSoA/test/alpaka/Hits_test.cc index 14530349297c8..8f317cc2725f0 100644 --- a/DataFormats/TrackingRecHitSoA/test/alpaka/Hits_test.cc +++ b/DataFormats/TrackingRecHitSoA/test/alpaka/Hits_test.cc @@ -51,12 +51,16 @@ int main() { // requires c++23 to make cms::alpakatools::CopyToHost compile using if constexpr // see https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2593r0.html TrackingRecHitHost const& host_collection = tkhit; + // wait for the kernel to complete + alpaka::wait(queue); #else - TrackingRecHitHost host_collection = - cms::alpakatools::CopyToHost >::copyAsync(queue, tkhit); -#endif - // wait for the kernel and the potential copy to complete + using CopyT = cms::alpakatools::CopyToHost >; + TrackingRecHitHost host_collection = CopyT::copyAsync(queue, tkhit); + // wait for the kernel and the copy to complete alpaka::wait(queue); + CopyT::postCopy(host_collection); +#endif + assert(tkhit.nHits() == nHits); assert(tkhit.offsetBPIX2() == 22); // set in the kernel assert(tkhit.nHits() == host_collection.nHits()); diff --git a/DataFormats/VertexSoA/test/alpaka/ZVertexSoA_test.cc b/DataFormats/VertexSoA/test/alpaka/ZVertexSoA_test.cc index 79a2964c2db85..bd358d7c45c53 100644 --- a/DataFormats/VertexSoA/test/alpaka/ZVertexSoA_test.cc +++ b/DataFormats/VertexSoA/test/alpaka/ZVertexSoA_test.cc @@ -56,11 +56,10 @@ int main() { // If the device is actually the host, use the collection as-is. // Otherwise, copy the data from the device to the host. - ZVertexHost zvertex_h; #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED - zvertex_h = std::move(zvertex_d); + ZVertexHost zvertex_h = std::move(zvertex_d); #else - zvertex_h = cms::alpakatools::CopyToHost::copyAsync(queue, zvertex_d); + ZVertexHost zvertex_h = cms::alpakatools::CopyToHost::copyAsync(queue, zvertex_d); #endif alpaka::wait(queue); std::cout << zvertex_h.view().metadata().size() << std::endl; diff --git a/DetectorDescription/Core/src/DDValue.cc b/DetectorDescription/Core/src/DDValue.cc index 4294afac68dce..0fc363987bfcc 100644 --- a/DetectorDescription/Core/src/DDValue.cc +++ b/DetectorDescription/Core/src/DDValue.cc @@ -5,6 +5,7 @@ #include "DetectorDescription/Core/interface/DDComparator.h" #include +#include #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/Utilities/interface/Exception.h" @@ -49,7 +50,7 @@ DDValue::DDValue(const std::string& name, const std::vector& v) : i auto it = v.begin(); std::vector svec; std::vector dvec; - vecPair_.reset(new vecpair_type(false, std::make_pair(svec, dvec))); + vecPair_ = std::make_shared(false, std::make_pair(svec, dvec)); for (; it != v.end(); ++it) { vecPair_->second.first.emplace_back(it->first); vecPair_->second.second.emplace_back(it->second); @@ -62,7 +63,7 @@ DDValue::DDValue(const std::string& name, double val) : id_(0) { std::vector svec(1, ""); std::vector dvec(1, val); - vecPair_.reset(new vecpair_type(false, std::make_pair(svec, dvec))); + vecPair_ = std::make_shared(false, std::make_pair(svec, dvec)); setEvalState(true); } @@ -71,7 +72,7 @@ DDValue::DDValue(const std::string& name, const std::string& sval, double dval) std::vector svec(1, sval); std::vector dvec(1, dval); - vecPair_.reset(new vecpair_type(false, std::make_pair(svec, dvec))); + vecPair_ = std::make_shared(false, std::make_pair(svec, dvec)); setEvalState(true); } @@ -80,7 +81,7 @@ DDValue::DDValue(const std::string& name, const std::string& sval) : id_(0) { std::vector svec(1, sval); std::vector dvec(1, 0); - vecPair_.reset(new vecpair_type(false, std::make_pair(svec, dvec))); + vecPair_ = std::make_shared(false, std::make_pair(svec, dvec)); setEvalState(false); } diff --git a/DetectorDescription/DDCMS/test/DDFilteredView.find.cppunit.cc b/DetectorDescription/DDCMS/test/DDFilteredView.find.cppunit.cc index 124407bb42de7..74be43d5c7561 100644 --- a/DetectorDescription/DDCMS/test/DDFilteredView.find.cppunit.cc +++ b/DetectorDescription/DDCMS/test/DDFilteredView.find.cppunit.cc @@ -70,8 +70,8 @@ void testDDFilteredViewFind::checkFilteredView() { double radLength = fview.getNextValue("TrackerRadLength"); std::cout << radLength << "\n"; double xi = fview.getNextValue("TrackerXi"); - CPPUNIT_ASSERT(abs(radLength - refRadLength_) < 10e-6); - CPPUNIT_ASSERT(abs(xi - refXi_) < 10e-6); + CPPUNIT_ASSERT(std::abs(radLength - refRadLength_) < 10e-6); + CPPUNIT_ASSERT(std::abs(xi - refXi_) < 10e-6); std::cout << "TrackerRadLength = " << radLength << "\nTrackerXi = " << xi << "\n"; diff --git a/DetectorDescription/DDCMS/test/DDFilteredView.get.cppunit.cc b/DetectorDescription/DDCMS/test/DDFilteredView.get.cppunit.cc index 6e95b8cb03cb3..1c34c4efda29b 100644 --- a/DetectorDescription/DDCMS/test/DDFilteredView.get.cppunit.cc +++ b/DetectorDescription/DDCMS/test/DDFilteredView.get.cppunit.cc @@ -69,8 +69,8 @@ void testDDFilteredViewGet::checkFilteredView() { double radLength = fview.getNextValue("TrackerRadLength"); double xi = fview.getNextValue("TrackerXi"); - CPPUNIT_ASSERT(abs(radLength - refRadLength_) < 10e-6); - CPPUNIT_ASSERT(abs(xi - refXi_) < 10e-6); + CPPUNIT_ASSERT(std::abs(radLength - refRadLength_) < 10e-6); + CPPUNIT_ASSERT(std::abs(xi - refXi_) < 10e-6); std::cout << "TrackerRadLength = " << radLength << "\nTrackerXi = " << xi << "\n"; auto vals = fview.getValuesNS("TrackerRadLength"); diff --git a/DetectorDescription/DDCMS/test/DDFilteredView.goto.cppunit.cc b/DetectorDescription/DDCMS/test/DDFilteredView.goto.cppunit.cc index b97695b18ffe7..fea657984f584 100644 --- a/DetectorDescription/DDCMS/test/DDFilteredView.goto.cppunit.cc +++ b/DetectorDescription/DDCMS/test/DDFilteredView.goto.cppunit.cc @@ -65,8 +65,8 @@ void testDDFilteredViewGoTo::checkFilteredView() { double radLength = fview.get("TrackerRadLength"); double xi = fview.getNextValue("TrackerXi"); - CPPUNIT_ASSERT(abs(radLength - refRadLength_) < 10e-6); - CPPUNIT_ASSERT(abs(xi - refXi_) < 10e-6); + CPPUNIT_ASSERT(std::abs(radLength - refRadLength_) < 10e-6); + CPPUNIT_ASSERT(std::abs(xi - refXi_) < 10e-6); std::cout << "TrackerRadLength = " << radLength << "\nTrackerXi = " << xi << "\n"; diff --git a/DetectorDescription/Parser/src/DDLParser.cc b/DetectorDescription/Parser/src/DDLParser.cc index 5a485742c1592..5e00dc871a978 100644 --- a/DetectorDescription/Parser/src/DDLParser.cc +++ b/DetectorDescription/Parser/src/DDLParser.cc @@ -80,7 +80,7 @@ bool DDLParser::isParsed(const std::string& filename) { bool DDLParser::parseOneFile(const std::string& fullname) { std::string filename = extractFileName(fullname); edm::FileInPath fp(fullname); - std::string absoluteFileName = fp.fullPath(); + const std::string& absoluteFileName = fp.fullPath(); size_t foundFile = isFound(filename); if (!foundFile) { pair pss; diff --git a/Documentation/DataFormats/python/dataformats.py b/Documentation/DataFormats/python/dataformats.py index 3fe6fa7628a51..2978092e3d68a 100755 --- a/Documentation/DataFormats/python/dataformats.py +++ b/Documentation/DataFormats/python/dataformats.py @@ -1,4 +1,3 @@ -from __future__ import print_function import cStringIO,operator from functools import reduce diff --git a/Documentation/ReferenceManualScripts/python/MainPageGenerator.py b/Documentation/ReferenceManualScripts/python/MainPageGenerator.py index 3fad773f49dc8..87b4aa0845dcb 100644 --- a/Documentation/ReferenceManualScripts/python/MainPageGenerator.py +++ b/Documentation/ReferenceManualScripts/python/MainPageGenerator.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import json, urllib2, os, sys from bs4 import BeautifulSoup diff --git a/Documentation/ReferenceManualScripts/python/TableParser.py b/Documentation/ReferenceManualScripts/python/TableParser.py index 1d64a6080b0b8..3e88af836680a 100644 --- a/Documentation/ReferenceManualScripts/python/TableParser.py +++ b/Documentation/ReferenceManualScripts/python/TableParser.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import # email: cmsdoxy@cern.ch, ali.mehmet.altundag@cern.ch # please have a look at the namespaces.html (namespace list) and annotated.html diff --git a/EventFilter/CSCRawToDigi/test/testCSCDigi2Raw_cfg.py b/EventFilter/CSCRawToDigi/test/testCSCDigi2Raw_cfg.py index a48b6ad29930a..5df038cbaaec1 100644 --- a/EventFilter/CSCRawToDigi/test/testCSCDigi2Raw_cfg.py +++ b/EventFilter/CSCRawToDigi/test/testCSCDigi2Raw_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing diff --git a/EventFilter/CSCTFRawToDigi/plugins/CSCTFPacker.cc b/EventFilter/CSCTFRawToDigi/plugins/CSCTFPacker.cc index edc65539eee02..5e92d834de8d8 100644 --- a/EventFilter/CSCTFRawToDigi/plugins/CSCTFPacker.cc +++ b/EventFilter/CSCTFRawToDigi/plugins/CSCTFPacker.cc @@ -75,7 +75,7 @@ CSCTFPacker::CSCTFPacker(const edm::ParameterSet& conf) : edm::one::EDProducer<> swapME1strips = conf.getParameter("swapME1strips"); file = nullptr; - if (outputFile.length() && (file = fopen(outputFile.c_str(), "wt")) == nullptr) + if (!outputFile.empty() && (file = fopen(outputFile.c_str(), "wt")) == nullptr) throw cms::Exception("OutputFile ") << "CSCTFPacker: cannot open output file (errno=" << errno << "). Try outputFile=\"\""; diff --git a/EventFilter/CSCTFRawToDigi/plugins/CSCTFUnpacker.cc b/EventFilter/CSCTFRawToDigi/plugins/CSCTFUnpacker.cc index 8bfff33e07542..6cbc3d5189ca3 100644 --- a/EventFilter/CSCTFRawToDigi/plugins/CSCTFUnpacker.cc +++ b/EventFilter/CSCTFRawToDigi/plugins/CSCTFUnpacker.cc @@ -94,7 +94,7 @@ CSCTFUnpacker::CSCTFUnpacker(const edm::ParameterSet& pset) : edm::stream::EDPro // As we use standard CSC digi containers, we have to initialize mapping: std::string mappingFile = pset.getParameter("mappingFile"); - if (mappingFile.length()) { + if (!mappingFile.empty()) { LogDebug("CSCTFUnpacker|ctor") << "Define ``mapping'' only if you want to screw up real geometry"; mapping = new CSCTriggerMappingFromFile(mappingFile); } else { diff --git a/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.cc b/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.cc index 3fe42c886bba6..91b307a3f3b3d 100644 --- a/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.cc +++ b/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.cc @@ -41,7 +41,12 @@ DTuROSRawToDigi::DTuROSRawToDigi(const edm::ParameterSet& pset) { mapping_token_ = esConsumes(); } -DTuROSRawToDigi::~DTuROSRawToDigi() {} +void DTuROSRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("inputLabel", edm::InputTag("rawDataCollector")); + desc.addUntracked("debug", false); + descriptions.addWithDefaultLabel(desc); +} void DTuROSRawToDigi::produce(edm::Event& e, const edm::EventSetup& c) { DTDigiCollection digis; diff --git a/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.h b/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.h index 54d42c906a7d7..9ed3feb6eae07 100644 --- a/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.h +++ b/EventFilter/DTRawToDigi/plugins/DTuROSRawToDigi.h @@ -14,22 +14,23 @@ #ifndef DTRawToDigi_DTuROSRawToDigi_h #define DTRawToDigi_DTuROSRawToDigi_h -#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "CondFormats/DTObjects/interface/DTReadOutMapping.h" +#include "CondFormats/DataRecord/interface/DTReadOutMappingRcd.h" #include "DataFormats/Common/interface/Handle.h" +#include "DataFormats/DTDigi/interface/DTDigiCollection.h" +#include "DataFormats/FEDRawData/interface/FEDNumbering.h" +#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" +#include "DataFormats/MuonDetId/interface/DTLayerId.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" #include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Utilities/interface/ESGetToken.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" -#include "DataFormats/DTDigi/interface/DTDigiCollection.h" -#include "DataFormats/MuonDetId/interface/DTLayerId.h" -#include "CondFormats/DTObjects/interface/DTReadOutMapping.h" -#include "CondFormats/DataRecord/interface/DTReadOutMappingRcd.h" - -#include -#include -#include -#include -#include +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/ESGetToken.h" +#include "FWCore/Utilities/interface/InputTag.h" #include @@ -42,7 +43,7 @@ class DTuROSRawToDigi : public edm::stream::EDProducer<> { DTuROSRawToDigi(const edm::ParameterSet& pset); /// Destructor - ~DTuROSRawToDigi() override; + ~DTuROSRawToDigi() override = default; /// Produce digis out of raw data void produce(edm::Event& e, const edm::EventSetup& c) override; @@ -50,6 +51,8 @@ class DTuROSRawToDigi : public edm::stream::EDProducer<> { /// Generate and fill FED raw data for a full event bool fillRawData(edm::Event& e, const edm::EventSetup& c, DTDigiCollection& digis, std::vector& words); + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: edm::InputTag DTuROSInputTag_; diff --git a/EventFilter/DTRawToDigi/python/dturosunpacker_cfi.py b/EventFilter/DTRawToDigi/python/dturosunpacker_cfi.py index c15e27cf86fdc..dc19ddbdc306d 100644 --- a/EventFilter/DTRawToDigi/python/dturosunpacker_cfi.py +++ b/EventFilter/DTRawToDigi/python/dturosunpacker_cfi.py @@ -1,6 +1,4 @@ import FWCore.ParameterSet.Config as cms -dturosunpacker = cms.EDProducer("DTuROSRawToDigi", - inputLabel = cms.InputTag("rawDataCollector"), - debug = cms.untracked.bool(False), - ) +from EventFilter.DTRawToDigi.dTuROSRawToDigi_cfi import dTuROSRawToDigi as _dTuROSRawToDigi +dturosunpacker = _dTuROSRawToDigi.clone() diff --git a/EventFilter/EcalRawToDigi/python/ecalDigis_cff.py b/EventFilter/EcalRawToDigi/python/ecalDigis_cff.py index 0710a87569343..51c5951230a0d 100644 --- a/EventFilter/EcalRawToDigi/python/ecalDigis_cff.py +++ b/EventFilter/EcalRawToDigi/python/ecalDigis_cff.py @@ -76,3 +76,9 @@ # copy the ECAL digis from GPU to CPU (if needed) and convert them from SoA to legacy format ecalDigis )) + +# for alpaka validation compare the legacy CPU module with the alpaka module +from Configuration.ProcessModifiers.alpakaValidationEcal_cff import alpakaValidationEcal +alpakaValidationEcal.toModify(ecalDigis, cpu = ecalDigisCPU) +alpakaValidationEcal.toModify(ecalDigis, cuda = _ecalDigisFromPortable.clone()) + diff --git a/EventFilter/HcalRawToDigi/plugins/alpaka/HcalDigisSoAProducer.cc b/EventFilter/HcalRawToDigi/plugins/alpaka/HcalDigisSoAProducer.cc index 3299b01a41ecf..ae10b24a32b86 100644 --- a/EventFilter/HcalRawToDigi/plugins/alpaka/HcalDigisSoAProducer.cc +++ b/EventFilter/HcalRawToDigi/plugins/alpaka/HcalDigisSoAProducer.cc @@ -116,8 +116,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { event.emplace(digisF5HBToken_, std::move(df5_)); if (qie11Digis.empty()) { - event.emplace(digisF01HEToken_); - event.emplace(digisF3HBToken_); + event.emplace(digisF01HEToken_, 0, event.queue()); + event.emplace(digisF3HBToken_, 0, event.queue()); } else { auto size_f1 = 0; diff --git a/EventFilter/HcalRawToDigi/test/GetBadEvents.py b/EventFilter/HcalRawToDigi/test/GetBadEvents.py index 8ecd705ce3931..7cf6ca1718c59 100755 --- a/EventFilter/HcalRawToDigi/test/GetBadEvents.py +++ b/EventFilter/HcalRawToDigi/test/GetBadEvents.py @@ -5,7 +5,6 @@ Jeff Temple Oct. 19, 2012 ''' -from __future__ import print_function import sys,os,string from optparse import OptionParser diff --git a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmPacker_cfg.py b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmPacker_cfg.py index 024f9c76243e2..23d3b49405f55 100644 --- a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmPacker_cfg.py +++ b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmPacker_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to pack a GT EVM record # diff --git a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmUnpacker_cfg.py b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmUnpacker_cfg.py index 237ad70e630a0..c23375b0ec786 100644 --- a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmUnpacker_cfg.py +++ b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtEvmUnpacker_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to unpack RAW L1 GT EVM data diff --git a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtPacker_cfg.py b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtPacker_cfg.py index bdeef91898434..9e3729be89852 100644 --- a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtPacker_cfg.py +++ b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtPacker_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to pack a GT DAQ record # diff --git a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtRecord_cfg.py b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtRecord_cfg.py index f48d8a439e0f0..2c80cd3888c99 100644 --- a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtRecord_cfg.py +++ b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtRecord_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to produce L1GlobalTriggerRecord from a L1GlobalTriggerReadoutRecord # when running on RAW data, one also unpack the data diff --git a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtTriggerMenuLite_cfg.py b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtTriggerMenuLite_cfg.py index c41569677f0aa..51ca8befcc753 100644 --- a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtTriggerMenuLite_cfg.py +++ b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtTriggerMenuLite_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run the L1GtTriggerMenuLite producer # with the options set in UserOptions_cff.py diff --git a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtUnpacker_cfg.py b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtUnpacker_cfg.py index 1a5622d5ccbd5..8d8404b0884e6 100644 --- a/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtUnpacker_cfg.py +++ b/EventFilter/L1GlobalTriggerRawToDigi/test/L1GtUnpacker_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to unpack RAW L1 GT DAQ data # the options set in "user choices" file diff --git a/EventFilter/L1TRawToDigi/interface/AMC13Spec.h b/EventFilter/L1TRawToDigi/interface/AMC13Spec.h index cb77d7d1a46ca..3e3a37dccd60f 100644 --- a/EventFilter/L1TRawToDigi/interface/AMC13Spec.h +++ b/EventFilter/L1TRawToDigi/interface/AMC13Spec.h @@ -89,7 +89,7 @@ namespace amc13 { bool mtf7_mode = false); bool write(const edm::Event &ev, unsigned char *ptr, unsigned int skip, unsigned int size) const; - inline std::vector payload() const { return payload_; }; + inline const std::vector &payload() const { return payload_; }; private: Header header_; diff --git a/EventFilter/L1TRawToDigi/interface/AMCSpec.h b/EventFilter/L1TRawToDigi/interface/AMCSpec.h index 4b2206bfba9a7..2d1e22af44633 100644 --- a/EventFilter/L1TRawToDigi/interface/AMCSpec.h +++ b/EventFilter/L1TRawToDigi/interface/AMCSpec.h @@ -4,6 +4,7 @@ #include #include #include +#include namespace amc { static const unsigned int split_block_size = 0x1000; @@ -143,8 +144,11 @@ namespace amc { // cross-checks for data consistency. void finalize(unsigned int lv1, unsigned int bx, bool legacy_mc = false, bool mtf7_mode = false); - std::vector block(unsigned int id) const; - std::unique_ptr data(); + std::span block(unsigned int id) const; + std::span data() const { + // Remove 3 words: 2 for the header, 1 for the trailer + return payload_.empty() ? std::span() : std::span(payload_).subspan(2, size()); + }; BlockHeader blockHeader(unsigned int block = 0) const { return block_header_; }; Header header() const { return header_; }; Trailer trailer() const { return trailer_; }; diff --git a/EventFilter/L1TRawToDigi/interface/Block.h b/EventFilter/L1TRawToDigi/interface/Block.h index b91469d126368..607a2b76e5b1c 100644 --- a/EventFilter/L1TRawToDigi/interface/Block.h +++ b/EventFilter/L1TRawToDigi/interface/Block.h @@ -3,6 +3,7 @@ #include #include +#include #include "EventFilter/L1TRawToDigi/interface/AMCSpec.h" #include "DataFormats/L1Trigger/interface/BxBlock.h" @@ -109,7 +110,7 @@ namespace l1t { // header. Called by getBlock(), which also checks that data_ != // end_ before calling (assumes size of one 32 bit word). virtual BlockHeader getHeader() = 0; - virtual std::unique_ptr getBlock(); + virtual std::optional getBlock(); protected: const uint32_t* data_; @@ -132,7 +133,7 @@ namespace l1t { // Unused methods - we override getBlock() instead unsigned getHeaderSize() const override { return 0; }; BlockHeader getHeader() override { return BlockHeader(nullptr); }; - std::unique_ptr getBlock() override; + std::optional getBlock() override; private: // sizes in 16 bit words @@ -174,7 +175,7 @@ namespace l1t { CTP7Payload(const uint32_t* data, const uint32_t* end, amc::Header amcHeader); unsigned getHeaderSize() const override { return 2; }; BlockHeader getHeader() override; - std::unique_ptr getBlock() override; + std::optional getBlock() override; private: // FIXME check values diff --git a/EventFilter/L1TRawToDigi/plugins/L1TRawToDigi.cc b/EventFilter/L1TRawToDigi/plugins/L1TRawToDigi.cc index 49c0817b54483..b31a2309c7f2d 100644 --- a/EventFilter/L1TRawToDigi/plugins/L1TRawToDigi.cc +++ b/EventFilter/L1TRawToDigi/plugins/L1TRawToDigi.cc @@ -20,6 +20,7 @@ #include #include #include +#include // user include files #include "FWCore/Framework/interface/Frameworkfwd.h" @@ -128,8 +129,7 @@ namespace l1t { std::unique_ptr coll = prov_->getCollections(event); - edm::Handle feds; - event.getByToken(fedData_, feds); + edm::Handle feds = event.getHandle(fedData_); if (!feds.isValid()) { LogError("L1T") << "Cannot unpack: no FEDRawDataCollection found"; @@ -201,10 +201,10 @@ namespace l1t { continue; auto payload64 = amc.data(); - const uint32_t* start = (const uint32_t*)payload64.get(); + const uint32_t* start = reinterpret_cast(&payload64.front()); // Want to have payload size in 32 bit words, but AMC measures // it in 64 bit words → factor 2. - const uint32_t* end = start + (amc.size() * 2); + const uint32_t* end = start + (payload64.size() * 2); std::unique_ptr payload; if (ctp7_mode_) { @@ -232,9 +232,9 @@ namespace l1t { auto unpackers = prov_->getUnpackers(fedId, board, amc_no, fw); - // getBlock() returns a non-null unique_ptr on success - std::unique_ptr block; - while ((block = payload->getBlock()).get()) { + // getBlock() returns a non-null optional on success + std::optional block; + while ((block = payload->getBlock())) { // only unpack the Calo Layer 2 MP TMT node if it has processed this BX unsigned tmtId = board - l1t::stage2::layer2::mp::offsetBoardId + 1; unsigned bxId = header.bxID(); diff --git a/EventFilter/L1TRawToDigi/plugins/OmtfUnpacker.cc b/EventFilter/L1TRawToDigi/plugins/OmtfUnpacker.cc index c872db2d4aa72..f98c19ec7d1f5 100644 --- a/EventFilter/L1TRawToDigi/plugins/OmtfUnpacker.cc +++ b/EventFilter/L1TRawToDigi/plugins/OmtfUnpacker.cc @@ -309,8 +309,7 @@ namespace omtf { // AMC trailer // //amc::Trailer trailerAmc = amc.trailer(); //this is the expected way but does not work - amc::Trailer trailerAmc(amc.data().get() + amc.size() - - 1); //FIXME: the above is prefered but this works (CMSSW900) + amc::Trailer trailerAmc(&amc.data().back()); //FIXME: the above is prefered but this works (CMSSW900) if (debug) { std::ostringstream str; str << " AMC trailer: " << std::bitset<64>(trailerAmc.raw()) << std::endl; @@ -323,7 +322,7 @@ namespace omtf { // AMC payload // const auto& payload64 = amc.data(); - const Word64* word = payload64.get(); + const Word64* word = &payload64.front(); for (unsigned int iWord = 1; iWord <= amc.size(); iWord++, word++) { if (iWord <= 2) continue; // two header words for each AMC diff --git a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.cc b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.cc index 8f998e86820a7..95b993ce8d9c7 100644 --- a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.cc +++ b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.cc @@ -7,23 +7,25 @@ namespace l1t { namespace stage2 { GMTCollections::~GMTCollections() { - event_.put(std::move(regionalMuonCandsBMTF_), "BMTF"); - event_.put(std::move(regionalMuonCandsOMTF_), "OMTF"); - event_.put(std::move(regionalMuonCandsEMTF_), "EMTF"); - event_.put(std::move(muons_[0]), "Muon"); + event_.emplace(tokens_.bmtf_, std::move(regionalMuonCandsBMTF_)); + event_.emplace(tokens_.omtf_, std::move(regionalMuonCandsOMTF_)); + event_.emplace(tokens_.emtf_, std::move(regionalMuonCandsEMTF_)); + event_.emplace(tokens_.muon_, std::move(muons_[0])); + assert(NUM_OUTPUT_COPIES == tokens_.muonCopies_.size()); for (size_t i = 1; i < NUM_OUTPUT_COPIES; ++i) { - event_.put(std::move(muons_[i]), "MuonCopy" + std::to_string(i)); + event_.emplace(tokens_.muonCopies_[i], std::move(muons_[i])); } - event_.put(std::move(imdMuonsBMTF_), "imdMuonsBMTF"); - event_.put(std::move(imdMuonsEMTFNeg_), "imdMuonsEMTFNeg"); - event_.put(std::move(imdMuonsEMTFPos_), "imdMuonsEMTFPos"); - event_.put(std::move(imdMuonsOMTFNeg_), "imdMuonsOMTFNeg"); - event_.put(std::move(imdMuonsOMTFPos_), "imdMuonsOMTFPos"); + event_.emplace(tokens_.imdMuonsBMTF_, std::move(imdMuonsBMTF_)); + event_.emplace(tokens_.imdMuonsEMTFNeg_, std::move(imdMuonsEMTFNeg_)); + event_.emplace(tokens_.imdMuonsEMTFPos_, std::move(imdMuonsEMTFPos_)); + event_.emplace(tokens_.imdMuonsOMTFNeg_, std::move(imdMuonsOMTFNeg_)); + event_.emplace(tokens_.imdMuonsOMTFPos_, std::move(imdMuonsOMTFPos_)); - event_.put(std::move(regionalMuonShowersEMTF_), "EMTF"); - event_.put(std::move(muonShowers_[0]), "MuonShower"); + event_.emplace(tokens_.showerEMTF_, std::move(regionalMuonShowersEMTF_)); + event_.emplace(tokens_.muonShower_, std::move(muonShowers_[0])); + assert(tokens_.muonShowerCopy_.size() == NUM_OUTPUT_COPIES); for (size_t i = 1; i < NUM_OUTPUT_COPIES; ++i) { - event_.put(std::move(muonShowers_[i]), "MuonShowerCopy" + std::to_string(i)); + event_.emplace(tokens_.muonShowerCopy_[i], std::move(muonShowers_[i])); } } } // namespace stage2 diff --git a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.h b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.h index a02b15d107cc7..a1fd5b87c4bb0 100644 --- a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.h +++ b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTCollections.h @@ -8,6 +8,7 @@ #include "DataFormats/L1Trigger/interface/MuonShower.h" #include "L1TObjectCollections.h" +#include "GMTPutTokens.h" #include @@ -19,61 +20,67 @@ namespace l1t { // fill a collection the BX range cannot be determined. // Set default values here to then create an empty collection // with a defined BX range. - GMTCollections( - edm::Event& e, const int iFirstBx = -2, const int iLastBx = 2, const int oFirstBx = -2, const int oLastBx = 2) + GMTCollections(edm::Event& e, + GMTPutTokens const& iTokens, + const int iFirstBx = -2, + const int iLastBx = 2, + const int oFirstBx = -2, + const int oLastBx = 2) : L1TObjectCollections(e), - regionalMuonCandsBMTF_(std::make_unique(0, iFirstBx, iLastBx)), - regionalMuonCandsOMTF_(std::make_unique(0, iFirstBx, iLastBx)), - regionalMuonCandsEMTF_(std::make_unique(0, iFirstBx, iLastBx)), - muons_(), - imdMuonsBMTF_(std::make_unique(0, oFirstBx, oLastBx)), - imdMuonsEMTFNeg_(std::make_unique(0, oFirstBx, oLastBx)), - imdMuonsEMTFPos_(std::make_unique(0, oFirstBx, oLastBx)), - imdMuonsOMTFNeg_(std::make_unique(0, oFirstBx, oLastBx)), - imdMuonsOMTFPos_(std::make_unique(0, oFirstBx, oLastBx)), - - regionalMuonShowersEMTF_(std::make_unique(0, iFirstBx, iLastBx)), - muonShowers_() { - std::generate(muons_.begin(), muons_.end(), [&oFirstBx, &oLastBx] { - return std::make_unique(0, oFirstBx, oLastBx); - }); - std::generate(muonShowers_.begin(), muonShowers_.end(), [&oFirstBx, &oLastBx] { - return std::make_unique(0, oFirstBx, oLastBx); - }); - }; + regionalMuonCandsBMTF_(0, iFirstBx, iLastBx), + regionalMuonCandsOMTF_(0, iFirstBx, iLastBx), + regionalMuonCandsEMTF_(0, iFirstBx, iLastBx), + muons_{{{0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}}}, + imdMuonsBMTF_(0, oFirstBx, oLastBx), + imdMuonsEMTFNeg_(0, oFirstBx, oLastBx), + imdMuonsEMTFPos_(0, oFirstBx, oLastBx), + imdMuonsOMTFNeg_(0, oFirstBx, oLastBx), + imdMuonsOMTFPos_(0, oFirstBx, oLastBx), + regionalMuonShowersEMTF_(0, iFirstBx, iLastBx), + muonShowers_{{{0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}, + {0, oFirstBx, oLastBx}}}, + tokens_(iTokens) {}; ~GMTCollections() override; - inline RegionalMuonCandBxCollection* getRegionalMuonCandsBMTF() { return regionalMuonCandsBMTF_.get(); }; - inline RegionalMuonCandBxCollection* getRegionalMuonCandsOMTF() { return regionalMuonCandsOMTF_.get(); }; - inline RegionalMuonCandBxCollection* getRegionalMuonCandsEMTF() { return regionalMuonCandsEMTF_.get(); }; - inline MuonBxCollection* getMuons(const unsigned int copy) override { return muons_[copy].get(); }; - inline MuonBxCollection* getImdMuonsBMTF() { return imdMuonsBMTF_.get(); }; - inline MuonBxCollection* getImdMuonsEMTFNeg() { return imdMuonsEMTFNeg_.get(); }; - inline MuonBxCollection* getImdMuonsEMTFPos() { return imdMuonsEMTFPos_.get(); }; - inline MuonBxCollection* getImdMuonsOMTFNeg() { return imdMuonsOMTFNeg_.get(); }; - inline MuonBxCollection* getImdMuonsOMTFPos() { return imdMuonsOMTFPos_.get(); }; + inline RegionalMuonCandBxCollection* getRegionalMuonCandsBMTF() { return ®ionalMuonCandsBMTF_; }; + inline RegionalMuonCandBxCollection* getRegionalMuonCandsOMTF() { return ®ionalMuonCandsOMTF_; }; + inline RegionalMuonCandBxCollection* getRegionalMuonCandsEMTF() { return ®ionalMuonCandsEMTF_; }; + inline MuonBxCollection* getMuons(const unsigned int copy) override { return &muons_[copy]; }; + inline MuonBxCollection* getImdMuonsBMTF() { return &imdMuonsBMTF_; }; + inline MuonBxCollection* getImdMuonsEMTFNeg() { return &imdMuonsEMTFNeg_; }; + inline MuonBxCollection* getImdMuonsEMTFPos() { return &imdMuonsEMTFPos_; }; + inline MuonBxCollection* getImdMuonsOMTFNeg() { return &imdMuonsOMTFNeg_; }; + inline MuonBxCollection* getImdMuonsOMTFPos() { return &imdMuonsOMTFPos_; }; - inline RegionalMuonShowerBxCollection* getRegionalMuonShowersEMTF() { return regionalMuonShowersEMTF_.get(); }; - inline MuonShowerBxCollection* getMuonShowers(const unsigned int copy) override { - return muonShowers_[copy].get(); - }; + inline RegionalMuonShowerBxCollection* getRegionalMuonShowersEMTF() { return ®ionalMuonShowersEMTF_; }; + inline MuonShowerBxCollection* getMuonShowers(const unsigned int copy) override { return &muonShowers_[copy]; }; static constexpr size_t NUM_OUTPUT_COPIES{6}; private: - std::unique_ptr regionalMuonCandsBMTF_; - std::unique_ptr regionalMuonCandsOMTF_; - std::unique_ptr regionalMuonCandsEMTF_; - std::array, 6> muons_; - std::unique_ptr imdMuonsBMTF_; - std::unique_ptr imdMuonsEMTFNeg_; - std::unique_ptr imdMuonsEMTFPos_; - std::unique_ptr imdMuonsOMTFNeg_; - std::unique_ptr imdMuonsOMTFPos_; + RegionalMuonCandBxCollection regionalMuonCandsBMTF_; + RegionalMuonCandBxCollection regionalMuonCandsOMTF_; + RegionalMuonCandBxCollection regionalMuonCandsEMTF_; + std::array muons_; + MuonBxCollection imdMuonsBMTF_; + MuonBxCollection imdMuonsEMTFNeg_; + MuonBxCollection imdMuonsEMTFPos_; + MuonBxCollection imdMuonsOMTFNeg_; + MuonBxCollection imdMuonsOMTFPos_; - std::unique_ptr regionalMuonShowersEMTF_; - std::array, 6> muonShowers_; + RegionalMuonShowerBxCollection regionalMuonShowersEMTF_; + std::array muonShowers_; + GMTPutTokens tokens_; }; } // namespace stage2 } // namespace l1t diff --git a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTPutTokens.h b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTPutTokens.h new file mode 100644 index 0000000000000..7ae50450d8b87 --- /dev/null +++ b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTPutTokens.h @@ -0,0 +1,58 @@ +#ifndef Subsystem_Package_GMTPutTokens_h +#define Subsystem_Package_GMTPutTokens_h +// -*- C++ -*- +// +// Package: Subsystem/Package +// Class : GMTPutTokens +// +/**\class GMTPutTokens GMTPutTokens.h "GMTPutTokens.h" + + Description: Holder for the EDPutTokens + + Usage: + + +*/ +// +// Original Author: Christopher Jones +// Created: Wed, 11 Dec 2024 13:41:10 GMT +// +#include "DataFormats/L1TMuon/interface/RegionalMuonCand.h" +#include "DataFormats/L1Trigger/interface/Muon.h" + +#include "DataFormats/L1TMuon/interface/RegionalMuonShower.h" +#include "DataFormats/L1Trigger/interface/MuonShower.h" + +#include "L1TObjectCollections.h" + +// system include files +#include + +// user include files +#include "FWCore/Utilities/interface/EDPutToken.h" + +// forward declarations + +namespace l1t { + namespace stage2 { + struct GMTPutTokens { + edm::EDPutTokenT bmtf_; + edm::EDPutTokenT omtf_; + edm::EDPutTokenT emtf_; + + edm::EDPutTokenT muon_; + std::vector> muonCopies_; + + edm::EDPutTokenT imdMuonsBMTF_; + edm::EDPutTokenT imdMuonsEMTFNeg_; + edm::EDPutTokenT imdMuonsEMTFPos_; + edm::EDPutTokenT imdMuonsOMTFNeg_; + edm::EDPutTokenT imdMuonsOMTFPos_; + + edm::EDPutTokenT showerEMTF_; + edm::EDPutTokenT muonShower_; + std::vector> muonShowerCopy_; + }; + } // namespace stage2 +} // namespace l1t +#endif diff --git a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.cc b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.cc index bbfd05ee74ec8..214b67053a0ce 100644 --- a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.cc +++ b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.cc @@ -75,28 +75,33 @@ namespace l1t { } void GMTSetup::registerProducts(edm::ProducesCollector prod) { - prod.produces("BMTF"); - prod.produces("OMTF"); - prod.produces("EMTF"); - prod.produces("Muon"); + putTokens_.bmtf_ = prod.produces("BMTF"); + putTokens_.omtf_ = prod.produces("OMTF"); + putTokens_.emtf_ = prod.produces("EMTF"); + putTokens_.muon_ = prod.produces("Muon"); + putTokens_.muonCopies_.reserve(GMTCollections::NUM_OUTPUT_COPIES); + putTokens_.muonCopies_.emplace_back(); //first one is never used for (size_t i = 1; i < GMTCollections::NUM_OUTPUT_COPIES; ++i) { - prod.produces("MuonCopy" + std::to_string(i)); + putTokens_.muonCopies_.emplace_back(prod.produces("MuonCopy" + std::to_string(i))); } - prod.produces("imdMuonsBMTF"); - prod.produces("imdMuonsEMTFNeg"); - prod.produces("imdMuonsEMTFPos"); - prod.produces("imdMuonsOMTFNeg"); - prod.produces("imdMuonsOMTFPos"); - - prod.produces("EMTF"); - prod.produces("MuonShower"); + putTokens_.imdMuonsBMTF_ = prod.produces("imdMuonsBMTF"); + putTokens_.imdMuonsEMTFNeg_ = prod.produces("imdMuonsEMTFNeg"); + putTokens_.imdMuonsEMTFPos_ = prod.produces("imdMuonsEMTFPos"); + putTokens_.imdMuonsOMTFNeg_ = prod.produces("imdMuonsOMTFNeg"); + putTokens_.imdMuonsOMTFPos_ = prod.produces("imdMuonsOMTFPos"); + + putTokens_.showerEMTF_ = prod.produces("EMTF"); + putTokens_.muonShower_ = prod.produces("MuonShower"); + putTokens_.muonShowerCopy_.reserve(GMTCollections::NUM_OUTPUT_COPIES); + putTokens_.muonShowerCopy_.emplace_back(); //first one is never used for (size_t i = 1; i < GMTCollections::NUM_OUTPUT_COPIES; ++i) { - prod.produces("MuonShowerCopy" + std::to_string(i)); + putTokens_.muonShowerCopy_.emplace_back( + prod.produces("MuonShowerCopy" + std::to_string(i))); } } std::unique_ptr GMTSetup::getCollections(edm::Event& e) { - return std::unique_ptr(new GMTCollections(e)); + return std::unique_ptr(new GMTCollections(e, putTokens_)); } UnpackerMap GMTSetup::getUnpackers(int fed, int board, int amc, unsigned int fw) { diff --git a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.h b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.h index 80209069ba194..251cc278405e4 100644 --- a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.h +++ b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/GMTSetup.h @@ -9,6 +9,7 @@ #include "GMTCollections.h" #include "GMTTokens.h" +#include "GMTPutTokens.h" namespace l1t { namespace stage2 { @@ -20,6 +21,8 @@ namespace l1t { void registerProducts(edm::ProducesCollector) override; std::unique_ptr getCollections(edm::Event& e) override; UnpackerMap getUnpackers(int fed, int board, int amc, unsigned int fw) override; + + GMTPutTokens putTokens_; }; } // namespace stage2 } // namespace l1t diff --git a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/RegionalMuonGMTUnpacker.cc b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/RegionalMuonGMTUnpacker.cc index 6251276b417a2..46d956f27eed1 100644 --- a/EventFilter/L1TRawToDigi/plugins/implementations_stage2/RegionalMuonGMTUnpacker.cc +++ b/EventFilter/L1TRawToDigi/plugins/implementations_stage2/RegionalMuonGMTUnpacker.cc @@ -34,18 +34,14 @@ namespace l1t { unsigned int linkId = blockId / 2; int processor; RegionalMuonCandBxCollection* regionalMuonCollection; - RegionalMuonShowerBxCollection* regionalMuonShowerCollection; + RegionalMuonShowerBxCollection* regionalMuonShowerCollection = nullptr; tftype trackFinder; if (linkId > 47 && linkId < 60) { regionalMuonCollection = static_cast(coll)->getRegionalMuonCandsBMTF(); - regionalMuonShowerCollection = - new RegionalMuonShowerBxCollection(); // To avoid warning re uninitialised collection trackFinder = tftype::bmtf; processor = linkId - 48; } else if (linkId > 41 && linkId < 66) { regionalMuonCollection = static_cast(coll)->getRegionalMuonCandsOMTF(); - regionalMuonShowerCollection = - new RegionalMuonShowerBxCollection(); // To avoid warning re uninitialised collection if (linkId < 48) { trackFinder = tftype::omtf_pos; processor = linkId - 42; @@ -68,8 +64,9 @@ namespace l1t { return false; } regionalMuonCollection->setBXRange(firstBX, lastBX); - regionalMuonShowerCollection->setBXRange(firstBX, lastBX); - + if (regionalMuonShowerCollection) { + regionalMuonShowerCollection->setBXRange(firstBX, lastBX); + } LogDebug("L1T") << "nBX = " << nBX << " first BX = " << firstBX << " lastBX = " << lastBX; // Get the BX blocks and unpack them @@ -127,7 +124,8 @@ namespace l1t { // Fill RegionalMuonShower objects. For this we need to look at all six words together. RegionalMuonShower muShower; if (RegionalMuonRawDigiTranslator::fillRegionalMuonShower( - muShower, bxPayload, processor, trackFinder, useEmtfNominalTightShowers_, useEmtfLooseShowers_)) { + muShower, bxPayload, processor, trackFinder, useEmtfNominalTightShowers_, useEmtfLooseShowers_) and + regionalMuonShowerCollection) { regionalMuonShowerCollection->push_back(bx, muShower); } } else { diff --git a/EventFilter/L1TRawToDigi/python/bmtfStage2Raw_cfi.py b/EventFilter/L1TRawToDigi/python/bmtfStage2Raw_cfi.py index 4bf318aaa0075..64e722d914da3 100644 --- a/EventFilter/L1TRawToDigi/python/bmtfStage2Raw_cfi.py +++ b/EventFilter/L1TRawToDigi/python/bmtfStage2Raw_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms diff --git a/EventFilter/L1TRawToDigi/src/AMC13Spec.cc b/EventFilter/L1TRawToDigi/src/AMC13Spec.cc index 957689f7c5b01..ac3096846c3cd 100644 --- a/EventFilter/L1TRawToDigi/src/AMC13Spec.cc +++ b/EventFilter/L1TRawToDigi/src/AMC13Spec.cc @@ -3,11 +3,11 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/CRC32Calculator.h" +#include "FWCore/Utilities/interface/calculateCRC32.h" #include "EventFilter/L1TRawToDigi/interface/AMC13Spec.h" -#define EDM_ML_DEBUG 1 +//#define EDM_ML_DEBUG 1 namespace amc13 { Header::Header(unsigned int namc, unsigned int orbit) { @@ -38,8 +38,8 @@ namespace amc13 { } void Trailer::writeCRC(const uint64_t* start, uint64_t* end) { - std::string dstring(reinterpret_cast(start), reinterpret_cast(end) + 4); - auto crc = cms::CRC32Calculator(dstring).checksum(); + std::string_view dstring(reinterpret_cast(start), reinterpret_cast(end) + 4); + auto crc = cms::calculateCRC32(dstring); *end = ((*end) & ~(uint64_t(CRC_mask) << CRC_shift)) | (static_cast(crc & CRC_mask) << CRC_shift); } @@ -128,8 +128,8 @@ namespace amc13 { int crc = 0; if (check_crc) { - std::string check(reinterpret_cast(start), reinterpret_cast(data) - 4); - crc = cms::CRC32Calculator(check).checksum(); + std::string_view check(reinterpret_cast(start), reinterpret_cast(data) - 4); + crc = cms::calculateCRC32(check); LogDebug("L1T") << "checking data checksum of " << std::hex << crc << std::dec; } @@ -156,8 +156,8 @@ namespace amc13 { t = Trailer(data++); if (check_crc) { - std::string check(reinterpret_cast(start), reinterpret_cast(data) - 4); - crc = cms::CRC32Calculator(check).checksum(); + std::string_view check(reinterpret_cast(start), reinterpret_cast(data) - 4); + crc = cms::calculateCRC32(check); LogDebug("L1T") << "checking data checksum of " << std::hex << crc << std::dec; } else { diff --git a/EventFilter/L1TRawToDigi/src/AMCSpec.cc b/EventFilter/L1TRawToDigi/src/AMCSpec.cc index 5a97da5013a59..d6c0d3707996a 100644 --- a/EventFilter/L1TRawToDigi/src/AMCSpec.cc +++ b/EventFilter/L1TRawToDigi/src/AMCSpec.cc @@ -1,11 +1,11 @@ #include #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/CRC32Calculator.h" +#include "FWCore/Utilities/interface/calculateCRC32.h" #include "EventFilter/L1TRawToDigi/interface/AMCSpec.h" -#define EDM_ML_DEBUG 1 +//#define EDM_ML_DEBUG 1 namespace amc { BlockHeader::BlockHeader(unsigned int amc_no, unsigned int board_id, unsigned int size, unsigned int block) { @@ -92,8 +92,8 @@ namespace amc { } void Trailer::writeCRC(const uint64_t *start, uint64_t *end) { - std::string dstring(reinterpret_cast(start), reinterpret_cast(end) + 4); - auto crc = cms::CRC32Calculator(dstring).checksum(); + std::string_view dstring(reinterpret_cast(start), reinterpret_cast(end) + 4); + auto crc = cms::calculateCRC32(dstring); *end = ((*end) & ~(uint64_t(CRC_mask) << CRC_shift)) | (static_cast(crc & CRC_mask) << CRC_shift); } @@ -133,29 +133,21 @@ namespace amc { header_ = Header(payload_.data()); trailer_ = Trailer(&payload_.back()); - std::string check(reinterpret_cast(payload_.data()), payload_.size() * 8 - 4); - auto crc = cms::CRC32Calculator(check).checksum(); + std::string_view check(reinterpret_cast(payload_.data()), payload_.size() * 8 - 4); + auto crc = cms::calculateCRC32(check); trailer_.check(crc, lv1, header_.getSize(), mtf7_mode); } } - std::vector Packet::block(unsigned int id) const { + std::span Packet::block(unsigned int id) const { if (id == 0 and id == block_header_.getBlocks() - 1) { - return payload_; + return std::span(payload_); } else if (id == block_header_.getBlocks() - 1) { - return std::vector(payload_.begin() + id * split_block_size, payload_.end()); + return std::span(payload_.begin() + id * split_block_size, payload_.end()); } else { - return std::vector(payload_.begin() + id * split_block_size, - payload_.begin() + (id + 1) * split_block_size); + return std::span(payload_.begin() + id * split_block_size, + payload_.begin() + (id + 1) * split_block_size); } } - - std::unique_ptr Packet::data() { - // Remove 3 words: 2 for the header, 1 for the trailer - std::unique_ptr res(new uint64_t[payload_.size() - 3]); - for (unsigned int i = 0; i < payload_.size() - 3; ++i) - res.get()[i] = payload_[i + 2]; - return res; - } } // namespace amc diff --git a/EventFilter/L1TRawToDigi/src/Block.cc b/EventFilter/L1TRawToDigi/src/Block.cc index fe4b04452d92e..216b06bf238b1 100644 --- a/EventFilter/L1TRawToDigi/src/Block.cc +++ b/EventFilter/L1TRawToDigi/src/Block.cc @@ -61,10 +61,10 @@ namespace l1t { return bxBlocks; } - std::unique_ptr Payload::getBlock() { + std::optional Payload::getBlock() { if (end_ - data_ < getHeaderSize()) { LogDebug("L1T") << "Reached end of payload"; - return std::unique_ptr(); + return {}; } if (data_[0] == 0xffffffff) { @@ -78,12 +78,12 @@ namespace l1t { if (end_ - data_ < header.getSize()) { edm::LogError("L1T") << "Expecting a block size of " << header.getSize() << " but only " << (end_ - data_) << " words remaining"; - return std::unique_ptr(); + return {}; } LogTrace("L1T") << "Creating block with size " << header.getSize(); - auto res = std::make_unique(header, data_, data_ + header.getSize()); + Block res(header, data_, data_ + header.getSize()); data_ += header.getSize(); return res; } @@ -170,9 +170,9 @@ namespace l1t { return false; } - std::unique_ptr MTF7Payload::getBlock() { + std::optional MTF7Payload::getBlock() { if (end_ - data_ < 2) - return std::unique_ptr(); + return {}; const uint16_t* data16 = reinterpret_cast(data_); const uint16_t* end16 = reinterpret_cast(end_); @@ -195,11 +195,11 @@ namespace l1t { if (not valid(pattern)) { edm::LogWarning("L1T") << "MTF7 block with unrecognized id 0x" << std::hex << pattern; - return std::unique_ptr(); + return {}; } data_ += (i + 1) * 2; - return std::make_unique(pattern, payload, 0, MTF7); + return Block(pattern, payload, 0, MTF7); } CTP7Payload::CTP7Payload(const uint32_t* data, const uint32_t* end, amc::Header amcHeader) @@ -233,10 +233,10 @@ namespace l1t { return BlockHeader(blockId, blockSize, capId_, blockFlags, CTP7); } - std::unique_ptr CTP7Payload::getBlock() { + std::optional CTP7Payload::getBlock() { if (end_ - data_ < getHeaderSize()) { LogDebug("L1T") << "Reached end of payload"; - return std::unique_ptr(); + return {}; } if (capId_ > bx_per_l1a_) { edm::LogWarning("L1T") << "CTP7 with more bunch crossings than expected"; @@ -247,12 +247,12 @@ namespace l1t { if (end_ - data_ < header.getSize()) { edm::LogError("L1T") << "Expecting a block size of " << header.getSize() << " but only " << (end_ - data_) << " words remaining"; - return std::unique_ptr(); + return {}; } LogTrace("L1T") << "Creating block with size " << header.getSize(); - auto res = std::make_unique(header, data_, data_ + header.getSize()); + Block res(header, data_, data_ + header.getSize()); data_ += header.getSize(); capId_++; return res; diff --git a/EventFilter/L1TRawToDigi/test/pack_cmp.py b/EventFilter/L1TRawToDigi/test/pack_cmp.py index f687667a94349..a795d783a447a 100644 --- a/EventFilter/L1TRawToDigi/test/pack_cmp.py +++ b/EventFilter/L1TRawToDigi/test/pack_cmp.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT import sys diff --git a/EventFilter/L1TRawToDigi/test/pack_cmp_etsums.py b/EventFilter/L1TRawToDigi/test/pack_cmp_etsums.py index cc8ec0760eef9..d8173e72e3901 100644 --- a/EventFilter/L1TRawToDigi/test/pack_cmp_etsums.py +++ b/EventFilter/L1TRawToDigi/test/pack_cmp_etsums.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT import sys diff --git a/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage1.py b/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage1.py index add366da85562..6bdb949fa653c 100644 --- a/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage1.py +++ b/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage1.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage2.py b/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage2.py index d2f3969d3d4ff..5740827920d33 100644 --- a/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage2.py +++ b/EventFilter/L1TRawToDigi/utils/unpackBuffers-CaloStage2.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/EventFilter/L1TXRawToDigi/python/util/__init__.py b/EventFilter/L1TXRawToDigi/python/util/__init__.py index 8f7aa2702ba7c..76be774eb4a89 100644 --- a/EventFilter/L1TXRawToDigi/python/util/__init__.py +++ b/EventFilter/L1TXRawToDigi/python/util/__init__.py @@ -1,3 +1,2 @@ -from __future__ import absolute_import from .getRunInfo import getRunsForDate, getRunsNewer, today, daysAgo, day, getFilesForRun, runGetDatasetsAvailable diff --git a/EventFilter/L1TXRawToDigi/python/util/rrClient.py b/EventFilter/L1TXRawToDigi/python/util/rrClient.py index 10df6830f3e96..9bb261e0de541 100644 --- a/EventFilter/L1TXRawToDigi/python/util/rrClient.py +++ b/EventFilter/L1TXRawToDigi/python/util/rrClient.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import -from __future__ import print_function import re, json, datetime from .rrapi import RRApi, RRApiError diff --git a/EventFilter/L1TXRawToDigi/python/util/rrapi.py b/EventFilter/L1TXRawToDigi/python/util/rrapi.py index b26e28209a58d..dbbd05668ee62 100644 --- a/EventFilter/L1TXRawToDigi/python/util/rrapi.py +++ b/EventFilter/L1TXRawToDigi/python/util/rrapi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import urllib, re, json, socket """ diff --git a/EventFilter/L1TXRawToDigi/test/testL1TCaloLayer1RawToDigi.py b/EventFilter/L1TXRawToDigi/test/testL1TCaloLayer1RawToDigi.py index ab2c737fc5a85..4ca328d4ac144 100644 --- a/EventFilter/L1TXRawToDigi/test/testL1TCaloLayer1RawToDigi.py +++ b/EventFilter/L1TXRawToDigi/test/testL1TCaloLayer1RawToDigi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import EventFilter.L1TXRawToDigi.util as util diff --git a/EventFilter/Phase2PixelRawToDigi/BuildFile.xml b/EventFilter/Phase2PixelRawToDigi/BuildFile.xml new file mode 100644 index 0000000000000..1b3cfd15f9375 --- /dev/null +++ b/EventFilter/Phase2PixelRawToDigi/BuildFile.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/EventFilter/Phase2PixelRawToDigi/plugins/BuildFile.xml b/EventFilter/Phase2PixelRawToDigi/plugins/BuildFile.xml new file mode 100644 index 0000000000000..8583f6fc74feb --- /dev/null +++ b/EventFilter/Phase2PixelRawToDigi/plugins/BuildFile.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/EventFilter/Phase2PixelRawToDigi/plugins/Phase2ITQCoreProducer.cc b/EventFilter/Phase2PixelRawToDigi/plugins/Phase2ITQCoreProducer.cc new file mode 100644 index 0000000000000..8692f5e56ea0c --- /dev/null +++ b/EventFilter/Phase2PixelRawToDigi/plugins/Phase2ITQCoreProducer.cc @@ -0,0 +1,207 @@ +// -*- C++ -*- +// Package: EventFilter/Phase2PixelRawToDigi +// Class: Phase2ITQCoreProducer +// Description: Make Phase2ITQCore objects for digis +// Maintainer: Si Hyun Jeon, shjeon@cern.ch +// Original Author: Rohan Misra +// Created: Thu, 30 Sep 2021 02:04:06 GMT +// + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/InputTag.h" +#include "FWCore/Utilities/interface/transform.h" +#include "FWCore/Utilities/interface/StreamID.h" +#include "DataFormats/Math/interface/Point3D.h" +#include "DataFormats/Common/interface/DetSetVector.h" +#include "DataFormats/DetId/interface/DetId.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITDigiHit.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITQCore.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITChip.h" +#include "DataFormats/Phase2TrackerDigi/interface/Phase2ITChipBitStream.h" +#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" +#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" +#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" +#include "TrackingTools/Records/interface/TransientTrackRecord.h" + +class Phase2ITQCoreProducer : public edm::stream::EDProducer<> { +public: + Phase2ITQCoreProducer(const edm::ParameterSet&); + ~Phase2ITQCoreProducer() override = default; + +private: + void produce(edm::Event&, const edm::EventSetup&) override; + + const edm::InputTag src_; + const edm::EDGetTokenT> pixelDigi_token_; + const edm::ESGetToken tTopoToken_; + typedef math::XYZPointD Point; + typedef std::vector PointCollection; +}; + +Phase2ITQCoreProducer::Phase2ITQCoreProducer(const edm::ParameterSet& iConfig) + : src_(iConfig.getParameter("src")), + pixelDigi_token_(consumes(iConfig.getParameter("siPixelDigi"))), + tTopoToken_(esConsumes()) { + produces>(); + produces>(); +} + +namespace { + // Dimension for 2 chips module = 672 X 434 = 672 X (216 + 1 + 216 + 1) + // Dimension for 4 chips module = 1354 X 434 = (672 + 5 + 672 + 5) X (216 + 1 + 216 + 1) + // Spacing 1 in column and 5 in row is introduced for each chip in between + // if neighboring chip exists + constexpr int kQCoresInChipRow = (672); + constexpr int kQCoresInChipColumn = (216); + constexpr int kQCoresInChipRowGap = (5); + constexpr int kQCoresInChipColumnGap = (10); +} // namespace + +void updateHitCoordinatesForLargePixels(Phase2ITDigiHit& hit) { + /* + In-place modification of Hit coordinates to take into account large pixels + Hits corresponding to large pixels are remapped so they lie on the boundary of the chip + Note that this operation can produce multiple hits with the same row/column coordinates + Duplicates get removed later on + */ + + // Current values before remapping + int row = hit.row(); + int col = hit.col(); + + // Values after remapping + int updated_row = 0; + int updated_col = 0; + + // Remapping of the row coordinate + if (row < kQCoresInChipRow) { + updated_row = row; + } else if (row < (kQCoresInChipRow + kQCoresInChipRowGap)) { + updated_row = kQCoresInChipRow - 1; + } // This will be ignored for 2 chips module + else if (row < (kQCoresInChipRow + 2 * kQCoresInChipRowGap)) { + updated_row = kQCoresInChipRow; + } else { + updated_row = (hit.row() - 2 * kQCoresInChipRowGap); + } + + // Remapping of the column coordinate + if (col < kQCoresInChipColumn) { + updated_col = col; + } else if (col < kQCoresInChipColumn + kQCoresInChipColumnGap) { + updated_col = kQCoresInChipColumn - kQCoresInChipColumnGap; + } else if (col < (kQCoresInChipColumn + 2 * kQCoresInChipColumn)) { + updated_col = kQCoresInChipColumn; + } else { + updated_col = (hit.col() - 2 * kQCoresInChipColumnGap); + } + + hit.set_row(updated_row); + hit.set_col(updated_col); +} + +void adjustEdges(std::vector hitList) { + /* + In-place modification of Hit coordinates to take into account large pixels + */ + std::for_each(hitList.begin(), hitList.end(), &updateHitCoordinatesForLargePixels); +} + +std::vector splitByChip(const std::vector& hitList) { + // Split the hit list by read out chip + std::array, 4> hits_per_chip; + for (auto hit : hitList) { + int chip_index = (hit.col() < kQCoresInChipColumn) ? 0 : 1; + if (hit.row() >= kQCoresInChipRow) { + chip_index += 2; + } + hits_per_chip[chip_index].push_back(hit); + } + + // Generate Phase2ITChip objects from the hit lists + std::vector chips; + chips.reserve(4); + for (int chip_index = 0; chip_index < 4; chip_index++) { + chips.push_back(Phase2ITChip(chip_index, hits_per_chip[chip_index])); + } + + return chips; +} + +std::vector processHits(std::vector hitList) { + adjustEdges(hitList); + std::vector chips = splitByChip(hitList); + + return chips; +} + +// ------------ method called to produce the data ------------ +void Phase2ITQCoreProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + using namespace edm; + using namespace std; + + unique_ptr> aQCoreVector = make_unique>(); + unique_ptr> aBitStreamVector = + make_unique>(); + + auto const& tTopo = iSetup.getData(tTopoToken_); + + auto pixelDigiHandle = iEvent.getHandle(pixelDigi_token_); + const edm::DetSetVector& pixelDigi = *pixelDigiHandle; + for (const auto& theDigis : pixelDigi) { + DetId tkId = theDigis.id; + std::vector hitlist; + std::vector id; + + if (tkId.subdetId() == PixelSubdetector::PixelBarrel) { + int layer_num = tTopo.pxbLayer(tkId.rawId()); + int ladder_num = tTopo.pxbLadder(tkId.rawId()); + int module_num = tTopo.pxbModule(tkId.rawId()); + id = {tkId.subdetId(), layer_num, ladder_num, module_num}; + } else if (tkId.subdetId() == PixelSubdetector::PixelEndcap) { + int module_num = tTopo.pxfModule(tkId()); + int disk_num = tTopo.pxfDisk(tkId()); + int blade_num = tTopo.pxfBlade(tkId()); + int panel_num = tTopo.pxfPanel(tkId()); + int side_num = tTopo.pxfSide(tkId()); + id = {tkId.subdetId(), module_num, disk_num, blade_num, panel_num, side_num}; + } + + for (const auto& digi : theDigis) { + hitlist.emplace_back(digi.row(), digi.column(), digi.adc()); + } + + std::vector chips = processHits(std::move(hitlist)); + + DetSet DetSetQCores(tkId); + DetSet DetSetBitStream(tkId); + + for (size_t i = 0; i < chips.size(); i++) { + Phase2ITChip chip = chips[i]; + std::vector qcores = chip.get_organized_QCores(); + for (auto& qcore : qcores) { + DetSetQCores.push_back(qcore); + } + + Phase2ITChipBitStream aChipBitStream(i, chip.get_chip_code()); + DetSetBitStream.push_back(aChipBitStream); + } + + aBitStreamVector->insert(DetSetBitStream); + aQCoreVector->insert(DetSetQCores); + } + + iEvent.put(std::move(aQCoreVector)); + iEvent.put(std::move(aBitStreamVector)); +} + +DEFINE_FWK_MODULE(Phase2ITQCoreProducer); diff --git a/EventFilter/Phase2PixelRawToDigi/test/Phase2ITDigiToRaw_cfg.py b/EventFilter/Phase2PixelRawToDigi/test/Phase2ITDigiToRaw_cfg.py new file mode 100644 index 0000000000000..618b30fb9416b --- /dev/null +++ b/EventFilter/Phase2PixelRawToDigi/test/Phase2ITDigiToRaw_cfg.py @@ -0,0 +1,95 @@ +import FWCore.ParameterSet.Config as cms + +from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 +process = cms.Process('USER',Phase2C17I13M9) + +# import of standard configurations +process.load('Configuration.StandardSequences.Services_cff') +process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load('Configuration.EventContent.EventContent_cff') +process.load('SimGeneral.MixingModule.mixNoPU_cfi') +#process.load('SimGeneral.MixingModule.mix_POISSON_average_cfi') +process.load('Configuration.Geometry.GeometryExtended2026D91Reco_cff') +process.load('Configuration.StandardSequences.MagneticField_cff') +process.load('Configuration.StandardSequences.Digi_cff') +process.load('Configuration.StandardSequences.SimL1Emulator_cff') +process.load('Configuration.StandardSequences.L1TrackTrigger_cff') +process.load('Configuration.StandardSequences.DigiToRaw_cff') +process.load('HLTrigger.Configuration.HLT_Fake2_cff') +process.load('Configuration.StandardSequences.RawToDigi_cff') +process.load('Configuration.StandardSequences.L1Reco_cff') +process.load('Configuration.StandardSequences.Reconstruction_cff') +process.load('Configuration.StandardSequences.EndOfProcess_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(3) +) + +process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring( +"file:/eos/cms/store/relval/CMSSW_13_1_0_pre3/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_131X_mcRun4_realistic_v2_PDMVRELVALS146-v7/2580000/1320a7f8-658e-48b4-80cd-ace713889f8c.root" + ) +) + + +process.options = cms.untracked.PSet( + +) + +# Production Info +process.configurationMetadata = cms.untracked.PSet( + annotation = cms.untracked.string('step2 nevts:10'), + name = cms.untracked.string('Applications'), + version = cms.untracked.string('$Revision: 1.19 $') +) + +# MC vertice analyzer +process.load("Validation.RecoVertex.mcverticesanalyzer_cfi") +process.mcverticesanalyzer.pileupSummaryCollection = cms.InputTag("addPileupInfo","","HLT") + +process.Phase2ITQCoreProducer = cms.EDProducer('Phase2ITQCoreProducer', src = cms.InputTag("generalTracks"), siPixelDigi = cms.InputTag("simSiPixelDigis", "Pixel")) + +# # # -- Trajectory producer +process.load("RecoTracker.TrackProducer.TrackRefitters_cff") +process.TrackRefitter.src = "generalTracks" +process.TrackRefitter.NavigationSchool = "" + +# Additional output definition + +# Other statements +process.mix.digitizers = cms.PSet(process.theDigitizersValid) +# This pset is specific for producing simulated events for the designers of the PROC (InnerTracker) +# They need pixel RecHits where the charge is stored with high-granularity and large dynamic range + +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic_T30', '') + +# Path and EndPath definitions +process.digitisation_step = cms.Path(process.pdigi_valid) +process.L1simulation_step = cms.Path(process.SimL1Emulator) +process.L1TrackTrigger_step = cms.Path(process.L1TrackTrigger) +process.digi2raw_step = cms.Path(process.DigiToRaw) +process.raw2digi_step = cms.Path(process.RawToDigi) +process.L1Reco_step = cms.Path(process.L1Reco) +process.reconstruction_step = cms.Path(process.reconstruction) +process.user_step = cms.Path(process.TrackRefitter * process.Phase2ITQCoreProducer) +process.endjob_step = cms.EndPath(process.endOfProcess) + +# Schedule definition +process.schedule = cms.Schedule(process.digitisation_step,process.L1simulation_step,process.L1TrackTrigger_step,process.digi2raw_step) +process.schedule.extend([process.raw2digi_step,process.L1Reco_step,process.reconstruction_step,process.user_step,process.endjob_step]) + +# Have logErrorHarvester wait for the same EDProducers to finish as those providing data for the OutputModule +from FWCore.Modules.logErrorHarvester_cff import customiseLogErrorHarvesterUsingOutputCommands +process = customiseLogErrorHarvesterUsingOutputCommands(process) +# Add early deletion of temporary data products to reduce peak memory need +from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete +process = customiseEarlyDelete(process) + +# End adding early deletion +process.TFileService = cms.Service('TFileService', + fileName = cms.string("pixelbitstream.root") +) + diff --git a/EventFilter/RawDataCollector/python/rawDataCollectorByLabel_cfi.py b/EventFilter/RawDataCollector/python/rawDataCollectorByLabel_cfi.py index 324fdc42a802c..33f51acd14d26 100644 --- a/EventFilter/RawDataCollector/python/rawDataCollectorByLabel_cfi.py +++ b/EventFilter/RawDataCollector/python/rawDataCollectorByLabel_cfi.py @@ -1,11 +1,7 @@ import FWCore.ParameterSet.Config as cms -rawDataCollector = cms.EDProducer("RawDataCollectorByLabel", - verbose = cms.untracked.int32(1), # 0 = quiet, 1 = collection list, 2 = FED list - RawCollectionList = cms.VInputTag( cms.InputTag('SiStripDigiToZSRaw'), - cms.InputTag('rawDataCollector')) -) - +from EventFilter.RawDataCollector.default_rawDataCollectorByLabel_cfi import default_rawDataCollectorByLabel as _rawDataCollectorByLabel +rawDataCollector = _rawDataCollectorByLabel.clone() # # Make changes if using the Stage 1 trigger # diff --git a/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.cc b/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.cc index 657e25ee7a7d6..b8ced3f48f225 100644 --- a/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.cc +++ b/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.cc @@ -3,18 +3,19 @@ * */ -#include "EventFilter/RawDataCollector/src/RawDataCollectorByLabel.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" - #include "DataFormats/Common/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" +#include "DataFormats/FEDRawData/interface/FEDNumbering.h" +#include "DataFormats/FEDRawData/interface/FEDRawData.h" +#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" #include "DataFormats/Provenance/interface/ProcessHistory.h" +#include "EventFilter/RawDataCollector/src/RawDataCollectorByLabel.h" #include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" - #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include @@ -31,7 +32,13 @@ RawDataCollectorByLabel::RawDataCollectorByLabel(const edm::ParameterSet &pset) produces(); } -RawDataCollectorByLabel::~RawDataCollectorByLabel() {} +void RawDataCollectorByLabel::fillDescriptions(edm::ConfigurationDescriptions &descriptions) { + edm::ParameterSetDescription desc; + desc.add >("RawCollectionList", + {edm::InputTag("SiStripDigiToZSRaw"), edm::InputTag("rawDataCollector")}); + desc.addUntracked("verbose", 0)->setComment("0 = quiet, 1 = collection list, 2 = FED list"); + descriptions.add("default_rawDataCollectorByLabel", desc); +} void RawDataCollectorByLabel::produce(Event &e, const EventSetup &c) { /// Get Data from all FEDs diff --git a/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.h b/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.h index 87aa5f242be51..e748b2b884fe5 100644 --- a/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.h +++ b/EventFilter/RawDataCollector/src/RawDataCollectorByLabel.h @@ -17,10 +17,12 @@ class RawDataCollectorByLabel : public edm::stream::EDProducer<> { RawDataCollectorByLabel(const edm::ParameterSet& pset); ///Destructor - ~RawDataCollectorByLabel() override; + ~RawDataCollectorByLabel() override = default; void produce(edm::Event& e, const edm::EventSetup& c) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: typedef std::vector::const_iterator tag_iterator_t; typedef std::vector >::const_iterator tok_iterator_t; diff --git a/EventFilter/SiPixelRawToDigi/python/SiPixelRawToDigi_cfi.py b/EventFilter/SiPixelRawToDigi/python/SiPixelRawToDigi_cfi.py index 26136836c7b5f..18eed6451c252 100644 --- a/EventFilter/SiPixelRawToDigi/python/SiPixelRawToDigi_cfi.py +++ b/EventFilter/SiPixelRawToDigi/python/SiPixelRawToDigi_cfi.py @@ -1,36 +1,17 @@ import FWCore.ParameterSet.Config as cms -from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA -from Configuration.ProcessModifiers.gpu_cff import gpu # legacy pixel unpacker from EventFilter.SiPixelRawToDigi.siPixelRawToDigi_cfi import siPixelRawToDigi as _siPixelRawToDigi -siPixelDigis = SwitchProducerCUDA( - cpu = _siPixelRawToDigi.clone() -) +siPixelDigis = _siPixelRawToDigi.clone() # use the Phase 1 settings from Configuration.Eras.Modifier_phase1Pixel_cff import phase1Pixel -phase1Pixel.toModify(siPixelDigis.cpu, +phase1Pixel.toModify(siPixelDigis, UsePhase1 = True ) from Configuration.ProcessModifiers.siPixelQualityRawToDigi_cff import siPixelQualityRawToDigi -siPixelQualityRawToDigi.toModify(siPixelDigis.cpu, +siPixelQualityRawToDigi.toModify(siPixelDigis, UseQualityInfo = True, SiPixelQualityLabel = 'forRawToDigi', ) - -from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -# SwitchProducer wrapping the legacy pixel digis producer or an alias combining the pixel digis information converted from SoA -(gpu & ~phase2_tracker).toModify(siPixelDigis, - cuda = cms.EDAlias( - siPixelDigiErrors = cms.VPSet( - cms.PSet(type = cms.string("DetIdedmEDCollection")), - cms.PSet(type = cms.string("SiPixelRawDataErroredmDetSetVector")), - cms.PSet(type = cms.string("PixelFEDChanneledmNewDetSetVector")) - ), - siPixelDigisClustersPreSplitting = cms.VPSet( - cms.PSet(type = cms.string("PixelDigiedmDetSetVector")) - ) - ) -) diff --git a/EventFilter/SiPixelRawToDigi/python/siPixelDigis_cff.py b/EventFilter/SiPixelRawToDigi/python/siPixelDigis_cff.py index b5484afd2fafa..05263e3e8bdf9 100644 --- a/EventFilter/SiPixelRawToDigi/python/siPixelDigis_cff.py +++ b/EventFilter/SiPixelRawToDigi/python/siPixelDigis_cff.py @@ -7,40 +7,7 @@ siPixelDigis ) -# copy the pixel digis (except errors) and clusters to the host -from EventFilter.SiPixelRawToDigi.siPixelDigisSoAFromCUDA_cfi import siPixelDigisSoAFromCUDA as _siPixelDigisSoAFromCUDA -siPixelDigisSoA = _siPixelDigisSoAFromCUDA.clone( - src = "siPixelClustersPreSplittingCUDA" -) - -# copy the pixel digis errors to the host -from EventFilter.SiPixelRawToDigi.siPixelDigiErrorsSoAFromCUDA_cfi import siPixelDigiErrorsSoAFromCUDA as _siPixelDigiErrorsSoAFromCUDA -siPixelDigiErrorsSoA = _siPixelDigiErrorsSoAFromCUDA.clone( - src = "siPixelClustersPreSplittingCUDA" -) - -# convert the pixel digis errors to the legacy format -from EventFilter.SiPixelRawToDigi.siPixelDigiErrorsFromSoA_cfi import siPixelDigiErrorsFromSoA as _siPixelDigiErrorsFromSoA -siPixelDigiErrors = _siPixelDigiErrorsFromSoA.clone() - -# use the Phase 1 settings -from Configuration.Eras.Modifier_phase1Pixel_cff import phase1Pixel -phase1Pixel.toModify(siPixelDigiErrors, - UsePhase1 = True -) - -from Configuration.ProcessModifiers.gpu_cff import gpu +# Phase 2 Tracker Modifier from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -(gpu & ~phase2_tracker).toReplaceWith(siPixelDigisTask, cms.Task( - # copy the pixel digis (except errors) and clusters to the host - siPixelDigisSoA, - # copy the pixel digis errors to the host - siPixelDigiErrorsSoA, - # convert the pixel digis errors to the legacy format - siPixelDigiErrors, - # SwitchProducer wrapping the legacy pixel digis producer or an alias combining the pixel digis information converted from SoA - siPixelDigisTask.copy() -)) - # Remove siPixelDigis until we have phase2 pixel digis phase2_tracker.toReplaceWith(siPixelDigisTask, cms.Task()) #FIXME diff --git a/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToClusters_cfg.py b/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToClusters_cfg.py index 57ae489eefcf2..d25e7fa387fb8 100644 --- a/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToClusters_cfg.py +++ b/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToClusters_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms Mode = str("ZS") # Options: "ZS", "VR", "PR", "FK" diff --git a/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToDigi_cfg.py b/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToDigi_cfg.py index 3cc6e0e683cd2..d96134bd04e81 100644 --- a/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToDigi_cfg.py +++ b/EventFilter/SiStripRawToDigi/python/test/Validate_DigiToRawToDigi_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms Mode = str("ZS") # Options: "ZS", "VR", "PR", "FK" diff --git a/EventFilter/Utilities/plugins/GlobalEvFOutputModule.cc b/EventFilter/Utilities/plugins/GlobalEvFOutputModule.cc index ed4a99b5c0459..b545b079df607 100644 --- a/EventFilter/Utilities/plugins/GlobalEvFOutputModule.cc +++ b/EventFilter/Utilities/plugins/GlobalEvFOutputModule.cc @@ -31,9 +31,10 @@ #include "FWCore/Framework/interface/MakerMacros.h" -#include -#include #include +#include +#include +#include typedef edm::detail::TriggerResultsBasedEventSelector::handle_t Trig; @@ -310,7 +311,7 @@ namespace evf { mergeType_.setName("MergeType"); hltErrorEvents_.setName("HLTErrorEvents"); - jsonMonitor_.reset(new jsoncollector::FastMonitor(&outJsonDef, true)); + jsonMonitor_ = std::make_shared(&outJsonDef, true); jsonMonitor_->setDefPath(outJsonDefName); jsonMonitor_->registerGlobalMonitorable(&processed_, false); jsonMonitor_->registerGlobalMonitorable(&accepted_, false); diff --git a/EventFilter/Utilities/src/DAQSource.cc b/EventFilter/Utilities/src/DAQSource.cc index bc8c4bde37f38..bcc63f7e70bd9 100644 --- a/EventFilter/Utilities/src/DAQSource.cc +++ b/EventFilter/Utilities/src/DAQSource.cc @@ -1,8 +1,9 @@ +#include +#include +#include #include #include #include -#include -#include #include "EventFilter/Utilities/interface/DAQSource.h" #include "EventFilter/Utilities/interface/DAQSourceModels.h" @@ -78,11 +79,11 @@ DAQSource::DAQSource(edm::ParameterSet const& pset, edm::InputSourceDescription //load mode class based on parameter if (dataModeConfig_ == "FRD") { - dataMode_.reset(new DataModeFRD(this)); + dataMode_ = std::make_shared(this); } else if (dataModeConfig_ == "FRDStriped") { - dataMode_.reset(new DataModeFRDStriped(this)); + dataMode_ = std::make_shared(this); } else if (dataModeConfig_ == "ScoutingRun3") { - dataMode_.reset(new DataModeScoutingRun3(this)); + dataMode_ = std::make_shared(this); } else throw cms::Exception("DAQSource::DAQSource") << "Unknown data mode " << dataModeConfig_; diff --git a/EventFilter/Utilities/test/startFU.py b/EventFilter/Utilities/test/startFU.py index b08755167d004..b6c0497051393 100644 --- a/EventFilter/Utilities/test/startFU.py +++ b/EventFilter/Utilities/test/startFU.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os diff --git a/EventFilter/Utilities/test/start_multiLS_FU.py b/EventFilter/Utilities/test/start_multiLS_FU.py index adf4d405b76df..0af58582f3579 100644 --- a/EventFilter/Utilities/test/start_multiLS_FU.py +++ b/EventFilter/Utilities/test/start_multiLS_FU.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os diff --git a/EventFilter/Utilities/test/testScoutingRun3_unpackers.py b/EventFilter/Utilities/test/testScoutingRun3_unpackers.py index bf90c0a6a2760..e37ea6938ae3f 100644 --- a/EventFilter/Utilities/test/testScoutingRun3_unpackers.py +++ b/EventFilter/Utilities/test/testScoutingRun3_unpackers.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os, sys diff --git a/EventFilter/Utilities/test/test_dqmstream.py b/EventFilter/Utilities/test/test_dqmstream.py index cd9d2e85742cc..83db50a435760 100644 --- a/EventFilter/Utilities/test/test_dqmstream.py +++ b/EventFilter/Utilities/test/test_dqmstream.py @@ -1,5 +1,3 @@ -#from __future__ import print_function -#from __future__ import absolute_import import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing from FWCore.ParameterSet.Types import PSet diff --git a/EventFilter/Utilities/test/unittest_FU.py b/EventFilter/Utilities/test/unittest_FU.py index 31cdacfd9b90e..a48a3707fcae8 100644 --- a/EventFilter/Utilities/test/unittest_FU.py +++ b/EventFilter/Utilities/test/unittest_FU.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os diff --git a/EventFilter/Utilities/test/unittest_FU_daqsource.py b/EventFilter/Utilities/test/unittest_FU_daqsource.py index 544df16429569..87a02742389b1 100644 --- a/EventFilter/Utilities/test/unittest_FU_daqsource.py +++ b/EventFilter/Utilities/test/unittest_FU_daqsource.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os diff --git a/FWCore/Catalog/interface/InputFileCatalog.h b/FWCore/Catalog/interface/InputFileCatalog.h index 638cad95e7589..ec99b1eb218be 100644 --- a/FWCore/Catalog/interface/InputFileCatalog.h +++ b/FWCore/Catalog/interface/InputFileCatalog.h @@ -19,7 +19,7 @@ namespace edm { class FileCatalogItem { public: - FileCatalogItem(std::vector const& pfns, std::string const& lfn) : pfns_(pfns), lfn_(lfn) {} + FileCatalogItem(std::vector pfns, std::string lfn) : pfns_(std::move(pfns)), lfn_(std::move(lfn)) {} std::string const& fileName(unsigned iCatalog) const { return pfns_[iCatalog]; } std::string const& logicalFileName() const { return lfn_; } @@ -33,7 +33,7 @@ namespace edm { class InputFileCatalog { public: - InputFileCatalog(std::vector const& fileNames, + InputFileCatalog(std::vector fileNames, std::string const& override, bool useLFNasPFNifLFNnotFound = false, //switching between two catalog types @@ -42,19 +42,19 @@ namespace edm { ~InputFileCatalog(); std::vector const& fileCatalogItems() const { return fileCatalogItems_; } - std::vector const& logicalFileNames() const { return logicalFileNames_; } std::vector fileNames(unsigned iCatalog) const; bool empty() const { return fileCatalogItems_.empty(); } static bool isPhysical(std::string const& name) { return (name.empty() || name.find(':') != std::string::npos); } private: - void init(std::string const& override, bool useLFNasPFNifLFNnotFound, edm::CatalogType catType); + void init(std::vector logicalFileNames, + std::string const& override, + bool useLFNasPFNifLFNnotFound, + edm::CatalogType catType); void findFile(std::string const& lfn, std::vector& pfns, bool useLFNasPFNifLFNnotFound, edm::CatalogType catType); - std::vector logicalFileNames_; - std::vector fileNames_; std::vector fileCatalogItems_; edm::propagate_const> overrideFileLocator_; diff --git a/FWCore/Catalog/src/InputFileCatalog.cc b/FWCore/Catalog/src/InputFileCatalog.cc index c3eddb052f96a..fab27a17c1059 100644 --- a/FWCore/Catalog/src/InputFileCatalog.cc +++ b/FWCore/Catalog/src/InputFileCatalog.cc @@ -17,12 +17,12 @@ namespace edm { - InputFileCatalog::InputFileCatalog(std::vector const& fileNames, + InputFileCatalog::InputFileCatalog(std::vector fileNames, std::string const& override, bool useLFNasPFNifLFNnotFound, edm::CatalogType catType) - : logicalFileNames_(fileNames), fileNames_(fileNames), fileCatalogItems_(), overrideFileLocator_() { - init(override, useLFNasPFNifLFNnotFound, catType); + : fileCatalogItems_(), overrideFileLocator_() { + init(std::move(fileNames), override, useLFNasPFNifLFNnotFound, catType); } InputFileCatalog::~InputFileCatalog() {} @@ -36,7 +36,8 @@ namespace edm { return tmp; } - void InputFileCatalog::init(std::string const& inputOverride, + void InputFileCatalog::init(std::vector logicalFileNames, + std::string const& inputOverride, bool useLFNasPFNifLFNnotFound, edm::CatalogType catType) { typedef std::vector::iterator iter; @@ -123,32 +124,31 @@ namespace edm { throw ex; } - for (iter it = fileNames_.begin(), lt = logicalFileNames_.begin(), itEnd = fileNames_.end(); it != itEnd; - ++it, ++lt) { - boost::trim(*it); + for (auto& lfn : logicalFileNames) { + boost::trim(lfn); std::vector pfns; - if (it->empty()) { + if (lfn.empty()) { cms::Exception ex("FileCatalog"); ex << "An empty string specified in the fileNames parameter for input source"; ex.addContext("Calling edm::InputFileCatalog::init()"); throw ex; } - if (isPhysical(*it)) { - if (it->back() == ':') { + if (isPhysical(lfn)) { + if (lfn.back() == ':') { cms::Exception ex("FileCatalog"); ex << "An empty physical file name specified in the fileNames parameter for input source"; ex.addContext("Calling edm::InputFileCatalog::init()"); throw ex; } - pfns.push_back(*it); + pfns.push_back(lfn); // Clear the LFN. - lt->clear(); + lfn.clear(); } else { - boost::trim(*lt); - findFile(*lt, pfns, useLFNasPFNifLFNnotFound, catType); + findFile(lfn, pfns, useLFNasPFNifLFNnotFound, catType); } + lfn.shrink_to_fit(); // try to release memory - fileCatalogItems_.push_back(FileCatalogItem(pfns, *lt)); + fileCatalogItems_.emplace_back(std::move(pfns), std::move(lfn)); } } diff --git a/FWCore/Catalog/test/BuildFile.xml b/FWCore/Catalog/test/BuildFile.xml index 484a7cb422667..e1e65241d3ebf 100644 --- a/FWCore/Catalog/test/BuildFile.xml +++ b/FWCore/Catalog/test/BuildFile.xml @@ -1,5 +1,5 @@ - + diff --git a/FWCore/Catalog/test/FileLocator_t.cpp b/FWCore/Catalog/test/FileLocator_t.cpp index 3da5d9c616f80..d71c20c84e26a 100644 --- a/FWCore/Catalog/test/FileLocator_t.cpp +++ b/FWCore/Catalog/test/FileLocator_t.cpp @@ -2,96 +2,24 @@ #include "FWCore/Catalog/interface/SiteLocalConfig.h" #include "FWCore/Utilities/interface/Exception.h" #include "FWCore/ServiceRegistry/interface/ServiceRegistry.h" -#include +#include "TestSiteLocalConfig.h" + +#include #include #define CATCH_CONFIG_MAIN #include "catch.hpp" -namespace { - class TestSiteLocalConfig : public edm::SiteLocalConfig { - public: - //constructor using trivial data catalogs - TestSiteLocalConfig(std::vector catalogs) : m_trivialCatalogs(std::move(catalogs)) {} - //constructor using Rucio data catalogs - TestSiteLocalConfig(std::vector catalogs) : m_catalogs(std::move(catalogs)) {} - std::vector const& trivialDataCatalogs() const final { return m_trivialCatalogs; } - std::vector const& dataCatalogs() const final { return m_catalogs; } - std::filesystem::path const storageDescriptionPath(const edm::CatalogAttributes& aDataCatalog) const final { - return std::filesystem::path(); - } - - std::string const lookupCalibConnect(std::string const& input) const final { return std::string(); } - std::string const rfioType(void) const final { return std::string(); } - - std::string const* sourceCacheTempDir() const final { return nullptr; } - double const* sourceCacheMinFree() const final { return nullptr; } - std::string const* sourceCacheHint() const final { return nullptr; } - std::string const* sourceCloneCacheHint() const final { return nullptr; } - std::string const* sourceReadHint() const final { return nullptr; } - unsigned int const* sourceTTreeCacheSize() const final { return nullptr; } - unsigned int const* sourceTimeout() const final { return nullptr; } - bool enablePrefetching() const final { return false; } - unsigned int debugLevel() const final { return 0; } - std::vector const* sourceNativeProtocols() const final { return nullptr; } - struct addrinfo const* statisticsDestination() const final { return nullptr; } - std::set const* statisticsInfo() const final { return nullptr; } - std::string const& siteName(void) const final { return m_emptyString; } - std::string const& subSiteName(void) const final { return m_emptyString; } - bool useLocalConnectString() const final { return false; } - std::string const& localConnectPrefix() const final { return m_emptyString; } - std::string const& localConnectSuffix() const final { return m_emptyString; } - - private: - std::vector m_trivialCatalogs; - std::vector m_catalogs; - std::filesystem::path m_storageDescription_path; - std::string m_emptyString; - }; -} // namespace - -TEST_CASE("FileLocator with Rucio data catalog", "[filelocatorRucioDataCatalog]") { - //catalog for testing "prefix" - edm::CatalogAttributes aCatalog; - aCatalog.site = "T1_US_FNAL"; - aCatalog.subSite = "T1_US_FNAL"; - aCatalog.storageSite = "T1_US_FNAL"; - aCatalog.volume = "American_Federation"; - aCatalog.protocol = "XRootD"; - std::vector tmp{aCatalog}; - //catalog for testing "rules" - aCatalog.site = "T1_US_FNAL"; - aCatalog.subSite = "T1_US_FNAL"; - aCatalog.storageSite = "T1_US_FNAL"; - aCatalog.volume = "FNAL_dCache_EOS"; - aCatalog.protocol = "XRootD"; - tmp.push_back(aCatalog); - //catalog for testing chained "rules" - aCatalog.site = "T1_US_FNAL"; - aCatalog.subSite = "T1_US_FNAL"; - aCatalog.storageSite = "T1_US_FNAL"; - aCatalog.volume = "FNAL_dCache_EOS"; - aCatalog.protocol = "root"; - tmp.push_back(aCatalog); - - //create the services - edm::ServiceToken tempToken( - edm::ServiceRegistry::createContaining(std::unique_ptr(new TestSiteLocalConfig(tmp)))); - - std::string CMSSW_BASE(std::getenv("CMSSW_BASE")); - std::string CMSSW_RELEASE_BASE(std::getenv("CMSSW_RELEASE_BASE")); - std::string file_name("/src/FWCore/Catalog/test/storage.json"); - std::string full_file_name = std::filesystem::exists((CMSSW_BASE + file_name).c_str()) - ? CMSSW_BASE + file_name - : CMSSW_RELEASE_BASE + file_name; +TEST_CASE("FileLocator with Rucio data catalog", "[FWCore/Catalog]") { + edm::ServiceToken tempToken = edmtest::catalog::makeTestSiteLocalConfigToken(); SECTION("prefix") { edm::ServiceRegistry::Operate operate(tempToken); //empty catalog edm::CatalogAttributes tmp_cat; //use the first catalog provided by site local config - edm::FileLocator fl(tmp_cat, 0, full_file_name); + edm::FileLocator fl(tmp_cat, 0); CHECK("root://cmsxrootd.fnal.gov/store/group/bha/bho" == fl.pfn("/store/group/bha/bho", edm::CatalogType::RucioCatalog)); } @@ -100,7 +28,7 @@ TEST_CASE("FileLocator with Rucio data catalog", "[filelocatorRucioDataCatalog]" //empty catalog edm::CatalogAttributes tmp_cat; //use the second catalog provided by site local config - edm::FileLocator fl(tmp_cat, 1, full_file_name); + edm::FileLocator fl(tmp_cat, 1); const std::array lfn = {{"/bha/bho", "bha", "file:bha", @@ -119,7 +47,7 @@ TEST_CASE("FileLocator with Rucio data catalog", "[filelocatorRucioDataCatalog]" //empty catalog edm::CatalogAttributes tmp_cat; //use the third catalog provided by site local config above - edm::FileLocator fl(tmp_cat, 2, full_file_name); + edm::FileLocator fl(tmp_cat, 2); const std::array lfn = {{"/bha/bho", "bha", "file:bha", @@ -139,7 +67,7 @@ TEST_CASE("FileLocator with Rucio data catalog", "[filelocatorRucioDataCatalog]" } } -TEST_CASE("FileLocator", "[filelocator]") { +TEST_CASE("FileLocator with TrivialFileCatalog", "[FWCore/Catalog]") { std::string CMSSW_BASE(std::getenv("CMSSW_BASE")); std::string CMSSW_RELEASE_BASE(std::getenv("CMSSW_RELEASE_BASE")); std::string file_name("/src/FWCore/Catalog/test/simple_catalog.xml"); @@ -149,8 +77,8 @@ TEST_CASE("FileLocator", "[filelocator]") { //create the services std::vector tmp{std::string("trivialcatalog_file:") + full_file_name + "?protocol=xrd"}; - edm::ServiceToken tempToken( - edm::ServiceRegistry::createContaining(std::unique_ptr(new TestSiteLocalConfig(tmp)))); + edm::ServiceToken tempToken(edm::ServiceRegistry::createContaining( + std::unique_ptr(std::make_unique(tmp)))); //make the services available SECTION("standard") { diff --git a/FWCore/Catalog/test/InputFileCatalog_t.cpp b/FWCore/Catalog/test/InputFileCatalog_t.cpp new file mode 100644 index 0000000000000..571db9956fd44 --- /dev/null +++ b/FWCore/Catalog/test/InputFileCatalog_t.cpp @@ -0,0 +1,139 @@ +#include "FWCore/Catalog/interface/InputFileCatalog.h" +#include "FWCore/ServiceRegistry/interface/ServiceRegistry.h" + +#include "TestSiteLocalConfig.h" + +#include "catch.hpp" + +TEST_CASE("InputFileCatalog with Rucio data catalog", "[FWCore/Catalog]") { + edm::ServiceToken tempToken = edmtest::catalog::makeTestSiteLocalConfigToken(); + + SECTION("Empty") { + edm::ServiceRegistry::Operate operate(tempToken); + edm::InputFileCatalog catalog({}, ""); + REQUIRE(catalog.empty()); + } + + SECTION("isPhysical") { + REQUIRE(edm::InputFileCatalog::isPhysical("")); + REQUIRE(not edm::InputFileCatalog::isPhysical("/foo/bar")); + REQUIRE(edm::InputFileCatalog::isPhysical("file:/foo/bar")); + } + + SECTION("Default behavior") { + edm::ServiceRegistry::Operate operate(tempToken); + + edm::InputFileCatalog catalog(std::vector{"/store/foo/bar", " file:/foo/bar", "root://foobar "}, ""); + + SECTION("fileNames") { + SECTION("Catalog 0") { + auto const names = catalog.fileNames(0); + REQUIRE(names.size() == 3); + CHECK(names[0] == "root://cmsxrootd.fnal.gov/store/foo/bar"); + CHECK(names[1] == "file:/foo/bar"); + CHECK(names[2] == "root://foobar"); + } + // The fileNames() works only for catalog 0 + // Catalog 1 or 2 leads to a crash because the input file list + // is a mixture of LFNs and PFNs + // This isn't really good behavior... + } + + SECTION("fileCatalogItems") { + auto const& items = catalog.fileCatalogItems(); + REQUIRE(items.size() == 3); + CHECK(items[0].logicalFileName() == "/store/foo/bar"); + CHECK(items[1].logicalFileName() == ""); + CHECK(items[2].logicalFileName() == ""); + + REQUIRE(items[0].fileNames().size() == 3); + REQUIRE(items[1].fileNames().size() == 1); + REQUIRE(items[2].fileNames().size() == 1); + + SECTION("Catalog 0") { + CHECK(items[0].fileName(0) == "root://cmsxrootd.fnal.gov/store/foo/bar"); + CHECK(items[1].fileName(0) == "file:/foo/bar"); + CHECK(items[2].fileName(0) == "root://foobar"); + } + SECTION("Catalog 1") { + CHECK(items[0].fileName(1) == "root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/foo/bar"); + } + SECTION("Catalog 2") { CHECK(items[0].fileName(2) == "root://host.domain//pnfs/cms/store/foo/bar"); } + } + } + + SECTION("Override catalog") { + edm::ServiceRegistry::Operate operate(tempToken); + + edm::InputFileCatalog catalog(std::vector{"/store/foo/bar", " file:/foo/bar", "root://foobar "}, + "T1_US_FNAL,,T1_US_FNAL,FNAL_dCache_EOS,XRootD"); + + SECTION("fileNames") { + auto const names = catalog.fileNames(0); + REQUIRE(names.size() == 3); + CHECK(names[0] == "root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/foo/bar"); + CHECK(names[1] == "file:/foo/bar"); + CHECK(names[2] == "root://foobar"); + } + + SECTION("fileCatalogItems") { + auto const& items = catalog.fileCatalogItems(); + REQUIRE(items.size() == 3); + + CHECK(items[0].logicalFileName() == "/store/foo/bar"); + CHECK(items[1].logicalFileName() == ""); + CHECK(items[2].logicalFileName() == ""); + + REQUIRE(items[0].fileNames().size() == 1); + REQUIRE(items[1].fileNames().size() == 1); + REQUIRE(items[2].fileNames().size() == 1); + + CHECK(items[0].fileName(0) == "root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/foo/bar"); + CHECK(items[1].fileName(0) == "file:/foo/bar"); + CHECK(items[2].fileName(0) == "root://foobar"); + } + } + + SECTION("useLFNasPFNifLFNnotFound") { + edm::ServiceRegistry::Operate operate(tempToken); + + edm::InputFileCatalog catalog( + std::vector{"/store/foo/bar", "/tmp/foo/bar", "root://foobar "}, "", true); + + SECTION("fileNames") { + SECTION("Catalog 0") { + auto const names = catalog.fileNames(0); + REQUIRE(names.size() == 3); + CHECK(names[0] == "root://cmsxrootd.fnal.gov/store/foo/bar"); + CHECK(names[1] == "/tmp/foo/bar"); + CHECK(names[2] == "root://foobar"); + } + } + + SECTION("fileCatalogItems") { + auto const& items = catalog.fileCatalogItems(); + REQUIRE(items.size() == 3); + CHECK(items[0].logicalFileName() == "/store/foo/bar"); + CHECK(items[1].logicalFileName() == "/tmp/foo/bar"); + CHECK(items[2].logicalFileName() == ""); + + REQUIRE(items[0].fileNames().size() == 3); + REQUIRE(items[1].fileNames().size() == 3); + REQUIRE(items[2].fileNames().size() == 1); + + SECTION("Catalog 0") { + CHECK(items[0].fileName(0) == "root://cmsxrootd.fnal.gov/store/foo/bar"); + CHECK(items[1].fileName(0) == "/tmp/foo/bar"); + CHECK(items[2].fileName(0) == "root://foobar"); + } + SECTION("Catalog 1") { + CHECK(items[0].fileName(1) == "root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/foo/bar"); + CHECK(items[1].fileName(1) == "/tmp/foo/bar"); + } + SECTION("Catalog 2") { + CHECK(items[0].fileName(2) == "root://host.domain//pnfs/cms/store/foo/bar"); + CHECK(items[1].fileName(2) == "/tmp/foo/bar"); + } + } + } +} diff --git a/FWCore/Catalog/test/TestSiteLocalConfig.h b/FWCore/Catalog/test/TestSiteLocalConfig.h new file mode 100644 index 0000000000000..e9d3ac456e5e3 --- /dev/null +++ b/FWCore/Catalog/test/TestSiteLocalConfig.h @@ -0,0 +1,87 @@ +#ifndef FWCore_Catalog_test_TestSiteLocalConfig_h +#define FWCore_Catalog_test_TestSiteLocalConfig_h + +#include "FWCore/Catalog/interface/SiteLocalConfig.h" + +#include +#include +#include + +namespace edmtest::catalog { + class TestSiteLocalConfig : public edm::SiteLocalConfig { + public: + //constructor using trivial data catalogs + TestSiteLocalConfig(std::vector catalogs) : m_trivialCatalogs(std::move(catalogs)) {} + //constructor using Rucio data catalogs + TestSiteLocalConfig(std::vector catalogs) : m_catalogs(std::move(catalogs)) {} + std::vector const& trivialDataCatalogs() const final { return m_trivialCatalogs; } + std::vector const& dataCatalogs() const final { return m_catalogs; } + std::filesystem::path const storageDescriptionPath(const edm::CatalogAttributes& aDataCatalog) const final { + std::string CMSSW_BASE(std::getenv("CMSSW_BASE")); + std::string CMSSW_RELEASE_BASE(std::getenv("CMSSW_RELEASE_BASE")); + std::string file_name("/src/FWCore/Catalog/test/storage.json"); + std::string full_file_name = std::filesystem::exists((CMSSW_BASE + file_name).c_str()) + ? CMSSW_BASE + file_name + : CMSSW_RELEASE_BASE + file_name; + return full_file_name; + } + + std::string const lookupCalibConnect(std::string const& input) const final { return std::string(); } + std::string const rfioType(void) const final { return std::string(); } + + std::string const* sourceCacheTempDir() const final { return nullptr; } + double const* sourceCacheMinFree() const final { return nullptr; } + std::string const* sourceCacheHint() const final { return nullptr; } + std::string const* sourceCloneCacheHint() const final { return nullptr; } + std::string const* sourceReadHint() const final { return nullptr; } + unsigned int const* sourceTTreeCacheSize() const final { return nullptr; } + unsigned int const* sourceTimeout() const final { return nullptr; } + bool enablePrefetching() const final { return false; } + unsigned int debugLevel() const final { return 0; } + std::vector const* sourceNativeProtocols() const final { return nullptr; } + struct addrinfo const* statisticsDestination() const final { return nullptr; } + std::set const* statisticsInfo() const final { return nullptr; } + std::string const& siteName(void) const final { return m_emptyString; } + std::string const& subSiteName(void) const final { return m_emptyString; } + bool useLocalConnectString() const final { return false; } + std::string const& localConnectPrefix() const final { return m_emptyString; } + std::string const& localConnectSuffix() const final { return m_emptyString; } + + private: + std::vector m_trivialCatalogs; + std::vector m_catalogs; + std::filesystem::path m_storageDescription_path; + std::string m_emptyString; + }; + + inline edm::ServiceToken makeTestSiteLocalConfigToken() { + //catalog for testing "prefix" + edm::CatalogAttributes aCatalog; + aCatalog.site = "T1_US_FNAL"; + aCatalog.subSite = "T1_US_FNAL"; + aCatalog.storageSite = "T1_US_FNAL"; + aCatalog.volume = "American_Federation"; + aCatalog.protocol = "XRootD"; + std::vector tmp{aCatalog}; + //catalog for testing "rules" + aCatalog.site = "T1_US_FNAL"; + aCatalog.subSite = "T1_US_FNAL"; + aCatalog.storageSite = "T1_US_FNAL"; + aCatalog.volume = "FNAL_dCache_EOS"; + aCatalog.protocol = "XRootD"; + tmp.push_back(aCatalog); + //catalog for testing chained "rules" + aCatalog.site = "T1_US_FNAL"; + aCatalog.subSite = "T1_US_FNAL"; + aCatalog.storageSite = "T1_US_FNAL"; + aCatalog.volume = "FNAL_dCache_EOS"; + aCatalog.protocol = "root"; + tmp.push_back(aCatalog); + + //create the services + return edm::ServiceToken(edm::ServiceRegistry::createContaining( + std::unique_ptr(std::make_unique(std::move(tmp))))); + } +} // namespace edmtest::catalog + +#endif diff --git a/FWCore/Concurrency/scripts/edmStreamStallGrapher.py b/FWCore/Concurrency/scripts/edmStreamStallGrapher.py index 34ea19b1fd0ec..9a717fea5c851 100755 --- a/FWCore/Concurrency/scripts/edmStreamStallGrapher.py +++ b/FWCore/Concurrency/scripts/edmStreamStallGrapher.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range from itertools import groupby from operator import attrgetter,itemgetter diff --git a/FWCore/Framework/bin/cmsRun.cpp b/FWCore/Framework/bin/cmsRun.cpp index eb7daeb22c950..b527acbb67b44 100644 --- a/FWCore/Framework/bin/cmsRun.cpp +++ b/FWCore/Framework/bin/cmsRun.cpp @@ -177,7 +177,7 @@ int main(int argc, const char* argv[]) { //NOTE: JobReport must have a lifetime shorter than jobReportStreamPtr so that when the JobReport destructor // is called jobReportStreamPtr is still valid auto jobRepPtr = std::make_unique(jobReportStreamPtr.get()); - jobRep.reset(new edm::serviceregistry::ServiceWrapper(std::move(jobRepPtr))); + jobRep = std::make_shared>(std::move(jobRepPtr)); edm::ServiceToken jobReportToken = edm::ServiceRegistry::createContaining(jobRep); if (!fileName.empty()) { diff --git a/FWCore/Framework/interface/EventSetupProvider.h b/FWCore/Framework/interface/EventSetupProvider.h index 96673e672500d..a1960604921cf 100644 --- a/FWCore/Framework/interface/EventSetupProvider.h +++ b/FWCore/Framework/interface/EventSetupProvider.h @@ -96,6 +96,8 @@ namespace edm { std::map>& referencedESProducers, EventSetupsController& esController); + void updateLookup(); + bool doRecordsMatch(EventSetupProvider& precedingESProvider, EventSetupRecordKey const& eventSetupRecordKey, std::map& allComponentsMatch, diff --git a/FWCore/Framework/interface/EventSetupRecordProvider.h b/FWCore/Framework/interface/EventSetupRecordProvider.h index a1891dede5f6f..7c426715fa701 100644 --- a/FWCore/Framework/interface/EventSetupRecordProvider.h +++ b/FWCore/Framework/interface/EventSetupRecordProvider.h @@ -23,6 +23,7 @@ #include "FWCore/Framework/interface/EventSetupRecordImpl.h" #include "FWCore/Framework/interface/ValidityInterval.h" #include "FWCore/Utilities/interface/get_underlying_safe.h" +#include "FWCore/Utilities/interface/propagate_const.h" // system include files #include @@ -40,6 +41,7 @@ namespace edm { struct ComponentDescription; class DataKey; class ESProductResolverProvider; + class ESRecordsToProductResolverIndices; class EventSetupProvider; class EventSetupRecordImpl; class ParameterSetIDHolder; @@ -157,6 +159,8 @@ namespace edm { IntervalStatus intervalStatus() const { return intervalStatus_; } + void updateLookup(ESRecordsToProductResolverIndices const&); + protected: void addResolversToRecordHelper(edm::propagate_const>& dpp, DataToPreferredProviderMap const& mp) { diff --git a/FWCore/Framework/interface/TransformerBase.h b/FWCore/Framework/interface/TransformerBase.h index 3753efcfd55af..d417ea46b9807 100644 --- a/FWCore/Framework/interface/TransformerBase.h +++ b/FWCore/Framework/interface/TransformerBase.h @@ -10,6 +10,7 @@ #include "FWCore/Utilities/interface/EDPutToken.h" #include "FWCore/Utilities/interface/SoATuple.h" +#include "FWCore/Utilities/interface/StreamID.h" #include "FWCore/Utilities/interface/TypeID.h" #include "FWCore/Utilities/interface/ProductResolverIndex.h" @@ -38,8 +39,9 @@ namespace edm { protected: //The function takes the WrapperBase corresponding to the data product from the EDPutToken // and returns the WrapperBase associated to the id and instanceName - using TransformFunction = std::function(std::any)>; - using PreTransformFunction = std::function; + using TransformFunction = std::function(edm::StreamID, std::any)>; + using PreTransformFunction = + std::function; void registerTransformImp(ProducerBase&, EDPutToken, const TypeID& id, std::string instanceName, TransformFunction); void registerTransformAsyncImp( diff --git a/FWCore/Framework/interface/global/implementors.h b/FWCore/Framework/interface/global/implementors.h index 6f85763a2a7fd..2eda1fab048f6 100644 --- a/FWCore/Framework/interface/global/implementors.h +++ b/FWCore/Framework/interface/global/implementors.h @@ -474,17 +474,17 @@ namespace edm { template void registerTransform(edm::EDPutTokenT iToken, F iF, std::string productInstance = std::string()) { - using ReturnTypeT = decltype(iF(std::declval())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [f = std::move(iF)](std::any const& iGotProduct) { + [f = std::move(iF)](edm::StreamID id, std::any const& iGotProduct) { auto pGotProduct = std::any_cast(iGotProduct); return std::make_unique>( - WrapperBase::Emplace{}, f(*static_cast const*>(pGotProduct)->product())); + WrapperBase::Emplace{}, f(id, *static_cast const*>(pGotProduct)->product())); }); } @@ -493,20 +493,22 @@ namespace edm { P iPre, F iF, std::string productInstance = std::string()) { - using CacheTypeT = decltype(iPre(std::declval(), WaitingTaskWithArenaHolder())); - using ReturnTypeT = decltype(iF(std::declval())); + using CacheTypeT = + decltype(iPre(std::declval(), std::declval(), WaitingTaskWithArenaHolder())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformAsyncImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [p = std::move(iPre)](edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { - return std::any(p(*static_cast const&>(iGotProduct).product(), std::move(iHolder))); + [p = std::move(iPre)]( + edm::StreamID id, edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { + return std::any(p(id, *static_cast const&>(iGotProduct).product(), std::move(iHolder))); }, - [f = std::move(iF)](std::any const& iCache) { + [f = std::move(iF)](edm::StreamID id, std::any const& iCache) { return std::make_unique>(WrapperBase::Emplace{}, - f(std::any_cast(iCache))); + f(id, std::any_cast(iCache))); }); } diff --git a/FWCore/Framework/interface/limited/implementors.h b/FWCore/Framework/interface/limited/implementors.h index fd8464f08091d..20d15066f46cc 100644 --- a/FWCore/Framework/interface/limited/implementors.h +++ b/FWCore/Framework/interface/limited/implementors.h @@ -462,17 +462,17 @@ namespace edm { template void registerTransform(edm::EDPutTokenT iToken, F iF, std::string productInstance = std::string()) { - using ReturnTypeT = decltype(iF(std::declval())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [f = std::move(iF)](std::any const& iGotProduct) { + [f = std::move(iF)](edm::StreamID id, std::any const& iGotProduct) { auto pGotProduct = std::any_cast(iGotProduct); return std::make_unique>( - WrapperBase::Emplace{}, f(*static_cast const*>(pGotProduct)->product())); + WrapperBase::Emplace{}, f(id, *static_cast const*>(pGotProduct)->product())); }); } @@ -481,20 +481,21 @@ namespace edm { P iPre, F iF, std::string productInstance = std::string()) { - using CacheTypeT = decltype(iPre(std::declval(), WaitingTaskWithArenaHolder())); - using ReturnTypeT = decltype(iF(std::declval())); + using CacheTypeT = decltype(iPre(std::declval(), std::declval(), WaitingTaskWithArenaHolder())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformAsyncImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [p = std::move(iPre)](edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { - return std::any(p(*static_cast const&>(iGotProduct).product(), std::move(iHolder))); + [p = std::move(iPre)]( + edm::StreamID id, edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { + return std::any(p(id, *static_cast const&>(iGotProduct).product(), std::move(iHolder))); }, - [f = std::move(iF)](std::any const& iCache) { + [f = std::move(iF)](edm::StreamID id, std::any const& iCache) { auto cache = std::any_cast(iCache); - return std::make_unique>(WrapperBase::Emplace{}, f(cache)); + return std::make_unique>(WrapperBase::Emplace{}, f(id, cache)); }); } diff --git a/FWCore/Framework/interface/one/implementors.h b/FWCore/Framework/interface/one/implementors.h index 503f0682e20b4..c907636c8ef03 100644 --- a/FWCore/Framework/interface/one/implementors.h +++ b/FWCore/Framework/interface/one/implementors.h @@ -354,17 +354,18 @@ namespace edm { template void registerTransform(edm::EDPutTokenT iToken, F iF, std::string productInstance = std::string()) { - using ReturnTypeT = decltype(iF(std::declval())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); - TransformerBase::registerTransformImp(*this, - EDPutToken(iToken), - returnType, - std::move(productInstance), - [f = std::move(iF)](edm::WrapperBase const& iGotProduct) { - return std::make_unique>( - WrapperBase::Emplace{}, - f(*static_cast const&>(iGotProduct).product())); - }); + TransformerBase::registerTransformImp( + *this, + EDPutToken(iToken), + returnType, + std::move(productInstance), + [f = std::move(iF)](edm::StreamID id, std::any const& iGotProduct) { + auto pGotProduct = std::any_cast(iGotProduct); + return std::make_unique>( + WrapperBase::Emplace{}, f(id, *static_cast const*>(pGotProduct)->product())); + }); } template @@ -372,20 +373,22 @@ namespace edm { P iPre, F iF, std::string productInstance = std::string()) { - using CacheTypeT = decltype(iPre(std::declval(), WaitingTaskWithArenaHolder())); - using ReturnTypeT = decltype(iF(std::declval())); + using CacheTypeT = + decltype(iPre(std::declval(), std::declval(), WaitingTaskWithArenaHolder())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformAsyncImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [p = std::move(iPre)](edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { - return std::any(p(*static_cast const&>(iGotProduct).product(), std::move(iHolder))); + [p = std::move(iPre)]( + edm::StreamID id, edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { + return std::any(p(id, *static_cast const&>(iGotProduct).product(), std::move(iHolder))); }, - [f = std::move(iF)](std::any const& iCache) { + [f = std::move(iF)](edm::StreamID id, std::any const& iCache) { auto cache = std::any_cast(iCache); - return std::make_unique>(WrapperBase::Emplace{}, f(cache)); + return std::make_unique>(WrapperBase::Emplace{}, f(id, cache)); }); } diff --git a/FWCore/Framework/interface/stream/implementors.h b/FWCore/Framework/interface/stream/implementors.h index b6b557e0ff56e..0adff76076c8c 100644 --- a/FWCore/Framework/interface/stream/implementors.h +++ b/FWCore/Framework/interface/stream/implementors.h @@ -328,17 +328,17 @@ namespace edm { template void registerTransform(edm::EDPutTokenT iToken, F iF, std::string productInstance = std::string()) { - using ReturnTypeT = decltype(iF(std::declval())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [f = std::move(iF)](std::any const& iGotProduct) { + [f = std::move(iF)](edm::StreamID id, std::any const& iGotProduct) { auto pGotProduct = std::any_cast(iGotProduct); return std::make_unique>( - WrapperBase::Emplace{}, f(*static_cast const*>(pGotProduct)->product())); + WrapperBase::Emplace{}, f(id, *static_cast const*>(pGotProduct)->product())); }); } @@ -347,20 +347,22 @@ namespace edm { P iPre, F iF, std::string productInstance = std::string()) { - using CacheTypeT = decltype(iPre(std::declval(), WaitingTaskWithArenaHolder())); - using ReturnTypeT = decltype(iF(std::declval())); + using CacheTypeT = + decltype(iPre(std::declval(), std::declval(), WaitingTaskWithArenaHolder())); + using ReturnTypeT = decltype(iF(std::declval(), std::declval())); TypeID returnType(typeid(ReturnTypeT)); TransformerBase::registerTransformAsyncImp( *this, EDPutToken(iToken), returnType, std::move(productInstance), - [p = std::move(iPre)](edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { - return std::any(p(*static_cast const&>(iGotProduct).product(), std::move(iHolder))); + [p = std::move(iPre)]( + edm::StreamID id, edm::WrapperBase const& iGotProduct, WaitingTaskWithArenaHolder iHolder) { + return std::any(p(id, *static_cast const&>(iGotProduct).product(), std::move(iHolder))); }, - [f = std::move(iF)](std::any const& iCache) { + [f = std::move(iF)](edm::StreamID id, std::any const& iCache) { auto cache = std::any_cast(iCache); - return std::make_unique>(WrapperBase::Emplace{}, f(cache)); + return std::make_unique>(WrapperBase::Emplace{}, f(id, cache)); }); } diff --git a/FWCore/Framework/src/ESProducer.cc b/FWCore/Framework/src/ESProducer.cc index 234e7fd7b02c6..eee94fe0eec84 100644 --- a/FWCore/Framework/src/ESProducer.cc +++ b/FWCore/Framework/src/ESProducer.cc @@ -28,13 +28,13 @@ namespace edm { sharedResourceNames_.reset(); } - itemsToGetFromRecords_.reserve(consumesInfos_.size()); - recordsUsedDuringGet_.reserve(consumesInfos_.size()); - if (itemsToGetFromRecords_.size() == consumesInfos_.size()) { return; } + itemsToGetFromRecords_.reserve(consumesInfos_.size()); + recordsUsedDuringGet_.reserve(consumesInfos_.size()); + for (auto& info : consumesInfos_) { auto& items = itemsToGetFromRecords_.emplace_back(); items.reserve(info->size()); diff --git a/FWCore/Framework/src/EventPrincipal.cc b/FWCore/Framework/src/EventPrincipal.cc index 4919d9b821151..438ffb82ff05e 100644 --- a/FWCore/Framework/src/EventPrincipal.cc +++ b/FWCore/Framework/src/EventPrincipal.cc @@ -201,8 +201,7 @@ namespace edm { } auto phb = getProductResolverByIndex(index); - productProvenanceRetrieverPtr()->insertIntoSet( - ProductProvenance(phb->branchDescription().branchID(), std::move(parentage))); + productProvenanceRetrieverPtr()->insertIntoSet(ProductProvenance(phb->branchDescription().branchID(), parentage)); assert(phb); // ProductResolver assumes ownership @@ -214,7 +213,7 @@ namespace edm { std::optional productProvenance) const { assert(!bd.produced()); if (productProvenance) { - productProvenanceRetrieverPtr()->insertIntoSet(std::move(*productProvenance)); + productProvenanceRetrieverPtr()->insertIntoSet(*productProvenance); } auto phb = getExistingProduct(bd.branchID()); assert(phb); diff --git a/FWCore/Framework/src/EventSetupProvider.cc b/FWCore/Framework/src/EventSetupProvider.cc index 6b3165f183eef..f747a130ff756 100644 --- a/FWCore/Framework/src/EventSetupProvider.cc +++ b/FWCore/Framework/src/EventSetupProvider.cc @@ -347,10 +347,6 @@ namespace edm { } } - auto indices = recordsToResolverIndices(); - for (auto& provider : *dataProviders_) { - provider->updateLookup(indices); - } dataProviders_.reset(); mustFinishConfiguration_ = false; @@ -541,6 +537,13 @@ namespace edm { } } + void EventSetupProvider::updateLookup() { + auto indices = recordsToResolverIndices(); + for (auto& recordProvider : recordProviders_) { + recordProvider->updateLookup(indices); + } + } + bool EventSetupProvider::doRecordsMatch(EventSetupProvider& precedingESProvider, EventSetupRecordKey const& eventSetupRecordKey, std::map& allComponentsMatch, diff --git a/FWCore/Framework/src/EventSetupRecordProvider.cc b/FWCore/Framework/src/EventSetupRecordProvider.cc index 5daa14824bcb8..25597a8e3957a 100644 --- a/FWCore/Framework/src/EventSetupRecordProvider.cc +++ b/FWCore/Framework/src/EventSetupRecordProvider.cc @@ -252,6 +252,12 @@ namespace edm { for_all(providers_, std::bind(&EventSetupRecordProvider::addResolversToRecordHelper, this, _1, iMap)); } + void EventSetupRecordProvider::updateLookup(ESRecordsToProductResolverIndices const& iResolverToIndices) { + for (auto& productResolverProvider : providers_) { + productResolverProvider->updateLookup(iResolverToIndices); + } + } + std::set EventSetupRecordProvider::dependentRecords() const { return dependencies(key()); } std::set EventSetupRecordProvider::resolverProviderDescriptions() const { diff --git a/FWCore/Framework/src/EventSetupsController.cc b/FWCore/Framework/src/EventSetupsController.cc index 3f6873a7db37b..1947cfd7979a8 100644 --- a/FWCore/Framework/src/EventSetupsController.cc +++ b/FWCore/Framework/src/EventSetupsController.cc @@ -87,9 +87,17 @@ namespace edm { // In the following function, all the other components that contribute // to the same record and also the records that record depends on are // also checked. The component sharing is appropriately fixed as necessary. + // (this needs to be done before updateLookup because this can cause new + // ESProducers to be constructed). checkESProducerSharing(); clearComponents(); + // updateLookup needs to be called after checkESProducerSharing because + // that can cause new ESProducers to be constructed + for (auto& eventSetupProvider : providers_) { + eventSetupProvider->updateLookup(); + } + initializeEventSetupRecordIOVQueues(); numberOfConcurrentIOVs_.clear(); mustFinishConfiguration_ = false; diff --git a/FWCore/Framework/src/TransformerBase.cc b/FWCore/Framework/src/TransformerBase.cc index b091b968f3ac0..c5cfe9244bbe8 100644 --- a/FWCore/Framework/src/TransformerBase.cc +++ b/FWCore/Framework/src/TransformerBase.cc @@ -9,6 +9,8 @@ #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h" #include "FWCore/ServiceRegistry/interface/ModuleCallingContext.h" +#include "FWCore/ServiceRegistry/interface/StreamContext.h" + #include namespace { @@ -116,7 +118,8 @@ namespace edm { std::optional(iIndex), transformInfo_.get(iIndex)))> handle; //transform acquiring signal - TransformAcquiringSignalSentry sentry(iAct, *mcc.getStreamContext(), mcc); + auto const& streamContext = *mcc.getStreamContext(); + TransformAcquiringSignalSentry sentry(iAct, streamContext, mcc); CMS_SA_ALLOW try { handle = iEvent.get(transformInfo_.get(iIndex), transformInfo_.get(iIndex)); } catch (...) { @@ -133,15 +136,16 @@ namespace edm { } else { //transform signal auto mcc = iEvent.moduleCallingContext(); - TransformSignalSentry sentry(iAct, *mcc.getStreamContext(), mcc); + auto const& streamContext = *mcc.getStreamContext(); + TransformSignalSentry sentry(iAct, streamContext, mcc); iEvent.put(iBase.putTokenIndexToProductResolverIndex()[transformInfo_.get(iIndex).index()], - transformInfo_.get(iIndex)(std::move(*cache)), + transformInfo_.get(iIndex)(streamContext.streamID(), std::move(*cache)), handle); } }); WaitingTaskWithArenaHolder wta(*iHolder.group(), nextTask); CMS_SA_ALLOW try { - *cache = transformInfo_.get(iIndex)(*(handle->wrapper()), wta); + *cache = transformInfo_.get(iIndex)(streamContext.streamID(), *(handle->wrapper()), wta); } catch (...) { wta.doneWaiting(std::current_exception()); } @@ -153,9 +157,10 @@ namespace edm { if (handle.wrapper()) { std::any v = handle.wrapper(); //transform signal - TransformSignalSentry sentry(iAct, *mcc.getStreamContext(), mcc); + auto const& streamContext = *mcc.getStreamContext(); + TransformSignalSentry sentry(iAct, streamContext, mcc); iEvent.put(iBase.putTokenIndexToProductResolverIndex()[transformInfo_.get(iIndex).index()], - transformInfo_.get(iIndex)(std::move(v)), + transformInfo_.get(iIndex)(streamContext.streamID(), std::move(v)), handle); } } catch (...) { diff --git a/FWCore/Framework/test/global_filter_t.cppunit.cc b/FWCore/Framework/test/global_filter_t.cppunit.cc index 9e92a7f9f8cb3..af85e7fc9fc5e 100644 --- a/FWCore/Framework/test/global_filter_t.cppunit.cc +++ b/FWCore/Framework/test/global_filter_t.cppunit.cc @@ -357,7 +357,7 @@ class testGlobalFilter : public CppUnit::TestFixture { public: TransformProd(edm::ParameterSet const&) { token_ = produces(); - registerTransform(token_, [](float iV) { return int(iV); }); + registerTransform(token_, [](edm::StreamID, float iV) { return int(iV); }); } bool filter(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const { @@ -380,8 +380,8 @@ class testGlobalFilter : public CppUnit::TestFixture { token_ = produces(); registerTransformAsync( token_, - [](float iV, edm::WaitingTaskWithArenaHolder iHolder) { return IntHolder(iV); }, - [](IntHolder iWaitValue) { return iWaitValue.value_; }); + [](edm::StreamID, float iV, edm::WaitingTaskWithArenaHolder iHolder) { return IntHolder(iV); }, + [](edm::StreamID, IntHolder iWaitValue) { return iWaitValue.value_; }); } bool filter(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const { diff --git a/FWCore/Framework/test/global_producer_t.cppunit.cc b/FWCore/Framework/test/global_producer_t.cppunit.cc index efb8158bc4315..3dbcfa6b3384f 100644 --- a/FWCore/Framework/test/global_producer_t.cppunit.cc +++ b/FWCore/Framework/test/global_producer_t.cppunit.cc @@ -325,7 +325,7 @@ class testGlobalProducer : public CppUnit::TestFixture { public: TransformProd(edm::ParameterSet const&) { token_ = produces(); - registerTransform(token_, [](float iV) { return int(iV); }); + registerTransform(token_, [](edm::StreamID, float iV) { return int(iV); }); } void produce(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const { @@ -347,8 +347,8 @@ class testGlobalProducer : public CppUnit::TestFixture { token_ = produces(); registerTransformAsync( token_, - [](float iV, edm::WaitingTaskWithArenaHolder iHolder) { return IntHolder(iV); }, - [](IntHolder iWaitValue) { return iWaitValue.value_; }); + [](edm::StreamID, float iV, edm::WaitingTaskWithArenaHolder iHolder) { return IntHolder(iV); }, + [](edm::StreamID, IntHolder iWaitValue) { return iWaitValue.value_; }); } void produce(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const { diff --git a/FWCore/Framework/test/limited_filter_t.cppunit.cc b/FWCore/Framework/test/limited_filter_t.cppunit.cc index 6df1b73e45204..e811b54cab5d9 100644 --- a/FWCore/Framework/test/limited_filter_t.cppunit.cc +++ b/FWCore/Framework/test/limited_filter_t.cppunit.cc @@ -391,7 +391,7 @@ class testLimitedFilter : public CppUnit::TestFixture { TransformProd(edm::ParameterSet const&) : edm::limited::EDFilterBase(s_pset), edm::limited::EDFilter(s_pset) { token_ = produces(); - registerTransform(token_, [](float iV) { return int(iV); }); + registerTransform(token_, [](edm::StreamID, float iV) { return int(iV); }); } bool filter(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const { diff --git a/FWCore/Framework/test/limited_producer_t.cppunit.cc b/FWCore/Framework/test/limited_producer_t.cppunit.cc index c882d73340d87..86472f4effda9 100644 --- a/FWCore/Framework/test/limited_producer_t.cppunit.cc +++ b/FWCore/Framework/test/limited_producer_t.cppunit.cc @@ -357,7 +357,7 @@ class testLimitedProducer : public CppUnit::TestFixture { TransformProd(edm::ParameterSet const&) : edm::limited::EDProducerBase(s_pset), edm::limited::EDProducer(s_pset) { token_ = produces(); - registerTransform(token_, [](float iV) { return int(iV); }); + registerTransform(token_, [](edm::StreamID, float iV) { return int(iV); }); } void produce(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const { diff --git a/FWCore/Framework/test/stream_producer_t.cppunit.cc b/FWCore/Framework/test/stream_producer_t.cppunit.cc index e39a35eb291fd..a34ed3279f558 100644 --- a/FWCore/Framework/test/stream_producer_t.cppunit.cc +++ b/FWCore/Framework/test/stream_producer_t.cppunit.cc @@ -376,6 +376,44 @@ class testStreamProducer : public CppUnit::TestFixture { m_globalEndLuminosityBlockSummaryCalled = false; } }; + + class TransformProd : public edm::stream::EDProducer { + public: + TransformProd(edm::ParameterSet const&) { + token_ = produces(); + registerTransform(token_, [](edm::StreamID, float iV) { return int(iV); }); + } + + void produce(edm::Event& iEvent, edm::EventSetup const&) final { + //iEvent.emplace(token_, 3.625); + } + + private: + edm::EDPutTokenT token_; + }; + + class TransformAsyncProd : public edm::stream::EDProducer { + public: + struct IntHolder { + IntHolder() : value_(0) {} + IntHolder(int iV) : value_(iV) {} + int value_; + }; + TransformAsyncProd(edm::ParameterSet const&) { + token_ = produces(); + registerTransformAsync( + token_, + [](edm::StreamID, float iV, edm::WaitingTaskWithArenaHolder iHolder) { return IntHolder(iV); }, + [](edm::StreamID, IntHolder iWaitValue) { return iWaitValue.value_; }); + } + + void produce(edm::Event& iEvent, edm::EventSetup const&) final { + //iEvent.emplace(token_, 3.625); + } + + private: + edm::EDPutTokenT token_; + }; }; unsigned int testStreamProducer::BasicProd::m_count = 0; unsigned int testStreamProducer::GlobalProd::m_count = 0; diff --git a/FWCore/Framework/test/stubs/ToyIntProducers.cc b/FWCore/Framework/test/stubs/ToyIntProducers.cc index 53fb709171be2..4fdaba7c0ec98 100644 --- a/FWCore/Framework/test/stubs/ToyIntProducers.cc +++ b/FWCore/Framework/test/stubs/ToyIntProducers.cc @@ -1001,8 +1001,9 @@ namespace edm::test { public: explicit IntTransformer(edm::ParameterSet const& p) : token_{produces()}, value_(p.getParameter("valueOther")) { - registerTransform(token_, - [](edmtest::ATransientIntProduct const& iV) { return edmtest::IntProduct(iV.value); }); + registerTransform(token_, [](edm::StreamID, edmtest::ATransientIntProduct const& iV) { + return edmtest::IntProduct(iV.value); + }); } void produce(edm::StreamID, edm::Event& e, edm::EventSetup const& c) const final { e.emplace(token_, value_); } diff --git a/FWCore/Framework/test/transition_test_cfg.py b/FWCore/Framework/test/transition_test_cfg.py index e168e70bc931b..8ac5db30e85e5 100644 --- a/FWCore/Framework/test/transition_test_cfg.py +++ b/FWCore/Framework/test/transition_test_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys diff --git a/FWCore/Integration/plugins/BuildFile.xml b/FWCore/Integration/plugins/BuildFile.xml index 070c0298a1b5a..086c34c78f92e 100644 --- a/FWCore/Integration/plugins/BuildFile.xml +++ b/FWCore/Integration/plugins/BuildFile.xml @@ -75,6 +75,12 @@ + + + + + + diff --git a/FWCore/Integration/plugins/MaybeUninitializedIntAnalyzer.cc b/FWCore/Integration/plugins/MaybeUninitializedIntAnalyzer.cc new file mode 100644 index 0000000000000..e7f53982bd16d --- /dev/null +++ b/FWCore/Integration/plugins/MaybeUninitializedIntAnalyzer.cc @@ -0,0 +1,33 @@ +#include "DataFormats/TestObjects/interface/ToyProducts.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/global/EDAnalyzer.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/EDGetToken.h" +#include "FWCore/Utilities/interface/Exception.h" +#include "FWCore/Utilities/interface/InputTag.h" + +namespace edmtest { + + class MaybeUninitializedIntAnalyzer : public edm::global::EDAnalyzer<> { + public: + MaybeUninitializedIntAnalyzer(edm::ParameterSet const& config) + : value_{config.getParameter("value")}, + token_{consumes(config.getParameter("source"))} {} + + void analyze(edm::StreamID, edm::Event const& event, edm::EventSetup const&) const final { + MaybeUninitializedIntProduct const& product = event.get(token_); + if (product.value != value_) { + throw cms::Exception("Inconsistent Data", "MaybeUninitializedIntAnalyzer::analyze") + << "Found value " << product.value << " while expecting value " << value_; + } + } + + private: + const cms_int32_t value_; + const edm::EDGetTokenT token_; + }; + +} // namespace edmtest + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(edmtest::MaybeUninitializedIntAnalyzer); diff --git a/FWCore/Integration/plugins/MaybeUninitializedIntProducer.cc b/FWCore/Integration/plugins/MaybeUninitializedIntProducer.cc new file mode 100644 index 0000000000000..1533d0e598c42 --- /dev/null +++ b/FWCore/Integration/plugins/MaybeUninitializedIntProducer.cc @@ -0,0 +1,26 @@ +#include "DataFormats/TestObjects/interface/ToyProducts.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/EDPutToken.h" + +namespace edmtest { + + class MaybeUninitializedIntProducer : public edm::global::EDProducer<> { + public: + MaybeUninitializedIntProducer(edm::ParameterSet const& config) + : value_{config.getParameter("value")}, token_{produces()} {} + + void produce(edm::StreamID, edm::Event& event, edm::EventSetup const&) const final { + event.emplace(token_, value_); + } + + private: + const cms_int32_t value_; + const edm::EDPutTokenT token_; + }; + +} // namespace edmtest + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(edmtest::MaybeUninitializedIntProducer); diff --git a/FWCore/Integration/plugins/TransformAsyncIntProducer.cc b/FWCore/Integration/plugins/TransformAsyncIntProducer.cc index f239775c49e6d..2137519c4b45b 100644 --- a/FWCore/Integration/plugins/TransformAsyncIntProducer.cc +++ b/FWCore/Integration/plugins/TransformAsyncIntProducer.cc @@ -23,7 +23,7 @@ namespace edmtest { bool check = iPSet.getUntrackedParameter("checkTransformNotCalled"); registerTransformAsync( putToken_, - [offset = transformOffset_, check](auto const& iFrom, auto iTask) { + [offset = transformOffset_, check](edm::StreamID, auto const& iFrom, auto iTask) { if (check) { throw cms::Exception("TransformShouldNotBeCalled"); } @@ -33,7 +33,7 @@ namespace edmtest { ret.value_ = IntProduct(iFrom.value + offset); return ret; }, - [](auto const& iFrom) { + [](edm::StreamID, auto const& iFrom) { iFrom.thread_->join(); return iFrom.value_; }, diff --git a/FWCore/Integration/plugins/TransformAsyncIntStreamProducer.cc b/FWCore/Integration/plugins/TransformAsyncIntStreamProducer.cc index 196c7526a764b..3c0ce428207e9 100644 --- a/FWCore/Integration/plugins/TransformAsyncIntStreamProducer.cc +++ b/FWCore/Integration/plugins/TransformAsyncIntStreamProducer.cc @@ -22,7 +22,7 @@ namespace edmtest { bool check = iPSet.getUntrackedParameter("checkTransformNotCalled"); registerTransformAsync( putToken_, - [offset = transformOffset_, check](auto const& iFrom, auto iTask) { + [offset = transformOffset_, check](edm::StreamID, auto const& iFrom, auto iTask) { if (check) { throw cms::Exception("TransformShouldNotBeCalled"); } @@ -32,7 +32,7 @@ namespace edmtest { ret.value_ = IntProduct(iFrom.value + offset); return ret; }, - [](auto const& iFrom) { + [](edm::StreamID, auto const& iFrom) { iFrom.thread_->join(); return iFrom.value_; }, diff --git a/FWCore/Integration/plugins/TransformIntProducer.cc b/FWCore/Integration/plugins/TransformIntProducer.cc index 29afc7e81d9e5..3aac6f5717389 100644 --- a/FWCore/Integration/plugins/TransformIntProducer.cc +++ b/FWCore/Integration/plugins/TransformIntProducer.cc @@ -16,7 +16,7 @@ namespace edmtest { bool check = iPSet.getUntrackedParameter("checkTransformNotCalled"); registerTransform( putToken_, - [offset = transformOffset_, check](auto const& iFrom) { + [offset = transformOffset_, check](edm::StreamID, auto const& iFrom) { if (check) { throw cms::Exception("TransformShouldNotBeCalled"); } diff --git a/FWCore/Integration/plugins/TransformIntStreamProducer.cc b/FWCore/Integration/plugins/TransformIntStreamProducer.cc index 212287a35bebe..8262525739d42 100644 --- a/FWCore/Integration/plugins/TransformIntStreamProducer.cc +++ b/FWCore/Integration/plugins/TransformIntStreamProducer.cc @@ -15,7 +15,7 @@ namespace edmtest { bool check = iPSet.getUntrackedParameter("checkTransformNotCalled"); registerTransform( putToken_, - [offset = transformOffset_, check](auto const& iFrom) { + [offset = transformOffset_, check](edm::StreamID, auto const& iFrom) { if (check) { throw cms::Exception("TransformShouldNotBeCalled"); } diff --git a/FWCore/Integration/python/allowed_cff.py b/FWCore/Integration/python/allowed_cff.py index d00cd96410f06..c2ec497c0fd03 100644 --- a/FWCore/Integration/python/allowed_cff.py +++ b/FWCore/Integration/python/allowed_cff.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from . import restricted_cff diff --git a/FWCore/Integration/python/forbidden_cff.py b/FWCore/Integration/python/forbidden_cff.py index d00cd96410f06..c2ec497c0fd03 100644 --- a/FWCore/Integration/python/forbidden_cff.py +++ b/FWCore/Integration/python/forbidden_cff.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from . import restricted_cff diff --git a/FWCore/Integration/test/BuildFile.xml b/FWCore/Integration/test/BuildFile.xml index 6b0c0eb407ac7..be14c0cc7421f 100644 --- a/FWCore/Integration/test/BuildFile.xml +++ b/FWCore/Integration/test/BuildFile.xml @@ -220,4 +220,5 @@ + diff --git a/FWCore/Integration/test/testMaybeUninitializedIntProductPart1_cfg.py b/FWCore/Integration/test/testMaybeUninitializedIntProductPart1_cfg.py new file mode 100644 index 0000000000000..bf4d46bb3a0b3 --- /dev/null +++ b/FWCore/Integration/test/testMaybeUninitializedIntProductPart1_cfg.py @@ -0,0 +1,29 @@ +#! /usr/bin/env cmsRun + +# This configuration is designed to be run as the first in a series of two cmsRun processes. +# It produces a collection of edmtest::MaybeUninitializedIntProduct and stores them to a ROOT file, +# to test that edm::Wrapper can be used to read and write objects without a default constructor. + +import FWCore.ParameterSet.Config as cms + +process = cms.Process("Part1") + +process.load("FWCore.MessageService.MessageLogger_cfi") +process.MessageLogger.cerr.FwkReport.reportEvery = 1 + +process.source = cms.Source("EmptySource") +process.maxEvents.input = 10 + +process.prod = cms.EDProducer("edmtest::MaybeUninitializedIntProducer", + value = cms.int32(42) +) + +process.out = cms.OutputModule("PoolOutputModule", + fileName = cms.untracked.string('testMaybeUninitializedIntProduct.root'), + outputCommands = cms.untracked.vstring( + 'keep *_prod_*_*' + ) +) + +process.path = cms.Path(process.prod) +process.endp = cms.EndPath(process.out) diff --git a/FWCore/Integration/test/testMaybeUninitializedIntProductPart2_cfg.py b/FWCore/Integration/test/testMaybeUninitializedIntProductPart2_cfg.py new file mode 100644 index 0000000000000..ee9337f3215ff --- /dev/null +++ b/FWCore/Integration/test/testMaybeUninitializedIntProductPart2_cfg.py @@ -0,0 +1,23 @@ +#! /usr/bin/env cmsRun + +# This configuration is designed to be run as the second in a series of two cmsRun processes. +# It reads a collection of edmtest::MaybeUninitializedIntProduct from a ROOT file and check their values, +# to test that edm::Wrapper can be used to read and write objects without a default constructor. + +import FWCore.ParameterSet.Config as cms + +process = cms.Process("Part2") + +process.load("FWCore.MessageService.MessageLogger_cfi") +process.MessageLogger.cerr.FwkReport.reportEvery = 1 + +process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring('file:testMaybeUninitializedIntProduct.root') +) + +process.read = cms.EDAnalyzer("edmtest::MaybeUninitializedIntAnalyzer", + source = cms.InputTag("prod"), + value = cms.int32(42) +) + +process.path = cms.Path(process.read) diff --git a/FWCore/MessageLogger/scripts/edmFjrDump b/FWCore/MessageLogger/scripts/edmFjrDump index 8825e623cf368..43296969ceb6d 100755 --- a/FWCore/MessageLogger/scripts/edmFjrDump +++ b/FWCore/MessageLogger/scripts/edmFjrDump @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import xml.etree.ElementTree as ET import argparse diff --git a/FWCore/MessageLogger/scripts/edmMLParser b/FWCore/MessageLogger/scripts/edmMLParser index d8d719376fb79..153d5ae8aeda4 100755 --- a/FWCore/MessageLogger/scripts/edmMLParser +++ b/FWCore/MessageLogger/scripts/edmMLParser @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function def manipulate_log(logfile_name,category_names,printBeginEvent,printMessageLabel,verbosityLevel): diff --git a/FWCore/MessageService/src/ELoutput.cc b/FWCore/MessageService/src/ELoutput.cc index 95cf483776c60..290c7ff963ddd 100644 --- a/FWCore/MessageService/src/ELoutput.cc +++ b/FWCore/MessageService/src/ELoutput.cc @@ -83,10 +83,11 @@ // #define ELoutputTRACE_LOG // #define ELoutput_EMIT_TRACE -#include -#include -#include #include +#include +#include +#include +#include namespace { // ---------------------------------------------------------------------- @@ -375,14 +376,14 @@ namespace edm { needAspace = false; } } - if (wantModule && (xid.module.length() > 0)) { + if (wantModule && (!xid.module.empty())) { if (needAspace) { emitToken(" "); needAspace = false; } emitToken(xid.module + " "); } - if (wantSubroutine && (xid.subroutine.length() > 0)) { + if (wantSubroutine && (!xid.subroutine.empty())) { if (needAspace) { emitToken(" "); needAspace = false; @@ -516,7 +517,7 @@ namespace edm { std::cerr << "[][][] in emit: lineLength is " << lineLength << '\n'; #endif - if (s.length() == 0) { + if (s.empty()) { if (nl) { (*os) << newline << std::flush; charsOnLine = 0; @@ -632,7 +633,7 @@ namespace edm { } void ELoutput::changeFile(const std::string& filename) { - os.reset(new std::ofstream(filename.c_str(), std::ios /*_base*/ ::app), close_and_delete()); + os.reset(new std::ofstream(filename.c_str(), std::ios /*_base*/ ::app), close_and_delete()); //NOLINT emitToken("\n=======================================================", true); emitToken("\nError Log changed to this file\n"); std::string const& ftime = formatTime(time(nullptr)); // Change log 7 diff --git a/FWCore/Modules/python/customiseCheckEventSetup.py b/FWCore/Modules/python/customiseCheckEventSetup.py index 691f2afa1769b..3cda491ea772a 100644 --- a/FWCore/Modules/python/customiseCheckEventSetup.py +++ b/FWCore/Modules/python/customiseCheckEventSetup.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms def customise(process): diff --git a/FWCore/Modules/src/BranchIDListsModifierProducer.cc b/FWCore/Modules/src/BranchIDListsModifierProducer.cc index 5a9591b28e275..15944021e0dba 100644 --- a/FWCore/Modules/src/BranchIDListsModifierProducer.cc +++ b/FWCore/Modules/src/BranchIDListsModifierProducer.cc @@ -14,7 +14,7 @@ class BranchIDListsModifierProducer : public edm::global::EDProducer<> { public: BranchIDListsModifierProducer(edm::ParameterSet const& iPSet); - void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const; + void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override; static void fillDescriptions(edm::ConfigurationDescriptions& iDesc); diff --git a/FWCore/Modules/src/EmptySourceFromEventIDs.cc b/FWCore/Modules/src/EmptySourceFromEventIDs.cc new file mode 100644 index 0000000000000..bc2464051a27e --- /dev/null +++ b/FWCore/Modules/src/EmptySourceFromEventIDs.cc @@ -0,0 +1,64 @@ +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/InputSource.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Sources/interface/IDGeneratorSourceBase.h" + +/* + * IDGeneratorSourceBase implements the logic to generate run, lumi, and event numbers, and event timestamps. + * These will actually be overwritten by this source, but it's easier to do that than to write a new source base + * type from scratch. + */ + +class EmptySourceFromEventIDs : public edm::IDGeneratorSourceBase { +public: + explicit EmptySourceFromEventIDs(edm::ParameterSet const&, edm::InputSourceDescription const&); + ~EmptySourceFromEventIDs() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + +private: + bool setRunAndEventInfo(edm::EventID& id, edm::TimeValue_t& time, edm::EventAuxiliary::ExperimentType& type) override; + void readEvent_(edm::EventPrincipal& e) override; + + std::vector events_; +}; + +// Note that almost all configuration parameters passed to IDGeneratorSourceBase will effectively be ignored, because +// the EmptySourceFromEventIDs will explicitly set the run, lumi, and event numbers, the timestamp, and the event type. +EmptySourceFromEventIDs::EmptySourceFromEventIDs(edm::ParameterSet const& config, + edm::InputSourceDescription const& desc) + : IDGeneratorSourceBase(config, desc, false), + events_{config.getUntrackedParameter>("events")} // List of event ids to create +{ + // Invert the order of the events so they can efficiently be popped off the back of the vector + std::reverse(events_.begin(), events_.end()); +} + +bool EmptySourceFromEventIDs::setRunAndEventInfo(edm::EventID& event, + edm::TimeValue_t& time, + edm::EventAuxiliary::ExperimentType& type) { + if (events_.empty()) { + return false; + } + + event = events_.back(); + events_.pop_back(); + return true; +} + +void EmptySourceFromEventIDs::readEvent_(edm::EventPrincipal& e) { + doReadEvent(e, [](auto const&) {}); +} + +void EmptySourceFromEventIDs::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.setComment("Creates runs, lumis and events (containing no products) based on the provided list of event ids."); + edm::IDGeneratorSourceBase::fillDescription(desc); + + desc.addUntracked>("events", {}); + descriptions.add("source", desc); +} + +#include "FWCore/Framework/interface/InputSourceMacros.h" +DEFINE_FWK_INPUT_SOURCE(EmptySourceFromEventIDs); diff --git a/FWCore/Modules/test/BuildFile.xml b/FWCore/Modules/test/BuildFile.xml index d1054436b83b1..f33267058f2d0 100644 --- a/FWCore/Modules/test/BuildFile.xml +++ b/FWCore/Modules/test/BuildFile.xml @@ -4,6 +4,8 @@ + + diff --git a/FWCore/Modules/test/testEmptySourceFromEventIDs_cfg.py b/FWCore/Modules/test/testEmptySourceFromEventIDs_cfg.py new file mode 100644 index 0000000000000..dae29c8443fd2 --- /dev/null +++ b/FWCore/Modules/test/testEmptySourceFromEventIDs_cfg.py @@ -0,0 +1,47 @@ +#! /usr/bin/env cmsRun + +import FWCore.ParameterSet.Config as cms + +events = cms.VEventID( + # Run 100 + cms.EventID(100, 1, 1), + cms.EventID(100, 1, 2), + cms.EventID(100, 2, 3), + cms.EventID(100, 2, 4), + cms.EventID(100, 3, 5), + # Run 101 + cms.EventID(101, 1, 1), + cms.EventID(101, 1, 2), + cms.EventID(101, 2, 3), + cms.EventID(101, 2, 4), + cms.EventID(101, 3, 5), + # Run 102 + cms.EventID(102, 1, 1), + cms.EventID(102, 1, 2), + cms.EventID(102, 2, 3), + cms.EventID(102, 2, 4), + cms.EventID(102, 3, 5), + # Run 103 + cms.EventID(103, 1, 1), + cms.EventID(103, 1, 2), + cms.EventID(103, 2, 3), + cms.EventID(103, 2, 4), + cms.EventID(103, 3, 5), +) + +process = cms.Process("TEST") + +process.source = cms.Source("EmptySourceFromEventIDs", + events = cms.untracked(events) +) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(42) +) + +# EventIDChecker requires processing the events serially +process.options.numberOfStreams = 1 + +process.check = cms.EDAnalyzer("EventIDChecker", eventSequence = cms.untracked(events)) + +process.endp = cms.EndPath(process.check) diff --git a/FWCore/ParameterSet/examples/varParsingExample.py b/FWCore/ParameterSet/examples/varParsingExample.py index e0e129149991a..8814ea7aa4c46 100755 --- a/FWCore/ParameterSet/examples/varParsingExample.py +++ b/FWCore/ParameterSet/examples/varParsingExample.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from FWCore.ParameterSet.VarParsing import VarParsing options = VarParsing ('python') options.inputFiles = 'bob','peter' diff --git a/FWCore/ParameterSet/python/Config.py b/FWCore/ParameterSet/python/Config.py index 33f712b1a4df8..031cf11befd0e 100644 --- a/FWCore/ParameterSet/python/Config.py +++ b/FWCore/ParameterSet/python/Config.py @@ -1,8 +1,6 @@ #!/usr/bin/env python3 ### command line options helper -from __future__ import print_function -from __future__ import absolute_import import os from .Options import Options options = Options() @@ -54,7 +52,7 @@ def checkImportPermission(minLevel: int = 2, allowedPatterns = []): import os ignorePatterns = ['FWCore/ParameterSet/Config.py', 'FWCore/ParameterSet/python/Config.py','',' str: @@ -198,16 +197,16 @@ def scan_opcodes_25(self, co, unpack = struct.unpack): try : parentFilename=[self._localarea+"/python"] for subModule in loadMethodArgument.split(".") : - moduleInfo=imp.find_module( subModule, parentFilename ) - parentFilename=[moduleInfo[1]] + moduleInfo=importlib.machinery.PathFinder.find_spec( subModule, parentFilename ) + parentFilename=[moduleInfo.origin] # If control got this far without raising an exception, then it must be a valid python module yield "import", (None, loadMethodArgument) except ImportError : # Didn't work in the local area, try in the global area. parentFilename=[self._globalarea+"/python"] for subModule in loadMethodArgument.split(".") : - moduleInfo=imp.find_module( subModule, parentFilename ) - parentFilename=[moduleInfo[1]] + moduleInfo=importlib.machinery.PathFinder.find_spec( subModule, parentFilename ) + parentFilename=[moduleInfo.origin] # If control got this far without raising an exception, then it must be a valid python module yield "import", (None, loadMethodArgument) except Exception as error: diff --git a/FWCore/ParameterSet/python/Types.py b/FWCore/ParameterSet/python/Types.py index 1511dcb470e8c..83c17f0068abe 100644 --- a/FWCore/ParameterSet/python/Types.py +++ b/FWCore/ParameterSet/python/Types.py @@ -1,14 +1,13 @@ -from __future__ import absolute_import from .Mixins import PrintOptions, _SimpleParameterTypeBase, _ParameterTypeBase, _Parameterizable, _ConfigureComponent, _Labelable, _TypedParameterizable, _Unlabelable, _modifyParametersFromDict from .Mixins import _ValidatingParameterListBase, specialImportRegistry from .Mixins import saveOrigin from .ExceptionHandling import format_typename, format_outerframe -from past.builtins import long import codecs import copy import math import builtins +long = int _builtin_bool = bool class _Untracked(object): diff --git a/FWCore/ParameterSet/python/VarParsing.py b/FWCore/ParameterSet/python/VarParsing.py index 5ac0ece250cd9..9411631070c4a 100644 --- a/FWCore/ParameterSet/python/VarParsing.py +++ b/FWCore/ParameterSet/python/VarParsing.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import os import re @@ -413,8 +412,9 @@ def register (self, name, self._lists[name] = [] # if it's a list, we only want to use the default if it # does exist. - if len (default): - self._lists[name].append (default) + if (mytype in [VarParsing.varType.bool, VarParsing.varType.int, VarParsing.varType.float] and \ + default not in ["",[]]) or len (default): # check type to prevent TypeError for bool/int/float defaults + self._lists[name].append (default) # known bug: default can be list ####################################### ## Process any additional directives ## ####################################### diff --git a/FWCore/ParameterSet/python/test/MessWithGeometry_cfg.py b/FWCore/ParameterSet/python/test/MessWithGeometry_cfg.py index b3d07702d9edd..552e212fcf34f 100644 --- a/FWCore/ParameterSet/python/test/MessWithGeometry_cfg.py +++ b/FWCore/ParameterSet/python/test/MessWithGeometry_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("P") diff --git a/FWCore/ParameterSet/scripts/edmConfigIncludeChecker b/FWCore/ParameterSet/scripts/edmConfigIncludeChecker index 3f38cd7a33aff..bf72e74583256 100755 --- a/FWCore/ParameterSet/scripts/edmConfigIncludeChecker +++ b/FWCore/ParameterSet/scripts/edmConfigIncludeChecker @@ -5,7 +5,6 @@ # # for questions: benedikt.hegner@cern.ch -from __future__ import print_function from builtins import object import os.path import sys diff --git a/FWCore/ParameterSet/test/BuildFile.xml b/FWCore/ParameterSet/test/BuildFile.xml index af77e27b94d1c..829b5c769f8f7 100644 --- a/FWCore/ParameterSet/test/BuildFile.xml +++ b/FWCore/ParameterSet/test/BuildFile.xml @@ -15,3 +15,5 @@ + + diff --git a/FWCore/ParameterSet/test/cmsconfig.py b/FWCore/ParameterSet/test/cmsconfig.py index c18db9c0deebf..193651f3abcfe 100644 --- a/FWCore/ParameterSet/test/cmsconfig.py +++ b/FWCore/ParameterSet/test/cmsconfig.py @@ -1,4 +1,3 @@ -from __future__ import print_function #------------------------------------------------------------ # # diff --git a/FWCore/ParameterSet/test/test_varparsing_list.py b/FWCore/ParameterSet/test/test_varparsing_list.py new file mode 100644 index 0000000000000..65efd6e1664ef --- /dev/null +++ b/FWCore/ParameterSet/test/test_varparsing_list.py @@ -0,0 +1,30 @@ +import sys +from FWCore.ParameterSet.VarParsing import VarParsing + +def parse(argv): + sys.argv = ['test_varparsing_list.py','maxEvents=100']+argv # emulate user arguments + opts = VarParsing('standard') + opts.register('myInts0', '', VarParsing.multiplicity.list, VarParsing.varType.int) + opts.register('myInts1', [], VarParsing.multiplicity.list, VarParsing.varType.int) + opts.register('myInts2', 0, VarParsing.multiplicity.list, VarParsing.varType.int) + opts.register('myInts3', [0], VarParsing.multiplicity.list, VarParsing.varType.int) + opts.register('myFloats0', '', VarParsing.multiplicity.list, VarParsing.varType.float) + opts.register('myFloats1', [], VarParsing.multiplicity.list, VarParsing.varType.float) + opts.register('myFloats2', 0, VarParsing.multiplicity.list, VarParsing.varType.float) + opts.register('myFloats3', [0], VarParsing.multiplicity.list, VarParsing.varType.float) + opts.register('myBools0', '', VarParsing.multiplicity.list, VarParsing.varType.bool) + opts.register('myBools1', [], VarParsing.multiplicity.list, VarParsing.varType.bool) + opts.register('myBools2', True, VarParsing.multiplicity.list, VarParsing.varType.bool) + opts.register('myBools3', [True], VarParsing.multiplicity.list, VarParsing.varType.bool) + opts.register('myStrs0', '', VarParsing.multiplicity.list, VarParsing.varType.string) + opts.register('myStrs1', [], VarParsing.multiplicity.list, VarParsing.varType.string) + opts.register('myStrs2', 'foo', VarParsing.multiplicity.list, VarParsing.varType.string) + opts.register('myStrs3', ['foo'], VarParsing.multiplicity.list, VarParsing.varType.string) + opts.parseArguments() + #print(f">>> Parsed: {sys.argv} -> lists={opts._lists}") + +# parse without user arguments +parse([ ]) + +# parse with user arguments +parse(['myInts1=0,1,-1','myFloats1=3.14,0,0.0,-1.0','myBools1=True,False','myStrs1=foo,bar']) \ No newline at end of file diff --git a/FWCore/PythonUtilities/python/XML2Python.py b/FWCore/PythonUtilities/python/XML2Python.py index 50263ce924956..aca8935e01260 100644 --- a/FWCore/PythonUtilities/python/XML2Python.py +++ b/FWCore/PythonUtilities/python/XML2Python.py @@ -1,4 +1,3 @@ -from __future__ import print_function ## Original version of code heavily based on recipe written by Wai Yip ## Tung, released under PSF license. ## http://code.activestate.com/recipes/534109/ diff --git a/FWCore/PythonUtilities/scripts/generateEDF.py b/FWCore/PythonUtilities/scripts/generateEDF.py index 938308f8f0ab7..a7a75ebc16dd8 100755 --- a/FWCore/PythonUtilities/scripts/generateEDF.py +++ b/FWCore/PythonUtilities/scripts/generateEDF.py @@ -2,7 +2,6 @@ from builtins import zip from builtins import object -from past.utils import old_div from builtins import range import sys import re @@ -15,6 +14,9 @@ sepRE = re.compile (r'[\s,;:]+') nonSpaceRE = re.compile (r'\S') +def old_div(a, b): + return a // b + ########################## ## #################### ## ## ## LumiInfo Class ## ## diff --git a/FWCore/PythonUtilities/scripts/interactivePythonTest.py b/FWCore/PythonUtilities/scripts/interactivePythonTest.py index e4a092cb89020..b6508dfbadc8f 100755 --- a/FWCore/PythonUtilities/scripts/interactivePythonTest.py +++ b/FWCore/PythonUtilities/scripts/interactivePythonTest.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys import os import readline diff --git a/FWCore/Reflection/scripts/edmCheckClassVersion b/FWCore/Reflection/scripts/edmCheckClassVersion index ecd795cabbbac..7f59f06278582 100755 --- a/FWCore/Reflection/scripts/edmCheckClassVersion +++ b/FWCore/Reflection/scripts/edmCheckClassVersion @@ -1,7 +1,12 @@ #! /usr/bin/env python3 import sys -import FWCore.Reflection.ClassesDefXmlUtils as ClassesDefUtils +try: + import FWCore.Reflection.ClassesDefXmlUtils as ClassesDefUtils +except: + import os + sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),"python")) + import ClassesDefXmlUtils as ClassesDefUtils # recursively check the base classes for a class pointer # as building the streamer will crash if base classes are diff --git a/FWCore/Reflection/test/run_classVersionUpdate.sh b/FWCore/Reflection/test/run_classVersionUpdate.sh index 261d573294ae5..0f6496a60b042 100755 --- a/FWCore/Reflection/test/run_classVersionUpdate.sh +++ b/FWCore/Reflection/test/run_classVersionUpdate.sh @@ -36,7 +36,7 @@ mv TestObjects.h.tmp FWCore/Reflection/test/stubs/TestObjects.h #Set env and build in sub-shel -(eval $(scram run -sh) ; scram build -j $(nproc)) +(eval $(scram run -sh) ; SCRAM_NOEDM_CHECKS=yes scram build -j $(nproc)) popd diff --git a/FWCore/Services/plugins/SimpleMemoryCheck.cc b/FWCore/Services/plugins/SimpleMemoryCheck.cc index 5fedb057cd5f6..98fb253ae5a62 100644 --- a/FWCore/Services/plugins/SimpleMemoryCheck.cc +++ b/FWCore/Services/plugins/SimpleMemoryCheck.cc @@ -41,6 +41,7 @@ #include "FWCore/Utilities/interface/Exception.h" #include "FWCore/Utilities/interface/get_underlying_safe.h" +#include #include #include #include @@ -54,19 +55,40 @@ #include #include +#include + +// for jemalloc queries +#include +extern "C" { +typedef int (*mallctl_t)(const char* name, void* oldp, size_t* oldlenp, void* newp, size_t newlen); +} namespace edm { namespace service { + enum class SmapsSection { + kSharedObject = 0, + kPcm = 1, + kOtherFile = 2, + kStack = 3, + kMmap = 4, + kOther = 5, + kSize = 6 + }; struct smapsInfo { - smapsInfo() : private_(), pss_() {} - smapsInfo(double private_sz, double pss_sz) : private_(private_sz), pss_(pss_sz) {} - - bool operator==(const smapsInfo& p) const { return private_ == p.private_ && pss_ == p.pss_; } + double private_ = 0; // in MB + double pss_ = 0; // in MB + double anonHugePages_ = 0; // in MB - bool operator>(const smapsInfo& p) const { return private_ > p.private_ || pss_ > p.pss_; } - - double private_; // in MB - double pss_; // in MB + static constexpr auto sectionsSize_ = static_cast(SmapsSection::kSize); + std::array sectionRss_{}; // in MB + std::array sectionVSize_{}; // in MB + }; + struct JemallocInfo { + double allocated = 0; // in MB + double active = 0; // in MB + double resident = 0; // in MB + double mapped = 0; // in MB + double metadata = 0; // in MB }; class SimpleMemoryCheck { @@ -90,6 +112,8 @@ namespace edm { void preModule(StreamContext const&, ModuleCallingContext const&); void postModule(StreamContext const&, ModuleCallingContext const&); + void earlyTermination(); + void postEndJob(); void startSamplingThread(); @@ -98,12 +122,21 @@ namespace edm { private: ProcInfo fetch(); smapsInfo fetchSmaps(); + JemallocInfo fetchJemalloc() const; double pageSize() const { return pg_size_; } double averageGrowthRate(double current, double past, int count); void update(); void updateMax(); + void andPrintAlways(const std::string& type, + const std::string& mdlabel, + const std::string& mdname, + bool includeSmapsAndJe = false) const; void andPrint(const std::string& type, const std::string& mdlabel, const std::string& mdname) const; void updateAndPrint(const std::string& type, const std::string& mdlabel, const std::string& mdname); + + // Upon success returns an optional without value + // Upon failure returns the name of the file the function attempted to open + std::optional openFilesNoThrow(); void openFiles(); char const* smapsLineBuffer() const { return get_underlying_safe(smapsLineBuffer_); } @@ -122,6 +155,7 @@ namespace edm { int num_to_skip_; //options bool showMallocInfo_; + bool showJemallocInfo_; bool oncePerEventMode_; bool printEachTime_; bool jobReportOutputOnly_; @@ -132,8 +166,10 @@ namespace edm { std::atomic stopThread_ = false; std::atomic mostRecentlyStartedEvent_; + mallctl_t je_mallctl = nullptr; + //smaps - edm::propagate_const smapsFile_; + edm::propagate_const smapsFile_ = nullptr; edm::propagate_const smapsLineBuffer_; size_t smapsLineBufferLen_; @@ -143,25 +179,18 @@ namespace edm { // Event summary statistics changeLog 1 struct SignificantEvent { - int count; - double vsize; - double deltaVsize; - double rss; - double deltaRss; - bool monitorPssAndPrivate; - double privateSize; - double pss; edm::EventID event; - SignificantEvent() - : count(0), - vsize(0), - deltaVsize(0), - rss(0), - deltaRss(0), - monitorPssAndPrivate(false), - privateSize(0), - pss(0), - event() {} + double vsize = 0; + double deltaVsize = 0; + double rss = 0; + double deltaRss = 0; + double privateSize = 0; + double pss = 0; + double anonHugePages = 0; + std::optional jemalloc; + int count = 0; + bool monitorPssAndPrivate = false; + SignificantEvent() = default; void set(double deltaV, double deltaR, edm::EventID const& e, SimpleMemoryCheck* t) { count = t->count_; vsize = t->current_->vsize; @@ -172,6 +201,10 @@ namespace edm { if (monitorPssAndPrivate) { privateSize = t->currentSmaps_.private_; pss = t->currentSmaps_.pss_; + anonHugePages = t->currentSmaps_.anonHugePages_; + } + if (t->showJemallocInfo_) { + jemalloc = t->fetchJemalloc(); } event = e; } @@ -293,11 +326,10 @@ namespace edm { smapsInfo SimpleMemoryCheck::fetchSmaps() { smapsInfo ret; - ret.private_ = 0; - ret.pss_ = 0; #ifdef LINUX fseek(smapsFile_, 0, SEEK_SET); ssize_t read; + SmapsSection section = SmapsSection::kOther; /* The format of the report is @@ -305,10 +337,40 @@ namespace edm { Private_Dirty: 72 kB Swap: 0 kB Pss: 72 kB + AnonHugePages: 10240 kB */ while ((read = getline(&smapsLineBuffer(), &smapsLineBufferLen_, smapsFile_)) != -1) { if (read > 14) { + // Are we in a line that defines a mapping? + // (a character following ':' is not a space) + if (char const* ret = strchr(smapsLineBuffer_, ':'); ret != nullptr and *(ret + 1) != ' ') { + ret = strrchr(smapsLineBuffer_, ' '); + if (ret == nullptr) { + // shouldn't happen, but let's protect anyway + section = SmapsSection::kOther; + } else if (*(ret + 1) == '\n') { + // no "path" element + section = SmapsSection::kMmap; + } else if (*(ret + 1) == '/') { + // "path" starts with '/', assume it's file + // differentiate shared object and .pcm files + auto len = strlen(ret); + if (0 == strncmp(ret + len - 5, ".pcm", 4)) { + section = SmapsSection::kPcm; + } else if (strstr(ret, ".so") != nullptr) { + section = SmapsSection::kSharedObject; + } else { + section = SmapsSection::kOtherFile; + } + } else if (0 == strncmp("[stack]", ret + 1, 7)) { + section = SmapsSection::kStack; + } else { + section = SmapsSection::kOther; + } + continue; + } + //Private if (0 == strncmp("Private_", smapsLineBuffer_, 8)) { unsigned int value = atoi(smapsLineBuffer_ + 14); @@ -318,6 +380,17 @@ namespace edm { unsigned int value = atoi(smapsLineBuffer_ + 4); //Convert from kB to MB ret.pss_ += static_cast(value) / 1024.; + } else if (0 == strncmp("AnonHugePages:", smapsLineBuffer_, 14)) { + unsigned int value = atoi(smapsLineBuffer_ + 14); + ret.anonHugePages_ += static_cast(value) / 1024.; + } else if (0 == strncmp("Rss:", smapsLineBuffer_, 4)) { + unsigned int value = atoi(smapsLineBuffer_ + 4); + //Convert from kB to MB + ret.sectionRss_[static_cast(section)] += static_cast(value) / 1024.; + } else if (0 == strncmp("Size:", smapsLineBuffer_, 5)) { + unsigned int value = atoi(smapsLineBuffer_ + 5); + //Convert from kB to MB + ret.sectionVSize_[static_cast(section)] += static_cast(value) / 1024.; } } } @@ -325,6 +398,43 @@ namespace edm { return ret; } + JemallocInfo SimpleMemoryCheck::fetchJemalloc() const { + JemallocInfo info; + if (je_mallctl) { + // refresh stats + uint64_t epoch = 1; + size_t e_len = sizeof(uint64_t); + if (je_mallctl("epoch", &epoch, &e_len, &epoch, e_len) != 0) { + return info; + } + + // query values + size_t allocated, active, resident, mapped, metadata; + size_t len = sizeof(size_t); + if (je_mallctl("stats.allocated", &allocated, &len, nullptr, 0) != 0) { + return info; + } + if (je_mallctl("stats.active", &active, &len, nullptr, 0) != 0) { + return info; + } + if (je_mallctl("stats.resident", &resident, &len, nullptr, 0) != 0) { + return info; + } + if (je_mallctl("stats.mapped", &mapped, &len, nullptr, 0) != 0) { + return info; + } + if (je_mallctl("stats.metadata", &metadata, &len, nullptr, 0) != 0) { + return info; + } + info.allocated = allocated / 1024.0 / 1024.0; + info.active = active / 1024.0 / 1024.0; + info.resident = resident / 1024.0 / 1024.0; + info.mapped = mapped / 1024.0 / 1024.0; + info.metadata = metadata / 1024.0 / 1024.0; + } + return info; + } + double SimpleMemoryCheck::averageGrowthRate(double current, double past, int count) { return (current - past) / (double)count; } @@ -334,10 +444,10 @@ namespace edm { b_(), current_(&a_), previous_(&b_), - pg_size_(sysconf(_SC_PAGESIZE)) // getpagesize() - , + pg_size_(sysconf(_SC_PAGESIZE)), // getpagesize() num_to_skip_(iPS.getUntrackedParameter("ignoreTotal")), showMallocInfo_(iPS.getUntrackedParameter("showMallocInfo")), + showJemallocInfo_(iPS.getUntrackedParameter("showJemallocInfo")), oncePerEventMode_(iPS.getUntrackedParameter("oncePerEventMode")), printEachTime_(oncePerEventMode_ or iPS.getUntrackedParameter("printEachSample")), jobReportOutputOnly_(iPS.getUntrackedParameter("jobReportOutputOnly")), @@ -355,7 +465,16 @@ namespace edm { // pg_size = (double)getpagesize(); std::ostringstream ost; - openFiles(); + if (monitorPssAndPrivate_) { + openFiles(); + } + + iReg.watchPostEndJob(this, &SimpleMemoryCheck::postEndJob); + // A possible source for early termination is a signal from WM + // when the job's memory use exceeds their limit + iReg.watchPreSourceEarlyTermination([this](TerminationOrigin) { earlyTermination(); }); + iReg.watchPreGlobalEarlyTermination([this](GlobalContext const&, TerminationOrigin) { earlyTermination(); }); + iReg.watchPreStreamEarlyTermination([this](StreamContext const&, TerminationOrigin) { earlyTermination(); }); if (sampleEveryNSeconds_ > 0) { if (oncePerEventMode_) { @@ -368,24 +487,20 @@ namespace edm { } iReg.watchPostBeginJob(this, &SimpleMemoryCheck::startSamplingThread); iReg.watchPreEndJob(this, &SimpleMemoryCheck::stopSamplingThread); - iReg.watchPostEndJob(this, &SimpleMemoryCheck::postEndJob); iReg.watchPreEvent([this](auto const& iContext) { mostRecentlyStartedEvent_.store(iContext.eventID()); }); return; } + iReg.watchPostEvent(this, &SimpleMemoryCheck::postEvent); + if (!oncePerEventMode_) { // default, prints on increases iReg.watchPreSourceConstruction(this, &SimpleMemoryCheck::preSourceConstruction); iReg.watchPostSourceConstruction(this, &SimpleMemoryCheck::postSourceConstruction); iReg.watchPostSourceEvent(this, &SimpleMemoryCheck::postSourceEvent); iReg.watchPostModuleConstruction(this, &SimpleMemoryCheck::postModuleConstruction); iReg.watchPostModuleBeginJob(this, &SimpleMemoryCheck::postModuleBeginJob); - iReg.watchPostEvent(this, &SimpleMemoryCheck::postEvent); iReg.watchPostModuleEvent(this, &SimpleMemoryCheck::postModule); iReg.watchPostBeginJob(this, &SimpleMemoryCheck::postBeginJob); - iReg.watchPostEndJob(this, &SimpleMemoryCheck::postEndJob); - } else { - iReg.watchPostEvent(this, &SimpleMemoryCheck::postEvent); - iReg.watchPostEndJob(this, &SimpleMemoryCheck::postEndJob); } if (moduleSummaryRequested_) { // changelog 2 iReg.watchPreModuleEvent(this, &SimpleMemoryCheck::preModule); @@ -402,6 +517,14 @@ namespace edm { // &SimpleMemoryCheck::preEventProcessing); // iReg.watchPreModule(this, // &SimpleMemoryCheck::preModule); + + if (showJemallocInfo_) { + // jemalloc's mallctl(), if we use jemalloc + je_mallctl = reinterpret_cast(::dlsym(RTLD_DEFAULT, "mallctl")); + if (je_mallctl == nullptr) { + showJemallocInfo_ = false; + } + } } SimpleMemoryCheck::~SimpleMemoryCheck() { @@ -427,6 +550,10 @@ namespace edm { desc.addUntracked("printEachSample", false) ->setComment("If sampling on, print each sample taken else will print only when sample is the largest seen."); desc.addUntracked("showMallocInfo", false); + desc.addUntracked("showJemallocInfo", true) + ->setComment( + "If enabled and jemalloc is being used, print high-level jemalloc statistics at the early termination " + "and endJob printouts as well as for the peak VSIZE and RSS -using records."); desc.addUntracked("oncePerEventMode", false) ->setComment( "Only check memory at the end of each event. Not as useful in multi-threaded job as other running events " @@ -439,16 +566,23 @@ namespace edm { descriptions.add("SimpleMemoryCheck", desc); } - void SimpleMemoryCheck::openFiles() { + std::optional SimpleMemoryCheck::openFilesNoThrow() { #ifdef LINUX - if (monitorPssAndPrivate_) { - std::ostringstream smapsNameOst; - smapsNameOst << "/proc/" << getpid() << "/smaps"; - if ((smapsFile_ = fopen(smapsNameOst.str().c_str(), "r")) == nullptr) { - throw Exception(errors::Configuration) << "Failed to open smaps file " << smapsNameOst.str() << std::endl; - } + std::ostringstream smapsNameOst; + smapsNameOst << "/proc/" << getpid() << "/smaps"; + auto smapsName = smapsNameOst.str(); + if ((smapsFile_ = fopen(smapsName.c_str(), "r")) == nullptr) { + return smapsName; } #endif + return {}; + } + + void SimpleMemoryCheck::openFiles() { + auto smapsFileNameIfFailed = openFilesNoThrow(); + if (smapsFileNameIfFailed.has_value()) { + throw Exception(errors::Configuration) << "Failed to open smaps file " << *smapsFileNameIfFailed << std::endl; + } } void SimpleMemoryCheck::postBeginJob() { @@ -501,6 +635,24 @@ namespace edm { } } + void SimpleMemoryCheck::earlyTermination() { + bool expected = false; + while (not measurementUnderway_.compare_exchange_strong(expected, true, std::memory_order_acq_rel)) { + expected = false; + } + std::shared_ptr guard( + nullptr, [this](void const*) { measurementUnderway_.store(false, std::memory_order_release); }); + if (not smapsFile_) { + openFilesNoThrow(); + } + if (smapsFile_) { + currentSmaps_ = fetchSmaps(); + } + update(); + andPrintAlways("earlyTermination", "", "", true); + updateMax(); + } + void SimpleMemoryCheck::startSamplingThread() { samplingThread_ = std::thread{[this]() { while (not stopThread_) { @@ -524,10 +676,52 @@ namespace edm { void SimpleMemoryCheck::postEndJob() { if (not jobReportOutputOnly_) { - LogAbsolute("MemoryReport") // changelog 1 - << "MemoryReport> Peak virtual size " << eventT1_.vsize << " Mbytes" - << "\n" - << " Key events increasing vsize: \n" + LogAbsolute log("MemoryReport"); + + update(); + log << "MemoryReport> EndJob: virtual size " << current_->vsize << " Mbytes, RSS " << current_->rss + << " Mbytes"; + // extract smaps information if file open succeeded + if (not smapsFile_) { + openFilesNoThrow(); + } + if (smapsFile_) { + currentSmaps_ = fetchSmaps(); + auto soRss = currentSmaps_.sectionRss_[static_cast(SmapsSection::kSharedObject)]; + auto pcmRss = currentSmaps_.sectionRss_[static_cast(SmapsSection::kPcm)]; + auto otherFileRss = currentSmaps_.sectionRss_[static_cast(SmapsSection::kOtherFile)]; + auto mmapRss = currentSmaps_.sectionRss_[static_cast(SmapsSection::kMmap)]; + auto soVSize = currentSmaps_.sectionVSize_[static_cast(SmapsSection::kSharedObject)]; + auto pcmVSize = currentSmaps_.sectionVSize_[static_cast(SmapsSection::kPcm)]; + auto otherFileVSize = currentSmaps_.sectionVSize_[static_cast(SmapsSection::kOtherFile)]; + auto mmapVSize = currentSmaps_.sectionVSize_[static_cast(SmapsSection::kMmap)]; + log << ", PSS " << currentSmaps_.pss_ << " MBytes, Private " << currentSmaps_.private_ << "\n AnonHugePages " + << currentSmaps_.anonHugePages_ << " Mbytes\n" + << " mmapped memory pages " << mmapVSize << " Mbytes (VSize), " << mmapRss << " MBytes (RSS)\n" + << " mmapped file pages " << (soVSize + pcmVSize + otherFileVSize) << " Mbytes (VSize), " + << (soRss + pcmRss + otherFileRss) << " MBytes (RSS)\n" + << " of which .so's " << soVSize << " Mbytes (VSize), " << soRss << " MBytes (RSS)\n" + << " of which PCM's " << pcmVSize << " Mbytes (VSize), " << pcmRss << " MBytes (RSS)\n" + << " of which other " << otherFileVSize << " Mbytes (VSize), " << otherFileRss << " MBytes (RSS)"; + } + if (showJemallocInfo_) { + auto info = fetchJemalloc(); + log << "\n Jemalloc allocated " << info.allocated << " MBytes, active " << info.active + << " MBytes\n resident " << info.resident << " Mbytes, mapped " << info.mapped << " Mbytes\n metadata " + << info.metadata << " Mbytes"; + } + log << "\n"; + + auto logJemalloc = [&log](std::optional const& info) { + if (info.has_value()) { + log << "\n Jemalloc allocated " << info->allocated << " active " << info->active << " resident " + << info->resident << " mapped " << info->mapped << " metadata " << info->metadata; + } + }; + + log << "MemoryReport> Peak virtual size " << eventT1_.vsize << " Mbytes (RSS " << eventT1_.rss << ")"; + logJemalloc(eventT1_.jemalloc); + log << "\n Key events increasing vsize: \n" << eventL2_ << "\n" << eventL1_ << "\n" << eventM_ << "\n" @@ -535,16 +729,17 @@ namespace edm { << eventR2_ << "\n" << eventT3_ << "\n" << eventT2_ << "\n" - << eventT1_ << "\nMemoryReport> Peak rss size " << eventRssT1_.rss - << " Mbytes" - "\n Key events increasing rss:\n" + << eventT1_ << "\nMemoryReport> Peak rss size " << eventRssT1_.rss << " Mbytes (VSIZE " << eventRssT1_.vsize + << ")"; + ; + logJemalloc(eventRssT1_.jemalloc); + log << "\n Key events increasing rss:\n" << eventRssT3_ << "\n" << eventRssT2_ << "\n" << eventRssT1_ << "\n" << eventDeltaRssT3_ << "\n" << eventDeltaRssT2_ << "\n" << eventDeltaRssT1_; - ; } if (moduleSummaryRequested_ and not jobReportOutputOnly_) { // changelog 1 LogAbsolute mmr("ModuleMemoryReport"); // at end of if block, mmr @@ -898,38 +1093,49 @@ namespace edm { } } // updateEventStats - void SimpleMemoryCheck::andPrint(std::string const& type, - std::string const& mdlabel, - std::string const& mdname) const { - if (not jobReportOutputOnly_ && ((*current_ > max_) || printEachTime_)) { - if (count_ >= num_to_skip_) { - double deltaVSIZE = current_->vsize - max_.vsize; - double deltaRSS = current_->rss - max_.rss; - if (!showMallocInfo_) { // default - LogWarning("MemoryCheck") << "MemoryCheck: " << type << " " << mdname << ":" << mdlabel << " VSIZE " - << current_->vsize << " " << deltaVSIZE << " RSS " << current_->rss << " " - << deltaRSS; - } else { + void SimpleMemoryCheck::andPrintAlways(std::string const& type, + std::string const& mdlabel, + std::string const& mdname, + bool includeSmapsAndJe) const { + double deltaVSIZE = current_->vsize - max_.vsize; + double deltaRSS = current_->rss - max_.rss; + + LogWarning log("MemoryCheck"); + // default + log << "MemoryCheck: " << type << " " << mdname << ":" << mdlabel << " VSIZE " << current_->vsize << " " + << deltaVSIZE << " RSS " << current_->rss << " " << deltaRSS; + if (showMallocInfo_) { #ifdef __linux__ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 33) - struct mallinfo2 minfo = mallinfo2(); + struct mallinfo2 minfo = mallinfo2(); #else - struct mallinfo minfo = mallinfo(); + struct mallinfo minfo = mallinfo(); #endif + log << " HEAP-ARENA [ SIZE-BYTES " << minfo.arena << " N-UNUSED-CHUNKS " << minfo.ordblks << " TOP-FREE-BYTES " + << minfo.keepcost << " ]" + << " HEAP-MAPPED [ SIZE-BYTES " << minfo.hblkhd << " N-CHUNKS " << minfo.hblks << " ]" + << " HEAP-USED-BYTES " << minfo.uordblks << " HEAP-UNUSED-BYTES " << minfo.fordblks; #endif - LogWarning("MemoryCheck") << "MemoryCheck: " << type << " " << mdname << ":" << mdlabel << " VSIZE " - << current_->vsize << " " << deltaVSIZE << " RSS " << current_->rss << " " - << deltaRSS -#ifdef __linux__ - << " HEAP-ARENA [ SIZE-BYTES " << minfo.arena << " N-UNUSED-CHUNKS " - << minfo.ordblks << " TOP-FREE-BYTES " << minfo.keepcost << " ]" - << " HEAP-MAPPED [ SIZE-BYTES " << minfo.hblkhd << " N-CHUNKS " << minfo.hblks - << " ]" - << " HEAP-USED-BYTES " << minfo.uordblks << " HEAP-UNUSED-BYTES " - << minfo.fordblks -#endif - ; - } + } + if (includeSmapsAndJe) { + if (smapsFile_) { + log << " PSS " << currentSmaps_.pss_ << " PRIVATE " << currentSmaps_.private_ << " ANONHUGEPAGES " + << currentSmaps_.anonHugePages_; + } + if (je_mallctl) { + auto info = fetchJemalloc(); + log << " JeMalloc allocated " << info.allocated << " active " << info.active << " resident " << info.resident + << " mapped " << info.mapped << " metadata " << info.metadata; + } + } + } + + void SimpleMemoryCheck::andPrint(std::string const& type, + std::string const& mdlabel, + std::string const& mdname) const { + if (not jobReportOutputOnly_ && ((*current_ > max_) || printEachTime_)) { + if (count_ >= num_to_skip_) { + andPrintAlways(type, mdlabel, mdname); } } } @@ -1035,6 +1241,9 @@ namespace edm { if (se.monitorPssAndPrivate) { os << " private = " << se.privateSize << " pss = " << se.pss; } + if (se.jemalloc.has_value()) { + os << " allocated = " << se.jemalloc->allocated << " active = " << se.jemalloc->active; + } return os; } diff --git a/FWCore/Services/scripts/edmTracerCompactLogViewer.py b/FWCore/Services/scripts/edmTracerCompactLogViewer.py index b222c62ef771e..6bcda5638094c 100755 --- a/FWCore/Services/scripts/edmTracerCompactLogViewer.py +++ b/FWCore/Services/scripts/edmTracerCompactLogViewer.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range from itertools import groupby from operator import attrgetter,itemgetter diff --git a/FWCore/Services/scripts/edmTracerLogToSimpleConfig.py b/FWCore/Services/scripts/edmTracerLogToSimpleConfig.py index 012169732c240..8e7ebbc14a54c 100644 --- a/FWCore/Services/scripts/edmTracerLogToSimpleConfig.py +++ b/FWCore/Services/scripts/edmTracerLogToSimpleConfig.py @@ -1,4 +1,3 @@ -from __future__ import print_function #============================== # # First argument is a log file from cmsRun diff --git a/FWCore/Services/web/index.html b/FWCore/Services/web/index.html index d23e976785c93..10ece21358d2d 100644 --- a/FWCore/Services/web/index.html +++ b/FWCore/Services/web/index.html @@ -30,6 +30,17 @@ +

Please select a file

+ +
+ + +
@@ -49,9 +60,11 @@

<CTRL>+scroll to zoom

+ + diff --git a/FWCore/Services/web/server.py b/FWCore/Services/web/server.py index b0af978d575a4..fa39416bbb7d5 100644 --- a/FWCore/Services/web/server.py +++ b/FWCore/Services/web/server.py @@ -1,20 +1,26 @@ import os -from http.server import HTTPServer, BaseHTTPRequestHandler +from http.server import HTTPServer, SimpleHTTPRequestHandler import mimetypes import argparse +import json -class Serv(BaseHTTPRequestHandler): +class Serv(SimpleHTTPRequestHandler): def do_GET(self): # Default route to serve the index.html file if self.path == '/': self.path = '/index.html' - # Serve the uploaded JavaScript file if requested - if self.path == '/modules_data.json': - self.path = '/modules_data.json' + elif self.path == '/list-json': + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + json_files = [f for f in os.listdir('.') if f.endswith('.json')] + self.wfile.write(json.dumps(json_files).encode()) + return - try: - file_path = self.path[1:] # Remove leading '/' to get the file path + # Serve the requested file (JSON or other static files) + file_path = self.path[1:] # Remove leading '/' to get the file path + try: # Read the requested file with open(file_path, 'rb') as file: file_to_open = file.read() @@ -61,3 +67,5 @@ def run(server_class=HTTPServer, handler_class=Serv, port=65432): # Start the server with the specified port run(port=args.port) + + diff --git a/FWCore/Services/web/transitions.css b/FWCore/Services/web/transitions.css index b1799fc84dd8d..bb07aea62f3a1 100644 --- a/FWCore/Services/web/transitions.css +++ b/FWCore/Services/web/transitions.css @@ -83,3 +83,42 @@ body { grid-column: 1/1; grid-row: 9; } +#jsonDropdownDiv { + margin-bottom: 20px; +} + +#loadingSpinner { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + z-index: 9999; /* Make sure it's on top of other elements */ + background-color: rgba(255, 255, 255, 0.8); /* Optional: background overlay */ + padding: 20px; + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +.spinner { + border: 4px solid rgba(0, 0, 0, 0.1); + border-radius: 50%; + border-top: 4px solid #3498db; + width: 40px; + height: 40px; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +#selectFilePrompt { + font-size: 16px; + color: #333; + margin: 10px 0; + text-align: center; +} + + diff --git a/FWCore/Services/web/transitions.js b/FWCore/Services/web/transitions.js index 4b9ac5a9b80ec..5c633c0ce3ed2 100644 --- a/FWCore/Services/web/transitions.js +++ b/FWCore/Services/web/transitions.js @@ -90,477 +90,541 @@ const activityToColor = ["#FF5F1F", "#CC7722", null, "#FF4433", "#8B4513"]; return data; }); */ window.onload = async() => { - - const response = await fetch("modules_data.json"); - const data = await response.json(); - const left = document.querySelector('.name_div'); - const div = document.querySelector('.graph_div'); - const bottom = document.querySelector('.time_div'); - const graph = document.getElementById('graph_view'); - const graph_context = graph.getContext('2d'); - const name_view = document.getElementById('name_view'); - const name_context = name_view.getContext('2d'); - const time_view = document.getElementById('time_view'); - const time_context = time_view.getContext('2d'); - const selected_view = document.getElementById('selected_paragraph'); - const zoom_in_button = document.getElementById('zoom_in'); - const zoom_out_button = document.getElementById('zoom_out'); - let selected_item = null; - selected_view.innerHTML = "Selected: [click on box in graph]"; - let mouse_is_down = false; - - let rows = 0; - for( let grouping of data.transitions ) { - for( let slot in grouping.slots ) { - ++rows; + // Select the dropdown element + const jsonDropdown = document.getElementById('jsonDropdown'); + // Function to fetch data based on selected file + async function fetchData(file) { + showLoadingSpinner(); // Show loading spinner + try { + const response = await fetch(file); // Fetch the selected JSON file + const data = await response.json(); // Parse JSON data from the response + processData(data); // Call the function to process the fetched data + } catch (error) { + console.error('Error fetching data:', error); + }finally { + hideLoadingSpinner(); // Hide loading spinner } } - - const max_graph_height = kRowHeight*rows; - //same scale as window coordinates - let graph_vertical_offset = 0.; - let minVisibleTime = 0.; - let timeZoomFactor = 1.0; - - function maxTime() { - let maxTime = 0; - for( let grouping of data.transitions) { - for( let slot of grouping.slots) { - for (let transition of slot) { - if (maxTime < transition.finish) { - maxTime = transition.finish; - } - } + // Function to process the fetched data + function processData(data) { + const left = document.querySelector('.name_div'); + const div = document.querySelector('.graph_div'); + const bottom = document.querySelector('.time_div'); + const graph = document.getElementById('graph_view'); + const graph_context = graph.getContext('2d'); + const name_view = document.getElementById('name_view'); + const name_context = name_view.getContext('2d'); + const time_view = document.getElementById('time_view'); + const time_context = time_view.getContext('2d'); + const selected_view = document.getElementById('selected_paragraph'); + const zoom_in_button = document.getElementById('zoom_in'); + const zoom_out_button = document.getElementById('zoom_out'); + let selected_item = null; + selected_view.innerHTML = "Selected: [click on box in graph]"; + let mouse_is_down = false; + + let rows = 0; + for( let grouping of data.transitions ) { + for( let slot in grouping.slots ) { + ++rows; } } + + const max_graph_height = kRowHeight*rows; - maxTime = Math.ceil(maxTime); + //same scale as window coordinates + let graph_vertical_offset = 0.; + let minVisibleTime = 0.; + let timeZoomFactor = 1.0; - const digits = maxTime.toString().length; - const digitsToZeroOut = digits -2; - if (digitsToZeroOut > 0) { - for(let i = 0; i < digitsToZeroOut; ++i) { - maxTime /= 10; + function maxTime() { + let maxTime = 0; + for( let grouping of data.transitions) { + for( let slot of grouping.slots) { + for (let transition of slot) { + if (maxTime < transition.finish) { + maxTime = transition.finish; + } + } + } } - maxTime *=10; - maxTime +=9; - for( let i = 1; i < digitsToZeroOut; ++i) { + + maxTime = Math.ceil(maxTime); + + const digits = maxTime.toString().length; + const digitsToZeroOut = digits -2; + if (digitsToZeroOut > 0) { + for(let i = 0; i < digitsToZeroOut; ++i) { + maxTime /= 10; + } maxTime *=10; + maxTime +=9; + for( let i = 1; i < digitsToZeroOut; ++i) { + maxTime *=10; + } + maxTime = Math.ceil(maxTime); } - maxTime = Math.ceil(maxTime); + return maxTime; } - return maxTime; - } - - const kEndTime = maxTime(); - - function drawNames() { - name_context.setTransform(1,0,0,1,0,0); - name_context.fillStyle = "#AACD6E" - name_context.fillRect(0,0,name_view.width,name_view.height); - name_context.scale(1,1) - name_context.fillStyle = "black" - name_context.strokeStyle = "black" - name_context.font = '9pt monospace'; //context.font = "50px"; - let offset = kRowHeight/2 + graph_vertical_offset; - for( let grouping of data.transitions ) { - name_context.fillText(grouping.name, 0, offset); - offset += grouping.slots.length*kRowHeight; + const kEndTime = maxTime(); + + function drawNames() { + name_context.setTransform(1,0,0,1,0,0); + name_context.fillStyle = "#AACD6E" + name_context.fillRect(0,0,name_view.width,name_view.height); + name_context.scale(1,1) + name_context.fillStyle = "black" + name_context.strokeStyle = "black" + name_context.font = '9pt monospace'; //context.font = "50px"; + + let offset = kRowHeight/2 + graph_vertical_offset; + for( let grouping of data.transitions ) { + name_context.fillText(grouping.name, 0, offset); + offset += grouping.slots.length*kRowHeight; + } } - } - - function timeStepPower() { - let timeDecade = 0; - let nSteps = time_view.width/kInitPixelsPerSecond/timeZoomFactor; - while (nSteps < 3) { - --timeDecade; - nSteps *=10.; - } - while (nSteps > 20) { - ++timeDecade; - nSteps /=10.; - } - return timeDecade; - } - - function drawTime() { - time_context.save() - time_context.setTransform(1,0,0,1,0,0); - time_context.fillStyle = "#CD6E6E"; - time_context.fillRect(0,0,time_view.width,time_view.height); - time_context.restore(); - time_context.scale(1,1); - const end = kEndTime; - const timePower = timeStepPower(); - const stepSize = Math.pow(10., timePower); - let fixedValue = timePower; - if (fixedValue < 0 ) { - fixedValue *= -1; + + function timeStepPower() { + let timeDecade = 0; + let nSteps = time_view.width/kInitPixelsPerSecond/timeZoomFactor; + while (nSteps < 3) { + --timeDecade; + nSteps *=10.; + } + while (nSteps > 20) { + ++timeDecade; + nSteps /=10.; + } + return timeDecade; } - const tickDistance = stepSize/10.*kInitPixelsPerSecond*timeZoomFactor; - const bigTickDistance = stepSize*kInitPixelsPerSecond*timeZoomFactor; - for( let bigTick = 0; bigTick < end; bigTick +=stepSize) { - let t = (bigTick-minVisibleTime)*kInitPixelsPerSecond*timeZoomFactor; - if ((t + bigTickDistance) < 0 ) continue; - if (t > time_view.width) break; - graph_context.strokeStyle = "black"; - time_context.beginPath() - time_context.moveTo(t,0) - time_context.lineTo(t, time_view.height/2); - time_context.stroke() - const sec = bigTick.toFixed(fixedValue); + function drawTime() { + time_context.save() + time_context.setTransform(1,0,0,1,0,0); + time_context.fillStyle = "#CD6E6E"; + time_context.fillRect(0,0,time_view.width,time_view.height); + time_context.restore(); + time_context.scale(1,1); + const end = kEndTime; + const timePower = timeStepPower(); + const stepSize = Math.pow(10., timePower); + let fixedValue = timePower; + if (fixedValue < 0 ) { + fixedValue *= -1; + } - time_context.fillText(sec.toString()+"s", t, time_view.height*0.75) - for(let tick = 1; tick < 10; ++tick) { - let pos = t+tick*tickDistance; - time_context.beginPath(); - time_context.moveTo(pos,0); - time_context.lineTo(pos, time_view.height/4); - time_context.stroke(); + const tickDistance = stepSize/10.*kInitPixelsPerSecond*timeZoomFactor; + const bigTickDistance = stepSize*kInitPixelsPerSecond*timeZoomFactor; + for( let bigTick = 0; bigTick < end; bigTick +=stepSize) { + let t = (bigTick-minVisibleTime)*kInitPixelsPerSecond*timeZoomFactor; + if ((t + bigTickDistance) < 0 ) continue; + if (t > time_view.width) break; + graph_context.strokeStyle = "black"; + time_context.beginPath() + time_context.moveTo(t,0) + time_context.lineTo(t, time_view.height/2); + time_context.stroke() + const sec = bigTick.toFixed(fixedValue); + + time_context.fillText(sec.toString()+"s", t, time_view.height*0.75) + for(let tick = 1; tick < 10; ++tick) { + let pos = t+tick*tickDistance; + time_context.beginPath(); + time_context.moveTo(pos,0); + time_context.lineTo(pos, time_view.height/4); + time_context.stroke(); + } } } - } - - function colorToUse(transition) { - if (!transition.isSrc) { - if ( ('act' in transition) && transition.act != 2) { - return activityToColor[transition.act]; - } else { - return typeToColor[transition.type+kTypeOffset]; + + function colorToUse(transition) { + if (!transition.isSrc) { + if ( ('act' in transition) && transition.act != 2) { + return activityToColor[transition.act]; + } else { + return typeToColor[transition.type+kTypeOffset]; + } } + return kSourceColor; } - return kSourceColor; - } - - function drawGraph() { - const scale = kInitPixelsPerSecond * timeZoomFactor; - const maxVisibleTime = time_view.width/scale+minVisibleTime; - //console.log(minVisibleTime); - graph_context.save(); - graph_context.setTransform(1,0,0,1,0,0); - graph_context.fillStyle = "#D5D6C6" - graph_context.fillRect(0,0,graph.width,graph.height); - graph_context.restore(); - graph_context.strokeStyle = "black"; - graph_context.scale(1,1); - - let offset = graph_vertical_offset; - for( let grouping of data.transitions) { - if (offset > graph.height) break; - for( let slot of grouping.slots ) { + function drawGraph() { + const scale = kInitPixelsPerSecond * timeZoomFactor; + const maxVisibleTime = time_view.width/scale+minVisibleTime; + //console.log(minVisibleTime); + graph_context.save(); + graph_context.setTransform(1,0,0,1,0,0); + graph_context.fillStyle = "#D5D6C6" + graph_context.fillRect(0,0,graph.width,graph.height); + graph_context.restore(); + + graph_context.strokeStyle = "black"; + graph_context.scale(1,1); + + let offset = graph_vertical_offset; + for( let grouping of data.transitions) { if (offset > graph.height) break; - if (offset+kBoxHeight >= 0) { - for( let transition of slot) { - if (maxVisibleTime < transition.start) { - break; - } - if (minVisibleTime > transition.finish) { - continue; - } - if(transition == selected_item) { - graph_context.fillStyle = "white"; - } else { - graph_context.fillStyle = colorToUse(transition); + for( let slot of grouping.slots ) { + if (offset > graph.height) break; + if (offset+kBoxHeight >= 0) { + for( let transition of slot) { + if (maxVisibleTime < transition.start) { + break; + } + if (minVisibleTime > transition.finish) { + continue; + } + if(transition == selected_item) { + graph_context.fillStyle = "white"; + } else { + graph_context.fillStyle = colorToUse(transition); + } + graph_context.fillRect(scale*(transition.start-minVisibleTime), offset, scale*(transition.finish-transition.start), kBoxHeight); } - graph_context.fillRect(scale*(transition.start-minVisibleTime), offset, scale*(transition.finish-transition.start), kBoxHeight); } + offset += kRowHeight; } - offset += kRowHeight; } + drawNames(); + drawTime(); + } - drawNames(); - drawTime(); + graph.width = div.clientWidth; + const kInitPixelsPerSecond = graph.width/kEndTime; + const max_graph_width = graph.width; - } - graph.width = div.clientWidth; - const kInitPixelsPerSecond = graph.width/kEndTime; - const max_graph_width = graph.width; - - graph.height = div.clientHeight - name_view.width = left.clientWidth - name_view.height = left.clientHeight - time_view.width = bottom.clientWidth - time_view.height = bottom.clientHeight - drawGraph() - - let graph_isDragging = false; - let graph_mouseDown = false; - let graph_mouseDownPosition = {x:0, y:0}; - let graph_dragStartPosition = { x: 0, y: 0 }; - - let time_isDragging = false; - let time_dragStartPosition = 0; - - function graph_translate(xDiff, yDiff) { - let original = minVisibleTime; - minVisibleTime -= xDiff/kInitPixelsPerSecond/timeZoomFactor; - //console.log(xDiff, original, minVisibleTime); - const timeEnd = (max_graph_width)/kInitPixelsPerSecond/timeZoomFactor+minVisibleTime; - if (timeEnd > kEndTime) { - minVisibleTime = kEndTime - max_graph_width/kInitPixelsPerSecond/timeZoomFactor; - } - if (minVisibleTime < 0) { - minVisibleTime = 0; + graph.height = div.clientHeight + name_view.width = left.clientWidth + name_view.height = left.clientHeight + time_view.width = bottom.clientWidth + time_view.height = bottom.clientHeight + drawGraph() + + let graph_isDragging = false; + let graph_mouseDown = false; + let graph_mouseDownPosition = {x:0, y:0}; + let graph_dragStartPosition = { x: 0, y: 0 }; + + let time_isDragging = false; + let time_dragStartPosition = 0; + + function graph_translate(xDiff, yDiff) { + let original = minVisibleTime; + minVisibleTime -= xDiff/kInitPixelsPerSecond/timeZoomFactor; + //console.log(xDiff, original, minVisibleTime); + const timeEnd = (max_graph_width)/kInitPixelsPerSecond/timeZoomFactor+minVisibleTime; + if (timeEnd > kEndTime) { + minVisibleTime = kEndTime - max_graph_width/kInitPixelsPerSecond/timeZoomFactor; + } + if (minVisibleTime < 0) { + minVisibleTime = 0; + } + original = graph_vertical_offset; + graph_vertical_offset += yDiff; + if (graph_vertical_offset < -max_graph_height) { + graph_vertical_offset = -max_graph_height; + } + if (graph_vertical_offset > 0) { + graph_vertical_offset = 0; + } } - original = graph_vertical_offset; - graph_vertical_offset += yDiff; - if (graph_vertical_offset < -max_graph_height) { - graph_vertical_offset = -max_graph_height; + + function getTransformedPoint(x, y) { + const originalPoint = new DOMPoint(x, y); + return graph_context.getTransform().invertSelf().transformPoint(originalPoint); } - if (graph_vertical_offset > 0) { - graph_vertical_offset = 0; + + function graph_onMouseDown(event) { + graph_mouseDown = true; + graph_mouseDownPosition = {x:event.offsetX, y:event.offsetY}; + graph_dragStartPosition = getTransformedPoint(event.offsetX, event.offsetY); } - } - - function getTransformedPoint(x, y) { - const originalPoint = new DOMPoint(x, y); - return graph_context.getTransform().invertSelf().transformPoint(originalPoint); - } - - function graph_onMouseDown(event) { - graph_mouseDown = true; - graph_mouseDownPosition = {x:event.offsetX, y:event.offsetY}; - graph_dragStartPosition = getTransformedPoint(event.offsetX, event.offsetY); - } - - function graph_onMouseMove(event) { - let currentTransformedCursor = getTransformedPoint(event.offsetX, event.offsetY); - if (graph_mouseDown) { - if (Math.abs(graph_mouseDownPosition.x-event.offsetX)> 5 || - Math.abs(graph_mouseDownPosition.y-event.offsetY)> 5) { - graph_isDragging = true; + function graph_onMouseMove(event) { + let currentTransformedCursor = getTransformedPoint(event.offsetX, event.offsetY); + + if (graph_mouseDown) { + if (Math.abs(graph_mouseDownPosition.x-event.offsetX)> 5 || + Math.abs(graph_mouseDownPosition.y-event.offsetY)> 5) { + graph_isDragging = true; + } + } + if (graph_isDragging) { + graph_translate(currentTransformedCursor.x - graph_dragStartPosition.x, currentTransformedCursor.y - graph_dragStartPosition.y); + graph_dragStartPosition.x = currentTransformedCursor.x; + graph_dragStartPosition.y = currentTransformedCursor.y; + drawGraph(); } } - if (graph_isDragging) { - graph_translate(currentTransformedCursor.x - graph_dragStartPosition.x, currentTransformedCursor.y - graph_dragStartPosition.y); - graph_dragStartPosition.x = currentTransformedCursor.x; - graph_dragStartPosition.y = currentTransformedCursor.y; - drawGraph(); - } - } - - function moduleName(id) { - if (id ==0) { - return "source"; + + function moduleName(id) { + if (id ==0) { + return "source"; + } + return ""; } - return ""; - } - - function doUnselection() { - selected_view.innerHTML = "Selected: [click on box in graph]"; - selected_item = null; - } - - function moduleIdToName(id) { - if (id < 0) { - return data.esModules[-1*id]; + + function doUnselection() { + selected_view.innerHTML = "Selected: [click on box in graph]"; + selected_item = null; } - return data.modules[id]; - } - - function duration(t) { - if (t < 0.001) { - return (t*1000000).toFixed()+"us"; + + function moduleIdToName(id) { + if (id < 0) { + return data.esModules[-1*id]; + } + return data.modules[id]; } - if (t < 0.1) { - return (t*1000).toFixed(3)+"ms"; + + function duration(t) { + if (t < 0.001) { + return (t*1000000).toFixed()+"us"; + } + if (t < 0.1) { + return (t*1000).toFixed(3)+"ms"; + } + return t.toFixed(6)+"s"; } - return t.toFixed(6)+"s"; - } - - function updateSelectedView(item) { - if ('isSrc' in item) { - if (item.isSrc) { - if(item.mod) { - selected_view.innerHTML ="Selected: source reading data product: for module "+item.mod+" "+moduleIdToName(item.mod)+ " while "+activityToName[item.act]+" "+typeToName[item.type+kTypeOffset] +" start: "+item.start.toFixed(6)+"s finish: "+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); + + function updateSelectedView(item) { + if ('isSrc' in item) { + if (item.isSrc) { + if(item.mod) { + selected_view.innerHTML ="Selected: source reading data product: for module "+item.mod+" "+moduleIdToName(item.mod)+ " while "+activityToName[item.act]+" "+typeToName[item.type+kTypeOffset] +" start: "+item.start.toFixed(6)+"s finish: "+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); + } else { + selected_view.innerHTML = "Selected: source "+typeToName[item.type+kTypeOffset]+" id: "+item.id+" run: "+item.sync[0] + +" lumi: "+item.sync[1]+ " event: "+item.sync[2]+" start: "+item.start.toFixed(6)+"s finish:"+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); + } } else { - selected_view.innerHTML = "Selected: source "+typeToName[item.type+kTypeOffset]+" id: "+item.id+" run: "+item.sync[0] + selected_view.innerHTML = "Selected: "+typeToName[item.type+kTypeOffset]+" id: "+item.id+" run: "+item.sync[0] +" lumi: "+item.sync[1]+ " event: "+item.sync[2]+" start: "+item.start.toFixed(6)+"s finish:"+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); } } else { - selected_view.innerHTML = "Selected: "+typeToName[item.type+kTypeOffset]+" id: "+item.id+" run: "+item.sync[0] - +" lumi: "+item.sync[1]+ " event: "+item.sync[2]+" start: "+item.start.toFixed(6)+"s finish:"+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); - } - } else { - let transform = ''; - if (item.call != 0 && item.mod > 0) { - transform = ' transform ' + let transform = ''; + if (item.call != 0 && item.mod > 0) { + transform = ' transform ' + } + selected_view.innerHTML ="Selected: module : "+item.mod+" "+moduleIdToName(item.mod)+ " while "+activityToName[item.act]+transform+" "+typeToName[item.type+kTypeOffset] +" start: "+item.start.toFixed(6)+"s finish: "+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); } - selected_view.innerHTML ="Selected: module : "+item.mod+" "+moduleIdToName(item.mod)+ " while "+activityToName[item.act]+transform+" "+typeToName[item.type+kTypeOffset] +" start: "+item.start.toFixed(6)+"s finish: "+item.finish.toFixed(6)+"s duration: "+duration(item.finish-item.start); } - } - function doSelection(items, x) { - let time = x/kInitPixelsPerSecond/timeZoomFactor+minVisibleTime; - //console.log(time); - if( time < 0 || time > kEndTime) { - doUnselection(); + function doSelection(items, x) { + let time = x/kInitPixelsPerSecond/timeZoomFactor+minVisibleTime; + //console.log(time); + if( time < 0 || time > kEndTime) { + doUnselection(); + drawGraph(); + return; + } + selected_item = null; + for( let item of items) { + if (time < item.start) { + break; + } + if (time > item.start && time < item.finish) { + selected_item = item; + if ( overlappingTransitions.includes(selected_item.type)) { + continue; + } else { + break; + } + } + } + if (selected_item) { + updateSelectedView(selected_item); + } else { + doUnselection(); + } drawGraph(); - return; } - selected_item = null; - for( let item of items) { - if (time < item.start) { - break; + + function graph_onMouseUp(event) { + if (graph_mouseDown && ! graph_isDragging) { + //trying to select + const selectionPoint = getTransformedPoint(event.offsetX, event.offsetY); + const vertIndex = Math.floor((selectionPoint.y-graph_vertical_offset)/kRowHeight); + + let presentIndex = 0; + let container = null; + outer: for(let grouping of data.transitions) { + for(let slot of grouping.slots) { + if (presentIndex == vertIndex) { + container = slot; + break outer; + } + ++presentIndex; + } } - if (time > item.start && time < item.finish) { - selected_item = item; - if ( overlappingTransitions.includes(selected_item.type)) { - continue; + if (!container) { + doUnselection(); + drawGraph(); } else { - break; + doSelection(container, selectionPoint.x); } } + graph_isDragging = false; + graph_mouseDown = false; } - if (selected_item) { - updateSelectedView(selected_item); - } else { - doUnselection(); + + function graph_onMouseOut() { + graph_isDragging = false + graph_mouseDown = false; } - drawGraph(); - } - - function graph_onMouseUp(event) { - if (graph_mouseDown && ! graph_isDragging) { - //trying to select - const selectionPoint = getTransformedPoint(event.offsetX, event.offsetY); - const vertIndex = Math.floor((selectionPoint.y-graph_vertical_offset)/kRowHeight); - - let presentIndex = 0; - let container = null; - outer: for(let grouping of data.transitions) { - for(let slot of grouping.slots) { - if (presentIndex == vertIndex) { - container = slot; - break outer; - } - ++presentIndex; + function graph_onWheel(event) { + if (event.ctrlKey) { + let currentTransformedCursor = getTransformedPoint(event.offsetX, event.offsetY); + const zoom = event.deltaY < 0 ? 1.02 : 0.98; + const originalScale = 1./timeZoomFactor/kInitPixelsPerSecond; + timeZoomFactor *= zoom; + const newScale = 1./timeZoomFactor/kInitPixelsPerSecond; + //Keep the cursor at the same time and change zoom around that point + minVisibleTime = minVisibleTime + currentTransformedCursor.x*(originalScale-newScale); + } else { + graph_translate(-1*event.deltaX, -1*event.deltaY); } + drawGraph(); + event.preventDefault() } - if (!container) { - doUnselection(); + + window.addEventListener('resize',function(){ + graph_context.canvas.width = graph.clientWidth; + graph_context.canvas.height = graph.clientHeight; + name_context.canvas.width = name_view.clientWidth; + name_context.canvas.height = name_view.clientHeight; + time_context.canvas.width = time_view.clientWidth; + time_context.canvas.height = time_view.clientHeight; + drawGraph(); + }, false); + graph.addEventListener('mousedown', graph_onMouseDown) + graph.addEventListener('mousemove', graph_onMouseMove) + graph.addEventListener('mouseup', graph_onMouseUp) + graph.addEventListener('mouseout', graph_onMouseOut) + graph.addEventListener('wheel', graph_onWheel); + + function time_onMouseDown(event) { + time_isDragging = true; + time_dragStartPosition = getTransformedPoint(event.offsetX, 0).x; + } + + function time_onMouseMove(event) { + let currentTransformedCursor = getTransformedPoint(event.offsetX, 0); + + if (time_isDragging) { + graph_translate(currentTransformedCursor.x - time_dragStartPosition, 0); + time_dragStartPosition = currentTransformedCursor.x; drawGraph(); + } + } + + function time_onMouseUp() { + time_isDragging = false; + } + + function time_onMouseOut() { + time_isDragging = false + } + + function time_onWheel(event) { + if (event.ctrlKey) { + let currentTransformedCursor = getTransformedPoint(event.offsetX, event.offsetY); + const zoom = event.deltaY < 0 ? 1.02 : 0.98; + const originalScale = 1./timeZoomFactor/kInitPixelsPerSecond; + timeZoomFactor *= zoom; + const newScale = 1./timeZoomFactor/kInitPixelsPerSecond; + //Keep the cursor at the same time and change zoom around that point + minVisibleTime = minVisibleTime + currentTransformedCursor.x*(originalScale-newScale); } else { - doSelection(container, selectionPoint.x); + graph_translate(-1*event.deltaX, 0); } + //console.log(minVisibleTime); + drawGraph(); + event.preventDefault(); + } - graph_isDragging = false; - graph_mouseDown = false; - } - - function graph_onMouseOut() { - graph_isDragging = false - graph_mouseDown = false; - } - function graph_onWheel(event) { - if (event.ctrlKey) { - let currentTransformedCursor = getTransformedPoint(event.offsetX, event.offsetY); - const zoom = event.deltaY < 0 ? 1.02 : 0.98; - const originalScale = 1./timeZoomFactor/kInitPixelsPerSecond; + + time_view.addEventListener('mousedown', time_onMouseDown) + time_view.addEventListener('mousemove', time_onMouseMove) + time_view.addEventListener('mouseup', time_onMouseUp) + time_view.addEventListener('mouseout', time_onMouseOut) + time_view.addEventListener('wheel', time_onWheel); + + function zoom_in_click(event) { + const zoom = 1.1; + const originalScale = 1. / timeZoomFactor / kInitPixelsPerSecond; timeZoomFactor *= zoom; - const newScale = 1./timeZoomFactor/kInitPixelsPerSecond; - //Keep the cursor at the same time and change zoom around that point - minVisibleTime = minVisibleTime + currentTransformedCursor.x*(originalScale-newScale); - } else { - graph_translate(-1*event.deltaX, -1*event.deltaY); + const newScale = 1. / timeZoomFactor / kInitPixelsPerSecond; + //Keep the center of the view at the same time and change zoom around that point + minVisibleTime = minVisibleTime + max_graph_width/2*(originalScale-newScale); + drawGraph(); } - drawGraph(); - event.preventDefault() - } + function zoom_out_click(event) { + const zoom = 0.909; + const originalScale = 1. / timeZoomFactor / kInitPixelsPerSecond; + timeZoomFactor *= zoom; + const newScale = 1. / timeZoomFactor / kInitPixelsPerSecond; + //Keep the center of the view at the same time and change zoom around that point + minVisibleTime = minVisibleTime + max_graph_width/2*(originalScale-newScale); + drawGraph(); + } + zoom_in_button.addEventListener("click", zoom_in_click); + zoom_out_button.addEventListener("click", zoom_out_click); - window.addEventListener('resize',function(){ - graph_context.canvas.width = graph.clientWidth; - graph_context.canvas.height = graph.clientHeight; - name_context.canvas.width = name_view.clientWidth; - name_context.canvas.height = name_view.clientHeight; - time_context.canvas.width = time_view.clientWidth; - time_context.canvas.height = time_view.clientHeight; - drawGraph(); - }, false); - graph.addEventListener('mousedown', graph_onMouseDown) - graph.addEventListener('mousemove', graph_onMouseMove) - graph.addEventListener('mouseup', graph_onMouseUp) - graph.addEventListener('mouseout', graph_onMouseOut) - graph.addEventListener('wheel', graph_onWheel); - - function time_onMouseDown(event) { - time_isDragging = true; - time_dragStartPosition = getTransformedPoint(event.offsetX, 0).x; - } - - function time_onMouseMove(event) { - let currentTransformedCursor = getTransformedPoint(event.offsetX, 0); - - if (time_isDragging) { - graph_translate(currentTransformedCursor.x - time_dragStartPosition, 0); - time_dragStartPosition = currentTransformedCursor.x; + function name_onWheel(event) { + let offset = 0; + graph_translate(0, -1*event.deltaY); drawGraph(); + event.preventDefault() } + name_view.addEventListener('wheel', name_onWheel); } - - function time_onMouseUp() { - time_isDragging = false; - } - - function time_onMouseOut() { - time_isDragging = false + async function populateDropdown() { + showLoadingSpinner(); // Show loading spinner + try { + const response = await fetch('/list-json'); + const jsonFiles = await response.json(); + const dropdown = document.getElementById('jsonDropdown'); + + jsonFiles.forEach(file => { + const option = document.createElement('option'); + option.value = file; + option.textContent = file; + dropdown.appendChild(option); + }); + } catch (error) { + console.error('Error fetching JSON file list:', error); + } + finally { + hideLoadingSpinner(); // Hide loading spinner + } } - - function time_onWheel(event) { - if (event.ctrlKey) { - let currentTransformedCursor = getTransformedPoint(event.offsetX, event.offsetY); - const zoom = event.deltaY < 0 ? 1.02 : 0.98; - const originalScale = 1./timeZoomFactor/kInitPixelsPerSecond; - timeZoomFactor *= zoom; - const newScale = 1./timeZoomFactor/kInitPixelsPerSecond; - //Keep the cursor at the same time and change zoom around that point - minVisibleTime = minVisibleTime + currentTransformedCursor.x*(originalScale-newScale); + // Event listener for dropdown change + jsonDropdown.addEventListener('change', function() { + const selectedFile = this.value; // Get the selected value from the dropdown + if (selectedFile) { + hideSelectFilePrompt(); // Hide select file prompt + fetchData(selectedFile); // Fetch the selected JSON file } else { - graph_translate(-1*event.deltaX, 0); + console.log('No file selected'); } - //console.log(minVisibleTime); - drawGraph(); - event.preventDefault(); - - } - - time_view.addEventListener('mousedown', time_onMouseDown) - time_view.addEventListener('mousemove', time_onMouseMove) - time_view.addEventListener('mouseup', time_onMouseUp) - time_view.addEventListener('mouseout', time_onMouseOut) - time_view.addEventListener('wheel', time_onWheel); + }); - function zoom_in_click(event) { - const zoom = 1.1; - const originalScale = 1. / timeZoomFactor / kInitPixelsPerSecond; - timeZoomFactor *= zoom; - const newScale = 1. / timeZoomFactor / kInitPixelsPerSecond; - //Keep the center of the view at the same time and change zoom around that point - minVisibleTime = minVisibleTime + max_graph_width/2*(originalScale-newScale); - drawGraph(); - } - function zoom_out_click(event) { - const zoom = 0.909; - const originalScale = 1. / timeZoomFactor / kInitPixelsPerSecond; - timeZoomFactor *= zoom; - const newScale = 1. / timeZoomFactor / kInitPixelsPerSecond; - //Keep the center of the view at the same time and change zoom around that point - minVisibleTime = minVisibleTime + max_graph_width/2*(originalScale-newScale); - drawGraph(); - } - zoom_in_button.addEventListener("click", zoom_in_click); - zoom_out_button.addEventListener("click", zoom_out_click); +populateDropdown(); +function showLoadingSpinner() { + document.getElementById('loadingSpinner').style.display = 'block'; +} - function name_onWheel(event) { - let offset = 0; - graph_translate(0, -1*event.deltaY); - drawGraph(); - event.preventDefault() - } - name_view.addEventListener('wheel', name_onWheel); -} \ No newline at end of file +function hideLoadingSpinner() { + document.getElementById('loadingSpinner').style.display = 'none'; +} +// Functions to show and hide the select file prompt +function showSelectFilePrompt() { + document.getElementById('selectFilePrompt').style.display = 'block'; +} + +function hideSelectFilePrompt() { + document.getElementById('selectFilePrompt').style.display = 'none'; +} + +}; \ No newline at end of file diff --git a/FWCore/Skeletons/doc/man/skeletons.1 b/FWCore/Skeletons/doc/man/skeletons.1 index 920359e8066ed..42c7501c02732 100644 --- a/FWCore/Skeletons/doc/man/skeletons.1 +++ b/FWCore/Skeletons/doc/man/skeletons.1 @@ -58,8 +58,6 @@ The following CMS commands is available for your needs: \fBmkrecord\fP generates code based on Record template .IP \(bu 2 \fBmkskel\fP generates code based on Skeleton template -.IP \(bu 2 -\fBmktsel\fP generate code based on TSelector template .UNINDENT .sp The \fBmkrecord\fP and \fBmkskel\fP scripts will run anywhere on your system, while diff --git a/FWCore/Skeletons/mkTemplates/TSelector/BuildFile.xml b/FWCore/Skeletons/mkTemplates/TSelector/BuildFile.xml deleted file mode 100644 index c66ff2cc3f667..0000000000000 --- a/FWCore/Skeletons/mkTemplates/TSelector/BuildFile.xml +++ /dev/null @@ -1,5 +0,0 @@ -@example_track - - - - diff --git a/FWCore/Skeletons/mkTemplates/TSelector/Driver.dir b/FWCore/Skeletons/mkTemplates/TSelector/Driver.dir deleted file mode 100644 index c3737695246b1..0000000000000 --- a/FWCore/Skeletons/mkTemplates/TSelector/Driver.dir +++ /dev/null @@ -1,5 +0,0 @@ -BuildFile.xml -src/TSelector.cc -interface/TSelector.h -interface/classes.h -interface/classes_def.xml diff --git a/FWCore/Skeletons/mkTemplates/TSelector/TSelector.cc b/FWCore/Skeletons/mkTemplates/TSelector/TSelector.cc deleted file mode 100644 index 018121772b828..0000000000000 --- a/FWCore/Skeletons/mkTemplates/TSelector/TSelector.cc +++ /dev/null @@ -1,112 +0,0 @@ -// -*- C++ -*- -// -// Package: __subsys__/__pkgname__ -// Class: __class__ -// -/* - - Description: [one line class summary] - - Implementation: - [Notes on implementation] -*/ -// -// Original Author: __author__ -// Created: __date__ -// -// - -// system include files -#include -#include - -#include "TCanvas.h" -// user include files -#include "__subsys__/__pkgname__/interface/__class__.h" -#include "DataFormats/Common/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" - -@example_track#include "DataFormats/TrackReco/interface/Track.h" -@example_track#include "DataFormats/TrackReco/interface/TrackFwd.h" -// -// constants shared between the Selector and the Workers -// -@example_trackconst char* const kPt = "pt"; -//const char* const kA = "a"; - -//=============================================== -//A worker processes the events. -// A new worker is created each time the events are processed -//=============================================== - -// ------------ constructed for each PROOF Node ------------ -// The arguments are -// fromSelector: these are copies of values set in the selector and sent to all workers -// out: these are the items which will be passed back to the selector (e.g. histograms) -__class__Worker::__class__Worker(const TList* fromSelector, TList& out) { - //h_a = new TH1F( kA , "a" , 100, 0, 20 ); - //out.Add(h_a); -@example_track h_pt = new TH1F(kPt, "P_t", 100, 0, 100); -@example_track out.Add(h_pt); -} - -__class__Worker::~__class__Worker() {} - -// ------------ method called for each event ------------ -void __class__Worker::process(const edm::Event& iEvent) { - using namespace edm; -@example_track using reco::TrackCollection; -@example_track -@example_track Handle tracks; -@example_track iEvent.getByLabel("ctfWithMaterialTracks", tracks); -@example_track for (const auto& track : *tracks) { -@example_track h_pt->Fill(track.pt()); -@example_track } - - //using namespace edmtest; - //edm::Handle hThings; - //iEvent.getByLabel("Thing", hThings); - //for (const auto& thing : *hThings) { - // h_a ->Fill(it->a); - //} -} - -// ------------ called after processing the events ------------ -// The argument is the same as for the constructor -void __class__Worker::postProcess(TList& out) {} - -//=============================================== -//Only one Selector is made per job. It gets all the results from each worker. -//=============================================== -__class__::__class__() {} - -__class__::~__class__() {} - -// ------------ called just before all workers are constructed ------------ -void __class__::begin(TList*& toWorkers) {} - -// ------------ called after all workers have finished ------------ -// The argument 'fromWorkers' contains the accumulated output of all Workers -void __class__::terminate(TList& fromWorkers) { - using namespace std; - auto canvas = std::make_unique(); - //{ - // TObject* hist = fromWorkers.FindObject(kA); - // if (nullptr != hist) { - // hist->Draw(); - // canvas->SaveAs("a.jpg"); - // } else { - // cout << "no '" << kA << "' histogram" << endl; - // } - // -@example_track -@example_track { -@example_track TObject* hist = fromWorkers.FindObject(kPt); -@example_track if (nullptr != hist) { -@example_track hist->Draw(); -@example_track canvas->SaveAs("pt.jpg"); -@example_track } else { -@example_track cout << "no '" << kPt << "' histogram" << endl; -@example_track } -@example_track } -} diff --git a/FWCore/Skeletons/mkTemplates/TSelector/TSelector.h b/FWCore/Skeletons/mkTemplates/TSelector/TSelector.h deleted file mode 100644 index 319e56c44b2ff..0000000000000 --- a/FWCore/Skeletons/mkTemplates/TSelector/TSelector.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef __subsys_____pkgname_____class___h -#define __subsys_____pkgname_____class___h -// -*- C++ -*- -// -// Package: __subsys__/__pkgname__ -// Class: __class__ -// -/**\class __class__ __class__.h __subsys__/__pkgname__/plugins/__class__.h - -Description: [one line class summary] - -Implementation: -[Notes on implementation] -*/ -// -// Original Author: __author__ -// Created: __date__ -// -// -#include -#include "FWCore/TFWLiteSelector/interface/TFWLiteSelector.h" - -//A worker processes the events. When using PROOF there is one Worker per PROOF CPU Node. -struct __class__Worker { - __class__Worker(const TList*, TList&); - ~__class__Worker(); - void process(const edm::Event& iEvent); - void postProcess(TList&); - //Place histograms, etc that you want to fill here - //TH1F* h_a; -@example_track TH1F* h_pt; -}; - -//Only one Selector is made per job. It gets all the results from each worker. -class __class__ : public TFWLiteSelector<__class__Worker> { -public: - __class__(); - ~__class__() override; - void begin(TList*&) override; - void terminate(TList&) override; - -private: - __class__(__class__ const&); - __class__ operator=(__class__ const&); - - ClassDef(__class__, 2) -}; -#endif diff --git a/FWCore/Skeletons/mkTemplates/TSelector/classes.h b/FWCore/Skeletons/mkTemplates/TSelector/classes.h deleted file mode 100644 index a6c1436a72d87..0000000000000 --- a/FWCore/Skeletons/mkTemplates/TSelector/classes.h +++ /dev/null @@ -1 +0,0 @@ -#include "__subsys__/__class__/src/__class__.h" diff --git a/FWCore/Skeletons/mkTemplates/TSelector/classes_def.xml b/FWCore/Skeletons/mkTemplates/TSelector/classes_def.xml deleted file mode 100644 index f7f8689f3be08..0000000000000 --- a/FWCore/Skeletons/mkTemplates/TSelector/classes_def.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/FWCore/Skeletons/python/cms.py b/FWCore/Skeletons/python/cms.py index a324f3cedc909..15a7d50e54c3b 100644 --- a/FWCore/Skeletons/python/cms.py +++ b/FWCore/Skeletons/python/cms.py @@ -6,7 +6,6 @@ Author : Valentin Kuznetsov Description: CMS-related utils """ -from __future__ import print_function # system modules from builtins import range diff --git a/FWCore/Skeletons/python/main.py b/FWCore/Skeletons/python/main.py index e7ebf5462a196..d7f21a8d98e4c 100755 --- a/FWCore/Skeletons/python/main.py +++ b/FWCore/Skeletons/python/main.py @@ -6,7 +6,6 @@ Author : Valentin Kuznetsov Description: """ -from __future__ import print_function # system modules import os diff --git a/FWCore/Skeletons/python/pkg.py b/FWCore/Skeletons/python/pkg.py index 1a31cb62fad46..0e16029c185ed 100644 --- a/FWCore/Skeletons/python/pkg.py +++ b/FWCore/Skeletons/python/pkg.py @@ -8,7 +8,6 @@ Description: AbstractGenerator class provides basic functionality to generate CMSSW class from given template """ -from __future__ import print_function # system modules import os diff --git a/FWCore/Skeletons/python/utils.py b/FWCore/Skeletons/python/utils.py index 6812c7c6c6475..20a8e172a8493 100644 --- a/FWCore/Skeletons/python/utils.py +++ b/FWCore/Skeletons/python/utils.py @@ -6,7 +6,6 @@ Author : Valentin Kuznetsov Description: Utilities module """ -from __future__ import print_function # system modules from builtins import range diff --git a/FWCore/Skeletons/scripts/mktsel b/FWCore/Skeletons/scripts/mktsel deleted file mode 100755 index ef933d6d4bed8..0000000000000 --- a/FWCore/Skeletons/scripts/mktsel +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python3 -#-*- coding: utf-8 -*- -#pylint: disable-msg= -""" -File : mktsel -Author : Valentin Kuznetsov -Description: mktsel code -""" - -# system modules -import sys - -if sys.version_info < (2, 6): - raise Exception("This script requires python 2.6 or greater") - -# package modules -from FWCore.Skeletons.cms import generate, config - -def pkg_help(): - "mktsel help function" - msg = '\nmktsel script generates CMS TSelector code' - msg += '\nUsage : mktsel ProducerName -author "FirstName LastName"' - msg += ' ' - msg += '\nOutput : ' - msg += """ - MyTSel/ - |-- BuildFile.xml - | src/ - | |-- MyTSel.cc - | interface/ - | |-- MyTSel.h - | |-- classes.h - | |-- classes_def.xml - """ - msg += '\nExample:' - msg += '\n # create new TSelector code' - msg += '\n mktsel MyTSel' - msg += '\n # create new TSelector code with given author' - msg += '\n mktsel MyTSel -author "First Last"' - msg += '\n # create new TSelector code with myparticle example' - msg += '\n mktsel MyTSel example_track' - msg += '\n' - return msg - -if __name__ == '__main__': - generate(config('TSelector', pkg_help())) diff --git a/FWCore/Skeletons/test/runtests.sh b/FWCore/Skeletons/test/runtests.sh index 78f68303a423c..856dd2fafa49c 100755 --- a/FWCore/Skeletons/test/runtests.sh +++ b/FWCore/Skeletons/test/runtests.sh @@ -53,9 +53,6 @@ mkdatapkg TestDataPackage -author "Test Author" mkskel TestSkeleton -author "Test Author" -mktsel TestSelector -author "Test Author" -mktsel TestSelectorTrack example_track -author "Test Author" - popd git add TestSubsystem git commit -a -m "Other skeletong code" diff --git a/FWCore/Sources/interface/FromFiles.h b/FWCore/Sources/interface/FromFiles.h index c54af177b4406..f756e914ce53c 100644 --- a/FWCore/Sources/interface/FromFiles.h +++ b/FWCore/Sources/interface/FromFiles.h @@ -18,7 +18,6 @@ namespace edm { FromFiles(ParameterSet const& pset); ~FromFiles(); - std::vector const& logicalFileNames() const { return catalog_.logicalFileNames(); } std::vector fileNames(unsigned iCatalog) const { return catalog_.fileNames(iCatalog); } InputFileCatalog& catalog() { return catalog_; } diff --git a/FWCore/Sources/interface/ProducerSourceFromFiles.h b/FWCore/Sources/interface/ProducerSourceFromFiles.h index 9f70f5b7a1a30..49150c030d25f 100644 --- a/FWCore/Sources/interface/ProducerSourceFromFiles.h +++ b/FWCore/Sources/interface/ProducerSourceFromFiles.h @@ -21,7 +21,6 @@ namespace edm { using FromFiles::catalog; using FromFiles::fileNames; - using FromFiles::logicalFileNames; static void fillDescription(ParameterSetDescription& desc); diff --git a/FWCore/Sources/interface/RawInputSourceFromFiles.h b/FWCore/Sources/interface/RawInputSourceFromFiles.h index 8b0f7e3f73c0e..843e562d4232d 100644 --- a/FWCore/Sources/interface/RawInputSourceFromFiles.h +++ b/FWCore/Sources/interface/RawInputSourceFromFiles.h @@ -20,7 +20,6 @@ namespace edm { ~RawInputSourceFromFiles() override; using FromFiles::catalog; - using FromFiles::logicalFileNames; static void fillDescription(ParameterSetDescription& desc); diff --git a/FWCore/TFWLiteSelector/BuildFile.xml b/FWCore/TFWLiteSelector/BuildFile.xml deleted file mode 100644 index 4d44f61a0987a..0000000000000 --- a/FWCore/TFWLiteSelector/BuildFile.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/FWCore/TFWLiteSelector/doc/proofNotes.txt b/FWCore/TFWLiteSelector/doc/proofNotes.txt deleted file mode 100644 index 8994d46b834e0..0000000000000 --- a/FWCore/TFWLiteSelector/doc/proofNotes.txt +++ /dev/null @@ -1,147 +0,0 @@ -To get use proof from root: - -REFERENCE MATERIAL -================== -The twiki might prove useful if you have difficulties below: - - http://higweb.lns.mit.edu/twikis/proof/bin/view/Proof/ProofDocs - $ROOTSYS/README/README.PROOF - -ON INSTALLING PROOF -=================== - -Install proof according to the instructions in - -$ROOTSYS/README/README.PROOF - -One problem we had was that we needed to give the proofd the LD_LIBRARY_PATH -where it can find the library with our TSelector that we were testing. -For example, - export LD_LIBRARY_PATH=/mylogin/CMSSW_0_9_0/lib:$LD_LIBRARY_PATH -The best way to determine the proper LD_LIBRARY_PATH is to look for LD_LIBRARY_PATH -issued by the command 'scramv1 run -csh'. - -This is unfortunate for several reasons: -1) Once you start the proofd, it will only use libraries for the software - release pointed to by that LD_LIBRARY_PATH. -2) There isn't a way to ensure that the release used by proofd is consistent - with the release you are using. -3) Anyone making a new shared library for the release used by proofd has to - install it somewhere in the LD_LIBRARY_PATH used to start all the proofd daemons. - -If you want reasonably open access, make a suitably writable directory for people to -install their shared libraries and add it to the LD_LIBRARY_PATH of proofd. - -Proofd also needs access (e.g., via NFS or AFS) to the binary you -want to run. So when setting up your proof.conf file, make sure it -has access to your binaries. We did this by configuring the proofd -machines with NFS images. - -There may be some other way of getting the binaries and libraries to the -proof daemons for execution, but we haven't found it yet. - -For our simple test setup, we used the same host for master and workers. -It has 2 CPUs, so we set up two workers. -Our $ROOTSYS/proof/etc/proof.conf file contains: - -master hostie.lns.cornell.edu image=nfs -worker hostie.lns.cornell.edu perf=100 image=nfs -worker hostie.lns.cornell.edu perf=100 image=nfs - -Note, you don't need to start the proofd from /etc/inetd.conf for an -initial test. You can just log in to the master proof server and run - -$ROOTSYS/bin/proofd $ROOTSYS & - -The output will be logged to the screen where you started it, which is -what you probably want for a quick test. - -You need a password to access proof. Create that as follows, replacing -the string secret_passwd with the password that you want. - -$ROOTSYS/proof/utils/crypt secret_passwd > $HOME/.rootdpass -chmod 0600 $HOME/.rootdpass - -Note: this appears to provides no security of any value.Anybody who can - access your master proofd host can issue themselves a password and - start using your system. - -Now you can start root. - -$ROOTSYS/bin/root - -At the root prompt, issue the following command, replacing proof-master-host -with the fully qualified name of the host running the proofd master. - - gROOT->Proof("proof-master-host") - -for example, - - gROOT->Proof("hostie.lns.cornell.edu"); - -You will get a pop-up dialog asking for your password. It is really -annoying that it doesn't ask for the password at the CLI where you -were already typing. -If all went well, type - - gProof->print() - -This will print 20-30 lines of helpful information that will enlighten you. - -RUNNING A ROOT JOB USING PROOF -============================== - -Now you will want to do something useful, like run a TSelector. -This turned out to be quite tricky. Here is an example. -We made a ThingsTSelector, which we put into libFWCoreTFWLiteSelectorTest. -To ensure that our TSelector was auto-loaded we loaded libFWCoreFWLite -and then enabled fwlite. -NOTE WELL: libFWCoreTFWLiteSelectorTest.so must be in the LD_LIBRARY_PATH -for all the proofd's you are running. - -After that, our library was correctly loaded. Next we made a TDSet. -In non-proof code you would make a TChain, but for proof you make a TDSet. -We added a file to the TDSet and were able to read in our data. The sequence -of root commands is as follows. - -First make a file called proof_remote.C with the following code to make -everything load properly on the remote proof host(s). - - { - // This makes the TSelectors in the library available to the - // remote proof session - gSystem->Load("libFWCoreFWLite"); - FWLiteEnabler::enable(); - gSystem->Load("libFWCoreTFWLiteSelectorTest"); - } - -Now make proof_local.C - - { - // Setup the connection to the proof server - gROOT->Proof( "lnx7108.lns.cornell.edu" ); - - // You need this to allow ROOT to be able to use a ThingsTSelector - gSystem->Load("libFWCoreFWLite"); - FWLiteEnabler::enable(); - - gSystem->Load("libFWCoreTFWLiteSelectorTest"); - - // This makes sure the TSelector library and dictionary are properly - // installed in the remote PROOF servers - gProof->Exec( ".x proof_remote.C" ); - - // This creates the 'data set' which defines what files we need to process - // NOTE: the files given must be accessible by the remote systems. - TDSet c( "TTree", "Events"); - c.Add("/mylogin/CMSSW_0_9_0/src/FWCore/TFWLiteSelector/test/test.root"); - - //This makes the actual processing happen - c.Process( "ThingsTSelector" ); - } - -Start root and at the root command prompt run the command - - .x proof_local.C - -This should execute on several proof hosts. diff --git a/FWCore/TFWLiteSelector/interface/TFWLiteSelector.h b/FWCore/TFWLiteSelector/interface/TFWLiteSelector.h deleted file mode 100644 index 3491915ef2de7..0000000000000 --- a/FWCore/TFWLiteSelector/interface/TFWLiteSelector.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef FWCore_TFWLiteSelector_TFWLiteSelector_h -#define FWCore_TFWLiteSelector_TFWLiteSelector_h -// -*- C++ -*- -// -// Package: TFWLiteSelector -// Class : TFWLiteSelector -// -/**\class TFWLiteSelector TFWLiteSelector.h FWCore/TFWLiteSelector/interface/TFWLiteSelector.h - - Description: A 'safe' form of a TSelector which uses a Worker helper class to do the processing - - Usage: - This is a safe form of a TSelector which separates the processing (which could happen on many - computers when using PROOF) from the handling of the final result (which only happens on the - original computer which is running the ROOT job). - - The processing is handled by a worker class. This class is expected to have the following methods - 1) a constructor which takes a 'const TList*' and a 'TList&' as its arguments. The 'const TList*' holds - objects The 'TList&' is used to hold all the - 'TObject' items (e.g. histograms) you want to access for the final result (e.g. the sum of all - histograms created by the many Workers running on different computers). You should create the - items in the constructor, hold onto them as member data in the Worker and 'Add' them to the TList. - In addition, the 'TList&' can hold items sent to the workers from the TFWLiteSelector. - 2) a method called 'process(const edm::Event&)' - this is called for each Event - 3) a destructor which does what ever you want to have done after all the Events have finished - - You should inherit from TFWLiteSelector<...> where the template argument should be the worker you want - to use. You need to implement the following methods - 1) 'begin(const TList*& itemsForProcessing)' - this is called before processing has started and before any workers get created. If you want to pass data to - your workers, you can create a new TList and assign it to 'itemsForProcessing' and then add the objects you - want passed into that list. - NOTE: you are responsible for deleting the created TList and for deleting all items held by the TList. The easiest - way to do this is to add a 'std::unique_ptr' member data to your Selector and then call 'SetOwner()' on the TList. - 2) 'terminate(TList&)' - this is called after all processing has finished. The TList& contains all the accumulated information - from all the workers. -*/ -// -// Original Author: Chris Jones -// Created: Fri Jun 30 21:04:46 CDT 2006 -// - -// system include files -#include - -class TList; - -// user include files - -#include "FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h" -#include "FWCore/Utilities/interface/propagate_const.h" - -// forward declarations -template -class TFWLiteSelector : public TFWLiteSelectorBasic { -public: - TFWLiteSelector() : worker_() {} - ~TFWLiteSelector() override {} - - // ---------- const member functions --------------------- - - // ---------- static member functions -------------------- - - // ---------- member functions --------------------------- - -private: - TFWLiteSelector(const TFWLiteSelector&); // stop default - - const TFWLiteSelector& operator=(const TFWLiteSelector&); // stop default - - void preProcessing(const TList* in, TList& out) override { worker_ = std::make_shared(in, out); } - void process(const edm::Event& iEvent) override { worker_->process(iEvent); } - void postProcessing(TList& out) override { worker_->postProcess(out); } - - // ---------- member data -------------------------------- - edm::propagate_const> worker_; - ClassDefOverride(TFWLiteSelector, 2) -}; - -#endif diff --git a/FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h b/FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h deleted file mode 100644 index 1a5f7cbb0bfd5..0000000000000 --- a/FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef FWCore_TFWLiteSelector_TFWLiteSelectorBasic_h -#define FWCore_TFWLiteSelector_TFWLiteSelectorBasic_h -// -*- C++ -*- -// -// Package: TFWLiteSelector -// Class : TFWLiteSelectorBasic -// -/**\class TFWLiteSelectorBasic TFWLiteSelectorBasic.h FWCore/FWLite/interface/TFWLiteSelectorBasic.h - - Description: A ROOT TSelector which accesses data using an edm::Event - - Usage: - By inheriting from this class one can make a TSelector for ROOT which works with PROOF and which -allows you to access data using an edm::Event. - -*/ -// -// Original Author: Chris Jones -// Created: Tue Jun 27 16:37:27 EDT 2006 -// - -// system include files -#include -#include "TSelector.h" - -// user include files -#include "FWCore/Utilities/interface/propagate_const.h" - -// forward declarations -class TFile; -class TList; -class TTree; - -namespace edm { - class Event; - - namespace root { - struct TFWLiteSelectorMembers; - } -} // namespace edm - -class TFWLiteSelectorBasic : public TSelector { -public: - TFWLiteSelectorBasic(); - ~TFWLiteSelectorBasic() override; - - // ---------- const member functions --------------------- - - // ---------- static member functions -------------------- - - // ---------- member functions --------------------------- - /**Called each time the 'client' begins processing (remote 'slaves' do not see this message) - \param in an assignable pointer to a list of objects you want passed to 'preProcessing'. This - list is used to communicate with remote slaves. NOTE: you are responsible for deleting this TList - and its content once you are done with it. - */ - virtual void begin(TList*& in) = 0; - - /**Called each time the 'slave' is about to start processing - \param in a pointer to the list of objects created in 'begin()'. The pointer can be 0 - \param out a list of objects that are the result of processing (e.g. histograms). - You should call 'Add()' for each object you want sent to the 'terminate' method. - */ - virtual void preProcessing(const TList* in, TList& out) = 0; - - /**Call each time the 'slave' gets a new Event - \param event a standard edm::Event which works just like it does in cmsRun - */ - virtual void process(const edm::Event& event) = 0; - - /**Called each time the 'slave' has seen all the events - \param out the list of objects that will be sent to 'terminate'. - You can Add() additional objects to 'out' at this point as well. - */ - virtual void postProcessing(TList& out) = 0; - - /**Called each time the 'client' has finished processing. - \param out contains the accumulated output of all slaves. - */ - virtual void terminate(TList& out) = 0; - -private: - TFWLiteSelectorBasic(const TFWLiteSelectorBasic&); // stop default - - const TFWLiteSelectorBasic& operator=(const TFWLiteSelectorBasic&); // stop default - - void Begin(TTree*) override; - void SlaveBegin(TTree*) override; - void Init(TTree*) override; - Bool_t Notify() override; - Bool_t Process(Long64_t /*entry*/) override; - void SlaveTerminate() override; - void Terminate() override; - Int_t Version() const override { return 1; } - - void setupNewFile(TFile&); - // ---------- member data -------------------------------- - edm::propagate_const> m_; - bool everythingOK_; - - ClassDefOverride(TFWLiteSelectorBasic, 2) -}; - -#endif diff --git a/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc b/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc deleted file mode 100644 index d3ff96802e7fd..0000000000000 --- a/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc +++ /dev/null @@ -1,510 +0,0 @@ -// -*- C++ -*- - -// -// Package: TFWLiteSelector -// Class : TFWLiteSelectorBasic -// -// Implementation: -// -// -// Original Author: Chris Jones -// Created: Tue Jun 27 17:58:10 EDT 2006 -// - -// user include files -#include "FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h" - -#include "DataFormats/Common/interface/RefCoreStreamer.h" -#include "DataFormats/Common/interface/setIsMergeable.h" -#include "DataFormats/Provenance/interface/BranchDescription.h" -#include "DataFormats/Provenance/interface/BranchIDList.h" -#include "DataFormats/Provenance/interface/BranchIDListHelper.h" -#include "DataFormats/Provenance/interface/BranchListIndex.h" -#include "FWCore/Framework/interface/ProductProvenanceRetriever.h" -#include "DataFormats/Provenance/interface/BranchType.h" -#include "DataFormats/Provenance/interface/EventAuxiliary.h" -#include "DataFormats/Provenance/interface/EventEntryDescription.h" // kludge to allow compilation -#include "DataFormats/Provenance/interface/EventSelectionID.h" -#include "DataFormats/Provenance/interface/EventToProcessBlockIndexes.h" -#include "DataFormats/Provenance/interface/FileFormatVersion.h" -#include "DataFormats/Provenance/interface/LuminosityBlockAuxiliary.h" -#include "DataFormats/Provenance/interface/ModuleDescription.h" -#include "DataFormats/Provenance/interface/ParameterSetBlob.h" -#include "DataFormats/Provenance/interface/ProcessConfiguration.h" -#include "DataFormats/Provenance/interface/ProcessHistory.h" -#include "DataFormats/Provenance/interface/ProcessHistoryRegistry.h" -#include "DataFormats/Provenance/interface/ProductRegistry.h" -#include "DataFormats/Provenance/interface/RunAuxiliary.h" -#include "DataFormats/Provenance/interface/ThinnedAssociationsHelper.h" -#include "FWCore/Framework/interface/DelayedReader.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventPrincipal.h" -#include "FWCore/Framework/interface/LuminosityBlockPrincipal.h" -#include "FWCore/Framework/interface/RunPrincipal.h" -#include "FWCore/ParameterSet/interface/Registry.h" -#include "FWCore/Utilities/interface/EDMException.h" -#include "FWCore/Utilities/interface/FriendlyName.h" -#include "FWCore/Reflection/interface/ObjectWithDict.h" -#include "FWCore/Reflection/interface/TypeWithDict.h" -#include "FWCore/Utilities/interface/WrappedClassName.h" -#include "FWCore/Utilities/interface/get_underlying_safe.h" - -// system include files -#include "TBranch.h" -#include "TChain.h" -#include "TFile.h" -#include "TTree.h" - -#include -#include -#include -#include -#include - -namespace edm { - namespace root { - class FWLiteDelayedReader : public DelayedReader { - public: - FWLiteDelayedReader() : entry_(-1), eventTree_(nullptr) {} - void setEntry(Long64_t iEntry) { entry_ = iEntry; } - void setTree(TTree* iTree) { eventTree_ = iTree; } - void set(std::shared_ptr> iMap) { - bidToDesc_ = std::move(iMap); - } - - private: - std::unique_ptr getTheProduct(BranchID const& k) const; - std::shared_ptr getProduct_(BranchID const& k, EDProductGetter const* ep) override; - virtual std::unique_ptr getProvenance_(BranchKey const&) const { - return std::unique_ptr(); - } - void mergeReaders_(DelayedReader*) override {} - void reset_() override {} - - signalslot::Signal const* preEventReadFromSourceSignal() - const override { - return nullptr; - } - signalslot::Signal const* postEventReadFromSourceSignal() - const override { - return nullptr; - }; - - Long64_t entry_; - TTree* eventTree_; - std::shared_ptr> bidToDesc_; - }; - - std::shared_ptr FWLiteDelayedReader::getProduct_(BranchID const& k, EDProductGetter const* /*ep*/) { - return getTheProduct(k); - } - - std::unique_ptr FWLiteDelayedReader::getTheProduct(BranchID const& k) const { - auto itFind = bidToDesc_->find(k.id()); - if (itFind == bidToDesc_->end()) { - throw Exception(errors::ProductNotFound) << "could not find entry for product " << k; - } - BranchDescription const& bDesc = *(itFind->second); - - TBranch* branch = eventTree_->GetBranch(bDesc.branchName().c_str()); - if (nullptr == branch) { - throw cms::Exception("MissingBranch") << "could not find branch named '" << bDesc.branchName() << "'" - << "\n Perhaps the data being requested was not saved in this file?"; - } - //find the class type - std::string const fullName = wrappedClassName(bDesc.className()); - TypeWithDict classType = TypeWithDict::byName(fullName); - if (!bool(classType)) { - throw cms::Exception("MissingDictionary") << "could not find dictionary for type '" << fullName << "'" - << "\n Please make sure all the necessary libraries are available."; - } - - //create an instance of it - ObjectWithDict wrapperObj = classType.construct(); - if (nullptr == wrapperObj.address()) { - throw cms::Exception("FailedToCreate") << "could not create an instance of '" << fullName << "'"; - } - void* address = wrapperObj.address(); - branch->SetAddress(&address); - ObjectWithDict edProdObj = wrapperObj.castObject(TypeWithDict::byName("edm::WrapperBase")); - - WrapperBase* prod = reinterpret_cast(edProdObj.address()); - - if (nullptr == prod) { - throw cms::Exception("FailedConversion") << "failed to convert a '" << fullName << "' to a edm::WrapperBase." - << "Please contact developers since something is very wrong."; - } - branch->GetEntry(entry_); - return std::unique_ptr(prod); - } - - struct TFWLiteSelectorMembers { - TFWLiteSelectorMembers() - : tree_(nullptr), - reg_(new ProductRegistry()), - bidToDesc_(std::make_shared>()), - phreg_(new ProcessHistoryRegistry()), - branchIDListHelper_(new BranchIDListHelper()), - // Note that thinned collections are not supported yet, the next - // line just makes it compile but when the Ref or Ptr tries to - // find the thinned collection it will report them not found. - // More work needed here if this is needed (we think no one - // is using TFWLiteSelector anymore and intend to implement - // this properly if it turns out we are wrong) - thinnedAssociationsHelper_(new ThinnedAssociationsHelper()), - processNames_(), - reader_(new FWLiteDelayedReader), - prov_(), - pointerToBranchBuffer_(), - provRetriever_(new edm::ProductProvenanceRetriever(0)) { - reader_->set(get_underlying_safe(bidToDesc_)); - } - void setTree(TTree* iTree) { - tree_ = iTree; - reader_->setTree(iTree); - } - - TTree const* tree() const { return get_underlying_safe(tree_); } - TTree*& tree() { return get_underlying_safe(tree_); } - std::shared_ptr reg() const { return get_underlying_safe(reg_); } - std::shared_ptr& reg() { return get_underlying_safe(reg_); } - std::shared_ptr branchIDListHelper() const { - return get_underlying_safe(branchIDListHelper_); - } - std::shared_ptr& branchIDListHelper() { return get_underlying_safe(branchIDListHelper_); } - std::shared_ptr thinnedAssociationsHelper() const { - return get_underlying_safe(thinnedAssociationsHelper_); - } - std::shared_ptr& thinnedAssociationsHelper() { - return get_underlying_safe(thinnedAssociationsHelper_); - } - - edm::propagate_const tree_; - edm::propagate_const> reg_; - edm::propagate_const>> bidToDesc_; - edm::propagate_const> phreg_; - edm::propagate_const> branchIDListHelper_; - edm::propagate_const> thinnedAssociationsHelper_; - ProcessHistory processNames_; - edm::propagate_const> reader_; - std::vector prov_; - std::vector pointerToBranchBuffer_; - FileFormatVersion fileFormatVersion_; - - edm::propagate_const> provRetriever_; - edm::ProcessConfiguration pc_; - edm::propagate_const> ep_; - edm::ModuleDescription md_; - }; - } // namespace root -} // namespace edm - -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - -// -// constructors and destructor -// -TFWLiteSelectorBasic::TFWLiteSelectorBasic() : m_(new edm::root::TFWLiteSelectorMembers), everythingOK_(false) {} - -// TFWLiteSelectorBasic::TFWLiteSelectorBasic(TFWLiteSelectorBasic const& rhs) -// { -// // do actual copying here; -// } - -TFWLiteSelectorBasic::~TFWLiteSelectorBasic() {} - -// -// assignment operators -// -// TFWLiteSelectorBasic const& TFWLiteSelectorBasic::operator=(TFWLiteSelectorBasic const& rhs) -// { -// //An exception safe implementation is -// TFWLiteSelectorBasic temp(rhs); -// swap(rhs); -// -// return *this; -// } - -// -// member functions -// -void TFWLiteSelectorBasic::Begin(TTree* iTree) { - Init(iTree); - begin(fInput); -} - -void TFWLiteSelectorBasic::SlaveBegin(TTree* iTree) { - Init(iTree); - preProcessing(fInput, *fOutput); -} - -void TFWLiteSelectorBasic::Init(TTree* iTree) { - if (iTree == nullptr) - return; - m_->setTree(iTree); -} - -Bool_t TFWLiteSelectorBasic::Notify() { - //std::cout << "Notify start" << std::endl; - //we have switched to a new file - //get new file from Tree - if (nullptr == m_->tree_) { - std::cout << "No tree" << std::endl; - return kFALSE; - } - TFile* file = m_->tree_->GetCurrentFile(); - if (nullptr == file) { - //When in Rome, do as the Romans - TChain* chain = dynamic_cast(m_->tree()); - if (nullptr == chain) { - std::cout << "No file" << std::endl; - return kFALSE; - } - file = chain->GetFile(); - if (nullptr == file) { - std::cout << "No file" << std::endl; - return kFALSE; - } - } - setupNewFile(*file); - return everythingOK_ ? kTRUE : kFALSE; -} - -namespace { - struct Operate { - Operate(edm::EDProductGetter const* iGetter) : old_(setRefCoreStreamer(iGetter)) {} - - ~Operate() { setRefCoreStreamer(old_); } - - private: - edm::EDProductGetter const* old_; - }; -} // namespace - -Bool_t TFWLiteSelectorBasic::Process(Long64_t iEntry) { - //std::cout << "Process start" << std::endl; - if (everythingOK_) { - std::unique_ptr eaux = std::make_unique(); - edm::EventAuxiliary& aux = *eaux; - edm::EventAuxiliary* pAux = eaux.get(); - TBranch* branch = m_->tree_->GetBranch(edm::BranchTypeToAuxiliaryBranchName(edm::InEvent).c_str()); - - branch->SetAddress(&pAux); - branch->GetEntry(iEntry); - - //NEW m_->processNames_ = aux.processHistory(); - - // std::cout << "ProcessNames\n"; - // for(auto const& name : m_->processNames_) { - // std::cout << " " << name << std::endl; - // } - - edm::EventSelectionIDVector eventSelectionIDs; - edm::EventSelectionIDVector* pEventSelectionIDVector = &eventSelectionIDs; - TBranch* eventSelectionsBranch = m_->tree_->GetBranch(edm::poolNames::eventSelectionsBranchName().c_str()); - if (!eventSelectionsBranch) { - throw edm::Exception(edm::errors::FatalRootError) << "Failed to find event Selections branch in event tree"; - } - eventSelectionsBranch->SetAddress(&pEventSelectionIDVector); - eventSelectionsBranch->GetEntry(iEntry); - - edm::BranchListIndexes branchListIndexes; - edm::BranchListIndexes* pBranchListIndexes = &branchListIndexes; - TBranch* branchListIndexBranch = m_->tree_->GetBranch(edm::poolNames::branchListIndexesBranchName().c_str()); - if (!branchListIndexBranch) { - throw edm::Exception(edm::errors::FatalRootError) << "Failed to find branch list index branch in event tree"; - } - branchListIndexBranch->SetAddress(&pBranchListIndexes); - branchListIndexBranch->GetEntry(iEntry); - m_->branchIDListHelper_->fixBranchListIndexes(branchListIndexes); - edm::EventToProcessBlockIndexes dummyEventToProcessBlockIndexes; - - try { - m_->reader_->setEntry(iEntry); - auto rp = std::make_shared(m_->reg(), m_->pc_, nullptr, 0); - rp->setAux(edm::RunAuxiliary(aux.run(), aux.time(), aux.time())); - auto lbp = std::make_shared(m_->reg(), m_->pc_, nullptr, 0); - lbp->setAux(edm::LuminosityBlockAuxiliary(rp->run(), 1, aux.time(), aux.time())); - auto history = m_->phreg_->getMapped(eaux->processHistoryID()); - m_->ep_->fillEventPrincipal(*eaux, - history, - std::move(eventSelectionIDs), - std::move(branchListIndexes), - dummyEventToProcessBlockIndexes, - *(m_->provRetriever_), - m_->reader_.get()); - lbp->setRunPrincipal(rp); - m_->ep_->setLuminosityBlockPrincipal(lbp.get()); - m_->processNames_ = m_->ep_->processHistory(); - - edm::Event event(*m_->ep_, m_->md_, nullptr); - - //Make the event principal accessible to edm::Ref's - Operate sentry(m_->ep_->prodGetter()); - process(event); - } catch (std::exception const& iEx) { - std::cout << "While processing entry " << iEntry << " the following exception was caught \n" - << iEx.what() << std::endl; - } catch (...) { - std::cout << "While processing entry " << iEntry << " an unknown exception was caught" << std::endl; - } - } - return everythingOK_ ? kTRUE : kFALSE; -} - -void TFWLiteSelectorBasic::SlaveTerminate() { postProcessing(*fOutput); } - -void TFWLiteSelectorBasic::Terminate() { terminate(*fOutput); } - -void TFWLiteSelectorBasic::setupNewFile(TFile& iFile) { - //look up meta-data - //get product registry - - //std::vector eventProcessHistoryIDs_; - TTree* metaDataTree = dynamic_cast(iFile.Get(edm::poolNames::metaDataTreeName().c_str())); - if (!metaDataTree) { - std::cout << "could not find TTree " << edm::poolNames::metaDataTreeName() << std::endl; - everythingOK_ = false; - return; - } - edm::FileFormatVersion* fftPtr = &(m_->fileFormatVersion_); - if (metaDataTree->FindBranch(edm::poolNames::fileFormatVersionBranchName().c_str()) != nullptr) { - metaDataTree->SetBranchAddress(edm::poolNames::fileFormatVersionBranchName().c_str(), &fftPtr); - } - - edm::ProductRegistry* pReg = &(*m_->reg_); - metaDataTree->SetBranchAddress(edm::poolNames::productDescriptionBranchName().c_str(), &(pReg)); - - typedef std::map PsetMap; - PsetMap psetMap; - PsetMap* psetMapPtr = &psetMap; - if (metaDataTree->FindBranch(edm::poolNames::parameterSetMapBranchName().c_str()) != nullptr) { - metaDataTree->SetBranchAddress(edm::poolNames::parameterSetMapBranchName().c_str(), &psetMapPtr); - } else { - TTree* psetTree = dynamic_cast(iFile.Get(edm::poolNames::parameterSetsTreeName().c_str())); - if (nullptr == psetTree) { - throw edm::Exception(edm::errors::FileReadError) - << "Could not find tree " << edm::poolNames::parameterSetsTreeName() << " in the input file.\n"; - } - typedef std::pair IdToBlobs; - IdToBlobs idToBlob; - IdToBlobs* pIdToBlob = &idToBlob; - psetTree->SetBranchAddress(edm::poolNames::idToParameterSetBlobsBranchName().c_str(), &pIdToBlob); - for (long long i = 0; i != psetTree->GetEntries(); ++i) { - psetTree->GetEntry(i); - psetMap.insert(idToBlob); - } - } - - edm::ProcessHistoryRegistry::vector_type pHistVector; - edm::ProcessHistoryRegistry::vector_type* pHistVectorPtr = &pHistVector; - if (metaDataTree->FindBranch(edm::poolNames::processHistoryBranchName().c_str()) != nullptr) { - metaDataTree->SetBranchAddress(edm::poolNames::processHistoryBranchName().c_str(), &pHistVectorPtr); - } - - edm::ProcessConfigurationVector procConfigVector; - edm::ProcessConfigurationVector* procConfigVectorPtr = &procConfigVector; - if (metaDataTree->FindBranch(edm::poolNames::processConfigurationBranchName().c_str()) != nullptr) { - metaDataTree->SetBranchAddress(edm::poolNames::processConfigurationBranchName().c_str(), &procConfigVectorPtr); - } - - auto branchIDListsHelper = std::make_shared(); - edm::BranchIDLists const* branchIDListsPtr = &branchIDListsHelper->branchIDLists(); - if (metaDataTree->FindBranch(edm::poolNames::branchIDListBranchName().c_str()) != nullptr) { - metaDataTree->SetBranchAddress(edm::poolNames::branchIDListBranchName().c_str(), &branchIDListsPtr); - } - - metaDataTree->GetEntry(0); - - for (auto& prod : m_->reg_->productListUpdator()) { - prod.second.init(); - setIsMergeable(prod.second); - } - - // Merge into the registries. For now, we do NOT merge the product registry. - edm::pset::Registry& psetRegistry = *edm::pset::Registry::instance(); - for (auto const& entry : psetMap) { - edm::ParameterSet pset(entry.second.pset()); - pset.setID(entry.first); - psetRegistry.insertMapped(pset); - } - - for (auto const& ph : pHistVector) { - m_->phreg_->registerProcessHistory(ph); - } - - m_->pointerToBranchBuffer_.erase(m_->pointerToBranchBuffer_.begin(), m_->pointerToBranchBuffer_.end()); - - std::unique_ptr newReg = std::make_unique(); - - edm::ProductRegistry::ProductList& prodList = m_->reg_->productListUpdator(); - { - for (auto& item : prodList) { - edm::BranchDescription& prod = item.second; - //std::cout << "productname = " << item.second << " end " << std::endl; - std::string newFriendlyName = edm::friendlyname::friendlyName(prod.className()); - if (newFriendlyName == prod.friendlyClassName()) { - newReg->copyProduct(prod); - } else { - if (m_->fileFormatVersion_.splitProductIDs()) { - throw edm::Exception(edm::errors::UnimplementedFeature) - << "Cannot change friendly class name algorithm without more development work\n" - << "to update BranchIDLists. Contact the framework group.\n"; - } - edm::BranchDescription newBD(prod); - newBD.updateFriendlyClassName(); - newReg->copyProduct(newBD); - } - prod.init(); - } - - m_->reg().reset(newReg.release()); - } - - edm::ProductRegistry::ProductList& prodList2 = m_->reg_->productListUpdator(); - std::vector temp(prodList2.size(), edm::EventEntryDescription()); - m_->prov_.swap(temp); - m_->pointerToBranchBuffer_.reserve(prodList2.size()); - - for (auto& item : prodList2) { - edm::BranchDescription& prod = item.second; - if (prod.branchType() == edm::InEvent) { - prod.init(); - //NEED to do this and check to see if branch exists - if (m_->tree_->GetBranch(prod.branchName().c_str()) == nullptr) { - prod.setDropped(true); - } - prod.setOnDemand(true); - - //std::cout << "id " << it->first << " branch " << it->second << std::endl; - //m_->pointerToBranchBuffer_.push_back(&(*itB)); - //void* tmp = &(m_->pointerToBranchBuffer_.back()); - //edm::EventEntryDescription* tmp = &(*itB); - //CDJ need to fix provenance and be backwards compatible, for now just don't read the branch - //m_->metaTree_->SetBranchAddress(prod.branchName().c_str(), tmp); - } - } - m_->branchIDListHelper_->updateFromInput(*branchIDListsPtr); - m_->reg_->setFrozen(); - m_->bidToDesc_->clear(); - for (auto const& p : m_->reg_->productList()) { - m_->bidToDesc_->emplace(p.second.branchID().id(), &p.second); - } - m_->ep_ = std::make_shared( - m_->reg(), m_->branchIDListHelper(), m_->thinnedAssociationsHelper(), m_->pc_, nullptr); - everythingOK_ = true; -} - -// -// const member functions -// - -// -// static member functions -// diff --git a/FWCore/TFWLiteSelector/src/classes.h b/FWCore/TFWLiteSelector/src/classes.h deleted file mode 100644 index 2d89adb3f7f3c..0000000000000 --- a/FWCore/TFWLiteSelector/src/classes.h +++ /dev/null @@ -1 +0,0 @@ -#include "FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h" diff --git a/FWCore/TFWLiteSelector/src/classes_def.xml b/FWCore/TFWLiteSelector/src/classes_def.xml deleted file mode 100644 index e5f10a341c674..0000000000000 --- a/FWCore/TFWLiteSelector/src/classes_def.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/FWCore/TFWLiteSelector/test/BuildFile.xml b/FWCore/TFWLiteSelector/test/BuildFile.xml deleted file mode 100644 index 1c88252224884..0000000000000 --- a/FWCore/TFWLiteSelector/test/BuildFile.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FWCore/TFWLiteSelector/test/TestRunnerFWCoreTFWLiteSelector.cpp b/FWCore/TFWLiteSelector/test/TestRunnerFWCoreTFWLiteSelector.cpp deleted file mode 100644 index b2991bd18ae57..0000000000000 --- a/FWCore/TFWLiteSelector/test/TestRunnerFWCoreTFWLiteSelector.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "FWCore/Utilities/interface/TestHelper.h" - -RUNTEST() diff --git a/FWCore/TFWLiteSelector/test/gen_things_cfg.py b/FWCore/TFWLiteSelector/test/gen_things_cfg.py deleted file mode 100644 index 12f5902078ebc..0000000000000 --- a/FWCore/TFWLiteSelector/test/gen_things_cfg.py +++ /dev/null @@ -1,24 +0,0 @@ -# Configuration file for RefTest_t - -import FWCore.ParameterSet.Config as cms - -process = cms.Process("TEST") - -process.load("FWCore.Framework.test.cmsExceptionsFatal_cff") - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(2) -) - -process.source = cms.Source("EmptySource") - -process.Thing = cms.EDProducer("ThingProducer") - -process.OtherThing = cms.EDProducer("OtherThingProducer") - -process.out = cms.OutputModule("PoolOutputModule", - fileName = cms.untracked.string('testTFWLiteSelector.root') -) - -process.p = cms.Path(process.Thing*process.OtherThing) -process.o = cms.EndPath(process.out) diff --git a/FWCore/TFWLiteSelector/test/proof_remote.C b/FWCore/TFWLiteSelector/test/proof_remote.C deleted file mode 100644 index 7658f031af9fc..0000000000000 --- a/FWCore/TFWLiteSelector/test/proof_remote.C +++ /dev/null @@ -1,6 +0,0 @@ -{ - //This make the TSelectors in the library available to the remote proof session - gSystem->Load("libFWCoreFWLite"); - FWLiteEnabler::enable(); - gSystem->Load("libFWCoreTFWLiteSelectorTest"); -} diff --git a/FWCore/TFWLiteSelector/test/run_all_t.sh b/FWCore/TFWLiteSelector/test/run_all_t.sh deleted file mode 100755 index b4eba6671e9af..0000000000000 --- a/FWCore/TFWLiteSelector/test/run_all_t.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# Pass in name and status -function die { echo $1: status $2 ; exit $2; } - -LOCAL_TEST_DIR=${SCRAM_TEST_PATH} -export TMPDIR=`pwd` -cmsRun ${LOCAL_TEST_DIR}/gen_things_cfg.py || die 'Failed generating test root file' $? - -rm -f a.jpg refA.jpg -root -b -n -q ${LOCAL_TEST_DIR}/thing_sel.C || die 'Failed tfwliteselectortest::ThingsTSelector test' $? -[ -s a.jpg ] && [ -s refA.jpg ] || die 'Failed tfwliteselectortest::ThingsTSelector test, no histograms' 20 - -rm -f a.jpg refA.jpg -root -b -n -q ${LOCAL_TEST_DIR}/thing2_sel.C || die 'Failed tfwliteselectortest::ThingsTSelector2 test' $? -[ -s a.jpg ] && [ -s refA.jpg ] || die 'Failed tfwliteselectortest::ThingsTSelector2 test, no histograms' 20 - -rm -f a.jpg refA.jpg - -exit 0 diff --git a/FWCore/TFWLiteSelector/test/thing2_sel.C b/FWCore/TFWLiteSelector/test/thing2_sel.C deleted file mode 100644 index e273de19921f7..0000000000000 --- a/FWCore/TFWLiteSelector/test/thing2_sel.C +++ /dev/null @@ -1,15 +0,0 @@ -{ - //Need this to allow ROOT to be able to use a ThingsTSelector - gSystem->Load("libFWCoreFWLite"); - FWLiteEnabler::enable(); - gSystem->Load("libFWCoreTFWLiteSelectorTest"); - - TSelector* sel = new tfwliteselectortest::ThingsTSelector2(); - - //This holds the list of files and 'TTree' to process - TChain c("Events"); - c.Add("testTFWLiteSelector.root"); - - //This actually processes the data - c.Process(sel); -} diff --git a/FWCore/TFWLiteSelector/test/thing_sel.C b/FWCore/TFWLiteSelector/test/thing_sel.C deleted file mode 100644 index 0201a43aaa729..0000000000000 --- a/FWCore/TFWLiteSelector/test/thing_sel.C +++ /dev/null @@ -1,15 +0,0 @@ -{ - //Need this to allow ROOT to be able to use a ThingsTSelector - gSystem->Load("libFWCoreFWLite"); - FWLiteEnabler::enable(); - gSystem->Load("libFWCoreTFWLiteSelectorTest"); - - TSelector* sel = new tfwliteselectortest::ThingsTSelector(); - - //This holds the list of files and 'TTree' to process - TChain c("Events"); - c.Add("testTFWLiteSelector.root"); - - //This actually processes the data - c.Process(sel); -} diff --git a/FWCore/TFWLiteSelectorTest/BuildFile.xml b/FWCore/TFWLiteSelectorTest/BuildFile.xml deleted file mode 100644 index 21a7647fa4433..0000000000000 --- a/FWCore/TFWLiteSelectorTest/BuildFile.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector.cc b/FWCore/TFWLiteSelectorTest/src/ThingsTSelector.cc deleted file mode 100644 index d3c155d655a18..0000000000000 --- a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector.cc +++ /dev/null @@ -1,98 +0,0 @@ -#include "FWCore/TFWLiteSelectorTest/src/ThingsTSelector.h" -#include -#include -#include "Rtypes.h" -#include "DataFormats/Common/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "DataFormats/TestObjects/interface/OtherThingCollection.h" -#include "DataFormats/TestObjects/interface/ThingCollection.h" -#include "FWCore/Utilities/interface/thread_safety_macros.h" - -using namespace tfwliteselectortest; - -static const char* kA = "a"; -static const char* kRefA = "refA"; -void ThingsTSelector::begin(TList*&) {} - -void ThingsTSelector::preProcessing(const TList*, TList& out) { - if (nullptr != h_a) { - out.Remove(h_a); - delete h_a.get(); - h_a = nullptr; - } - h_a = new TH1F(kA, "a", 100, 0, 20); - out.Add(h_a); - - if (nullptr != h_refA) { - out.Remove(h_refA); - delete h_refA.get(); - h_refA = nullptr; - } - h_refA = new TH1F(kRefA, "refA", 100, 0, 20); - out.Add(h_refA); -} - -void ThingsTSelector::process(const edm::Event& iEvent) { - std::cout << "processing event " << std::endl; - // chain->GetEntry( entry ); - using namespace edmtest; - edm::Handle hOThings; - // In case of an exception prints the message and aborts the process - CMS_SA_ALLOW try { - iEvent.getByLabel("OtherThing", "testUserTag", hOThings); - std::cout << ">> other things found:" << hOThings->size() << std::endl; - - for (size_t i = 0; i < hOThings->size(); ++i) { - const OtherThing& thing = (*hOThings)[i]; - h_refA->Fill(thing.ref->a); - std::cout << ">> ref->a: " << thing.ref->a << std::endl; - } - - edm::Handle hThings; - iEvent.getByLabel("Thing", hThings); - const ThingCollection& things = *hThings; - std::cout << ">> things found:" << things.size() << std::endl; - for (size_t i = 0; i < things.size(); ++i) { - const Thing& thing = things[i]; - h_a->Fill(thing.a); - std::cout << ">> a: " << thing.a << std::endl; - } - } catch (cms::Exception& x) { - std::cout << std::endl << "Failed with cms::Exception: " << std::endl; - std::cout << x.what() << std::endl; - abort(); - } catch (std::exception& x) { - std::cout << std::endl << "Failed with std::exception" << std::endl; - std::cout << x.what() << std::endl; - abort(); - } catch (...) { - std::cout << std::endl << "Failed with unknown exception" << std::endl; - abort(); - } -} - -void ThingsTSelector::postProcessing(TList&) {} - -void ThingsTSelector::terminate(TList& out) { - std::cout << "terminate" << std::endl; - TCanvas* canvas = new TCanvas(); - { - TObject* hist = out.FindObject(kA); - if (nullptr != hist) { - hist->Draw(); - canvas->SaveAs("a.jpg"); - } else { - std::cout << "no '" << kA << "' histogram" << std::endl; - } - } - { - TObject* hist = out.FindObject(kRefA); - if (nullptr != hist) { - hist->Draw(); - canvas->SaveAs("refA.jpg"); - } else { - std::cout << "no '" << kRefA << "' histogram" << std::endl; - } - } - delete canvas; -} diff --git a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector.h b/FWCore/TFWLiteSelectorTest/src/ThingsTSelector.h deleted file mode 100644 index fbaa2591aa68e..0000000000000 --- a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef ThingsTSelector_h -#define ThingsTSelector_h -/** \class ThingsTSelector - * - * Simple interactive analysis example based on TSelector - * accessing EDM data - * - * \author Luca Lista, INFN - * - */ -#include "TH1.h" -#include "FWCore/TFWLiteSelector/interface/TFWLiteSelectorBasic.h" -#include "FWCore/Utilities/interface/propagate_const.h" - -namespace tfwliteselectortest { - class ThingsTSelector : public TFWLiteSelectorBasic { - public: - ThingsTSelector() : h_a(nullptr), h_refA(nullptr) {} - void begin(TList*&) override; - void preProcessing(const TList*, TList&) override; - void process(const edm::Event&) override; - void postProcessing(TList&) override; - void terminate(TList&) override; - - private: - /// histograms - edm::propagate_const h_a; - edm::propagate_const h_refA; - - ThingsTSelector(ThingsTSelector const&); - ThingsTSelector operator=(ThingsTSelector const&); - - ClassDefOverride(ThingsTSelector, 2) - }; -} // namespace tfwliteselectortest -#endif diff --git a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.cc b/FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.cc deleted file mode 100644 index 5c008bb1b30e3..0000000000000 --- a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.cc +++ /dev/null @@ -1,92 +0,0 @@ -#include "FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.h" -#include -#include -#include "Rtypes.h" -#include "DataFormats/Common/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "DataFormats/TestObjects/interface/OtherThingCollection.h" -#include "DataFormats/TestObjects/interface/ThingCollection.h" -#include "FWCore/Utilities/interface/thread_safety_macros.h" - -using namespace tfwliteselectortest; - -//Names used in common between the worker and the Selector -static const char* kA = "a"; -static const char* kRefA = "refA"; - -ThingsWorker::ThingsWorker(const TList*, TList& out) { - std::cout << "begin" << std::endl; - h_a = new TH1F(kA, "a", 100, 0, 20); - out.Add(h_a); - - h_refA = new TH1F(kRefA, "refA", 100, 0, 20); - out.Add(h_refA); -} - -void ThingsWorker::process(const edm::Event& iEvent) { - std::cout << "processing event " << std::endl; - // chain->GetEntry( entry ); - using namespace edmtest; - edm::Handle hOThings; - // In case of an exception prints the message and aborts the process - CMS_SA_ALLOW try { - iEvent.getByLabel("OtherThing", "testUserTag", hOThings); - - std::cout << ">> other things found:" << hOThings->size() << std::endl; - for (size_t i = 0; i < hOThings->size(); ++i) { - const OtherThing& thing = (*hOThings)[i]; - h_refA->Fill(thing.ref->a); - std::cout << ">> ref->a: " << thing.ref->a << std::endl; - } - - edm::Handle hThings; - iEvent.getByLabel("Thing", hThings); - const ThingCollection& things = *hThings; - std::cout << ">> things found:" << things.size() << std::endl; - for (size_t i = 0; i < things.size(); ++i) { - const Thing& thing = things[i]; - h_a->Fill(thing.a); - std::cout << ">> a: " << thing.a << std::endl; - } - } catch (cms::Exception& x) { - std::cout << std::endl << "Failed with cms::Exception: " << std::endl; - std::cout << x.what() << std::endl; - abort(); - } catch (std::exception& x) { - std::cout << std::endl << "Failed with std::exception" << std::endl; - std::cout << x.what() << std::endl; - abort(); - } catch (...) { - std::cout << std::endl << "Failed with unknown exception" << std::endl; - abort(); - } -} - -void ThingsWorker::postProcess(TList&) {} - -void ThingsTSelector2::begin(TList*&) {} - -void ThingsTSelector2::terminate(TList& out) { - std::cout << "terminate" << std::endl; - TCanvas* canvas = new TCanvas(); - { - TObject* hist = out.FindObject(kA); - if (nullptr != hist) { - hist->Draw(); - canvas->SaveAs("a.jpg"); - } else { - std::cout << "no '" << kA << "' histogram" << std::endl; - } - } - std::cout << "refA" << std::endl; - { - TObject* hist = out.FindObject(kRefA); - if (nullptr != hist) { - hist->Draw(); - canvas->SaveAs("refA.jpg"); - } else { - std::cout << "no '" << kRefA << "' histogram" << std::endl; - } - } - delete canvas; -} diff --git a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.h b/FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.h deleted file mode 100644 index 5ddcb396366a9..0000000000000 --- a/FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef ThingsTSelector2_h -#define ThingsTSelector2_h -/** \class ThingsTSelector2 - * - * Simple interactive analysis example based on TSelector - * accessing EDM data - * - * \author Luca Lista, INFN - * - */ -#include "TH1.h" -#include "FWCore/TFWLiteSelector/interface/TFWLiteSelector.h" - -namespace tfwliteselectortest { - struct ThingsWorker { - ThingsWorker(const TList*, TList&); - void process(const edm::Event& iEvent); - void postProcess(TList&); - edm::propagate_const h_a; - edm::propagate_const h_refA; - }; - - class ThingsTSelector2 : public TFWLiteSelector { - public: - ThingsTSelector2() {} - void begin(TList*&) override; - void terminate(TList&) override; - - private: - ThingsTSelector2(ThingsTSelector2 const&); - ThingsTSelector2 operator=(ThingsTSelector2 const&); - - ClassDefOverride(ThingsTSelector2, 2) - }; -} // namespace tfwliteselectortest -#endif diff --git a/FWCore/TFWLiteSelectorTest/src/classes.h b/FWCore/TFWLiteSelectorTest/src/classes.h deleted file mode 100644 index ca4ddccb89560..0000000000000 --- a/FWCore/TFWLiteSelectorTest/src/classes.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "FWCore/TFWLiteSelectorTest/src/ThingsTSelector.h" -#include "FWCore/TFWLiteSelectorTest/src/ThingsTSelector2.h" diff --git a/FWCore/TFWLiteSelectorTest/src/classes_def.xml b/FWCore/TFWLiteSelectorTest/src/classes_def.xml deleted file mode 100644 index dd233f782c0c4..0000000000000 --- a/FWCore/TFWLiteSelectorTest/src/classes_def.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/FWCore/TestModules/README.md b/FWCore/TestModules/README.md index b8875b9d6b401..bd4cadf13823d 100644 --- a/FWCore/TestModules/README.md +++ b/FWCore/TestModules/README.md @@ -4,6 +4,23 @@ This package contains modules that are used in framework tests, but are generic-enough to be usable outside of the framework as well. Their interfaces are intended to be relatively stable. + ## `edmtest::StreamIDFilter` This module can be used to reject all events in specific streams. + + +## `edmtest::EventIDProducer` + +This module reads the `EventID` from the current event and copies it as a data +product into the `Event`. + + +## `edmtest::EventIDValidator` + +This module reads the `EventID` from the current event and compares it to a data +product read from the `Event`. + +Together `edmtest::EventIDProducer` and `edmtest::EventIDValidator` can be used +to validate that an object produced in a given event is being read back in the +same event. diff --git a/FWCore/TestModules/plugins/BuildFile.xml b/FWCore/TestModules/plugins/BuildFile.xml index d59f00b4a326d..a7126fae22e96 100644 --- a/FWCore/TestModules/plugins/BuildFile.xml +++ b/FWCore/TestModules/plugins/BuildFile.xml @@ -1,5 +1,8 @@ + + + diff --git a/FWCore/TestModules/plugins/EventIDProducer.cc b/FWCore/TestModules/plugins/EventIDProducer.cc new file mode 100644 index 0000000000000..f867b3e578cff --- /dev/null +++ b/FWCore/TestModules/plugins/EventIDProducer.cc @@ -0,0 +1,31 @@ +// CMSSW include files +#include "DataFormats/Provenance/interface/EventID.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/EDPutToken.h" + +namespace edmtest { + + class EventIDProducer : public edm::global::EDProducer<> { + public: + EventIDProducer(edm::ParameterSet const& config) : token_(produces()) {} + + void produce(edm::StreamID, edm::Event& event, edm::EventSetup const&) const final { + event.emplace(token_, event.id()); + } + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + descriptions.addWithDefaultLabel(desc); + } + + private: + edm::EDPutTokenT token_; + }; + +} // namespace edmtest + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(edmtest::EventIDProducer); diff --git a/FWCore/TestModules/plugins/EventIDValidator.cc b/FWCore/TestModules/plugins/EventIDValidator.cc new file mode 100644 index 0000000000000..99be1f6e28426 --- /dev/null +++ b/FWCore/TestModules/plugins/EventIDValidator.cc @@ -0,0 +1,40 @@ +// CMSSW include files +#include "DataFormats/Provenance/interface/EventID.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/global/EDAnalyzer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/EDGetToken.h" +#include "FWCore/Utilities/interface/Exception.h" + +namespace edmtest { + + class EventIDValidator : public edm::global::EDAnalyzer<> { + public: + EventIDValidator(edm::ParameterSet const& config) + : token_(consumes(config.getUntrackedParameter("source"))) {} + + void analyze(edm::StreamID, edm::Event const& event, edm::EventSetup const&) const final { + auto const& id = event.get(token_); + if (id != event.id()) { + throw cms::Exception("InvalidValue") << "EventIDValidator: found invalid input value\n" + << id << "\nwhile expecting\n" + << event.id(); + } + } + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.addUntracked("source", edm::InputTag{"eventIDProducer", ""}) + ->setComment("EventID product to read from the event"); + descriptions.addWithDefaultLabel(desc); + } + + private: + edm::EDGetTokenT token_; + }; + +} // namespace edmtest + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(edmtest::EventIDValidator); diff --git a/FWCore/TestModules/test/BuildFile.xml b/FWCore/TestModules/test/BuildFile.xml new file mode 100644 index 0000000000000..386d18c359309 --- /dev/null +++ b/FWCore/TestModules/test/BuildFile.xml @@ -0,0 +1 @@ + diff --git a/FWCore/TestModules/test/testEventIDValidator_cfg.py b/FWCore/TestModules/test/testEventIDValidator_cfg.py new file mode 100644 index 0000000000000..76d896091c2a8 --- /dev/null +++ b/FWCore/TestModules/test/testEventIDValidator_cfg.py @@ -0,0 +1,17 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("TEST") + +process.options.numberOfThreads = 4 +process.options.numberOfStreams = 4 + +process.source = cms.Source("EmptySource") +process.maxEvents.input = 10 + +process.eventIds = cms.EDProducer("edmtest::EventIDProducer") + +process.eventValidator = cms.EDAnalyzer("edmtest::EventIDValidator", + source = cms.untracked.InputTag('eventIds') +) + +process.path = cms.Path(process.eventIds + process.eventValidator) diff --git a/FWCore/Utilities/interface/Digest.h b/FWCore/Utilities/interface/Digest.h index 05dc6927db724..37d8de4322e64 100644 --- a/FWCore/Utilities/interface/Digest.h +++ b/FWCore/Utilities/interface/Digest.h @@ -5,6 +5,7 @@ #include #include +#include #include namespace cms { @@ -27,7 +28,7 @@ namespace cms { std::string compactForm() const; // Set our data from the given hexdigest string. - void fromHexifiedString(std::string const& s); + void fromHexifiedString(std::string_view); bool isValid() const; }; @@ -48,9 +49,12 @@ namespace cms { public: Digest(); explicit Digest(std::string const& s); + explicit Digest(std::string_view); + explicit Digest(const char*); void append(std::string const& s); void append(const char* data, size_t size); + void append(std::string_view v); MD5Result digest(); diff --git a/FWCore/Utilities/interface/Exception.h b/FWCore/Utilities/interface/Exception.h index 957e5fb180107..f9c3e9888675d 100644 --- a/FWCore/Utilities/interface/Exception.h +++ b/FWCore/Utilities/interface/Exception.h @@ -41,7 +41,7 @@ #include #include -#include "fmt/format.h" +#include #include "FWCore/Utilities/interface/thread_safety_macros.h" #include "FWCore/Utilities/interface/Likely.h" diff --git a/FWCore/Utilities/interface/HostDeviceConstant.h b/FWCore/Utilities/interface/HostDeviceConstant.h index 00bd9df4eaa2f..762dae9a4fb04 100644 --- a/FWCore/Utilities/interface/HostDeviceConstant.h +++ b/FWCore/Utilities/interface/HostDeviceConstant.h @@ -16,7 +16,7 @@ // Note these objects may be at different memory addresses on the host and device, so their pointers will be different // -- but the actual values should be the same. -#ifdef __CUDA_ARCH__ +#if defined(__CUDA_ARCH__) or defined(__HIP_DEVICE_COMPILE__) #define HOST_DEVICE_CONSTANT __device__ constexpr #else #define HOST_DEVICE_CONSTANT constexpr diff --git a/FWCore/Utilities/interface/CRC32Calculator.h b/FWCore/Utilities/interface/calculateCRC32.h similarity index 89% rename from FWCore/Utilities/interface/CRC32Calculator.h rename to FWCore/Utilities/interface/calculateCRC32.h index e05bebb151a15..6ecb25f5b3498 100644 --- a/FWCore/Utilities/interface/CRC32Calculator.h +++ b/FWCore/Utilities/interface/calculateCRC32.h @@ -1,5 +1,5 @@ -#ifndef FWCore_Utilities_CRC32Calculator_h -#define FWCore_Utilities_CRC32Calculator_h +#ifndef FWCore_Utilities_calculateCRC32_h +#define FWCore_Utilities_calculateCRC32_h /* Code to calculate a CRC32 checksum on a string. This code is based @@ -55,18 +55,10 @@ from the original code follow below to attribute the source. #include -#include +#include namespace cms { - class CRC32Calculator { - public: - CRC32Calculator(std::string const& message); - - std::uint32_t checksum() { return checksum_; } - - private: - std::uint32_t checksum_; - }; + std::uint32_t calculateCRC32(std::string_view message); } // namespace cms #endif diff --git a/FWCore/Utilities/python/FileUtils.py b/FWCore/Utilities/python/FileUtils.py index 86f7f720009ed..48d156abd7ee4 100644 --- a/FWCore/Utilities/python/FileUtils.py +++ b/FWCore/Utilities/python/FileUtils.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import re import pprint as pprint # for testing diff --git a/FWCore/Utilities/src/Digest.cc b/FWCore/Utilities/src/Digest.cc index aedb8fafe7fa5..ba4b26ec69194 100644 --- a/FWCore/Utilities/src/Digest.cc +++ b/FWCore/Utilities/src/Digest.cc @@ -114,13 +114,13 @@ namespace cms { return std::string(p, p + bytes.size()); } - void MD5Result::fromHexifiedString(std::string const& hexy) { + void MD5Result::fromHexifiedString(std::string_view hexy) { switch (hexy.size()) { case 0: { set_to_default(*this); } break; case 32: { - std::string::const_iterator it = hexy.begin(); + auto it = hexy.cbegin(); for (size_t i = 0; i != 16; ++i) { // first nybble bytes[i] = (unhexify(*it++) << 4); @@ -158,11 +158,26 @@ namespace cms { this->append(s); } + Digest::Digest(std::string_view v) : state_() { + md5_init(&state_); + this->append(v); + } + + Digest::Digest(const char* s) : state_() { + md5_init(&state_); + this->append(s, strlen(s)); + } + void Digest::append(std::string const& s) { const md5_byte_t* data = reinterpret_cast(s.data()); md5_append(&state_, const_cast(data), s.size()); } + void Digest::append(std::string_view v) { + const md5_byte_t* data = reinterpret_cast(v.data()); + md5_append(&state_, const_cast(data), v.size()); + } + void Digest::append(const char* s, size_t size) { const md5_byte_t* data = reinterpret_cast(s); md5_append(&state_, const_cast(data), size); diff --git a/FWCore/Utilities/src/CRC32Calculator.cc b/FWCore/Utilities/src/calculateCRC32.cc similarity index 87% rename from FWCore/Utilities/src/CRC32Calculator.cc rename to FWCore/Utilities/src/calculateCRC32.cc index f08e7be261b50..fa88a0dc2f110 100644 --- a/FWCore/Utilities/src/CRC32Calculator.cc +++ b/FWCore/Utilities/src/calculateCRC32.cc @@ -1,14 +1,14 @@ -#include "FWCore/Utilities/interface/CRC32Calculator.h" +#include "FWCore/Utilities/interface/calculateCRC32.h" namespace cms { namespace { - const std::uint32_t CRC32_XINIT = 0xFFFFFFFFL; - const std::uint32_t CRC32_XOROT = 0xFFFFFFFFL; + constexpr std::uint32_t CRC32_XINIT = 0xFFFFFFFFL; + constexpr std::uint32_t CRC32_XOROT = 0xFFFFFFFFL; - const std::uint32_t crctable[256] = { + constexpr std::uint32_t crctable[256] = { 0x00000000L, 0x77073096L, 0xEE0E612CL, 0x990951BAL, 0x076DC419L, 0x706AF48FL, 0xE963A535L, 0x9E6495A3L, 0x0EDB8832L, 0x79DCB8A4L, 0xE0D5E91EL, 0x97D2D988L, 0x09B64C2BL, 0x7EB17CBDL, 0xE7B82D07L, 0x90BF1D91L, 0x1DB71064L, 0x6AB020F2L, 0xF3B97148L, 0x84BE41DEL, 0x1ADAD47DL, 0x6DDDE4EBL, 0xF4D4B551L, 0x83D385C7L, @@ -43,19 +43,16 @@ namespace cms { 0xB3667A2EL, 0xC4614AB8L, 0x5D681B02L, 0x2A6F2B94L, 0xB40BBE37L, 0xC30C8EA1L, 0x5A05DF1BL, 0x2D02EF8DL}; } // namespace - CRC32Calculator::CRC32Calculator(std::string const& message) { + std::uint32_t calculateCRC32(std::string_view message) { /* initialize value */ - checksum_ = CRC32_XINIT; + uint32_t checksum = CRC32_XINIT; /* process each byte prior to checksum field */ - auto length = message.length(); - char const* p = message.data(); - for (size_t j = 0; j < length; j++) { - unsigned char uc = *p++; - checksum_ = cms::crctable[(checksum_ ^ uc) & 0xFFL] ^ (checksum_ >> 8); + for (auto uc : message) { + checksum = cms::crctable[(checksum ^ uc) & 0xFFL] ^ (checksum >> 8); } /* return XOR out value */ - checksum_ = checksum_ ^ CRC32_XOROT; + return checksum ^ CRC32_XOROT; } } // namespace cms diff --git a/FWCore/Utilities/test/test_catch2_CRC32Calculator.cc b/FWCore/Utilities/test/test_catch2_CRC32Calculator.cc deleted file mode 100644 index f4280ca692be2..0000000000000 --- a/FWCore/Utilities/test/test_catch2_CRC32Calculator.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include "catch.hpp" -#include "FWCore/Utilities/interface/CRC32Calculator.h" - -TEST_CASE("test cms::CRC32Calculator", "[CRC32Calculator]") { - SECTION("known") { - cms::CRC32Calculator crc32("type_label_instance_process"); - - // This known result was calculated using python as a cross check - unsigned int knownResult = 1215348599; - REQUIRE(crc32.checksum() == knownResult); - } - SECTION("empty") { - cms::CRC32Calculator emptyString_crc32(""); - REQUIRE(emptyString_crc32.checksum() == 0); - } -} diff --git a/FWCore/Utilities/test/test_catch2_Digest.cc b/FWCore/Utilities/test/test_catch2_Digest.cc index ef834dbd85316..f5aeb10418de7 100644 --- a/FWCore/Utilities/test/test_catch2_Digest.cc +++ b/FWCore/Utilities/test/test_catch2_Digest.cc @@ -26,7 +26,7 @@ namespace { TEST_CASE("Test cms::Digest", "[Digest]") { SECTION("Identical") { Digest dig1; - dig1.append("hello"); + dig1.append(std::string_view("hello")); Digest dig2("hello"); MD5Result r1 = dig1.digest(); @@ -81,4 +81,18 @@ TEST_CASE("Test cms::Digest", "[Digest]") { } } } + SECTION("append equal") { + std::string full("aldjfakl\tsdjf34234 \najdf"); + Digest full_digest{full}; + MD5Result full_r = full_digest.digest(); + REQUIRE(full_r.isValid()); + + Digest append_digest; + append_digest.append(std::string_view(full.data(), 10)); + append_digest.append(std::string_view(full.data() + 10, 10)); + append_digest.append(std::string_view(full.data() + 20, 4)); + MD5Result append_r = append_digest.digest(); + REQUIRE(append_r.isValid()); + REQUIRE(full_r == append_r); + } } diff --git a/FWCore/Utilities/test/test_catch2_calculateCRC32.cc b/FWCore/Utilities/test/test_catch2_calculateCRC32.cc new file mode 100644 index 0000000000000..4ed662b508f4f --- /dev/null +++ b/FWCore/Utilities/test/test_catch2_calculateCRC32.cc @@ -0,0 +1,16 @@ +#include "catch.hpp" +#include "FWCore/Utilities/interface/calculateCRC32.h" + +TEST_CASE("test cms::calculateCRC32", "[calculateCRC32]") { + SECTION("known") { + auto crc32 = cms::calculateCRC32("type_label_instance_process"); + + // This known result was calculated using python as a cross check + unsigned int knownResult = 1215348599; + REQUIRE(crc32 == knownResult); + } + SECTION("empty") { + auto emptyString_crc32 = cms::calculateCRC32(""); + REQUIRE(emptyString_crc32 == 0); + } +} diff --git a/FastSimulation/ForwardDetectors/plugins/ProtonTaggerFilter.cc b/FastSimulation/ForwardDetectors/plugins/ProtonTaggerFilter.cc index f9d2af5d09730..a4bf4cc80ecf7 100644 --- a/FastSimulation/ForwardDetectors/plugins/ProtonTaggerFilter.cc +++ b/FastSimulation/ForwardDetectors/plugins/ProtonTaggerFilter.cc @@ -119,7 +119,7 @@ void ProtonTaggerFilter::beginJob() { edm::LogVerbatim("FastSimProtonTaggerFilter") << "ProtonTaggerFilter: Getting ready ..."; edm::FileInPath myDataFile("FastSimulation/ForwardDetectors/data/acceptance_420_220.root"); - std::string fullPath = myDataFile.fullPath(); + const std::string& fullPath = myDataFile.fullPath(); edm::LogVerbatim("FastSimProtonTaggerFilter") << "Opening " << fullPath; TFile f(fullPath.c_str()); diff --git a/FastSimulation/ParticleDecay/python/TestPythiaDecays_cfg.py b/FastSimulation/ParticleDecay/python/TestPythiaDecays_cfg.py index 9a95682a6fa8a..f078ccf58117a 100644 --- a/FastSimulation/ParticleDecay/python/TestPythiaDecays_cfg.py +++ b/FastSimulation/ParticleDecay/python/TestPythiaDecays_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing diff --git a/FastSimulation/Validation/test/trackingPerformanceValidation.py b/FastSimulation/Validation/test/trackingPerformanceValidation.py index fe76948cd3420..9ecd28c255a6b 100755 --- a/FastSimulation/Validation/test/trackingPerformanceValidation.py +++ b/FastSimulation/Validation/test/trackingPerformanceValidation.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import os import sys import fileinput diff --git a/Fireworks/Calo/plugins/FWTracksterLayersProxyBuilder.cc b/Fireworks/Calo/plugins/FWTracksterLayersProxyBuilder.cc index 69f8e4a9cfc64..60fcb9c311e06 100644 --- a/Fireworks/Calo/plugins/FWTracksterLayersProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWTracksterLayersProxyBuilder.cc @@ -237,7 +237,7 @@ void FWTracksterLayersProxyBuilder::build(const ticl::Trackster &iData, const bool isAdjacent = std::abs(layerOut - layerIn) == 1; // draw 3D cross - if (layer_ == 0 || fabs(layerIn - layer_) == 0 || fabs(layerOut - layer_) == 0) { + if (layer_ == 0 || std::abs(layerIn - layer_) == 0 || std::abs(layerOut - layer_) == 0) { if (isAdjacent) adjacent_marker->AddLine(doublet.first.x(), doublet.first.y(), diff --git a/Fireworks/Core/src/FWEveViewManager.cc b/Fireworks/Core/src/FWEveViewManager.cc index 4f4c37390f6c7..ea7c4247b3725 100644 --- a/Fireworks/Core/src/FWEveViewManager.cc +++ b/Fireworks/Core/src/FWEveViewManager.cc @@ -13,6 +13,7 @@ // system include files #include +#include // user include files #include "TEveManager.h" @@ -278,25 +279,25 @@ FWViewBase* FWEveViewManager::buildView(TEveWindowSlot* iParent, const std::stri std::shared_ptr view; switch (type) { case FWViewType::k3D: - view.reset(new FW3DView(iParent, type)); + view = std::make_shared(iParent, type); break; case FWViewType::kISpy: - view.reset(new FWISpyView(iParent, type)); + view = std::make_shared(iParent, type); break; case FWViewType::kRhoPhi: case FWViewType::kRhoZ: case FWViewType::kRhoPhiPF: - view.reset(new FWRPZView(iParent, type)); + view = std::make_shared(iParent, type); break; case FWViewType::kLego: case FWViewType::kLegoPFECAL: - view.reset(new FWEveLegoView(iParent, type)); + view = std::make_shared(iParent, type); break; case FWViewType::kLegoHF: - view.reset(new FWHFView(iParent, type)); + view = std::make_shared(iParent, type); break; case FWViewType::kGlimpse: - view.reset(new FWGlimpseView(iParent, type)); + view = std::make_shared(iParent, type); break; default: break; diff --git a/Fireworks/Core/src/FWGeometryTableViewManager.cc b/Fireworks/Core/src/FWGeometryTableViewManager.cc index 1fdc3a5af321f..22c397bd2dc24 100644 --- a/Fireworks/Core/src/FWGeometryTableViewManager.cc +++ b/Fireworks/Core/src/FWGeometryTableViewManager.cc @@ -11,6 +11,7 @@ // #include +#include #include "TFile.h" #include "TSystem.h" @@ -48,9 +49,9 @@ FWViewBase* FWGeometryTableViewManager::buildView(TEveWindowSlot* iParent, const FWViewType::EType typeId = (type == FWViewType::sName[FWViewType::kGeometryTable]) ? FWViewType::kGeometryTable : FWViewType::kOverlapTable; if (typeId == FWViewType::kGeometryTable) - view.reset(new FWGeometryTableView(iParent, &colorManager())); + view = std::make_shared(iParent, &colorManager()); else - view.reset(new FWOverlapTableView(iParent, &colorManager())); + view = std::make_shared(iParent, &colorManager()); view->setBackgroundColor(); m_views.push_back(std::shared_ptr(view)); diff --git a/Fireworks/Core/src/FWTriggerTableViewManager.cc b/Fireworks/Core/src/FWTriggerTableViewManager.cc index 6c976cb8bd16a..7d7801e51e7d3 100644 --- a/Fireworks/Core/src/FWTriggerTableViewManager.cc +++ b/Fireworks/Core/src/FWTriggerTableViewManager.cc @@ -12,8 +12,9 @@ // system include files #include -#include #include +#include +#include // user include files @@ -39,9 +40,9 @@ class FWViewBase* FWTriggerTableViewManager::buildView(TEveWindowSlot* iParent, std::shared_ptr view; if (type == FWViewType::sName[FWViewType::kTableHLT]) - view.reset(new FWHLTTriggerTableView(iParent)); + view = std::make_shared(iParent); else - view.reset(new FWL1TriggerTableView(iParent)); + view = std::make_shared(iParent); view->setProcessList(&(context().metadataManager()->processNamesInJob())); diff --git a/Fireworks/Geometry/python/dumpRecoGeometry_cfg.py b/Fireworks/Geometry/python/dumpRecoGeometry_cfg.py index 0fb320efd7ffa..6e04bac80d024 100644 --- a/Fireworks/Geometry/python/dumpRecoGeometry_cfg.py +++ b/Fireworks/Geometry/python/dumpRecoGeometry_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys, os import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/Fireworks/Geometry/python/dumpSimGeometry_cfg.py b/Fireworks/Geometry/python/dumpSimGeometry_cfg.py index 927436ac56d24..4885faa4f3a3a 100644 --- a/Fireworks/Geometry/python/dumpSimGeometry_cfg.py +++ b/Fireworks/Geometry/python/dumpSimGeometry_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys, os import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/GeneratorInterface/CepGenInterface/src/CepGenEventGenerator.cc b/GeneratorInterface/CepGenInterface/src/CepGenEventGenerator.cc index 4507f5d7ec415..a1cd0e42a19da 100644 --- a/GeneratorInterface/CepGenInterface/src/CepGenEventGenerator.cc +++ b/GeneratorInterface/CepGenInterface/src/CepGenEventGenerator.cc @@ -20,6 +20,8 @@ #include #include +#include + using namespace gen; CepGenEventGenerator::CepGenEventGenerator(const edm::ParameterSet& iConfig, edm::ConsumesCollector&& iC) @@ -85,7 +87,7 @@ bool CepGenEventGenerator::initializeForInternalPartons() { } bool CepGenEventGenerator::generatePartonsAndHadronize() { - event().reset(new HepMC::CepGenEvent(gen_->next())); + event() = std::make_unique(gen_->next()); event()->set_cross_section(xsec_); event()->weights().push_back(1.); return true; diff --git a/GeneratorInterface/Core/plugins/GeneratorSmearedProducer.cc b/GeneratorInterface/Core/plugins/GeneratorSmearedProducer.cc index 4a19f88e44d6e..7eb2981fcf34b 100644 --- a/GeneratorInterface/Core/plugins/GeneratorSmearedProducer.cc +++ b/GeneratorInterface/Core/plugins/GeneratorSmearedProducer.cc @@ -5,6 +5,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMC3Product.h" #include "FWCore/Framework/interface/global/EDProducer.h" #include "FWCore/Utilities/interface/EDGetToken.h" #include "FWCore/Framework/interface/MakerMacros.h" @@ -16,7 +17,6 @@ namespace edm { class ConfigurationDescriptions; class Event; class EventSetup; - class HepMCProduct; } // namespace edm class GeneratorSmearedProducer : public edm::global::EDProducer<> { @@ -29,14 +29,19 @@ class GeneratorSmearedProducer : public edm::global::EDProducer<> { private: const edm::EDGetTokenT newToken_; const edm::EDGetTokenT oldToken_; + const edm::EDGetTokenT Token3_; }; GeneratorSmearedProducer::GeneratorSmearedProducer(edm::ParameterSet const& ps) : newToken_(consumes(ps.getUntrackedParameter("currentTag"))), - oldToken_(consumes(ps.getUntrackedParameter("previousTag"))) { + oldToken_(consumes(ps.getUntrackedParameter("previousTag"))), + Token3_(consumes(ps.getUntrackedParameter("currentTag"))) { // This producer produces a HepMCProduct, a copy of the original one - // It is used for backwaerd compatibility + // It is used for backward compatibility + // If HepMC3Product exists, it produces its copy + // It adds "generatorSmeared" to description, which is needed for further processing produces(); + produces(); } void GeneratorSmearedProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& es) const { @@ -49,6 +54,13 @@ void GeneratorSmearedProducer::produce(edm::StreamID, edm::Event& iEvent, const std::unique_ptr theCopy(new edm::HepMCProduct(*theHepMCProduct)); iEvent.put(std::move(theCopy)); } + + edm::Handle theHepMC3Product; + found = iEvent.getByToken(Token3_, theHepMC3Product); + if (found) { + std::unique_ptr theCopy3(new edm::HepMC3Product(*theHepMC3Product)); + iEvent.put(std::move(theCopy3)); + } } void GeneratorSmearedProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { diff --git a/GeneratorInterface/EvtGenInterface/plugins/DataCardFileWriter.cc b/GeneratorInterface/EvtGenInterface/plugins/DataCardFileWriter.cc index 35c2cd899b3a2..a3a8a3828bb09 100644 --- a/GeneratorInterface/EvtGenInterface/plugins/DataCardFileWriter.cc +++ b/GeneratorInterface/EvtGenInterface/plugins/DataCardFileWriter.cc @@ -11,7 +11,9 @@ using namespace gen; DataCardFileWriter::DataCardFileWriter(const edm::ParameterSet& pset) { std::string FileName = pset.getParameter("FileName"); - std::string Base = std::getenv("CMSSW_BASE"); + char* tmp = std::getenv("CMSSW_BASE"); + assert(tmp); + std::string Base(tmp); Base += "/src/"; std::cout << "Writting file:" << Base + FileName << std::endl; std::ofstream outputFile(Base + FileName); diff --git a/GeneratorInterface/EvtGenInterface/plugins/EvtGen/EvtGenInterface.cc b/GeneratorInterface/EvtGenInterface/plugins/EvtGen/EvtGenInterface.cc index 26b5f1d437ae2..2da18efdeb580 100644 --- a/GeneratorInterface/EvtGenInterface/plugins/EvtGen/EvtGenInterface.cc +++ b/GeneratorInterface/EvtGenInterface/plugins/EvtGen/EvtGenInterface.cc @@ -301,13 +301,16 @@ void EvtGenInterface::init() { //Setup evtGen following instructions on http://evtgen.warwick.ac.uk/docs/external/ bool convertPythiaCodes = fPSet->getUntrackedParameter( "convertPythiaCodes", true); // Specify if we want to use Pythia 6 physics codes for decays - std::string pythiaDir = + char* tmp = std::getenv("PYTHIA8DATA"); // Specify the pythia xml data directory to use the default PYTHIA8DATA location - if (pythiaDir.empty()) { + + if (tmp == nullptr) { edm::LogError("EvtGenInterface::~EvtGenInterface") << "EvtGenInterface::init() PYTHIA8DATA not defined. Terminating program "; exit(0); } + + std::string pythiaDir(tmp); std::string photonType("gamma"); // Specify the photon type for Photos bool useEvtGenRandom(true); // Specify if we want to use the EvtGen random number engine for these generators diff --git a/GeneratorInterface/ExhumeInterface/src/ExhumeHadronizer.cc b/GeneratorInterface/ExhumeInterface/src/ExhumeHadronizer.cc index 13aecd2ce563d..19681e27ecb75 100644 --- a/GeneratorInterface/ExhumeInterface/src/ExhumeHadronizer.cc +++ b/GeneratorInterface/ExhumeInterface/src/ExhumeHadronizer.cc @@ -211,7 +211,6 @@ namespace gen { (static_cast(exhumeProcess_))->SetThetaMin(thetaMin); sigID = 400; } else { - sigID = -1; throw edm::Exception(edm::errors::Configuration, "ExhumeError") << " No valid Exhume Process"; } diff --git a/GeneratorInterface/GenFilters/plugins/PythiaAllDauVFilter.cc b/GeneratorInterface/GenFilters/plugins/PythiaAllDauVFilter.cc index 8904611b3822e..2fc476a6c5db8 100644 --- a/GeneratorInterface/GenFilters/plugins/PythiaAllDauVFilter.cc +++ b/GeneratorInterface/GenFilters/plugins/PythiaAllDauVFilter.cc @@ -89,7 +89,7 @@ bool PythiaAllDauVFilter::filter(edm::StreamID, edm::Event& iEvent, const edm::E int OK(1); vector vparticles; vector foundDaughter(dauIDs.size(), false); - auto dauCollection = &dauIDs; + const std::vector* dauCollection = nullptr; HepMC::GenEvent* myGenEvent = new HepMC::GenEvent(*(evt->GetEvent())); diff --git a/GeneratorInterface/Herwig7Interface/scripts/parallelization.py b/GeneratorInterface/Herwig7Interface/scripts/parallelization.py index 5c605b20ed314..0231f9fda6af4 100755 --- a/GeneratorInterface/Herwig7Interface/scripts/parallelization.py +++ b/GeneratorInterface/Herwig7Interface/scripts/parallelization.py @@ -38,7 +38,6 @@ # Author: Dominik Beutel -from __future__ import print_function import argparse import sys import os diff --git a/GeneratorInterface/Herwig7Interface/src/Herwig7Interface.cc b/GeneratorInterface/Herwig7Interface/src/Herwig7Interface.cc index 063676b55bce3..8ff321089d189 100644 --- a/GeneratorInterface/Herwig7Interface/src/Herwig7Interface.cc +++ b/GeneratorInterface/Herwig7Interface/src/Herwig7Interface.cc @@ -99,7 +99,7 @@ void Herwig7Interface::initRepository(const edm::ParameterSet &pset) { else runModeTemp.erase(0, pos + 1); - HwUI_.reset(new Herwig::HerwigUIProvider(pset, dumpConfig_, Herwig::RunMode::READ)); + HwUI_ = std::make_shared(pset, dumpConfig_, Herwig::RunMode::READ); edm::LogInfo("Herwig7Interface") << "HerwigUIProvider object with run mode " << HwUI_->runMode() << " created.\n"; // Chose run mode diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 2b9d38c2c222b..c2704431d38b0 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -110,7 +110,7 @@ class ExternalLHEProducer : public edm::one::EDProducer beginRunPutToken_; class FileCloseSentry { public: - explicit FileCloseSentry(int fd) : fd_(fd){}; + explicit FileCloseSentry(int fd) : fd_(fd) {}; ~FileCloseSentry() { close(fd_); } @@ -505,7 +505,6 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in close(filedes[1]); // If the exec succeeds, the read will fail. while (((rc2 = read(filedes[0], &rc, sizeof(int))) == -1) && (errno == EINTR)) { - rc2 = 0; } if ((rc2 == sizeof(int)) && rc) { throw cms::Exception("ExternalLHEProducer") diff --git a/GeneratorInterface/LHEInterface/scripts/addLHEnumbers.py b/GeneratorInterface/LHEInterface/scripts/addLHEnumbers.py index b4d95458b8550..e10215f43d921 100755 --- a/GeneratorInterface/LHEInterface/scripts/addLHEnumbers.py +++ b/GeneratorInterface/LHEInterface/scripts/addLHEnumbers.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import logging import argparse import sys diff --git a/GeneratorInterface/LHEInterface/scripts/cmsLHEtoEOSManager.py b/GeneratorInterface/LHEInterface/scripts/cmsLHEtoEOSManager.py index c55d63b03d143..db1ba8254e5e4 100755 --- a/GeneratorInterface/LHEInterface/scripts/cmsLHEtoEOSManager.py +++ b/GeneratorInterface/LHEInterface/scripts/cmsLHEtoEOSManager.py @@ -8,7 +8,6 @@ """ -from __future__ import print_function print('Starting cmsLHEtoEOSManager.py') __version__ = "$Revision: 1.13 $" diff --git a/GeneratorInterface/LHEInterface/scripts/mergeLHE.py b/GeneratorInterface/LHEInterface/scripts/mergeLHE.py index b61925363d2c9..910424a12bb4b 100755 --- a/GeneratorInterface/LHEInterface/scripts/mergeLHE.py +++ b/GeneratorInterface/LHEInterface/scripts/mergeLHE.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import logging import argparse import math diff --git a/GeneratorInterface/LHEInterface/src/LH5Reader.cc b/GeneratorInterface/LHEInterface/src/LH5Reader.cc index dc64a6968ef14..a718b8827a7b1 100644 --- a/GeneratorInterface/LHEInterface/src/LH5Reader.cc +++ b/GeneratorInterface/LHEInterface/src/LH5Reader.cc @@ -233,7 +233,7 @@ namespace lhef { // Use temporary process info block to define const HEPRUP const HEPRUP heprup(tmprup); - curRunInfo.reset(new LHERunInfo(heprup)); + curRunInfo = std::make_shared(heprup); // Run info has now been set when a new file is encountered } // Handler should be modified to have these capabilities @@ -277,7 +277,7 @@ namespace lhef { // Use temporary event to construct const HEPEUP; const HEPEUP hepeup(tmp); - lheevent.reset(new LHEEvent(curRunInfo, hepeup)); + lheevent = std::make_shared(curRunInfo, hepeup); // Might have to add this capability later /* const XMLHandler::wgt_info &info = handler->weightsinevent; for (size_t i = 0; i < info.size(); ++i) { diff --git a/GeneratorInterface/LHEInterface/src/LHEReader.cc b/GeneratorInterface/LHEInterface/src/LHEReader.cc index 76a05926a3301..06f804b0febc8 100644 --- a/GeneratorInterface/LHEInterface/src/LHEReader.cc +++ b/GeneratorInterface/LHEInterface/src/LHEReader.cc @@ -489,7 +489,7 @@ namespace lhef { data.str(handler->buffer); handler->buffer.clear(); - curRunInfo.reset(new LHERunInfo(data)); + curRunInfo = std::make_shared(data); std::for_each(handler->headers.begin(), handler->headers.end(), @@ -521,7 +521,7 @@ namespace lhef { handler->buffer.clear(); std::shared_ptr lheevent; - lheevent.reset(new LHEEvent(curRunInfo, data)); + lheevent = std::make_shared(curRunInfo, data); const XMLHandler::wgt_info &info = handler->weightsinevent; for (size_t i = 0; i < info.size(); ++i) { double num = -1.0; diff --git a/GeneratorInterface/Pythia6Interface/src/PtYDistributor.cc b/GeneratorInterface/Pythia6Interface/src/PtYDistributor.cc index 2f8c9d9bdfbf5..26a872aa83e04 100644 --- a/GeneratorInterface/Pythia6Interface/src/PtYDistributor.cc +++ b/GeneratorInterface/Pythia6Interface/src/PtYDistributor.cc @@ -22,7 +22,7 @@ PtYDistributor::PtYDistributor(const edm::FileInPath& fip, int ybins = 50) : ptmax_(ptmax), ptmin_(ptmin), ymax_(ymax), ymin_(ymin), ptbins_(ptbins), ybins_(ybins) { // edm::FileInPath f1(input); - std::string fDataFile = fip.fullPath(); + const std::string& fDataFile = fip.fullPath(); std::cout << " File from " << fDataFile << std::endl; TFile f(fDataFile.c_str(), "READ"); diff --git a/GeneratorInterface/Pythia6Interface/src/Pythia6Service.cc b/GeneratorInterface/Pythia6Interface/src/Pythia6Service.cc index ba0be2ad86112..10a9360457a66 100644 --- a/GeneratorInterface/Pythia6Interface/src/Pythia6Service.cc +++ b/GeneratorInterface/Pythia6Interface/src/Pythia6Service.cc @@ -175,7 +175,7 @@ void Pythia6Service::setCSAParams() { for (size_t i = 0; i < SETCSAPARBUFSIZE; ++i) buf[i] = ' '; // Skip empty parameters. - if (iter->length() <= 0) + if (iter->empty()) continue; // Limit the size of the string to something which fits the buffer. size_t maxSize = iter->length() > (SETCSAPARBUFSIZE - 2) ? (SETCSAPARBUFSIZE - 2) : iter->length(); @@ -251,7 +251,7 @@ void Pythia6Service::setSLHAParams() { //std::cout << " start, end = " << start << " " << end << std::endl; std::string shortfile = iter->substr(start, end - start + 1); FileInPath f1(shortfile); - std::string file = f1.fullPath(); + const std::string& file = f1.fullPath(); /* // diff --git a/GeneratorInterface/Pythia8Interface/plugins/Pythia8HepMC3Hadronizer.cc b/GeneratorInterface/Pythia8Interface/plugins/Pythia8HepMC3Hadronizer.cc index 8d29061c09e8c..29b7f2be78be5 100644 --- a/GeneratorInterface/Pythia8Interface/plugins/Pythia8HepMC3Hadronizer.cc +++ b/GeneratorInterface/Pythia8Interface/plugins/Pythia8HepMC3Hadronizer.cc @@ -218,8 +218,8 @@ Pythia8HepMC3Hadronizer::Pythia8HepMC3Hadronizer(const edm::ParameterSet ¶ms if (params.exists("reweightGen")) { edm::LogInfo("Pythia8Interface") << "Start setup for reweightGen"; edm::ParameterSet rgParams = params.getParameter("reweightGen"); - fReweightUserHook.reset( - new PtHatReweightUserHook(rgParams.getParameter("pTRef"), rgParams.getParameter("power"))); + fReweightUserHook = std::make_shared(rgParams.getParameter("pTRef"), + rgParams.getParameter("power")); edm::LogInfo("Pythia8Interface") << "End setup for reweightGen"; } if (params.exists("reweightGenEmp")) { @@ -229,29 +229,30 @@ Pythia8HepMC3Hadronizer::Pythia8HepMC3Hadronizer(const edm::ParameterSet ¶ms std::string tuneName = ""; if (rgeParams.exists("tune")) tuneName = rgeParams.getParameter("tune"); - fReweightEmpUserHook.reset(new PtHatEmpReweightUserHook(tuneName)); + fReweightEmpUserHook = std::make_shared(tuneName); edm::LogInfo("Pythia8Interface") << "End setup for reweightGenEmp"; } if (params.exists("reweightGenRap")) { edm::LogInfo("Pythia8Interface") << "Start setup for reweightGenRap"; edm::ParameterSet rgrParams = params.getParameter("reweightGenRap"); - fReweightRapUserHook.reset(new RapReweightUserHook(rgrParams.getParameter("yLabSigmaFunc"), - rgrParams.getParameter("yLabPower"), - rgrParams.getParameter("yCMSigmaFunc"), - rgrParams.getParameter("yCMPower"), - rgrParams.getParameter("pTHatMin"), - rgrParams.getParameter("pTHatMax"))); + fReweightRapUserHook = std::make_shared(rgrParams.getParameter("yLabSigmaFunc"), + rgrParams.getParameter("yLabPower"), + rgrParams.getParameter("yCMSigmaFunc"), + rgrParams.getParameter("yCMPower"), + rgrParams.getParameter("pTHatMin"), + rgrParams.getParameter("pTHatMax")); edm::LogInfo("Pythia8Interface") << "End setup for reweightGenRap"; } if (params.exists("reweightGenPtHatRap")) { edm::LogInfo("Pythia8Interface") << "Start setup for reweightGenPtHatRap"; edm::ParameterSet rgrParams = params.getParameter("reweightGenPtHatRap"); - fReweightPtHatRapUserHook.reset(new PtHatRapReweightUserHook(rgrParams.getParameter("yLabSigmaFunc"), - rgrParams.getParameter("yLabPower"), - rgrParams.getParameter("yCMSigmaFunc"), - rgrParams.getParameter("yCMPower"), - rgrParams.getParameter("pTHatMin"), - rgrParams.getParameter("pTHatMax"))); + fReweightPtHatRapUserHook = + std::make_shared(rgrParams.getParameter("yLabSigmaFunc"), + rgrParams.getParameter("yLabPower"), + rgrParams.getParameter("yCMSigmaFunc"), + rgrParams.getParameter("yCMPower"), + rgrParams.getParameter("pTHatMin"), + rgrParams.getParameter("pTHatMax")); edm::LogInfo("Pythia8Interface") << "End setup for reweightGenPtHatRap"; } @@ -265,7 +266,7 @@ Pythia8HepMC3Hadronizer::Pythia8HepMC3Hadronizer(const edm::ParameterSet ¶ms edm::ParameterSet jmParams = params.getUntrackedParameter("jetMatching"); std::string scheme = jmParams.getParameter("scheme"); if (scheme == "Madgraph" || scheme == "MadgraphFastJet") { - fJetMatchingHook.reset(new JetMatchingHook(jmParams, &fMasterGen->info)); + fJetMatchingHook = std::make_shared(jmParams, &fMasterGen->info); } } @@ -304,17 +305,17 @@ Pythia8HepMC3Hadronizer::Pythia8HepMC3Hadronizer(const edm::ParameterSet ¶ms EV1_nFinalMode = 0; if (params.exists("EV1_nFinalMode")) EV1_nFinalMode = params.getParameter("EV1_nFinalMode"); - fEmissionVetoHook1.reset(new EmissionVetoHook1(EV1_nFinal, - EV1_vetoOn, - EV1_maxVetoCount, - EV1_pThardMode, - EV1_pTempMode, - EV1_emittedMode, - EV1_pTdefMode, - EV1_MPIvetoOn, - EV1_QEDvetoMode, - EV1_nFinalMode, - 0)); + fEmissionVetoHook1 = std::make_shared(EV1_nFinal, + EV1_vetoOn, + EV1_maxVetoCount, + EV1_pThardMode, + EV1_pTempMode, + EV1_emittedMode, + EV1_pTdefMode, + EV1_MPIvetoOn, + EV1_QEDvetoMode, + EV1_nFinalMode, + 0); } if (params.exists("UserCustomization")) { @@ -364,7 +365,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { } if (!fUserHooksVector.get()) - fUserHooksVector.reset(new UserHooksVector); + fUserHooksVector = std::make_shared(); (fUserHooksVector->hooks).clear(); if (fReweightUserHook.get()) @@ -389,7 +390,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { "are : jetMatching, emissionVeto1 \n"; if (!fEmissionVetoHook.get()) - fEmissionVetoHook.reset(new PowhegHooks()); + fEmissionVetoHook = std::make_shared(); edm::LogInfo("Pythia8Interface") << "Turning on Emission Veto Hook from pythia8 code"; (fUserHooksVector->hooks).push_back(fEmissionVetoHook); @@ -399,7 +400,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { if (PowhegRes) { edm::LogInfo("Pythia8Interface") << "Turning on resonance scale setting from CMSSW Pythia8Interface"; if (!fPowhegResHook.get()) - fPowhegResHook.reset(new PowhegResHook()); + fPowhegResHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fPowhegResHook); } @@ -407,7 +408,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { if (PowhegBB4L) { edm::LogInfo("Pythia8Interface") << "Turning on BB4l hook from CMSSW Pythia8Interface"; if (!fPowhegHooksBB4L.get()) - fPowhegHooksBB4L.reset(new PowhegHooksBB4L()); + fPowhegHooksBB4L = std::make_shared(); (fUserHooksVector->hooks).push_back(fPowhegHooksBB4L); } @@ -422,7 +423,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { if (internalMatching) { if (!fJetMatchingPy8InternalHook.get()) - fJetMatchingPy8InternalHook.reset(new Pythia8::JetMatchingMadgraph); + fJetMatchingPy8InternalHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fJetMatchingPy8InternalHook); } @@ -436,7 +437,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { ? 2 : 0); if (!fMergingHook.get()) - fMergingHook.reset(new Pythia8::amcnlo_unitarised_interface(scheme)); + fMergingHook = std::make_shared(scheme); (fUserHooksVector->hooks).push_back(fMergingHook); } @@ -444,7 +445,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { if (biasedTauDecayer) { if (!fBiasedTauDecayer.get()) { Pythia8::Info localInfo = fMasterGen->info; - fBiasedTauDecayer.reset(new BiasedTauDecayer(&localInfo, &(fMasterGen->settings))); + fBiasedTauDecayer = std::make_shared(&localInfo, &(fMasterGen->settings)); } std::vector handledParticles; handledParticles.push_back(15); @@ -453,13 +454,13 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { bool resonanceDecayFilter = fMasterGen->settings.flag("ResonanceDecayFilter:filter"); if (resonanceDecayFilter) { - fResonanceDecayFilterHook.reset(new ResonanceDecayFilterHook); + fResonanceDecayFilterHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fResonanceDecayFilterHook); } bool PTFilter = fMasterGen->settings.flag("PTFilter:filter"); if (PTFilter) { - fPTFilterHook.reset(new PTFilterHook); + fPTFilterHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fPTFilterHook); } @@ -501,7 +502,7 @@ bool Pythia8HepMC3Hadronizer::initializeForInternalPartons() { if (useEvtGen) { edm::LogInfo("Pythia8Hadronizer") << "Creating and initializing pythia8 EvtGen plugin"; if (!evtgenDecays.get()) { - evtgenDecays.reset(new EvtGenDecays(fMasterGen.get(), evtgenDecFile, evtgenPdlFile)); + evtgenDecays = std::make_shared(fMasterGen.get(), evtgenDecFile, evtgenPdlFile); for (unsigned int i = 0; i < evtgenUserFiles.size(); i++) evtgenDecays->readDecayFile(evtgenUserFiles.at(i)); } @@ -516,7 +517,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { bool status = false, status1 = false; if (!fUserHooksVector.get()) - fUserHooksVector.reset(new UserHooksVector); + fUserHooksVector = std::make_shared(); (fUserHooksVector->hooks).clear(); if (fReweightUserHook.get()) @@ -548,7 +549,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { "are : jetMatching, emissionVeto1 \n"; if (!fEmissionVetoHook.get()) - fEmissionVetoHook.reset(new PowhegHooks()); + fEmissionVetoHook = std::make_shared(); edm::LogInfo("Pythia8Interface") << "Turning on Emission Veto Hook from pythia8 code"; (fUserHooksVector->hooks).push_back(fEmissionVetoHook); @@ -558,7 +559,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { if (PowhegRes) { edm::LogInfo("Pythia8Interface") << "Turning on resonance scale setting from CMSSW Pythia8Interface"; if (!fPowhegResHook.get()) - fPowhegResHook.reset(new PowhegResHook()); + fPowhegResHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fPowhegResHook); } @@ -566,7 +567,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { if (PowhegBB4L) { edm::LogInfo("Pythia8Interface") << "Turning on BB4l hook from CMSSW Pythia8Interface"; if (!fPowhegHooksBB4L.get()) - fPowhegHooksBB4L.reset(new PowhegHooksBB4L()); + fPowhegHooksBB4L = std::make_shared(); (fUserHooksVector->hooks).push_back(fPowhegHooksBB4L); } @@ -581,7 +582,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { if (internalMatching) { if (!fJetMatchingPy8InternalHook.get()) - fJetMatchingPy8InternalHook.reset(new Pythia8::JetMatchingMadgraph); + fJetMatchingPy8InternalHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fJetMatchingPy8InternalHook); } @@ -595,7 +596,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { ? 2 : 0); if (!fMergingHook.get()) - fMergingHook.reset(new Pythia8::amcnlo_unitarised_interface(scheme)); + fMergingHook = std::make_shared(scheme); (fUserHooksVector->hooks).push_back(fMergingHook); } @@ -603,7 +604,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { if (biasedTauDecayer) { if (!fBiasedTauDecayer.get()) { Pythia8::Info localInfo = fMasterGen->info; - fBiasedTauDecayer.reset(new BiasedTauDecayer(&localInfo, &(fMasterGen->settings))); + fBiasedTauDecayer = std::make_shared(&localInfo, &(fMasterGen->settings)); } std::vector handledParticles; handledParticles.push_back(15); @@ -612,13 +613,13 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { bool resonanceDecayFilter = fMasterGen->settings.flag("ResonanceDecayFilter:filter"); if (resonanceDecayFilter) { - fResonanceDecayFilterHook.reset(new ResonanceDecayFilterHook); + fResonanceDecayFilterHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fResonanceDecayFilterHook); } bool PTFilter = fMasterGen->settings.flag("PTFilter:filter"); if (PTFilter) { - fPTFilterHook.reset(new PTFilterHook); + fPTFilterHook = std::make_shared(); (fUserHooksVector->hooks).push_back(fPTFilterHook); } @@ -637,7 +638,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { status = fMasterGen->init(); } else { - lhaUP.reset(new LHAupLesHouches()); + lhaUP = std::make_shared(); lhaUP->setScalesFromLHEF(fMasterGen->settings.flag("Beams:setProductionScalesFromLHEF")); lhaUP->loadRunInfo(lheRunInfo()); @@ -672,7 +673,7 @@ bool Pythia8HepMC3Hadronizer::initializeForExternalPartons() { if (useEvtGen) { edm::LogInfo("Pythia8Hadronizer") << "Creating and initializing pythia8 EvtGen plugin"; if (!evtgenDecays.get()) { - evtgenDecays.reset(new EvtGenDecays(fMasterGen.get(), evtgenDecFile, evtgenPdlFile)); + evtgenDecays = std::make_shared(fMasterGen.get(), evtgenDecFile, evtgenPdlFile); for (unsigned int i = 0; i < evtgenUserFiles.size(); i++) evtgenDecays->readDecayFile(evtgenUserFiles.at(i)); } diff --git a/GeneratorInterface/Pythia8Interface/src/Py8GunBase.cc b/GeneratorInterface/Pythia8Interface/src/Py8GunBase.cc index 77af17e0b5114..b560d45205be8 100644 --- a/GeneratorInterface/Pythia8Interface/src/Py8GunBase.cc +++ b/GeneratorInterface/Pythia8Interface/src/Py8GunBase.cc @@ -1,3 +1,5 @@ +#include + #include "GeneratorInterface/Pythia8Interface/interface/Py8GunBase.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/Concurrency/interface/SharedResourceNames.h" @@ -45,7 +47,7 @@ namespace gen { if (useEvtGen) { edm::LogInfo("Pythia8Interface") << "Creating and initializing pythia8 EvtGen plugin"; - evtgenDecays.reset(new EvtGenDecays(fMasterGen.get(), evtgenDecFile, evtgenPdlFile)); + evtgenDecays = std::make_shared(fMasterGen.get(), evtgenDecFile, evtgenPdlFile); for (unsigned int i = 0; i < evtgenUserFiles.size(); i++) evtgenDecays->readDecayFile(evtgenUserFiles.at(i)); } diff --git a/GeneratorInterface/Pythia8Interface/test/pythia8test/runtest b/GeneratorInterface/Pythia8Interface/test/pythia8test/runtest index f422c25b31fb2..39227f9ed25a9 100755 --- a/GeneratorInterface/Pythia8Interface/test/pythia8test/runtest +++ b/GeneratorInterface/Pythia8Interface/test/pythia8test/runtest @@ -4,4 +4,4 @@ rm -f p8test.html cmsRun p8test1step1_cfg.py cmsRun ZJetsTest_cfg.py cp testi.dat test.dat -cmpr.sh test.dat html > p8test.html +./cmpr.sh test.dat html > p8test.html diff --git a/GeneratorInterface/ReggeGribovPartonMCInterface/src/read.cc b/GeneratorInterface/ReggeGribovPartonMCInterface/src/read.cc index 5fc5cf97fdd97..cd6a717840157 100644 --- a/GeneratorInterface/ReggeGribovPartonMCInterface/src/read.cc +++ b/GeneratorInterface/ReggeGribovPartonMCInterface/src/read.cc @@ -5,7 +5,7 @@ #include int main(int numArgs, const char *args[]) { - int res; + // int res; if (numArgs != 2) { //PrintHelp(rs); @@ -21,10 +21,10 @@ int main(int numArgs, const char *args[]) { } LzmaFile lzma; - res = lzma.Open(args[1]); - res = lzma.DecodeAll(); - res = lzma.Close(); - + /*res =*/lzma.Open(args[1]); + /*res =*/lzma.DecodeAll(); + /*res =*/lzma.Close(); + /* if (res != SZ_OK) { if (res == SZ_ERROR_MEM) { return 0; //PrintError(rs, kCantAllocateMessage); @@ -37,5 +37,6 @@ int main(int numArgs, const char *args[]) { } return 0; //PrintErrorNumber(rs, res); } + */ return 0; } diff --git a/GeneratorInterface/RivetInterface/plugins/GenParticles2HepMCConverter.cc b/GeneratorInterface/RivetInterface/plugins/GenParticles2HepMCConverter.cc index d6973b72be907..90c87cb2d59f2 100644 --- a/GeneratorInterface/RivetInterface/plugins/GenParticles2HepMCConverter.cc +++ b/GeneratorInterface/RivetInterface/plugins/GenParticles2HepMCConverter.cc @@ -99,7 +99,7 @@ void GenParticles2HepMCConverter::produce(edm::Event& event, const edm::EventSet hepmc_event.weights() = genEventInfoHandle->weights(); // add dummy weight if necessary - if (hepmc_event.weights().size() == 0) { + if (hepmc_event.weights().empty()) { hepmc_event.weights().push_back(1.); } diff --git a/GeneratorInterface/RivetInterface/plugins/HTXSRivetProducer.cc b/GeneratorInterface/RivetInterface/plugins/HTXSRivetProducer.cc index 4ea9b9c594b23..75a327ad52171 100644 --- a/GeneratorInterface/RivetInterface/plugins/HTXSRivetProducer.cc +++ b/GeneratorInterface/RivetInterface/plugins/HTXSRivetProducer.cc @@ -84,7 +84,7 @@ void HTXSRivetProducer::produce(edm::Event& iEvent, const edm::EventSetup&) { ConstGenVertexPtr HSvtx = myGenEvent->vertices()[0]; if (HSvtx) { - for (auto ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { + for (const auto& ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { if (std::abs(ptcl->pdg_id()) == 24) ++nWs; if (ptcl->pdg_id() == 23) diff --git a/GeneratorInterface/RivetInterface/plugins/RivetAnalyzer.cc b/GeneratorInterface/RivetInterface/plugins/RivetAnalyzer.cc index 82c172aa2e392..8af9cb4d27b21 100644 --- a/GeneratorInterface/RivetInterface/plugins/RivetAnalyzer.cc +++ b/GeneratorInterface/RivetInterface/plugins/RivetAnalyzer.cc @@ -54,6 +54,9 @@ void RivetAnalyzer::beginJob() { //set the environment, very ugly but rivet is monolithic when it comes to paths char* cmsswbase = std::getenv("CMSSW_BASE"); char* cmsswrelease = std::getenv("CMSSW_RELEASE_BASE"); + // These should never fail + assert(cmsswbase); + assert(cmsswrelease); if (!std::getenv("RIVET_REF_PATH")) { const std::string rivetref = string(cmsswbase) + "/src/GeneratorInterface/RivetInterface/data:" + string(cmsswrelease) + diff --git a/GeneratorInterface/RivetInterface/src/HiggsTemplateCrossSections.cc b/GeneratorInterface/RivetInterface/src/HiggsTemplateCrossSections.cc index 601cce14c70fa..6b3eb735271d2 100644 --- a/GeneratorInterface/RivetInterface/src/HiggsTemplateCrossSections.cc +++ b/GeneratorInterface/RivetInterface/src/HiggsTemplateCrossSections.cc @@ -73,7 +73,7 @@ namespace Rivet { /// @brief Checks whether the input particle has a parent with a given PDGID bool hasParent(const ConstGenParticlePtr &ptcl, int pdgID) { - for (auto parent : HepMCUtils::particles(ptcl->production_vertex(), Relatives::PARENTS)) + for (const auto &parent : HepMCUtils::particles(ptcl->production_vertex(), Relatives::PARENTS)) if (parent->pdg_id() == pdgID) return true; return false; @@ -191,7 +191,7 @@ namespace Rivet { FourVector uncatV_v4(0, 0, 0, 0); int nWs = 0, nZs = 0; if (isVH(prodMode)) { - for (auto ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { + for (const auto &ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { if (PID::isW(ptcl->pdg_id())) { ++nWs; cat.V = Particle(ptcl); @@ -204,7 +204,7 @@ namespace Rivet { if (nWs + nZs > 0) cat.V = getLastInstance(cat.V); else { - for (auto ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { + for (const auto &ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { if (!PID::isHiggs(ptcl->pdg_id())) { uncatV_decays += Particle(ptcl); uncatV_p4 += Particle(ptcl).momentum(); @@ -236,7 +236,7 @@ namespace Rivet { Particles Ws; if (prodMode == HTXS::TTH || prodMode == HTXS::TH) { // loop over particles produced in hard-scatter vertex - for (auto ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { + for (const auto &ptcl : HepMCUtils::particles(HSvtx, Relatives::CHILDREN)) { if (!PID::isTop(ptcl->pdg_id())) continue; Particle top = getLastInstance(Particle(ptcl)); diff --git a/GeneratorInterface/SherpaInterface/src/SherpackUtilities.cc b/GeneratorInterface/SherpaInterface/src/SherpackUtilities.cc index 3247ff8037e03..d49edf480a0f2 100644 --- a/GeneratorInterface/SherpaInterface/src/SherpackUtilities.cc +++ b/GeneratorInterface/SherpaInterface/src/SherpackUtilities.cc @@ -417,7 +417,6 @@ namespace spu { printf("%c", buff[ll]); } printf("\n"); - bytes_read = fread(buff, 1, 512, a); for (int ll = 0; ll < 512; ll++) { printf("%c", buff[ll]); } @@ -431,7 +430,6 @@ namespace spu { } //~ printf("NEW LinkNAME: %s\n",newlonglinkname); } else if (buff[156] == 'L') { - bytes_read = fread(buff, 1, 512, a); for (int k = 0; k < filesize; k++) { newlongpathname[k] = buff[k]; } diff --git a/Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml b/Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml similarity index 100% rename from Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml rename to Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml diff --git a/Geometry/CMSCommonData/data/beampipe/2026/v2/beampipe.xml b/Geometry/CMSCommonData/data/beampipe/2030/v2/beampipe.xml similarity index 100% rename from Geometry/CMSCommonData/data/beampipe/2026/v2/beampipe.xml rename to Geometry/CMSCommonData/data/beampipe/2030/v2/beampipe.xml diff --git a/Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml b/Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml similarity index 100% rename from Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml rename to Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v1/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v1/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v1/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v1/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v2/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v2/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v2/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v2/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v3/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v3/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v3/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v3/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v4/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v4/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v4/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v4/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v5/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v5/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v5/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v5/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml diff --git a/Geometry/CMSCommonData/data/caloBase/2026/v8/caloBase.xml b/Geometry/CMSCommonData/data/caloBase/2030/v8/caloBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/caloBase/2026/v8/caloBase.xml rename to Geometry/CMSCommonData/data/caloBase/2030/v8/caloBase.xml diff --git a/Geometry/CMSCommonData/data/cms/2026/v1/cms.xml b/Geometry/CMSCommonData/data/cms/2015/v1/cms.xml similarity index 100% rename from Geometry/CMSCommonData/data/cms/2026/v1/cms.xml rename to Geometry/CMSCommonData/data/cms/2015/v1/cms.xml diff --git a/Geometry/CMSCommonData/data/cms/2030/v1/cms.xml b/Geometry/CMSCommonData/data/cms/2030/v1/cms.xml new file mode 100644 index 0000000000000..41809294238e8 --- /dev/null +++ b/Geometry/CMSCommonData/data/cms/2030/v1/cms.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/cms/2026/v2/cms.xml b/Geometry/CMSCommonData/data/cms/2030/v2/cms.xml similarity index 100% rename from Geometry/CMSCommonData/data/cms/2026/v2/cms.xml rename to Geometry/CMSCommonData/data/cms/2030/v2/cms.xml diff --git a/Geometry/CMSCommonData/data/cms/2026/v3/cms.xml b/Geometry/CMSCommonData/data/cms/2030/v3/cms.xml similarity index 100% rename from Geometry/CMSCommonData/data/cms/2026/v3/cms.xml rename to Geometry/CMSCommonData/data/cms/2030/v3/cms.xml diff --git a/Geometry/CMSCommonData/data/cms/2026/v4/cms.xml b/Geometry/CMSCommonData/data/cms/2030/v4/cms.xml similarity index 100% rename from Geometry/CMSCommonData/data/cms/2026/v4/cms.xml rename to Geometry/CMSCommonData/data/cms/2030/v4/cms.xml diff --git a/Geometry/CMSCommonData/data/cms/2026/v5/cms.xml b/Geometry/CMSCommonData/data/cms/2030/v5/cms.xml similarity index 100% rename from Geometry/CMSCommonData/data/cms/2026/v5/cms.xml rename to Geometry/CMSCommonData/data/cms/2030/v5/cms.xml diff --git a/Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml b/Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml similarity index 100% rename from Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml rename to Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml diff --git a/Geometry/CMSCommonData/data/cmsextent/2018/v0/cmsextent.xml b/Geometry/CMSCommonData/data/cmsextent/2018/v0/cmsextent.xml new file mode 100644 index 0000000000000..198579ddf0f65 --- /dev/null +++ b/Geometry/CMSCommonData/data/cmsextent/2018/v0/cmsextent.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025.xml new file mode 100644 index 0000000000000..a664d0bd524a7 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025.xml @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus05Percent.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus05Percent.xml new file mode 100644 index 0000000000000..a03e1f0b4bab6 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus05Percent.xml @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus10Percent.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus10Percent.xml new file mode 100644 index 0000000000000..3c2625648fc05 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatMinus10Percent.xml @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus05Percent.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus05Percent.xml new file mode 100644 index 0000000000000..03bcdd961ee92 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus05Percent.xml @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus10Percent.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus10Percent.xml new file mode 100644 index 0000000000000..59ac097893f2b --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025FlatPlus10Percent.xml @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025ZeroMaterial.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025ZeroMaterial.xml new file mode 100644 index 0000000000000..8b785af27d24d --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2025ZeroMaterial.xml @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D100.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D100.xml index 08d647593d1ab..3ed3483b92f59 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D100.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D100.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - - + + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D101.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D101.xml index 543c7b052c58a..5df17bc6c8e4a 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D101.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D101.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - - + + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D102.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D102.xml index 1df96c04b7e21..939da8b73dedd 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D102.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D102.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D103.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D103.xml index c8dc35803afe4..ed6f644467d19 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D103.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D103.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D104.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D104.xml index c0ffcf3fdfa81..f9d8985c73438 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D104.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D104.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - - + + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D105.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D105.xml index 65c77d4a8c632..946660c78056e 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D105.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D105.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D106.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D106.xml index b96dd87b8fdb3..bdcb21a6fb12c 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D106.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D106.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D107.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D107.xml index d8ea30f0160df..4fd3c512b233b 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D107.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D107.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - - + + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D108.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D108.xml index 49c460b173297..b8f626812ad68 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D108.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D108.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -70,22 +70,22 @@ - - + + - + - - + + - - + + - + @@ -99,21 +99,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D109.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D109.xml index 8068840610f50..4abaf781bd235 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D109.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D109.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D110.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D110.xml index 4c4cbf550a410..cbf5c39436dcf 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D110.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D110.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D111.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D111.xml index 1e4e794b96ec8..dc4e4677bd4a9 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D111.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D111.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D112.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D112.xml index abbc720f156b5..d5cf7f27b910f 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D112.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D112.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D113.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D113.xml index f3b8c16bb1c47..3f8708c890aea 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D113.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D113.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -71,22 +71,22 @@ - - + + - + - - + + - - + + - + @@ -100,21 +100,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D114.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D114.xml index 35e012d488d88..05db625f38a1d 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D114.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D114.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -70,22 +70,22 @@ - - + + - + - - + + - - + + - + @@ -99,21 +99,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D115.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D115.xml index 4095d3854b66f..cd1b03266bcf2 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D115.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D115.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -41,9 +41,9 @@ - - - + + + @@ -76,22 +76,22 @@ - - + + - + - - + + - - + + - + @@ -105,23 +105,23 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D116.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D116.xml new file mode 100644 index 0000000000000..cb9116b56a66b --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D116.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D95.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D95.xml index c817f9a9fadd6..e0510a5301c2e 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D95.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D95.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D96.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D96.xml index 546dd172b582b..13ac40c746bbe 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D96.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D96.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D98.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D98.xml index abc9479c321d9..3a05488a54c5a 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D98.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D98.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D99.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D99.xml index 813922779e6b3..3bd06207f3807 100644 --- a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D99.xml +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D99.xml @@ -8,17 +8,17 @@ - + - + - + - - + + @@ -42,9 +42,9 @@ - - - + + + @@ -72,22 +72,22 @@ - - + + - + - + - - + + - + @@ -101,21 +101,21 @@ - + - + - + - + diff --git a/Geometry/CMSCommonData/data/materials/2021/v4/materials.xml b/Geometry/CMSCommonData/data/materials/2021/v4/materials.xml new file mode 100644 index 0000000000000..0cae172e93e86 --- /dev/null +++ b/Geometry/CMSCommonData/data/materials/2021/v4/materials.xml @@ -0,0 +1,4419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/materials/2024/v1/materials.xml b/Geometry/CMSCommonData/data/materials/2021/v5/materials.xml similarity index 96% rename from Geometry/CMSCommonData/data/materials/2024/v1/materials.xml rename to Geometry/CMSCommonData/data/materials/2021/v5/materials.xml index 5a09e02686524..25855ebde5845 100644 --- a/Geometry/CMSCommonData/data/materials/2024/v1/materials.xml +++ b/Geometry/CMSCommonData/data/materials/2021/v5/materials.xml @@ -1,5 +1,6 @@ - + + @@ -71,70 +72,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -205,20 +142,6 @@ - - - - - - - - - - - - - - @@ -1155,13 +1078,6 @@ - - - - - - - @@ -2357,20 +2273,6 @@ - - - - - - - - - - - - - - @@ -3893,17 +3795,6 @@ - - - - - - - - - - - @@ -3952,68 +3843,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4404,14 +4233,6 @@ - - - - - - - - @@ -4631,5 +4452,19 @@ + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/materials/2030/v1/materials.xml b/Geometry/CMSCommonData/data/materials/2030/v1/materials.xml index 0cae172e93e86..02db5c952a256 100644 --- a/Geometry/CMSCommonData/data/materials/2030/v1/materials.xml +++ b/Geometry/CMSCommonData/data/materials/2030/v1/materials.xml @@ -3744,6 +3744,17 @@ + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/muonBase/2026/v1/muonBase.xml b/Geometry/CMSCommonData/data/muonBase/2015/v1/muonBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/muonBase/2026/v1/muonBase.xml rename to Geometry/CMSCommonData/data/muonBase/2015/v1/muonBase.xml diff --git a/Geometry/CMSCommonData/data/muonBase/2030/v1/muonBase.xml b/Geometry/CMSCommonData/data/muonBase/2030/v1/muonBase.xml new file mode 100644 index 0000000000000..c04581e2c2c4c --- /dev/null +++ b/Geometry/CMSCommonData/data/muonBase/2030/v1/muonBase.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/muonBase/2026/v2/muonBase.xml b/Geometry/CMSCommonData/data/muonBase/2030/v2/muonBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/muonBase/2026/v2/muonBase.xml rename to Geometry/CMSCommonData/data/muonBase/2030/v2/muonBase.xml diff --git a/Geometry/CMSCommonData/data/muonBase/2026/v3/muonBase.xml b/Geometry/CMSCommonData/data/muonBase/2030/v3/muonBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/muonBase/2026/v3/muonBase.xml rename to Geometry/CMSCommonData/data/muonBase/2030/v3/muonBase.xml diff --git a/Geometry/CMSCommonData/data/muonBase/2026/v4/muonBase.xml b/Geometry/CMSCommonData/data/muonBase/2030/v4/muonBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/muonBase/2026/v4/muonBase.xml rename to Geometry/CMSCommonData/data/muonBase/2030/v4/muonBase.xml diff --git a/Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml b/Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml similarity index 100% rename from Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml rename to Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2015MuonGEMDevXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2015MuonGEMDevXML_cfi.py index 167ecf21ae2d0..1b9a8fa0eabed 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometry2015MuonGEMDevXML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2015MuonGEMDevXML_cfi.py @@ -9,11 +9,11 @@ 'Geometry/CMSCommonData/data/extend/cmsextent.xml', # 'Geometry/CMSCommonData/data/cms.xml', # Phase-1 Muon 'Geometry/CMSCommonData/data/cavernData/2017/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v1/cms.xml', # Phase-2 Muon - 'Geometry/CMSCommonData/data/eta3/etaMax.xml', # Phase-2 Muon + 'Geometry/CMSCommonData/data/cms/2015/v1/cms.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v1/muonBase.xml', # Phase-2 Muon + 'Geometry/CMSCommonData/data/muonBase/2015/v1/muonBase.xml', # Phase-2 Muon 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', 'Geometry/CMSCommonData/data/beampipe/2015/v1/beampipe.xml', @@ -210,13 +210,13 @@ 'Geometry/MuonCommonData/data/mb3/2015/v1/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v1/mb4.xml', 'Geometry/MuonCommonData/data/muonYoke/2015/v1/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v1/mf.xml', # Phase-2 Muon - 'Geometry/MuonCommonData/data/rpcf/2026/v1/rpcf.xml', # Phase-2 Muon + 'Geometry/MuonCommonData/data/mf/2030/v1/mf.xml', # Phase-2 Muon + 'Geometry/MuonCommonData/data/rpcf/2030/v1/rpcf.xml', # Phase-2 Muon 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', # Phase-2 Muon 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', # Phase-2 Muon 'Geometry/MuonCommonData/data/gem21/TDR_BaseLine/gem21.xml', # Phase-2 Muon 'Geometry/MuonCommonData/data/csc/2015/v1/csc.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v1/mfshield.xml', # Phase-2 Muon + 'Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml', # Phase-2 Muon 'Geometry/MuonCommonData/data/me0/TDR_BaseLine/me0.xml', # Phase-2 Muon # --- Muon ------------------------------------------------------------ diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2019XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2019XML_cfi.py index a1cc0f53e4a1c..e72be6f070b62 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometry2019XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2019XML_cfi.py @@ -16,8 +16,8 @@ 'Geometry/CMSCommonData/data/muonBase/2017/v1/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2017/v2/cavern.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatMinus05PercentXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatMinus05PercentXML_cfi.py new file mode 100644 index 0000000000000..311411dc8501f --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatMinus05PercentXML_cfi.py @@ -0,0 +1,386 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/v2/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/pixfwdMaterials.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/v1/pixbarmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/v2/tibtidcommonmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/v2/tibmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/v2/tidmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/v2/tobmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus05Percent/2021/tecmaterial.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdCylinder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdDisks.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdSupportRingParameters.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbar.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpatchpannel.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpixelnose.xml', + 'Geometry/TrackerCommonData/data/tibmodpar.xml', + 'Geometry/TrackerCommonData/data/tibmodule0.xml', + 'Geometry/TrackerCommonData/data/tibmodule0a.xml', + 'Geometry/TrackerCommonData/data/tibmodule0b.xml', + 'Geometry/TrackerCommonData/data/tibmodule2.xml', + 'Geometry/TrackerCommonData/data/tibstringpar.xml', + 'Geometry/TrackerCommonData/data/tibstring0ll.xml', + 'Geometry/TrackerCommonData/data/tibstring0lr.xml', + 'Geometry/TrackerCommonData/data/tibstring0ul.xml', + 'Geometry/TrackerCommonData/data/tibstring0ur.xml', + 'Geometry/TrackerCommonData/data/tibstring0.xml', + 'Geometry/TrackerCommonData/data/tibstring1ll.xml', + 'Geometry/TrackerCommonData/data/tibstring1lr.xml', + 'Geometry/TrackerCommonData/data/tibstring1ul.xml', + 'Geometry/TrackerCommonData/data/tibstring1ur.xml', + 'Geometry/TrackerCommonData/data/tibstring1.xml', + 'Geometry/TrackerCommonData/data/tibstring2ll.xml', + 'Geometry/TrackerCommonData/data/tibstring2lr.xml', + 'Geometry/TrackerCommonData/data/tibstring2ul.xml', + 'Geometry/TrackerCommonData/data/tibstring2ur.xml', + 'Geometry/TrackerCommonData/data/tibstring2.xml', + 'Geometry/TrackerCommonData/data/tibstring3ll.xml', + 'Geometry/TrackerCommonData/data/tibstring3lr.xml', + 'Geometry/TrackerCommonData/data/tibstring3ul.xml', + 'Geometry/TrackerCommonData/data/tibstring3ur.xml', + 'Geometry/TrackerCommonData/data/tibstring3.xml', + 'Geometry/TrackerCommonData/data/tiblayerpar.xml', + 'Geometry/TrackerCommonData/data/tiblayer0.xml', + 'Geometry/TrackerCommonData/data/tiblayer1.xml', + 'Geometry/TrackerCommonData/data/tiblayer2.xml', + 'Geometry/TrackerCommonData/data/tiblayer3.xml', + 'Geometry/TrackerCommonData/data/tib.xml', + 'Geometry/TrackerCommonData/data/tidmodpar.xml', + 'Geometry/TrackerCommonData/data/tidmodule0.xml', + 'Geometry/TrackerCommonData/data/tidmodule0r.xml', + 'Geometry/TrackerCommonData/data/tidmodule0l.xml', + 'Geometry/TrackerCommonData/data/tidmodule1.xml', + 'Geometry/TrackerCommonData/data/tidmodule1r.xml', + 'Geometry/TrackerCommonData/data/tidmodule1l.xml', + 'Geometry/TrackerCommonData/data/tidmodule2.xml', + 'Geometry/TrackerCommonData/data/tidringpar.xml', + 'Geometry/TrackerCommonData/data/tidring0.xml', + 'Geometry/TrackerCommonData/data/tidring0f.xml', + 'Geometry/TrackerCommonData/data/tidring0b.xml', + 'Geometry/TrackerCommonData/data/tidring1.xml', + 'Geometry/TrackerCommonData/data/tidring1f.xml', + 'Geometry/TrackerCommonData/data/tidring1b.xml', + 'Geometry/TrackerCommonData/data/tidring2.xml', + 'Geometry/TrackerCommonData/data/tid.xml', + 'Geometry/TrackerCommonData/data/tidf.xml', + 'Geometry/TrackerCommonData/data/tidb.xml', + 'Geometry/TrackerCommonData/data/tibtidservices.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesf.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesb.xml', + 'Geometry/TrackerCommonData/data/tobmodpar.xml', + 'Geometry/TrackerCommonData/data/tobmodule0.xml', + 'Geometry/TrackerCommonData/data/tobmodule2.xml', + 'Geometry/TrackerCommonData/data/tobmodule4.xml', + 'Geometry/TrackerCommonData/data/tobrodpar.xml', + 'Geometry/TrackerCommonData/data/tobrod0c.xml', + 'Geometry/TrackerCommonData/data/tobrod0l.xml', + 'Geometry/TrackerCommonData/data/tobrod0h.xml', + 'Geometry/TrackerCommonData/data/tobrod0.xml', + 'Geometry/TrackerCommonData/data/tobrod1l.xml', + 'Geometry/TrackerCommonData/data/tobrod1h.xml', + 'Geometry/TrackerCommonData/data/tobrod1.xml', + 'Geometry/TrackerCommonData/data/tobrod2c.xml', + 'Geometry/TrackerCommonData/data/tobrod2l.xml', + 'Geometry/TrackerCommonData/data/tobrod2h.xml', + 'Geometry/TrackerCommonData/data/tobrod2.xml', + 'Geometry/TrackerCommonData/data/tobrod3l.xml', + 'Geometry/TrackerCommonData/data/tobrod3h.xml', + 'Geometry/TrackerCommonData/data/tobrod3.xml', + 'Geometry/TrackerCommonData/data/tobrod4c.xml', + 'Geometry/TrackerCommonData/data/tobrod4l.xml', + 'Geometry/TrackerCommonData/data/tobrod4h.xml', + 'Geometry/TrackerCommonData/data/tobrod4.xml', + 'Geometry/TrackerCommonData/data/tobrod5l.xml', + 'Geometry/TrackerCommonData/data/tobrod5h.xml', + 'Geometry/TrackerCommonData/data/tobrod5.xml', + 'Geometry/TrackerCommonData/data/tob/v3/tob.xml', + 'Geometry/TrackerCommonData/data/tecmodpar.xml', + 'Geometry/TrackerCommonData/data/tecmodule0.xml', + 'Geometry/TrackerCommonData/data/tecmodule0r.xml', + 'Geometry/TrackerCommonData/data/tecmodule0s.xml', + 'Geometry/TrackerCommonData/data/tecmodule1.xml', + 'Geometry/TrackerCommonData/data/tecmodule1r.xml', + 'Geometry/TrackerCommonData/data/tecmodule1s.xml', + 'Geometry/TrackerCommonData/data/tecmodule2.xml', + 'Geometry/TrackerCommonData/data/tecmodule3.xml', + 'Geometry/TrackerCommonData/data/tecmodule4.xml', + 'Geometry/TrackerCommonData/data/tecmodule4r.xml', + 'Geometry/TrackerCommonData/data/tecmodule4s.xml', + 'Geometry/TrackerCommonData/data/tecmodule5.xml', + 'Geometry/TrackerCommonData/data/tecmodule6.xml', + 'Geometry/TrackerCommonData/data/tecpetpar.xml', + 'Geometry/TrackerCommonData/data/tecring0.xml', + 'Geometry/TrackerCommonData/data/tecring1.xml', + 'Geometry/TrackerCommonData/data/tecring2.xml', + 'Geometry/TrackerCommonData/data/tecring3.xml', + 'Geometry/TrackerCommonData/data/tecring4.xml', + 'Geometry/TrackerCommonData/data/tecring5.xml', + 'Geometry/TrackerCommonData/data/tecring6.xml', + 'Geometry/TrackerCommonData/data/tecring0f.xml', + 'Geometry/TrackerCommonData/data/tecring1f.xml', + 'Geometry/TrackerCommonData/data/tecring2f.xml', + 'Geometry/TrackerCommonData/data/tecring3f.xml', + 'Geometry/TrackerCommonData/data/tecring4f.xml', + 'Geometry/TrackerCommonData/data/tecring5f.xml', + 'Geometry/TrackerCommonData/data/tecring6f.xml', + 'Geometry/TrackerCommonData/data/tecring0b.xml', + 'Geometry/TrackerCommonData/data/tecring1b.xml', + 'Geometry/TrackerCommonData/data/tecring2b.xml', + 'Geometry/TrackerCommonData/data/tecring3b.xml', + 'Geometry/TrackerCommonData/data/tecring4b.xml', + 'Geometry/TrackerCommonData/data/tecring5b.xml', + 'Geometry/TrackerCommonData/data/tecring6b.xml', + 'Geometry/TrackerCommonData/data/tecpetalf.xml', + 'Geometry/TrackerCommonData/data/tecpetalb.xml', + 'Geometry/TrackerCommonData/data/tecpetal0.xml', + 'Geometry/TrackerCommonData/data/tecpetal0f.xml', + 'Geometry/TrackerCommonData/data/tecpetal0b.xml', + 'Geometry/TrackerCommonData/data/tecpetal3.xml', + 'Geometry/TrackerCommonData/data/tecpetal3f.xml', + 'Geometry/TrackerCommonData/data/tecpetal3b.xml', + 'Geometry/TrackerCommonData/data/tecpetal6f.xml', + 'Geometry/TrackerCommonData/data/tecpetal6b.xml', + 'Geometry/TrackerCommonData/data/tecpetal8f.xml', + 'Geometry/TrackerCommonData/data/tecpetal8b.xml', + 'Geometry/TrackerCommonData/data/tecwheel/2021/v1/tecwheel.xml', + 'Geometry/TrackerCommonData/data/tecwheela.xml', + 'Geometry/TrackerCommonData/data/tecwheelb.xml', + 'Geometry/TrackerCommonData/data/tecwheelc.xml', + 'Geometry/TrackerCommonData/data/tecwheeld.xml', + 'Geometry/TrackerCommonData/data/tecwheel6.xml', + 'Geometry/TrackerCommonData/data/tecservices.xml', + 'Geometry/TrackerCommonData/data/tecbackplate.xml', + 'Geometry/TrackerCommonData/data/tec.xml', + 'Geometry/TrackerCommonData/data/Run2/tracker.xml', + 'Geometry/TrackerCommonData/data/trackerpixbar.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerpixfwd.xml', + 'Geometry/TrackerCommonData/data/trackertibtidservices.xml', + 'Geometry/TrackerCommonData/data/trackertib.xml', + 'Geometry/TrackerCommonData/data/trackertid.xml', + 'Geometry/TrackerCommonData/data/trackertob.xml', + 'Geometry/TrackerCommonData/data/trackertec.xml', + 'Geometry/TrackerCommonData/data/v2/trackerbulkhead.xml', + 'Geometry/TrackerCommonData/data/trackerother.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackersens.xml', + 'Geometry/TrackerRecoData/data/PhaseI/v1/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseI/v1/trackingMaterialGroups_ForPhaseI.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/eecon.xml', + 'Geometry/EcalCommonData/data/escon.xml', + 'Geometry/EcalCommonData/data/eregalgo/2017/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/EcalCommonData/data/eefixed/2021/v1/eefixed.xml', + 'Geometry/EcalCommonData/data/eehier.xml', + 'Geometry/EcalCommonData/data/eealgo.xml', + 'Geometry/EcalCommonData/data/esalgo.xml', + 'Geometry/EcalCommonData/data/eeF.xml', + 'Geometry/EcalCommonData/data/eeB.xml', + 'Geometry/EcalCommonData/data/ectkcable.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/PhaseI/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalendcap/PhaseI/hcalendcapalgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2021/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2021/v2/hcalRecNumbering.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/ForwardCommonData/data/forward/2021/v1/forward.xml', + 'Geometry/ForwardCommonData/data/totemt2/2021/v1/totemt2.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2021/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/bhm.xml', + 'Geometry/ForwardCommonData/data/pltbcm/2021/v1/pltbcm.xml', + 'Geometry/ForwardCommonData/data/bcm1f/2021/v1/bcm1f.xml', + 'Geometry/ForwardCommonData/data/plt/2021/v1/plt.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2021/v3/zdc.xml', + 'Geometry/ForwardCommonData/data/rpd/2021/v2/rpd.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/VeryForwardData/data/RP_Box.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_000.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_001.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_002.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_003.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_004.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_005.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_020.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_021.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_022.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_023.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_024.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_025.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_100.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_101.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_102.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_103.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_104.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_105.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_120.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_121.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_122.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_123.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_124.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_125.xml', + 'Geometry/VeryForwardData/data/RP_Hybrid/v2/RP_Hybrid.xml', + 'Geometry/VeryForwardData/data/RP_Materials/v5/RP_Materials.xml', + 'Geometry/VeryForwardData/data/RP_Transformations.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_000.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_001.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_002.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_004.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_005.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_020.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_021.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_024.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_025.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_100.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_101.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_102.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_104.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_105.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_120.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_121.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_124.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_125.xml', + 'Geometry/VeryForwardData/data/RP_Device/v1/RP_Device.xml', + 'Geometry/VeryForwardData/data/RP_Vertical_Device/2021/Simu/v2/RP_Vertical_Device.xml', + 'Geometry/VeryForwardData/data/RP_Horizontal_Device/2021/Simu/v2/RP_Horizontal_Device.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_Stations_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Cuts_Per_Region/Simu/v1/CTPPS_Cuts_Per_Region.xml', + 'Geometry/VeryForwardData/data/RP_Sensitive_Dets.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Transformations.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Station_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Horizontal_Pot/v2/CTPPS_Timing_Horizontal_Pot.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern1_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment5.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Detector_Assembly/v1/CTPPS_Diamond_Detector_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_022.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_122.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Sensitive_Dets_TimingHits.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v3/PPS_Pixel_Module_2x2_Run3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v2/PPS_Pixel_Sens.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_003.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_023.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_103.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_123.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/RP_Dist_Beam_Cent/Simu/v1/RP_Dist_Beam_Cent.xml', + 'Geometry/EcalSimData/data/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/2021/v2/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2021/v1/CaloUtil.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecs/2021/v2/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/totemsensT2/2021/totemsensT2.xml', + 'Geometry/ForwardCommonData/data/bhmsens.xml', + 'Geometry/ForwardSimData/data/pltsens.xml', + 'Geometry/ForwardSimData/data/bcm1fsens.xml', + 'Geometry/ForwardSimData/data/zdcsens/2021/v1/zdcsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2021/v2/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/EcalSimData/data/ESProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/ForwardSimData/data/bhmProdCuts/2021/v1/bhmProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v3/zdcProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatMinus10PercentXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatMinus10PercentXML_cfi.py new file mode 100644 index 0000000000000..3b5451b2a136c --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatMinus10PercentXML_cfi.py @@ -0,0 +1,386 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/v2/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/pixfwdMaterials.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/v1/pixbarmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/v2/tibtidcommonmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/v2/tibmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/v2/tidmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/v2/tobmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatMinus10Percent/2021/tecmaterial.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdCylinder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdDisks.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdSupportRingParameters.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbar.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpatchpannel.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpixelnose.xml', + 'Geometry/TrackerCommonData/data/tibmodpar.xml', + 'Geometry/TrackerCommonData/data/tibmodule0.xml', + 'Geometry/TrackerCommonData/data/tibmodule0a.xml', + 'Geometry/TrackerCommonData/data/tibmodule0b.xml', + 'Geometry/TrackerCommonData/data/tibmodule2.xml', + 'Geometry/TrackerCommonData/data/tibstringpar.xml', + 'Geometry/TrackerCommonData/data/tibstring0ll.xml', + 'Geometry/TrackerCommonData/data/tibstring0lr.xml', + 'Geometry/TrackerCommonData/data/tibstring0ul.xml', + 'Geometry/TrackerCommonData/data/tibstring0ur.xml', + 'Geometry/TrackerCommonData/data/tibstring0.xml', + 'Geometry/TrackerCommonData/data/tibstring1ll.xml', + 'Geometry/TrackerCommonData/data/tibstring1lr.xml', + 'Geometry/TrackerCommonData/data/tibstring1ul.xml', + 'Geometry/TrackerCommonData/data/tibstring1ur.xml', + 'Geometry/TrackerCommonData/data/tibstring1.xml', + 'Geometry/TrackerCommonData/data/tibstring2ll.xml', + 'Geometry/TrackerCommonData/data/tibstring2lr.xml', + 'Geometry/TrackerCommonData/data/tibstring2ul.xml', + 'Geometry/TrackerCommonData/data/tibstring2ur.xml', + 'Geometry/TrackerCommonData/data/tibstring2.xml', + 'Geometry/TrackerCommonData/data/tibstring3ll.xml', + 'Geometry/TrackerCommonData/data/tibstring3lr.xml', + 'Geometry/TrackerCommonData/data/tibstring3ul.xml', + 'Geometry/TrackerCommonData/data/tibstring3ur.xml', + 'Geometry/TrackerCommonData/data/tibstring3.xml', + 'Geometry/TrackerCommonData/data/tiblayerpar.xml', + 'Geometry/TrackerCommonData/data/tiblayer0.xml', + 'Geometry/TrackerCommonData/data/tiblayer1.xml', + 'Geometry/TrackerCommonData/data/tiblayer2.xml', + 'Geometry/TrackerCommonData/data/tiblayer3.xml', + 'Geometry/TrackerCommonData/data/tib.xml', + 'Geometry/TrackerCommonData/data/tidmodpar.xml', + 'Geometry/TrackerCommonData/data/tidmodule0.xml', + 'Geometry/TrackerCommonData/data/tidmodule0r.xml', + 'Geometry/TrackerCommonData/data/tidmodule0l.xml', + 'Geometry/TrackerCommonData/data/tidmodule1.xml', + 'Geometry/TrackerCommonData/data/tidmodule1r.xml', + 'Geometry/TrackerCommonData/data/tidmodule1l.xml', + 'Geometry/TrackerCommonData/data/tidmodule2.xml', + 'Geometry/TrackerCommonData/data/tidringpar.xml', + 'Geometry/TrackerCommonData/data/tidring0.xml', + 'Geometry/TrackerCommonData/data/tidring0f.xml', + 'Geometry/TrackerCommonData/data/tidring0b.xml', + 'Geometry/TrackerCommonData/data/tidring1.xml', + 'Geometry/TrackerCommonData/data/tidring1f.xml', + 'Geometry/TrackerCommonData/data/tidring1b.xml', + 'Geometry/TrackerCommonData/data/tidring2.xml', + 'Geometry/TrackerCommonData/data/tid.xml', + 'Geometry/TrackerCommonData/data/tidf.xml', + 'Geometry/TrackerCommonData/data/tidb.xml', + 'Geometry/TrackerCommonData/data/tibtidservices.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesf.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesb.xml', + 'Geometry/TrackerCommonData/data/tobmodpar.xml', + 'Geometry/TrackerCommonData/data/tobmodule0.xml', + 'Geometry/TrackerCommonData/data/tobmodule2.xml', + 'Geometry/TrackerCommonData/data/tobmodule4.xml', + 'Geometry/TrackerCommonData/data/tobrodpar.xml', + 'Geometry/TrackerCommonData/data/tobrod0c.xml', + 'Geometry/TrackerCommonData/data/tobrod0l.xml', + 'Geometry/TrackerCommonData/data/tobrod0h.xml', + 'Geometry/TrackerCommonData/data/tobrod0.xml', + 'Geometry/TrackerCommonData/data/tobrod1l.xml', + 'Geometry/TrackerCommonData/data/tobrod1h.xml', + 'Geometry/TrackerCommonData/data/tobrod1.xml', + 'Geometry/TrackerCommonData/data/tobrod2c.xml', + 'Geometry/TrackerCommonData/data/tobrod2l.xml', + 'Geometry/TrackerCommonData/data/tobrod2h.xml', + 'Geometry/TrackerCommonData/data/tobrod2.xml', + 'Geometry/TrackerCommonData/data/tobrod3l.xml', + 'Geometry/TrackerCommonData/data/tobrod3h.xml', + 'Geometry/TrackerCommonData/data/tobrod3.xml', + 'Geometry/TrackerCommonData/data/tobrod4c.xml', + 'Geometry/TrackerCommonData/data/tobrod4l.xml', + 'Geometry/TrackerCommonData/data/tobrod4h.xml', + 'Geometry/TrackerCommonData/data/tobrod4.xml', + 'Geometry/TrackerCommonData/data/tobrod5l.xml', + 'Geometry/TrackerCommonData/data/tobrod5h.xml', + 'Geometry/TrackerCommonData/data/tobrod5.xml', + 'Geometry/TrackerCommonData/data/tob/v3/tob.xml', + 'Geometry/TrackerCommonData/data/tecmodpar.xml', + 'Geometry/TrackerCommonData/data/tecmodule0.xml', + 'Geometry/TrackerCommonData/data/tecmodule0r.xml', + 'Geometry/TrackerCommonData/data/tecmodule0s.xml', + 'Geometry/TrackerCommonData/data/tecmodule1.xml', + 'Geometry/TrackerCommonData/data/tecmodule1r.xml', + 'Geometry/TrackerCommonData/data/tecmodule1s.xml', + 'Geometry/TrackerCommonData/data/tecmodule2.xml', + 'Geometry/TrackerCommonData/data/tecmodule3.xml', + 'Geometry/TrackerCommonData/data/tecmodule4.xml', + 'Geometry/TrackerCommonData/data/tecmodule4r.xml', + 'Geometry/TrackerCommonData/data/tecmodule4s.xml', + 'Geometry/TrackerCommonData/data/tecmodule5.xml', + 'Geometry/TrackerCommonData/data/tecmodule6.xml', + 'Geometry/TrackerCommonData/data/tecpetpar.xml', + 'Geometry/TrackerCommonData/data/tecring0.xml', + 'Geometry/TrackerCommonData/data/tecring1.xml', + 'Geometry/TrackerCommonData/data/tecring2.xml', + 'Geometry/TrackerCommonData/data/tecring3.xml', + 'Geometry/TrackerCommonData/data/tecring4.xml', + 'Geometry/TrackerCommonData/data/tecring5.xml', + 'Geometry/TrackerCommonData/data/tecring6.xml', + 'Geometry/TrackerCommonData/data/tecring0f.xml', + 'Geometry/TrackerCommonData/data/tecring1f.xml', + 'Geometry/TrackerCommonData/data/tecring2f.xml', + 'Geometry/TrackerCommonData/data/tecring3f.xml', + 'Geometry/TrackerCommonData/data/tecring4f.xml', + 'Geometry/TrackerCommonData/data/tecring5f.xml', + 'Geometry/TrackerCommonData/data/tecring6f.xml', + 'Geometry/TrackerCommonData/data/tecring0b.xml', + 'Geometry/TrackerCommonData/data/tecring1b.xml', + 'Geometry/TrackerCommonData/data/tecring2b.xml', + 'Geometry/TrackerCommonData/data/tecring3b.xml', + 'Geometry/TrackerCommonData/data/tecring4b.xml', + 'Geometry/TrackerCommonData/data/tecring5b.xml', + 'Geometry/TrackerCommonData/data/tecring6b.xml', + 'Geometry/TrackerCommonData/data/tecpetalf.xml', + 'Geometry/TrackerCommonData/data/tecpetalb.xml', + 'Geometry/TrackerCommonData/data/tecpetal0.xml', + 'Geometry/TrackerCommonData/data/tecpetal0f.xml', + 'Geometry/TrackerCommonData/data/tecpetal0b.xml', + 'Geometry/TrackerCommonData/data/tecpetal3.xml', + 'Geometry/TrackerCommonData/data/tecpetal3f.xml', + 'Geometry/TrackerCommonData/data/tecpetal3b.xml', + 'Geometry/TrackerCommonData/data/tecpetal6f.xml', + 'Geometry/TrackerCommonData/data/tecpetal6b.xml', + 'Geometry/TrackerCommonData/data/tecpetal8f.xml', + 'Geometry/TrackerCommonData/data/tecpetal8b.xml', + 'Geometry/TrackerCommonData/data/tecwheel/2021/v1/tecwheel.xml', + 'Geometry/TrackerCommonData/data/tecwheela.xml', + 'Geometry/TrackerCommonData/data/tecwheelb.xml', + 'Geometry/TrackerCommonData/data/tecwheelc.xml', + 'Geometry/TrackerCommonData/data/tecwheeld.xml', + 'Geometry/TrackerCommonData/data/tecwheel6.xml', + 'Geometry/TrackerCommonData/data/tecservices.xml', + 'Geometry/TrackerCommonData/data/tecbackplate.xml', + 'Geometry/TrackerCommonData/data/tec.xml', + 'Geometry/TrackerCommonData/data/Run2/tracker.xml', + 'Geometry/TrackerCommonData/data/trackerpixbar.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerpixfwd.xml', + 'Geometry/TrackerCommonData/data/trackertibtidservices.xml', + 'Geometry/TrackerCommonData/data/trackertib.xml', + 'Geometry/TrackerCommonData/data/trackertid.xml', + 'Geometry/TrackerCommonData/data/trackertob.xml', + 'Geometry/TrackerCommonData/data/trackertec.xml', + 'Geometry/TrackerCommonData/data/v2/trackerbulkhead.xml', + 'Geometry/TrackerCommonData/data/trackerother.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackersens.xml', + 'Geometry/TrackerRecoData/data/PhaseI/v1/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseI/v1/trackingMaterialGroups_ForPhaseI.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/eecon.xml', + 'Geometry/EcalCommonData/data/escon.xml', + 'Geometry/EcalCommonData/data/eregalgo/2017/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/EcalCommonData/data/eefixed/2021/v1/eefixed.xml', + 'Geometry/EcalCommonData/data/eehier.xml', + 'Geometry/EcalCommonData/data/eealgo.xml', + 'Geometry/EcalCommonData/data/esalgo.xml', + 'Geometry/EcalCommonData/data/eeF.xml', + 'Geometry/EcalCommonData/data/eeB.xml', + 'Geometry/EcalCommonData/data/ectkcable.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/PhaseI/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalendcap/PhaseI/hcalendcapalgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2021/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2021/v2/hcalRecNumbering.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/ForwardCommonData/data/forward/2021/v1/forward.xml', + 'Geometry/ForwardCommonData/data/totemt2/2021/v1/totemt2.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2021/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/bhm.xml', + 'Geometry/ForwardCommonData/data/pltbcm/2021/v1/pltbcm.xml', + 'Geometry/ForwardCommonData/data/bcm1f/2021/v1/bcm1f.xml', + 'Geometry/ForwardCommonData/data/plt/2021/v1/plt.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2021/v3/zdc.xml', + 'Geometry/ForwardCommonData/data/rpd/2021/v2/rpd.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/VeryForwardData/data/RP_Box.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_000.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_001.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_002.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_003.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_004.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_005.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_020.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_021.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_022.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_023.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_024.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_025.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_100.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_101.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_102.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_103.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_104.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_105.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_120.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_121.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_122.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_123.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_124.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_125.xml', + 'Geometry/VeryForwardData/data/RP_Hybrid/v2/RP_Hybrid.xml', + 'Geometry/VeryForwardData/data/RP_Materials/v5/RP_Materials.xml', + 'Geometry/VeryForwardData/data/RP_Transformations.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_000.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_001.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_002.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_004.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_005.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_020.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_021.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_024.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_025.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_100.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_101.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_102.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_104.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_105.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_120.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_121.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_124.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_125.xml', + 'Geometry/VeryForwardData/data/RP_Device/v1/RP_Device.xml', + 'Geometry/VeryForwardData/data/RP_Vertical_Device/2021/Simu/v2/RP_Vertical_Device.xml', + 'Geometry/VeryForwardData/data/RP_Horizontal_Device/2021/Simu/v2/RP_Horizontal_Device.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_Stations_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Cuts_Per_Region/Simu/v1/CTPPS_Cuts_Per_Region.xml', + 'Geometry/VeryForwardData/data/RP_Sensitive_Dets.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Transformations.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Station_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Horizontal_Pot/v2/CTPPS_Timing_Horizontal_Pot.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern1_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment5.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Detector_Assembly/v1/CTPPS_Diamond_Detector_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_022.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_122.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Sensitive_Dets_TimingHits.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v3/PPS_Pixel_Module_2x2_Run3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v2/PPS_Pixel_Sens.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_003.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_023.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_103.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_123.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/RP_Dist_Beam_Cent/Simu/v1/RP_Dist_Beam_Cent.xml', + 'Geometry/EcalSimData/data/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/2021/v2/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2021/v1/CaloUtil.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecs/2021/v2/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/totemsensT2/2021/totemsensT2.xml', + 'Geometry/ForwardCommonData/data/bhmsens.xml', + 'Geometry/ForwardSimData/data/pltsens.xml', + 'Geometry/ForwardSimData/data/bcm1fsens.xml', + 'Geometry/ForwardSimData/data/zdcsens/2021/v1/zdcsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2021/v2/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/EcalSimData/data/ESProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/ForwardSimData/data/bhmProdCuts/2021/v1/bhmProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v3/zdcProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatPlus05PercentXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatPlus05PercentXML_cfi.py new file mode 100644 index 0000000000000..27c12aeaa27ea --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatPlus05PercentXML_cfi.py @@ -0,0 +1,386 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/v2/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/pixfwdMaterials.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/v1/pixbarmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/v2/tibtidcommonmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/v2/tibmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/v2/tidmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/v2/tobmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus05Percent/2021/tecmaterial.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdCylinder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdDisks.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdSupportRingParameters.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbar.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpatchpannel.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpixelnose.xml', + 'Geometry/TrackerCommonData/data/tibmodpar.xml', + 'Geometry/TrackerCommonData/data/tibmodule0.xml', + 'Geometry/TrackerCommonData/data/tibmodule0a.xml', + 'Geometry/TrackerCommonData/data/tibmodule0b.xml', + 'Geometry/TrackerCommonData/data/tibmodule2.xml', + 'Geometry/TrackerCommonData/data/tibstringpar.xml', + 'Geometry/TrackerCommonData/data/tibstring0ll.xml', + 'Geometry/TrackerCommonData/data/tibstring0lr.xml', + 'Geometry/TrackerCommonData/data/tibstring0ul.xml', + 'Geometry/TrackerCommonData/data/tibstring0ur.xml', + 'Geometry/TrackerCommonData/data/tibstring0.xml', + 'Geometry/TrackerCommonData/data/tibstring1ll.xml', + 'Geometry/TrackerCommonData/data/tibstring1lr.xml', + 'Geometry/TrackerCommonData/data/tibstring1ul.xml', + 'Geometry/TrackerCommonData/data/tibstring1ur.xml', + 'Geometry/TrackerCommonData/data/tibstring1.xml', + 'Geometry/TrackerCommonData/data/tibstring2ll.xml', + 'Geometry/TrackerCommonData/data/tibstring2lr.xml', + 'Geometry/TrackerCommonData/data/tibstring2ul.xml', + 'Geometry/TrackerCommonData/data/tibstring2ur.xml', + 'Geometry/TrackerCommonData/data/tibstring2.xml', + 'Geometry/TrackerCommonData/data/tibstring3ll.xml', + 'Geometry/TrackerCommonData/data/tibstring3lr.xml', + 'Geometry/TrackerCommonData/data/tibstring3ul.xml', + 'Geometry/TrackerCommonData/data/tibstring3ur.xml', + 'Geometry/TrackerCommonData/data/tibstring3.xml', + 'Geometry/TrackerCommonData/data/tiblayerpar.xml', + 'Geometry/TrackerCommonData/data/tiblayer0.xml', + 'Geometry/TrackerCommonData/data/tiblayer1.xml', + 'Geometry/TrackerCommonData/data/tiblayer2.xml', + 'Geometry/TrackerCommonData/data/tiblayer3.xml', + 'Geometry/TrackerCommonData/data/tib.xml', + 'Geometry/TrackerCommonData/data/tidmodpar.xml', + 'Geometry/TrackerCommonData/data/tidmodule0.xml', + 'Geometry/TrackerCommonData/data/tidmodule0r.xml', + 'Geometry/TrackerCommonData/data/tidmodule0l.xml', + 'Geometry/TrackerCommonData/data/tidmodule1.xml', + 'Geometry/TrackerCommonData/data/tidmodule1r.xml', + 'Geometry/TrackerCommonData/data/tidmodule1l.xml', + 'Geometry/TrackerCommonData/data/tidmodule2.xml', + 'Geometry/TrackerCommonData/data/tidringpar.xml', + 'Geometry/TrackerCommonData/data/tidring0.xml', + 'Geometry/TrackerCommonData/data/tidring0f.xml', + 'Geometry/TrackerCommonData/data/tidring0b.xml', + 'Geometry/TrackerCommonData/data/tidring1.xml', + 'Geometry/TrackerCommonData/data/tidring1f.xml', + 'Geometry/TrackerCommonData/data/tidring1b.xml', + 'Geometry/TrackerCommonData/data/tidring2.xml', + 'Geometry/TrackerCommonData/data/tid.xml', + 'Geometry/TrackerCommonData/data/tidf.xml', + 'Geometry/TrackerCommonData/data/tidb.xml', + 'Geometry/TrackerCommonData/data/tibtidservices.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesf.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesb.xml', + 'Geometry/TrackerCommonData/data/tobmodpar.xml', + 'Geometry/TrackerCommonData/data/tobmodule0.xml', + 'Geometry/TrackerCommonData/data/tobmodule2.xml', + 'Geometry/TrackerCommonData/data/tobmodule4.xml', + 'Geometry/TrackerCommonData/data/tobrodpar.xml', + 'Geometry/TrackerCommonData/data/tobrod0c.xml', + 'Geometry/TrackerCommonData/data/tobrod0l.xml', + 'Geometry/TrackerCommonData/data/tobrod0h.xml', + 'Geometry/TrackerCommonData/data/tobrod0.xml', + 'Geometry/TrackerCommonData/data/tobrod1l.xml', + 'Geometry/TrackerCommonData/data/tobrod1h.xml', + 'Geometry/TrackerCommonData/data/tobrod1.xml', + 'Geometry/TrackerCommonData/data/tobrod2c.xml', + 'Geometry/TrackerCommonData/data/tobrod2l.xml', + 'Geometry/TrackerCommonData/data/tobrod2h.xml', + 'Geometry/TrackerCommonData/data/tobrod2.xml', + 'Geometry/TrackerCommonData/data/tobrod3l.xml', + 'Geometry/TrackerCommonData/data/tobrod3h.xml', + 'Geometry/TrackerCommonData/data/tobrod3.xml', + 'Geometry/TrackerCommonData/data/tobrod4c.xml', + 'Geometry/TrackerCommonData/data/tobrod4l.xml', + 'Geometry/TrackerCommonData/data/tobrod4h.xml', + 'Geometry/TrackerCommonData/data/tobrod4.xml', + 'Geometry/TrackerCommonData/data/tobrod5l.xml', + 'Geometry/TrackerCommonData/data/tobrod5h.xml', + 'Geometry/TrackerCommonData/data/tobrod5.xml', + 'Geometry/TrackerCommonData/data/tob/v3/tob.xml', + 'Geometry/TrackerCommonData/data/tecmodpar.xml', + 'Geometry/TrackerCommonData/data/tecmodule0.xml', + 'Geometry/TrackerCommonData/data/tecmodule0r.xml', + 'Geometry/TrackerCommonData/data/tecmodule0s.xml', + 'Geometry/TrackerCommonData/data/tecmodule1.xml', + 'Geometry/TrackerCommonData/data/tecmodule1r.xml', + 'Geometry/TrackerCommonData/data/tecmodule1s.xml', + 'Geometry/TrackerCommonData/data/tecmodule2.xml', + 'Geometry/TrackerCommonData/data/tecmodule3.xml', + 'Geometry/TrackerCommonData/data/tecmodule4.xml', + 'Geometry/TrackerCommonData/data/tecmodule4r.xml', + 'Geometry/TrackerCommonData/data/tecmodule4s.xml', + 'Geometry/TrackerCommonData/data/tecmodule5.xml', + 'Geometry/TrackerCommonData/data/tecmodule6.xml', + 'Geometry/TrackerCommonData/data/tecpetpar.xml', + 'Geometry/TrackerCommonData/data/tecring0.xml', + 'Geometry/TrackerCommonData/data/tecring1.xml', + 'Geometry/TrackerCommonData/data/tecring2.xml', + 'Geometry/TrackerCommonData/data/tecring3.xml', + 'Geometry/TrackerCommonData/data/tecring4.xml', + 'Geometry/TrackerCommonData/data/tecring5.xml', + 'Geometry/TrackerCommonData/data/tecring6.xml', + 'Geometry/TrackerCommonData/data/tecring0f.xml', + 'Geometry/TrackerCommonData/data/tecring1f.xml', + 'Geometry/TrackerCommonData/data/tecring2f.xml', + 'Geometry/TrackerCommonData/data/tecring3f.xml', + 'Geometry/TrackerCommonData/data/tecring4f.xml', + 'Geometry/TrackerCommonData/data/tecring5f.xml', + 'Geometry/TrackerCommonData/data/tecring6f.xml', + 'Geometry/TrackerCommonData/data/tecring0b.xml', + 'Geometry/TrackerCommonData/data/tecring1b.xml', + 'Geometry/TrackerCommonData/data/tecring2b.xml', + 'Geometry/TrackerCommonData/data/tecring3b.xml', + 'Geometry/TrackerCommonData/data/tecring4b.xml', + 'Geometry/TrackerCommonData/data/tecring5b.xml', + 'Geometry/TrackerCommonData/data/tecring6b.xml', + 'Geometry/TrackerCommonData/data/tecpetalf.xml', + 'Geometry/TrackerCommonData/data/tecpetalb.xml', + 'Geometry/TrackerCommonData/data/tecpetal0.xml', + 'Geometry/TrackerCommonData/data/tecpetal0f.xml', + 'Geometry/TrackerCommonData/data/tecpetal0b.xml', + 'Geometry/TrackerCommonData/data/tecpetal3.xml', + 'Geometry/TrackerCommonData/data/tecpetal3f.xml', + 'Geometry/TrackerCommonData/data/tecpetal3b.xml', + 'Geometry/TrackerCommonData/data/tecpetal6f.xml', + 'Geometry/TrackerCommonData/data/tecpetal6b.xml', + 'Geometry/TrackerCommonData/data/tecpetal8f.xml', + 'Geometry/TrackerCommonData/data/tecpetal8b.xml', + 'Geometry/TrackerCommonData/data/tecwheel/2021/v1/tecwheel.xml', + 'Geometry/TrackerCommonData/data/tecwheela.xml', + 'Geometry/TrackerCommonData/data/tecwheelb.xml', + 'Geometry/TrackerCommonData/data/tecwheelc.xml', + 'Geometry/TrackerCommonData/data/tecwheeld.xml', + 'Geometry/TrackerCommonData/data/tecwheel6.xml', + 'Geometry/TrackerCommonData/data/tecservices.xml', + 'Geometry/TrackerCommonData/data/tecbackplate.xml', + 'Geometry/TrackerCommonData/data/tec.xml', + 'Geometry/TrackerCommonData/data/Run2/tracker.xml', + 'Geometry/TrackerCommonData/data/trackerpixbar.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerpixfwd.xml', + 'Geometry/TrackerCommonData/data/trackertibtidservices.xml', + 'Geometry/TrackerCommonData/data/trackertib.xml', + 'Geometry/TrackerCommonData/data/trackertid.xml', + 'Geometry/TrackerCommonData/data/trackertob.xml', + 'Geometry/TrackerCommonData/data/trackertec.xml', + 'Geometry/TrackerCommonData/data/v2/trackerbulkhead.xml', + 'Geometry/TrackerCommonData/data/trackerother.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackersens.xml', + 'Geometry/TrackerRecoData/data/PhaseI/v1/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseI/v1/trackingMaterialGroups_ForPhaseI.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/eecon.xml', + 'Geometry/EcalCommonData/data/escon.xml', + 'Geometry/EcalCommonData/data/eregalgo/2017/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/EcalCommonData/data/eefixed/2021/v1/eefixed.xml', + 'Geometry/EcalCommonData/data/eehier.xml', + 'Geometry/EcalCommonData/data/eealgo.xml', + 'Geometry/EcalCommonData/data/esalgo.xml', + 'Geometry/EcalCommonData/data/eeF.xml', + 'Geometry/EcalCommonData/data/eeB.xml', + 'Geometry/EcalCommonData/data/ectkcable.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/PhaseI/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalendcap/PhaseI/hcalendcapalgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2021/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2021/v2/hcalRecNumbering.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/ForwardCommonData/data/forward/2021/v1/forward.xml', + 'Geometry/ForwardCommonData/data/totemt2/2021/v1/totemt2.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2021/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/bhm.xml', + 'Geometry/ForwardCommonData/data/pltbcm/2021/v1/pltbcm.xml', + 'Geometry/ForwardCommonData/data/bcm1f/2021/v1/bcm1f.xml', + 'Geometry/ForwardCommonData/data/plt/2021/v1/plt.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2021/v3/zdc.xml', + 'Geometry/ForwardCommonData/data/rpd/2021/v2/rpd.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/VeryForwardData/data/RP_Box.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_000.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_001.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_002.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_003.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_004.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_005.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_020.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_021.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_022.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_023.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_024.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_025.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_100.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_101.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_102.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_103.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_104.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_105.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_120.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_121.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_122.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_123.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_124.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_125.xml', + 'Geometry/VeryForwardData/data/RP_Hybrid/v2/RP_Hybrid.xml', + 'Geometry/VeryForwardData/data/RP_Materials/v5/RP_Materials.xml', + 'Geometry/VeryForwardData/data/RP_Transformations.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_000.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_001.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_002.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_004.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_005.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_020.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_021.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_024.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_025.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_100.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_101.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_102.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_104.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_105.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_120.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_121.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_124.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_125.xml', + 'Geometry/VeryForwardData/data/RP_Device/v1/RP_Device.xml', + 'Geometry/VeryForwardData/data/RP_Vertical_Device/2021/Simu/v2/RP_Vertical_Device.xml', + 'Geometry/VeryForwardData/data/RP_Horizontal_Device/2021/Simu/v2/RP_Horizontal_Device.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_Stations_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Cuts_Per_Region/Simu/v1/CTPPS_Cuts_Per_Region.xml', + 'Geometry/VeryForwardData/data/RP_Sensitive_Dets.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Transformations.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Station_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Horizontal_Pot/v2/CTPPS_Timing_Horizontal_Pot.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern1_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment5.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Detector_Assembly/v1/CTPPS_Diamond_Detector_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_022.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_122.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Sensitive_Dets_TimingHits.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v3/PPS_Pixel_Module_2x2_Run3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v2/PPS_Pixel_Sens.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_003.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_023.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_103.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_123.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/RP_Dist_Beam_Cent/Simu/v1/RP_Dist_Beam_Cent.xml', + 'Geometry/EcalSimData/data/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/2021/v2/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2021/v1/CaloUtil.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecs/2021/v2/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/totemsensT2/2021/totemsensT2.xml', + 'Geometry/ForwardCommonData/data/bhmsens.xml', + 'Geometry/ForwardSimData/data/pltsens.xml', + 'Geometry/ForwardSimData/data/bcm1fsens.xml', + 'Geometry/ForwardSimData/data/zdcsens/2021/v1/zdcsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2021/v2/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/EcalSimData/data/ESProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/ForwardSimData/data/bhmProdCuts/2021/v1/bhmProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v3/zdcProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatPlus10PercentXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatPlus10PercentXML_cfi.py new file mode 100644 index 0000000000000..6659492bb2d79 --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025FlatPlus10PercentXML_cfi.py @@ -0,0 +1,386 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/v2/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/pixfwdMaterials.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/v1/pixbarmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/v2/tibtidcommonmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/v2/tibmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/v2/tidmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/v2/tobmaterial.xml', + 'Geometry/TrackerCommonData/data/FlatPlus10Percent/2021/tecmaterial.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdCylinder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdDisks.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdSupportRingParameters.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbar.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpatchpannel.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpixelnose.xml', + 'Geometry/TrackerCommonData/data/tibmodpar.xml', + 'Geometry/TrackerCommonData/data/tibmodule0.xml', + 'Geometry/TrackerCommonData/data/tibmodule0a.xml', + 'Geometry/TrackerCommonData/data/tibmodule0b.xml', + 'Geometry/TrackerCommonData/data/tibmodule2.xml', + 'Geometry/TrackerCommonData/data/tibstringpar.xml', + 'Geometry/TrackerCommonData/data/tibstring0ll.xml', + 'Geometry/TrackerCommonData/data/tibstring0lr.xml', + 'Geometry/TrackerCommonData/data/tibstring0ul.xml', + 'Geometry/TrackerCommonData/data/tibstring0ur.xml', + 'Geometry/TrackerCommonData/data/tibstring0.xml', + 'Geometry/TrackerCommonData/data/tibstring1ll.xml', + 'Geometry/TrackerCommonData/data/tibstring1lr.xml', + 'Geometry/TrackerCommonData/data/tibstring1ul.xml', + 'Geometry/TrackerCommonData/data/tibstring1ur.xml', + 'Geometry/TrackerCommonData/data/tibstring1.xml', + 'Geometry/TrackerCommonData/data/tibstring2ll.xml', + 'Geometry/TrackerCommonData/data/tibstring2lr.xml', + 'Geometry/TrackerCommonData/data/tibstring2ul.xml', + 'Geometry/TrackerCommonData/data/tibstring2ur.xml', + 'Geometry/TrackerCommonData/data/tibstring2.xml', + 'Geometry/TrackerCommonData/data/tibstring3ll.xml', + 'Geometry/TrackerCommonData/data/tibstring3lr.xml', + 'Geometry/TrackerCommonData/data/tibstring3ul.xml', + 'Geometry/TrackerCommonData/data/tibstring3ur.xml', + 'Geometry/TrackerCommonData/data/tibstring3.xml', + 'Geometry/TrackerCommonData/data/tiblayerpar.xml', + 'Geometry/TrackerCommonData/data/tiblayer0.xml', + 'Geometry/TrackerCommonData/data/tiblayer1.xml', + 'Geometry/TrackerCommonData/data/tiblayer2.xml', + 'Geometry/TrackerCommonData/data/tiblayer3.xml', + 'Geometry/TrackerCommonData/data/tib.xml', + 'Geometry/TrackerCommonData/data/tidmodpar.xml', + 'Geometry/TrackerCommonData/data/tidmodule0.xml', + 'Geometry/TrackerCommonData/data/tidmodule0r.xml', + 'Geometry/TrackerCommonData/data/tidmodule0l.xml', + 'Geometry/TrackerCommonData/data/tidmodule1.xml', + 'Geometry/TrackerCommonData/data/tidmodule1r.xml', + 'Geometry/TrackerCommonData/data/tidmodule1l.xml', + 'Geometry/TrackerCommonData/data/tidmodule2.xml', + 'Geometry/TrackerCommonData/data/tidringpar.xml', + 'Geometry/TrackerCommonData/data/tidring0.xml', + 'Geometry/TrackerCommonData/data/tidring0f.xml', + 'Geometry/TrackerCommonData/data/tidring0b.xml', + 'Geometry/TrackerCommonData/data/tidring1.xml', + 'Geometry/TrackerCommonData/data/tidring1f.xml', + 'Geometry/TrackerCommonData/data/tidring1b.xml', + 'Geometry/TrackerCommonData/data/tidring2.xml', + 'Geometry/TrackerCommonData/data/tid.xml', + 'Geometry/TrackerCommonData/data/tidf.xml', + 'Geometry/TrackerCommonData/data/tidb.xml', + 'Geometry/TrackerCommonData/data/tibtidservices.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesf.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesb.xml', + 'Geometry/TrackerCommonData/data/tobmodpar.xml', + 'Geometry/TrackerCommonData/data/tobmodule0.xml', + 'Geometry/TrackerCommonData/data/tobmodule2.xml', + 'Geometry/TrackerCommonData/data/tobmodule4.xml', + 'Geometry/TrackerCommonData/data/tobrodpar.xml', + 'Geometry/TrackerCommonData/data/tobrod0c.xml', + 'Geometry/TrackerCommonData/data/tobrod0l.xml', + 'Geometry/TrackerCommonData/data/tobrod0h.xml', + 'Geometry/TrackerCommonData/data/tobrod0.xml', + 'Geometry/TrackerCommonData/data/tobrod1l.xml', + 'Geometry/TrackerCommonData/data/tobrod1h.xml', + 'Geometry/TrackerCommonData/data/tobrod1.xml', + 'Geometry/TrackerCommonData/data/tobrod2c.xml', + 'Geometry/TrackerCommonData/data/tobrod2l.xml', + 'Geometry/TrackerCommonData/data/tobrod2h.xml', + 'Geometry/TrackerCommonData/data/tobrod2.xml', + 'Geometry/TrackerCommonData/data/tobrod3l.xml', + 'Geometry/TrackerCommonData/data/tobrod3h.xml', + 'Geometry/TrackerCommonData/data/tobrod3.xml', + 'Geometry/TrackerCommonData/data/tobrod4c.xml', + 'Geometry/TrackerCommonData/data/tobrod4l.xml', + 'Geometry/TrackerCommonData/data/tobrod4h.xml', + 'Geometry/TrackerCommonData/data/tobrod4.xml', + 'Geometry/TrackerCommonData/data/tobrod5l.xml', + 'Geometry/TrackerCommonData/data/tobrod5h.xml', + 'Geometry/TrackerCommonData/data/tobrod5.xml', + 'Geometry/TrackerCommonData/data/tob/v3/tob.xml', + 'Geometry/TrackerCommonData/data/tecmodpar.xml', + 'Geometry/TrackerCommonData/data/tecmodule0.xml', + 'Geometry/TrackerCommonData/data/tecmodule0r.xml', + 'Geometry/TrackerCommonData/data/tecmodule0s.xml', + 'Geometry/TrackerCommonData/data/tecmodule1.xml', + 'Geometry/TrackerCommonData/data/tecmodule1r.xml', + 'Geometry/TrackerCommonData/data/tecmodule1s.xml', + 'Geometry/TrackerCommonData/data/tecmodule2.xml', + 'Geometry/TrackerCommonData/data/tecmodule3.xml', + 'Geometry/TrackerCommonData/data/tecmodule4.xml', + 'Geometry/TrackerCommonData/data/tecmodule4r.xml', + 'Geometry/TrackerCommonData/data/tecmodule4s.xml', + 'Geometry/TrackerCommonData/data/tecmodule5.xml', + 'Geometry/TrackerCommonData/data/tecmodule6.xml', + 'Geometry/TrackerCommonData/data/tecpetpar.xml', + 'Geometry/TrackerCommonData/data/tecring0.xml', + 'Geometry/TrackerCommonData/data/tecring1.xml', + 'Geometry/TrackerCommonData/data/tecring2.xml', + 'Geometry/TrackerCommonData/data/tecring3.xml', + 'Geometry/TrackerCommonData/data/tecring4.xml', + 'Geometry/TrackerCommonData/data/tecring5.xml', + 'Geometry/TrackerCommonData/data/tecring6.xml', + 'Geometry/TrackerCommonData/data/tecring0f.xml', + 'Geometry/TrackerCommonData/data/tecring1f.xml', + 'Geometry/TrackerCommonData/data/tecring2f.xml', + 'Geometry/TrackerCommonData/data/tecring3f.xml', + 'Geometry/TrackerCommonData/data/tecring4f.xml', + 'Geometry/TrackerCommonData/data/tecring5f.xml', + 'Geometry/TrackerCommonData/data/tecring6f.xml', + 'Geometry/TrackerCommonData/data/tecring0b.xml', + 'Geometry/TrackerCommonData/data/tecring1b.xml', + 'Geometry/TrackerCommonData/data/tecring2b.xml', + 'Geometry/TrackerCommonData/data/tecring3b.xml', + 'Geometry/TrackerCommonData/data/tecring4b.xml', + 'Geometry/TrackerCommonData/data/tecring5b.xml', + 'Geometry/TrackerCommonData/data/tecring6b.xml', + 'Geometry/TrackerCommonData/data/tecpetalf.xml', + 'Geometry/TrackerCommonData/data/tecpetalb.xml', + 'Geometry/TrackerCommonData/data/tecpetal0.xml', + 'Geometry/TrackerCommonData/data/tecpetal0f.xml', + 'Geometry/TrackerCommonData/data/tecpetal0b.xml', + 'Geometry/TrackerCommonData/data/tecpetal3.xml', + 'Geometry/TrackerCommonData/data/tecpetal3f.xml', + 'Geometry/TrackerCommonData/data/tecpetal3b.xml', + 'Geometry/TrackerCommonData/data/tecpetal6f.xml', + 'Geometry/TrackerCommonData/data/tecpetal6b.xml', + 'Geometry/TrackerCommonData/data/tecpetal8f.xml', + 'Geometry/TrackerCommonData/data/tecpetal8b.xml', + 'Geometry/TrackerCommonData/data/tecwheel/2021/v1/tecwheel.xml', + 'Geometry/TrackerCommonData/data/tecwheela.xml', + 'Geometry/TrackerCommonData/data/tecwheelb.xml', + 'Geometry/TrackerCommonData/data/tecwheelc.xml', + 'Geometry/TrackerCommonData/data/tecwheeld.xml', + 'Geometry/TrackerCommonData/data/tecwheel6.xml', + 'Geometry/TrackerCommonData/data/tecservices.xml', + 'Geometry/TrackerCommonData/data/tecbackplate.xml', + 'Geometry/TrackerCommonData/data/tec.xml', + 'Geometry/TrackerCommonData/data/Run2/tracker.xml', + 'Geometry/TrackerCommonData/data/trackerpixbar.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerpixfwd.xml', + 'Geometry/TrackerCommonData/data/trackertibtidservices.xml', + 'Geometry/TrackerCommonData/data/trackertib.xml', + 'Geometry/TrackerCommonData/data/trackertid.xml', + 'Geometry/TrackerCommonData/data/trackertob.xml', + 'Geometry/TrackerCommonData/data/trackertec.xml', + 'Geometry/TrackerCommonData/data/v2/trackerbulkhead.xml', + 'Geometry/TrackerCommonData/data/trackerother.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackersens.xml', + 'Geometry/TrackerRecoData/data/PhaseI/v1/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseI/v1/trackingMaterialGroups_ForPhaseI.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/eecon.xml', + 'Geometry/EcalCommonData/data/escon.xml', + 'Geometry/EcalCommonData/data/eregalgo/2017/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/EcalCommonData/data/eefixed/2021/v1/eefixed.xml', + 'Geometry/EcalCommonData/data/eehier.xml', + 'Geometry/EcalCommonData/data/eealgo.xml', + 'Geometry/EcalCommonData/data/esalgo.xml', + 'Geometry/EcalCommonData/data/eeF.xml', + 'Geometry/EcalCommonData/data/eeB.xml', + 'Geometry/EcalCommonData/data/ectkcable.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/PhaseI/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalendcap/PhaseI/hcalendcapalgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2021/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2021/v2/hcalRecNumbering.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/ForwardCommonData/data/forward/2021/v1/forward.xml', + 'Geometry/ForwardCommonData/data/totemt2/2021/v1/totemt2.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2021/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/bhm.xml', + 'Geometry/ForwardCommonData/data/pltbcm/2021/v1/pltbcm.xml', + 'Geometry/ForwardCommonData/data/bcm1f/2021/v1/bcm1f.xml', + 'Geometry/ForwardCommonData/data/plt/2021/v1/plt.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2021/v3/zdc.xml', + 'Geometry/ForwardCommonData/data/rpd/2021/v2/rpd.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/VeryForwardData/data/RP_Box.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_000.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_001.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_002.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_003.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_004.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_005.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_020.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_021.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_022.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_023.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_024.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_025.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_100.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_101.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_102.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_103.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_104.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_105.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_120.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_121.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_122.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_123.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_124.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_125.xml', + 'Geometry/VeryForwardData/data/RP_Hybrid/v2/RP_Hybrid.xml', + 'Geometry/VeryForwardData/data/RP_Materials/v5/RP_Materials.xml', + 'Geometry/VeryForwardData/data/RP_Transformations.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_000.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_001.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_002.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_004.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_005.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_020.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_021.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_024.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_025.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_100.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_101.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_102.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_104.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_105.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_120.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_121.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_124.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_125.xml', + 'Geometry/VeryForwardData/data/RP_Device/v1/RP_Device.xml', + 'Geometry/VeryForwardData/data/RP_Vertical_Device/2021/Simu/v2/RP_Vertical_Device.xml', + 'Geometry/VeryForwardData/data/RP_Horizontal_Device/2021/Simu/v2/RP_Horizontal_Device.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_Stations_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Cuts_Per_Region/Simu/v1/CTPPS_Cuts_Per_Region.xml', + 'Geometry/VeryForwardData/data/RP_Sensitive_Dets.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Transformations.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Station_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Horizontal_Pot/v2/CTPPS_Timing_Horizontal_Pot.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern1_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment5.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Detector_Assembly/v1/CTPPS_Diamond_Detector_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_022.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_122.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Sensitive_Dets_TimingHits.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v3/PPS_Pixel_Module_2x2_Run3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v2/PPS_Pixel_Sens.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_003.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_023.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_103.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_123.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/RP_Dist_Beam_Cent/Simu/v1/RP_Dist_Beam_Cent.xml', + 'Geometry/EcalSimData/data/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/2021/v2/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2021/v1/CaloUtil.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecs/2021/v2/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/totemsensT2/2021/totemsensT2.xml', + 'Geometry/ForwardCommonData/data/bhmsens.xml', + 'Geometry/ForwardSimData/data/pltsens.xml', + 'Geometry/ForwardSimData/data/bcm1fsens.xml', + 'Geometry/ForwardSimData/data/zdcsens/2021/v1/zdcsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2021/v2/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/EcalSimData/data/ESProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/ForwardSimData/data/bhmProdCuts/2021/v1/bhmProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v3/zdcProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2025XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025XML_cfi.py new file mode 100644 index 0000000000000..f2c4df03ec1db --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025XML_cfi.py @@ -0,0 +1,386 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v4/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/pixfwdMaterials/2021/v3/pixfwdMaterials.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdCylinder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdDisks.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdSupportRingParameters.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixbarmaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbar.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpatchpannel.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpixelnose.xml', + 'Geometry/TrackerCommonData/data/tibtidcommonmaterial/2021/v2/tibtidcommonmaterial.xml', + 'Geometry/TrackerCommonData/data/tibmaterial/2021/v2/tibmaterial.xml', + 'Geometry/TrackerCommonData/data/tibmodpar.xml', + 'Geometry/TrackerCommonData/data/tibmodule0.xml', + 'Geometry/TrackerCommonData/data/tibmodule0a.xml', + 'Geometry/TrackerCommonData/data/tibmodule0b.xml', + 'Geometry/TrackerCommonData/data/tibmodule2.xml', + 'Geometry/TrackerCommonData/data/tibstringpar.xml', + 'Geometry/TrackerCommonData/data/tibstring0ll.xml', + 'Geometry/TrackerCommonData/data/tibstring0lr.xml', + 'Geometry/TrackerCommonData/data/tibstring0ul.xml', + 'Geometry/TrackerCommonData/data/tibstring0ur.xml', + 'Geometry/TrackerCommonData/data/tibstring0.xml', + 'Geometry/TrackerCommonData/data/tibstring1ll.xml', + 'Geometry/TrackerCommonData/data/tibstring1lr.xml', + 'Geometry/TrackerCommonData/data/tibstring1ul.xml', + 'Geometry/TrackerCommonData/data/tibstring1ur.xml', + 'Geometry/TrackerCommonData/data/tibstring1.xml', + 'Geometry/TrackerCommonData/data/tibstring2ll.xml', + 'Geometry/TrackerCommonData/data/tibstring2lr.xml', + 'Geometry/TrackerCommonData/data/tibstring2ul.xml', + 'Geometry/TrackerCommonData/data/tibstring2ur.xml', + 'Geometry/TrackerCommonData/data/tibstring2.xml', + 'Geometry/TrackerCommonData/data/tibstring3ll.xml', + 'Geometry/TrackerCommonData/data/tibstring3lr.xml', + 'Geometry/TrackerCommonData/data/tibstring3ul.xml', + 'Geometry/TrackerCommonData/data/tibstring3ur.xml', + 'Geometry/TrackerCommonData/data/tibstring3.xml', + 'Geometry/TrackerCommonData/data/tiblayerpar.xml', + 'Geometry/TrackerCommonData/data/tiblayer0.xml', + 'Geometry/TrackerCommonData/data/tiblayer1.xml', + 'Geometry/TrackerCommonData/data/tiblayer2.xml', + 'Geometry/TrackerCommonData/data/tiblayer3.xml', + 'Geometry/TrackerCommonData/data/tib.xml', + 'Geometry/TrackerCommonData/data/tidmaterial/2021/v2/tidmaterial.xml', + 'Geometry/TrackerCommonData/data/tidmodpar.xml', + 'Geometry/TrackerCommonData/data/tidmodule0.xml', + 'Geometry/TrackerCommonData/data/tidmodule0r.xml', + 'Geometry/TrackerCommonData/data/tidmodule0l.xml', + 'Geometry/TrackerCommonData/data/tidmodule1.xml', + 'Geometry/TrackerCommonData/data/tidmodule1r.xml', + 'Geometry/TrackerCommonData/data/tidmodule1l.xml', + 'Geometry/TrackerCommonData/data/tidmodule2.xml', + 'Geometry/TrackerCommonData/data/tidringpar.xml', + 'Geometry/TrackerCommonData/data/tidring0.xml', + 'Geometry/TrackerCommonData/data/tidring0f.xml', + 'Geometry/TrackerCommonData/data/tidring0b.xml', + 'Geometry/TrackerCommonData/data/tidring1.xml', + 'Geometry/TrackerCommonData/data/tidring1f.xml', + 'Geometry/TrackerCommonData/data/tidring1b.xml', + 'Geometry/TrackerCommonData/data/tidring2.xml', + 'Geometry/TrackerCommonData/data/tid.xml', + 'Geometry/TrackerCommonData/data/tidf.xml', + 'Geometry/TrackerCommonData/data/tidb.xml', + 'Geometry/TrackerCommonData/data/tibtidservices.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesf.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesb.xml', + 'Geometry/TrackerCommonData/data/tobmaterial/2021/v2/tobmaterial.xml', + 'Geometry/TrackerCommonData/data/tobmodpar.xml', + 'Geometry/TrackerCommonData/data/tobmodule0.xml', + 'Geometry/TrackerCommonData/data/tobmodule2.xml', + 'Geometry/TrackerCommonData/data/tobmodule4.xml', + 'Geometry/TrackerCommonData/data/tobrodpar.xml', + 'Geometry/TrackerCommonData/data/tobrod0c.xml', + 'Geometry/TrackerCommonData/data/tobrod0l.xml', + 'Geometry/TrackerCommonData/data/tobrod0h.xml', + 'Geometry/TrackerCommonData/data/tobrod0.xml', + 'Geometry/TrackerCommonData/data/tobrod1l.xml', + 'Geometry/TrackerCommonData/data/tobrod1h.xml', + 'Geometry/TrackerCommonData/data/tobrod1.xml', + 'Geometry/TrackerCommonData/data/tobrod2c.xml', + 'Geometry/TrackerCommonData/data/tobrod2l.xml', + 'Geometry/TrackerCommonData/data/tobrod2h.xml', + 'Geometry/TrackerCommonData/data/tobrod2.xml', + 'Geometry/TrackerCommonData/data/tobrod3l.xml', + 'Geometry/TrackerCommonData/data/tobrod3h.xml', + 'Geometry/TrackerCommonData/data/tobrod3.xml', + 'Geometry/TrackerCommonData/data/tobrod4c.xml', + 'Geometry/TrackerCommonData/data/tobrod4l.xml', + 'Geometry/TrackerCommonData/data/tobrod4h.xml', + 'Geometry/TrackerCommonData/data/tobrod4.xml', + 'Geometry/TrackerCommonData/data/tobrod5l.xml', + 'Geometry/TrackerCommonData/data/tobrod5h.xml', + 'Geometry/TrackerCommonData/data/tobrod5.xml', + 'Geometry/TrackerCommonData/data/tob/v3/tob.xml', + 'Geometry/TrackerCommonData/data/tecmaterial/2021/v1/tecmaterial.xml', + 'Geometry/TrackerCommonData/data/tecmodpar.xml', + 'Geometry/TrackerCommonData/data/tecmodule0.xml', + 'Geometry/TrackerCommonData/data/tecmodule0r.xml', + 'Geometry/TrackerCommonData/data/tecmodule0s.xml', + 'Geometry/TrackerCommonData/data/tecmodule1.xml', + 'Geometry/TrackerCommonData/data/tecmodule1r.xml', + 'Geometry/TrackerCommonData/data/tecmodule1s.xml', + 'Geometry/TrackerCommonData/data/tecmodule2.xml', + 'Geometry/TrackerCommonData/data/tecmodule3.xml', + 'Geometry/TrackerCommonData/data/tecmodule4.xml', + 'Geometry/TrackerCommonData/data/tecmodule4r.xml', + 'Geometry/TrackerCommonData/data/tecmodule4s.xml', + 'Geometry/TrackerCommonData/data/tecmodule5.xml', + 'Geometry/TrackerCommonData/data/tecmodule6.xml', + 'Geometry/TrackerCommonData/data/tecpetpar.xml', + 'Geometry/TrackerCommonData/data/tecring0.xml', + 'Geometry/TrackerCommonData/data/tecring1.xml', + 'Geometry/TrackerCommonData/data/tecring2.xml', + 'Geometry/TrackerCommonData/data/tecring3.xml', + 'Geometry/TrackerCommonData/data/tecring4.xml', + 'Geometry/TrackerCommonData/data/tecring5.xml', + 'Geometry/TrackerCommonData/data/tecring6.xml', + 'Geometry/TrackerCommonData/data/tecring0f.xml', + 'Geometry/TrackerCommonData/data/tecring1f.xml', + 'Geometry/TrackerCommonData/data/tecring2f.xml', + 'Geometry/TrackerCommonData/data/tecring3f.xml', + 'Geometry/TrackerCommonData/data/tecring4f.xml', + 'Geometry/TrackerCommonData/data/tecring5f.xml', + 'Geometry/TrackerCommonData/data/tecring6f.xml', + 'Geometry/TrackerCommonData/data/tecring0b.xml', + 'Geometry/TrackerCommonData/data/tecring1b.xml', + 'Geometry/TrackerCommonData/data/tecring2b.xml', + 'Geometry/TrackerCommonData/data/tecring3b.xml', + 'Geometry/TrackerCommonData/data/tecring4b.xml', + 'Geometry/TrackerCommonData/data/tecring5b.xml', + 'Geometry/TrackerCommonData/data/tecring6b.xml', + 'Geometry/TrackerCommonData/data/tecpetalf.xml', + 'Geometry/TrackerCommonData/data/tecpetalb.xml', + 'Geometry/TrackerCommonData/data/tecpetal0.xml', + 'Geometry/TrackerCommonData/data/tecpetal0f.xml', + 'Geometry/TrackerCommonData/data/tecpetal0b.xml', + 'Geometry/TrackerCommonData/data/tecpetal3.xml', + 'Geometry/TrackerCommonData/data/tecpetal3f.xml', + 'Geometry/TrackerCommonData/data/tecpetal3b.xml', + 'Geometry/TrackerCommonData/data/tecpetal6f.xml', + 'Geometry/TrackerCommonData/data/tecpetal6b.xml', + 'Geometry/TrackerCommonData/data/tecpetal8f.xml', + 'Geometry/TrackerCommonData/data/tecpetal8b.xml', + 'Geometry/TrackerCommonData/data/tecwheel/2021/v1/tecwheel.xml', + 'Geometry/TrackerCommonData/data/tecwheela.xml', + 'Geometry/TrackerCommonData/data/tecwheelb.xml', + 'Geometry/TrackerCommonData/data/tecwheelc.xml', + 'Geometry/TrackerCommonData/data/tecwheeld.xml', + 'Geometry/TrackerCommonData/data/tecwheel6.xml', + 'Geometry/TrackerCommonData/data/tecservices.xml', + 'Geometry/TrackerCommonData/data/tecbackplate.xml', + 'Geometry/TrackerCommonData/data/tec.xml', + 'Geometry/TrackerCommonData/data/Run2/tracker.xml', + 'Geometry/TrackerCommonData/data/trackerpixbar.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerpixfwd.xml', + 'Geometry/TrackerCommonData/data/trackertibtidservices.xml', + 'Geometry/TrackerCommonData/data/trackertib.xml', + 'Geometry/TrackerCommonData/data/trackertid.xml', + 'Geometry/TrackerCommonData/data/trackertob.xml', + 'Geometry/TrackerCommonData/data/trackertec.xml', + 'Geometry/TrackerCommonData/data/v2/trackerbulkhead.xml', + 'Geometry/TrackerCommonData/data/trackerother.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackersens.xml', + 'Geometry/TrackerRecoData/data/PhaseI/v1/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseI/v1/trackingMaterialGroups_ForPhaseI.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/eecon.xml', + 'Geometry/EcalCommonData/data/escon.xml', + 'Geometry/EcalCommonData/data/eregalgo/2017/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/EcalCommonData/data/eefixed/2021/v1/eefixed.xml', + 'Geometry/EcalCommonData/data/eehier.xml', + 'Geometry/EcalCommonData/data/eealgo.xml', + 'Geometry/EcalCommonData/data/esalgo.xml', + 'Geometry/EcalCommonData/data/eeF.xml', + 'Geometry/EcalCommonData/data/eeB.xml', + 'Geometry/EcalCommonData/data/ectkcable.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/PhaseI/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalendcap/PhaseI/hcalendcapalgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2021/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2021/v2/hcalRecNumbering.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/ForwardCommonData/data/forward/2021/v1/forward.xml', + 'Geometry/ForwardCommonData/data/totemt2/2021/v1/totemt2.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2021/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/bhm.xml', + 'Geometry/ForwardCommonData/data/pltbcm/2021/v1/pltbcm.xml', + 'Geometry/ForwardCommonData/data/bcm1f/2021/v1/bcm1f.xml', + 'Geometry/ForwardCommonData/data/plt/2021/v1/plt.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2021/v3/zdc.xml', + 'Geometry/ForwardCommonData/data/rpd/2021/v2/rpd.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/VeryForwardData/data/RP_Box.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_000.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_001.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_002.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_003.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_004.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_005.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_020.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_021.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_022.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_023.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_024.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_025.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_100.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_101.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_102.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_103.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_104.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_105.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_120.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_121.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_122.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_123.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_124.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_125.xml', + 'Geometry/VeryForwardData/data/RP_Hybrid/v2/RP_Hybrid.xml', + 'Geometry/VeryForwardData/data/RP_Materials/v5/RP_Materials.xml', + 'Geometry/VeryForwardData/data/RP_Transformations.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_000.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_001.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_002.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_004.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_005.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_020.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_021.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_024.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_025.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_100.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_101.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_102.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_104.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_105.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_120.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_121.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_124.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_125.xml', + 'Geometry/VeryForwardData/data/RP_Device/v1/RP_Device.xml', + 'Geometry/VeryForwardData/data/RP_Vertical_Device/2021/Simu/v2/RP_Vertical_Device.xml', + 'Geometry/VeryForwardData/data/RP_Horizontal_Device/2021/Simu/v2/RP_Horizontal_Device.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_Stations_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Cuts_Per_Region/Simu/v1/CTPPS_Cuts_Per_Region.xml', + 'Geometry/VeryForwardData/data/RP_Sensitive_Dets.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Transformations.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Station_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Horizontal_Pot/v2/CTPPS_Timing_Horizontal_Pot.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern1_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment5.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Detector_Assembly/v1/CTPPS_Diamond_Detector_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_022.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_122.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Sensitive_Dets_TimingHits.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v3/PPS_Pixel_Module_2x2_Run3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v2/PPS_Pixel_Sens.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_003.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_023.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_103.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_123.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/RP_Dist_Beam_Cent/Simu/v1/RP_Dist_Beam_Cent.xml', + 'Geometry/EcalSimData/data/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/2021/v2/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2021/v1/CaloUtil.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecs/2021/v2/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/totemsensT2/2021/totemsensT2.xml', + 'Geometry/ForwardCommonData/data/bhmsens.xml', + 'Geometry/ForwardSimData/data/pltsens.xml', + 'Geometry/ForwardSimData/data/bcm1fsens.xml', + 'Geometry/ForwardSimData/data/zdcsens/2021/v1/zdcsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2021/v2/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/EcalSimData/data/ESProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/ForwardSimData/data/bhmProdCuts/2021/v1/bhmProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v3/zdcProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2025ZeroMaterialXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025ZeroMaterialXML_cfi.py new file mode 100644 index 0000000000000..62d1744ad606d --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2025ZeroMaterialXML_cfi.py @@ -0,0 +1,386 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2021Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v5/materials.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v3/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2017/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2021/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2021/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v1/pixfwdMaterials.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdCylinder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdDisks.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v3/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdSupportRingParameters.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdInnerDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdOuterDiskZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeInnerZminus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZplus.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixfwdbladeOuterZminus.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/pixbarmaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladder.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarladderfull3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer0.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer1.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer2.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbarlayer3.xml', + 'Geometry/TrackerCommonData/data/PhaseI/v2/pixbar.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpatchpannel.xml', + 'Geometry/TrackerCommonData/data/Run2/trackerpixelnose.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/tibtidcommonmaterial.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/tibmaterial.xml', + 'Geometry/TrackerCommonData/data/tibmodpar.xml', + 'Geometry/TrackerCommonData/data/tibmodule0.xml', + 'Geometry/TrackerCommonData/data/tibmodule0a.xml', + 'Geometry/TrackerCommonData/data/tibmodule0b.xml', + 'Geometry/TrackerCommonData/data/tibmodule2.xml', + 'Geometry/TrackerCommonData/data/tibstringpar.xml', + 'Geometry/TrackerCommonData/data/tibstring0ll.xml', + 'Geometry/TrackerCommonData/data/tibstring0lr.xml', + 'Geometry/TrackerCommonData/data/tibstring0ul.xml', + 'Geometry/TrackerCommonData/data/tibstring0ur.xml', + 'Geometry/TrackerCommonData/data/tibstring0.xml', + 'Geometry/TrackerCommonData/data/tibstring1ll.xml', + 'Geometry/TrackerCommonData/data/tibstring1lr.xml', + 'Geometry/TrackerCommonData/data/tibstring1ul.xml', + 'Geometry/TrackerCommonData/data/tibstring1ur.xml', + 'Geometry/TrackerCommonData/data/tibstring1.xml', + 'Geometry/TrackerCommonData/data/tibstring2ll.xml', + 'Geometry/TrackerCommonData/data/tibstring2lr.xml', + 'Geometry/TrackerCommonData/data/tibstring2ul.xml', + 'Geometry/TrackerCommonData/data/tibstring2ur.xml', + 'Geometry/TrackerCommonData/data/tibstring2.xml', + 'Geometry/TrackerCommonData/data/tibstring3ll.xml', + 'Geometry/TrackerCommonData/data/tibstring3lr.xml', + 'Geometry/TrackerCommonData/data/tibstring3ul.xml', + 'Geometry/TrackerCommonData/data/tibstring3ur.xml', + 'Geometry/TrackerCommonData/data/tibstring3.xml', + 'Geometry/TrackerCommonData/data/tiblayerpar.xml', + 'Geometry/TrackerCommonData/data/tiblayer0.xml', + 'Geometry/TrackerCommonData/data/tiblayer1.xml', + 'Geometry/TrackerCommonData/data/tiblayer2.xml', + 'Geometry/TrackerCommonData/data/tiblayer3.xml', + 'Geometry/TrackerCommonData/data/tib.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/tidmaterial.xml', + 'Geometry/TrackerCommonData/data/tidmodpar.xml', + 'Geometry/TrackerCommonData/data/tidmodule0.xml', + 'Geometry/TrackerCommonData/data/tidmodule0r.xml', + 'Geometry/TrackerCommonData/data/tidmodule0l.xml', + 'Geometry/TrackerCommonData/data/tidmodule1.xml', + 'Geometry/TrackerCommonData/data/tidmodule1r.xml', + 'Geometry/TrackerCommonData/data/tidmodule1l.xml', + 'Geometry/TrackerCommonData/data/tidmodule2.xml', + 'Geometry/TrackerCommonData/data/tidringpar.xml', + 'Geometry/TrackerCommonData/data/tidring0.xml', + 'Geometry/TrackerCommonData/data/tidring0f.xml', + 'Geometry/TrackerCommonData/data/tidring0b.xml', + 'Geometry/TrackerCommonData/data/tidring1.xml', + 'Geometry/TrackerCommonData/data/tidring1f.xml', + 'Geometry/TrackerCommonData/data/tidring1b.xml', + 'Geometry/TrackerCommonData/data/tidring2.xml', + 'Geometry/TrackerCommonData/data/tid.xml', + 'Geometry/TrackerCommonData/data/tidf.xml', + 'Geometry/TrackerCommonData/data/tidb.xml', + 'Geometry/TrackerCommonData/data/tibtidservices.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesf.xml', + 'Geometry/TrackerCommonData/data/tibtidservicesb.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v2/tobmaterial.xml', + 'Geometry/TrackerCommonData/data/tobmodpar.xml', + 'Geometry/TrackerCommonData/data/tobmodule0.xml', + 'Geometry/TrackerCommonData/data/tobmodule2.xml', + 'Geometry/TrackerCommonData/data/tobmodule4.xml', + 'Geometry/TrackerCommonData/data/tobrodpar.xml', + 'Geometry/TrackerCommonData/data/tobrod0c.xml', + 'Geometry/TrackerCommonData/data/tobrod0l.xml', + 'Geometry/TrackerCommonData/data/tobrod0h.xml', + 'Geometry/TrackerCommonData/data/tobrod0.xml', + 'Geometry/TrackerCommonData/data/tobrod1l.xml', + 'Geometry/TrackerCommonData/data/tobrod1h.xml', + 'Geometry/TrackerCommonData/data/tobrod1.xml', + 'Geometry/TrackerCommonData/data/tobrod2c.xml', + 'Geometry/TrackerCommonData/data/tobrod2l.xml', + 'Geometry/TrackerCommonData/data/tobrod2h.xml', + 'Geometry/TrackerCommonData/data/tobrod2.xml', + 'Geometry/TrackerCommonData/data/tobrod3l.xml', + 'Geometry/TrackerCommonData/data/tobrod3h.xml', + 'Geometry/TrackerCommonData/data/tobrod3.xml', + 'Geometry/TrackerCommonData/data/tobrod4c.xml', + 'Geometry/TrackerCommonData/data/tobrod4l.xml', + 'Geometry/TrackerCommonData/data/tobrod4h.xml', + 'Geometry/TrackerCommonData/data/tobrod4.xml', + 'Geometry/TrackerCommonData/data/tobrod5l.xml', + 'Geometry/TrackerCommonData/data/tobrod5h.xml', + 'Geometry/TrackerCommonData/data/tobrod5.xml', + 'Geometry/TrackerCommonData/data/tob/v3/tob.xml', + 'Geometry/TrackerCommonData/data/zeroMaterial/2021/v1/tecmaterial.xml', + 'Geometry/TrackerCommonData/data/tecmodpar.xml', + 'Geometry/TrackerCommonData/data/tecmodule0.xml', + 'Geometry/TrackerCommonData/data/tecmodule0r.xml', + 'Geometry/TrackerCommonData/data/tecmodule0s.xml', + 'Geometry/TrackerCommonData/data/tecmodule1.xml', + 'Geometry/TrackerCommonData/data/tecmodule1r.xml', + 'Geometry/TrackerCommonData/data/tecmodule1s.xml', + 'Geometry/TrackerCommonData/data/tecmodule2.xml', + 'Geometry/TrackerCommonData/data/tecmodule3.xml', + 'Geometry/TrackerCommonData/data/tecmodule4.xml', + 'Geometry/TrackerCommonData/data/tecmodule4r.xml', + 'Geometry/TrackerCommonData/data/tecmodule4s.xml', + 'Geometry/TrackerCommonData/data/tecmodule5.xml', + 'Geometry/TrackerCommonData/data/tecmodule6.xml', + 'Geometry/TrackerCommonData/data/tecpetpar.xml', + 'Geometry/TrackerCommonData/data/tecring0.xml', + 'Geometry/TrackerCommonData/data/tecring1.xml', + 'Geometry/TrackerCommonData/data/tecring2.xml', + 'Geometry/TrackerCommonData/data/tecring3.xml', + 'Geometry/TrackerCommonData/data/tecring4.xml', + 'Geometry/TrackerCommonData/data/tecring5.xml', + 'Geometry/TrackerCommonData/data/tecring6.xml', + 'Geometry/TrackerCommonData/data/tecring0f.xml', + 'Geometry/TrackerCommonData/data/tecring1f.xml', + 'Geometry/TrackerCommonData/data/tecring2f.xml', + 'Geometry/TrackerCommonData/data/tecring3f.xml', + 'Geometry/TrackerCommonData/data/tecring4f.xml', + 'Geometry/TrackerCommonData/data/tecring5f.xml', + 'Geometry/TrackerCommonData/data/tecring6f.xml', + 'Geometry/TrackerCommonData/data/tecring0b.xml', + 'Geometry/TrackerCommonData/data/tecring1b.xml', + 'Geometry/TrackerCommonData/data/tecring2b.xml', + 'Geometry/TrackerCommonData/data/tecring3b.xml', + 'Geometry/TrackerCommonData/data/tecring4b.xml', + 'Geometry/TrackerCommonData/data/tecring5b.xml', + 'Geometry/TrackerCommonData/data/tecring6b.xml', + 'Geometry/TrackerCommonData/data/tecpetalf.xml', + 'Geometry/TrackerCommonData/data/tecpetalb.xml', + 'Geometry/TrackerCommonData/data/tecpetal0.xml', + 'Geometry/TrackerCommonData/data/tecpetal0f.xml', + 'Geometry/TrackerCommonData/data/tecpetal0b.xml', + 'Geometry/TrackerCommonData/data/tecpetal3.xml', + 'Geometry/TrackerCommonData/data/tecpetal3f.xml', + 'Geometry/TrackerCommonData/data/tecpetal3b.xml', + 'Geometry/TrackerCommonData/data/tecpetal6f.xml', + 'Geometry/TrackerCommonData/data/tecpetal6b.xml', + 'Geometry/TrackerCommonData/data/tecpetal8f.xml', + 'Geometry/TrackerCommonData/data/tecpetal8b.xml', + 'Geometry/TrackerCommonData/data/tecwheel/2021/v1/tecwheel.xml', + 'Geometry/TrackerCommonData/data/tecwheela.xml', + 'Geometry/TrackerCommonData/data/tecwheelb.xml', + 'Geometry/TrackerCommonData/data/tecwheelc.xml', + 'Geometry/TrackerCommonData/data/tecwheeld.xml', + 'Geometry/TrackerCommonData/data/tecwheel6.xml', + 'Geometry/TrackerCommonData/data/tecservices.xml', + 'Geometry/TrackerCommonData/data/tecbackplate.xml', + 'Geometry/TrackerCommonData/data/tec.xml', + 'Geometry/TrackerCommonData/data/Run2/tracker.xml', + 'Geometry/TrackerCommonData/data/trackerpixbar.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerpixfwd.xml', + 'Geometry/TrackerCommonData/data/trackertibtidservices.xml', + 'Geometry/TrackerCommonData/data/trackertib.xml', + 'Geometry/TrackerCommonData/data/trackertid.xml', + 'Geometry/TrackerCommonData/data/trackertob.xml', + 'Geometry/TrackerCommonData/data/trackertec.xml', + 'Geometry/TrackerCommonData/data/v2/trackerbulkhead.xml', + 'Geometry/TrackerCommonData/data/trackerother.xml', + 'Geometry/TrackerCommonData/data/PhaseI/trackerStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackersens.xml', + 'Geometry/TrackerRecoData/data/PhaseI/v1/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseI/v1/trackingMaterialGroups_ForPhaseI.xml', + 'Geometry/TrackerSimData/data/PhaseI/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/eecon.xml', + 'Geometry/EcalCommonData/data/escon.xml', + 'Geometry/EcalCommonData/data/eregalgo/2017/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/EcalCommonData/data/eefixed/2021/v1/eefixed.xml', + 'Geometry/EcalCommonData/data/eehier.xml', + 'Geometry/EcalCommonData/data/eealgo.xml', + 'Geometry/EcalCommonData/data/esalgo.xml', + 'Geometry/EcalCommonData/data/eeF.xml', + 'Geometry/EcalCommonData/data/eeB.xml', + 'Geometry/EcalCommonData/data/ectkcable.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/PhaseI/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalendcap/PhaseI/hcalendcapalgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2021/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2021/v2/hcalRecNumbering.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v1/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/ForwardCommonData/data/forward/2021/v1/forward.xml', + 'Geometry/ForwardCommonData/data/totemt2/2021/v1/totemt2.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2021/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/bhm.xml', + 'Geometry/ForwardCommonData/data/pltbcm/2021/v1/pltbcm.xml', + 'Geometry/ForwardCommonData/data/bcm1f/2021/v1/bcm1f.xml', + 'Geometry/ForwardCommonData/data/plt/2021/v1/plt.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2021/v3/zdc.xml', + 'Geometry/ForwardCommonData/data/rpd/2021/v2/rpd.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/VeryForwardData/data/RP_Box.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_000.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_001.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_002.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_003.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_004.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_005.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_020.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_021.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_022.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_023.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_024.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_025.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_100.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_101.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_102.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_103.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_104.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_105.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_120.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_121.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_122.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_123.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_124.xml', + 'Geometry/VeryForwardData/data/RP_Box/v3/RP_Box_125.xml', + 'Geometry/VeryForwardData/data/RP_Hybrid/v2/RP_Hybrid.xml', + 'Geometry/VeryForwardData/data/RP_Materials/v5/RP_Materials.xml', + 'Geometry/VeryForwardData/data/RP_Transformations.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_000.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_001.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_002.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_004.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_005.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_020.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_021.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_024.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_025.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_100.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_101.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_102.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_104.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_105.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_120.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_121.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_124.xml', + 'Geometry/VeryForwardData/data/RP_Detectors_Assembly/RP_Detectors_Assembly_125.xml', + 'Geometry/VeryForwardData/data/RP_Device/v1/RP_Device.xml', + 'Geometry/VeryForwardData/data/RP_Vertical_Device/2021/Simu/v2/RP_Vertical_Device.xml', + 'Geometry/VeryForwardData/data/RP_Horizontal_Device/2021/Simu/v2/RP_Horizontal_Device.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_220_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Right_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_210_Left_Station.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Stations/Simu/v3/CTPPS_Stations_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/Cuts_Per_Region/Simu/v1/CTPPS_Cuts_Per_Region.xml', + 'Geometry/VeryForwardData/data/RP_Sensitive_Dets.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Transformations.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Station_Parameters.xml', + 'Geometry/VeryForwardData/data/CTPPS_Timing_Horizontal_Pot/v2/CTPPS_Timing_Horizontal_Pot.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern1_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern2_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern3_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Segments/CTPPS_Diamond_Pattern4_Segment5.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane1.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane2.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Planes/CTPPS_Diamond_Plane4.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/CTPPS_Diamond_Detector_Assembly/v1/CTPPS_Diamond_Detector_Assembly.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_022.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_2021/Simu/v1/CTPPS_Detectors_Assembly_122.xml', + 'Geometry/VeryForwardData/data/CTPPS_Diamond_Sensitive_Dets_TimingHits.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v3/PPS_Pixel_Module_2x2_Run3.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Modules/v2/PPS_Pixel_Sens.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_003.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_023.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_103.xml', + 'Geometry/VeryForwardData/data/CTPPS_Pixel_2021/Assembly/v2/CTPPS_Pixel_Assembly_Box_Real_123.xml', + 'Geometry/VeryForwardData/data/CTPPS_2021/RP_Dist_Beam_Cent/Simu/v1/RP_Dist_Beam_Cent.xml', + 'Geometry/EcalSimData/data/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/2021/v2/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2021/v1/CaloUtil.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecs/2021/v2/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/totemsensT2/2021/totemsensT2.xml', + 'Geometry/ForwardCommonData/data/bhmsens.xml', + 'Geometry/ForwardSimData/data/pltsens.xml', + 'Geometry/ForwardSimData/data/bcm1fsens.xml', + 'Geometry/ForwardSimData/data/zdcsens/2021/v1/zdcsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2021/v2/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/EcalSimData/data/ESProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/ForwardSimData/data/bhmProdCuts/2021/v1/bhmProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v3/zdcProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D100XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D100XML_cfi.py index 8b68c2538ef3c..b05c0aa35d0e6 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D100XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D100XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D101XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D101XML_cfi.py index 5a3bcbeecb3ae..d0bec22bbbab9 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D101XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D101XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D102XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D102XML_cfi.py index 945289b68c780..64b01c7b7d098 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D102XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D102XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D103XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D103XML_cfi.py index 80a16e30c99b3..bffc3001b0aad 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D103XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D103XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D104XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D104XML_cfi.py index 22779bbcef403..ec10b69c19eef 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D104XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D104XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D105XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D105XML_cfi.py index 24a7ed1df3ee6..5b65651da7c8c 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D105XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D105XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D106XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D106XML_cfi.py index a1d60d61f432d..aee673bd9717c 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D106XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D106XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D107XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D107XML_cfi.py index a93127b0874cd..25793f13ed8e6 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D107XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D107XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D108XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D108XML_cfi.py index 6d1aa57b8bbcd..1d7933550eddc 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D108XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D108XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -71,22 +71,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -102,21 +102,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D109XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D109XML_cfi.py index e5c8f0be32f3d..5f508edf59611 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D109XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D109XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py index 01c06221da807..f0a4ae497ddbb 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D111XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D111XML_cfi.py index 325379e4ee11e..20463b9c7fd07 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D111XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D111XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_OT806_IT741_2024_01/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D112XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D112XML_cfi.py index f51ad8d014d11..8384eae0383f2 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D112XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D112XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_OT806_IT741_2024_01/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D113XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D113XML_cfi.py index 2a3b7d1a6e211..52224ce6f7c8e 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D113XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D113XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_OT806_IT741_2024_01/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +72,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +103,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D114XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D114XML_cfi.py index 8814481a55d29..d1577299bbf7c 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D114XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D114XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -71,22 +71,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -102,21 +102,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D115XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D115XML_cfi.py index 3ff1891234d7a..3ec1bee3dc5c9 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D115XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D115XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +42,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -77,22 +77,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -108,23 +108,23 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/ForwardSimData/data/hfnosesens.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', 'Geometry/ForwardSimData/data/hfnoseProdCuts.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D116XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D116XML_cfi.py new file mode 100644 index 0000000000000..f6d12775fe0c5 --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D116XML_cfi.py @@ -0,0 +1,128 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2030/v1/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_OT800_IT615_2022_10/pixbar.xml', + 'Geometry/TrackerCommonData/data/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_03/tracker.xml', + 'Geometry/TrackerCommonData/data/PhaseII/OuterTracker616_2020_04/otst.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixel.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerbar.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerStructureTopology.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackersens.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelsens.xml', + 'Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/trackerRecoMaterial.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo/2021/v1/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/v2/hcalRecNumbering.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v17/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v17/hgcalCons.xml', + 'Geometry/HGCalCommonData/data/hgcalConsData/v17/hgcalConsData.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2015/v2/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2015/v2/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2030/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', + 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v3/btl.xml', + 'Geometry/MTDCommonData/data/etl/v8/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v5/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v5/mtdParameters.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/v1/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', + 'Geometry/HGCalSimData/data/hgcsensv15.xml', + 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/zdcsens.xml', + 'Geometry/MTDSimData/data/v5/mtdsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D95XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D95XML_cfi.py index 9b4e7b5054b31..b6cacf38d0e97 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D95XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D95XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D96XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D96XML_cfi.py index edd74f1ebc0fc..29a363c91d982 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D96XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D96XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98CaloXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98CaloXML_cfi.py index 33bc5c05e21b1..0557fe3b94d10 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98CaloXML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98CaloXML_cfi.py @@ -6,23 +6,23 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -44,12 +44,12 @@ 'Geometry/HGCalCommonData/data/hgcalHEmix/v16/hgcalHEmix.xml', 'Geometry/HGCalCommonData/data/hgcalCons/v16/hgcalCons.xml', 'Geometry/HGCalCommonData/data/hgcalConsData/v16/hgcalConsData.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', @@ -57,10 +57,10 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98MuonXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98MuonXML_cfi.py index 42d5683a8f7c0..7d49ac6f41f1a 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98MuonXML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98MuonXML_cfi.py @@ -1,24 +1,21 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -29,25 +26,25 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/CMSCommonData/data/FieldParameters.xml', ), rootNodeName = cms.string('cms:OCMS') diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98TrackerXML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98TrackerXML_cfi.py index be222ce1fbc46..458996b48980f 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98TrackerXML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98TrackerXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98XML_cfi.py index 991fba49a0d10..50c3df0ab51ca 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D98XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py index e4da741654034..b64d5fb60aac1 100644 --- a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py @@ -9,17 +9,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +43,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +73,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +104,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/CMSCommonData/test/run_DOMCount.py b/Geometry/CMSCommonData/test/run_DOMCount.py index 68423d68cc3bb..c2243e99cc350 100755 --- a/Geometry/CMSCommonData/test/run_DOMCount.py +++ b/Geometry/CMSCommonData/test/run_DOMCount.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from FWCore.ParameterSet.pfnInPath import pfnInPath import FWCore.ParameterSet.Config as cms import sys diff --git a/Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml b/Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml similarity index 100% rename from Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml rename to Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml diff --git a/Geometry/EcalCommonData/data/ectkcablemat/2026/v1/ectkcablemat.xml b/Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml similarity index 100% rename from Geometry/EcalCommonData/data/ectkcablemat/2026/v1/ectkcablemat.xml rename to Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml diff --git a/Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml b/Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml similarity index 100% rename from Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml rename to Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml diff --git a/Geometry/EcalCommonData/data/eregalgo/2026/v1/eregalgo.xml b/Geometry/EcalCommonData/data/eregalgo/2030/v1/eregalgo.xml similarity index 100% rename from Geometry/EcalCommonData/data/eregalgo/2026/v1/eregalgo.xml rename to Geometry/EcalCommonData/data/eregalgo/2030/v1/eregalgo.xml diff --git a/Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml b/Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml similarity index 100% rename from Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml rename to Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml diff --git a/Geometry/EcalCommonData/data/esalgo/2026/v1/esalgo.xml b/Geometry/EcalCommonData/data/esalgo/2030/v1/esalgo.xml similarity index 100% rename from Geometry/EcalCommonData/data/esalgo/2026/v1/esalgo.xml rename to Geometry/EcalCommonData/data/esalgo/2030/v1/esalgo.xml diff --git a/Geometry/EcalCommonData/data/escon/2026/v1/escon.xml b/Geometry/EcalCommonData/data/escon/2030/v1/escon.xml similarity index 100% rename from Geometry/EcalCommonData/data/escon/2026/v1/escon.xml rename to Geometry/EcalCommonData/data/escon/2030/v1/escon.xml diff --git a/Geometry/EcalCommonData/src/EcalSimParametersFromDD.cc b/Geometry/EcalCommonData/src/EcalSimParametersFromDD.cc index bbac9925f6e81..4f66d1e919172 100644 --- a/Geometry/EcalCommonData/src/EcalSimParametersFromDD.cc +++ b/Geometry/EcalCommonData/src/EcalSimParametersFromDD.cc @@ -35,43 +35,67 @@ bool EcalSimParametersFromDD::build(const DDCompactView* cpv, const std::string& //First the specpars php.useWeight_ = true; std::vector tempD = getDDDArray("EnergyWeight", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " EnergyWeight " << tempD.empty(); +#endif if (!tempD.empty()) { if (tempD[0] < 0.1) php.useWeight_ = false; } tempD = getDDDArray("nxtalEta", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " nxtalEta " << tempD.empty(); +#endif if (tempD.empty()) php.nxtalEta_ = 0; else php.nxtalEta_ = static_cast(tempD[0]); tempD = getDDDArray("nxtalPhi", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " nxtalPhi " << tempD.empty(); +#endif if (tempD.empty()) php.nxtalPhi_ = 0; else php.nxtalPhi_ = static_cast(tempD[0]); tempD = getDDDArray("PhiBaskets", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " PhiBaskets " << tempD.empty(); +#endif if (tempD.empty()) php.phiBaskets_ = 0; else php.phiBaskets_ = static_cast(tempD[0]); php.etaBaskets_ = dbl_to_int(getDDDArray("EtaBaskets", sv)); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " EtaBaskets " << tempD.empty(); +#endif tempD = getDDDArray("ncrys", sv); if (tempD.empty()) php.ncrys_ = 0; else php.ncrys_ = static_cast(tempD[0]); tempD = getDDDArray("nmods", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " ncrys " << tempD.empty(); +#endif if (tempD.empty()) php.nmods_ = 0; else php.nmods_ = static_cast(tempD[0]); std::vector tempS = getStringArray("Depth1Name", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " Depth1Name " << tempS.empty(); +#endif if (!tempS.empty()) php.depth1Name_ = tempS[0]; else php.depth1Name_ = " "; tempS = getStringArray("Depth2Name", sv); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("EcalGeom") << "EcalSimParametersFromDD:" << name << " Depth2Name " << tempS.empty(); +#endif if (!tempS.empty()) php.depth2Name_ = tempS[0]; else diff --git a/Geometry/ForwardCommonData/data/brm/2026/v1/brm.xml b/Geometry/ForwardCommonData/data/brm/2030/v1/brm.xml similarity index 100% rename from Geometry/ForwardCommonData/data/brm/2026/v1/brm.xml rename to Geometry/ForwardCommonData/data/brm/2030/v1/brm.xml diff --git a/Geometry/ForwardCommonData/data/brm/2026/v2/brm.xml b/Geometry/ForwardCommonData/data/brm/2030/v2/brm.xml similarity index 100% rename from Geometry/ForwardCommonData/data/brm/2026/v2/brm.xml rename to Geometry/ForwardCommonData/data/brm/2030/v2/brm.xml diff --git a/Geometry/ForwardCommonData/data/brm/2026/v3/brm.xml b/Geometry/ForwardCommonData/data/brm/2030/v3/brm.xml similarity index 100% rename from Geometry/ForwardCommonData/data/brm/2026/v3/brm.xml rename to Geometry/ForwardCommonData/data/brm/2030/v3/brm.xml diff --git a/Geometry/ForwardCommonData/data/forwardshield/2026/v1/forwardshield.xml b/Geometry/ForwardCommonData/data/forwardshield/2030/v1/forwardshield.xml similarity index 100% rename from Geometry/ForwardCommonData/data/forwardshield/2026/v1/forwardshield.xml rename to Geometry/ForwardCommonData/data/forwardshield/2030/v1/forwardshield.xml diff --git a/Geometry/ForwardCommonData/data/forwardshield/2026/v2/forwardshield.xml b/Geometry/ForwardCommonData/data/forwardshield/2030/v2/forwardshield.xml similarity index 100% rename from Geometry/ForwardCommonData/data/forwardshield/2026/v2/forwardshield.xml rename to Geometry/ForwardCommonData/data/forwardshield/2030/v2/forwardshield.xml diff --git a/Geometry/ForwardCommonData/data/forwardshield/2026/v3/forwardshield.xml b/Geometry/ForwardCommonData/data/forwardshield/2030/v3/forwardshield.xml similarity index 100% rename from Geometry/ForwardCommonData/data/forwardshield/2026/v3/forwardshield.xml rename to Geometry/ForwardCommonData/data/forwardshield/2030/v3/forwardshield.xml diff --git a/Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml b/Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml similarity index 100% rename from Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml rename to Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml diff --git a/Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml b/Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml new file mode 100644 index 0000000000000..506d79700ab44 --- /dev/null +++ b/Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml @@ -0,0 +1,1176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forwardshield:VcalElecPMT + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + forwardshield:FixedShieldTube5 + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + forwardshield:FixedShieldTube6 + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + forwardshield:FixedShieldTube7 + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + forwardshield:FixedShieldTube8 + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + forwardshield:FixedShieldTube9 + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + Null, forwardshield:FibreBundle12, forwardshield:FibreBundle10, + forwardshield:FibreBundle8, forwardshield:FibreBundle6, + forwardshield:FibreBundle4, forwardshield:FibreBundle2, + Null, forwardshield:FibreBundle12, forwardshield:FibreBundle10, + forwardshield:FibreBundle8, forwardshield:FibreBundle6, + forwardshield:FibreBundle4, forwardshield:FibreBundle2, + Null, forwardshield:FibreBundle11, forwardshield:FibreBundle9, + forwardshield:FibreBundle7, forwardshield:FibreBundle5, + forwardshield:FibreBundle3, forwardshield:FibreBundle1, + Null, forwardshield:FibreBundle11, forwardshield:FibreBundle9, + forwardshield:FibreBundle7, forwardshield:FibreBundle5, + forwardshield:FibreBundle3, forwardshield:FibreBundle1 + + + + + + 0., 0., 0. + + + + + + Null, forwardshield:FibreBundle11, forwardshield:FibreBundle9, + forwardshield:FibreBundle7, forwardshield:FibreBundle5, + forwardshield:FibreBundle3, forwardshield:FibreBundle1, + Null, forwardshield:FibreBundle11, forwardshield:FibreBundle9, + forwardshield:FibreBundle7, forwardshield:FibreBundle5, + forwardshield:FibreBundle3, forwardshield:FibreBundle1, + Null, forwardshield:FibreBundle13, forwardshield:FibreBundle10, + forwardshield:FibreBundle8, forwardshield:FibreBundle6, + forwardshield:FibreBundle4, forwardshield:FibreBundle2, + Null, forwardshield:FibreBundle13, forwardshield:FibreBundle10, + forwardshield:FibreBundle8, forwardshield:FibreBundle6, + forwardshield:FibreBundle4, forwardshield:FibreBundle2 + + + + + + 0., 0., 0. + + + + + + + + + + + + + + + + + + + + + + + + + 551*mm2, 652*mm2, 469*mm2, 324*mm2, 231*mm2, 167*mm2, + 120*mm2, 88*mm2, 63*mm2, 46*mm2, 35*mm2, 52*mm2, 50*mm2 + + + 1231.0*mm, 1068.5*mm, 896.5*mm, 757.0*mm, 631.0*mm, 529.5*mm, + 444.5*mm, 373.0*mm, 313.0*mm, 263.0*mm, 220.5*mm, 185.0*mm, 147.0*mm + + + 1350.0*mm, 1350.0*mm, 1308.0*mm, 1308.0*mm, 1266.0*mm, 1266.0*mm, + 1224.0*mm, 1224.0*mm, 1182.0*mm, 1182.0*mm, 1140.0*mm, 1140.0*mm,1140.0*mm + + + -1, 11, 9, 7, 5, 3, 1, -1, 11, 9, 7, 5, 3, 1, + -1, 10, 8, 6, 4, 2, 0, -1, 10, 8, 6, 4, 2, 0 + + + + + + + + + + + + 551*mm2, 652*mm2, 469*mm2, 324*mm2, 231*mm2, 167*mm2, + 120*mm2, 88*mm2, 63*mm2, 46*mm2, 35*mm2, 52*mm2, 50*mm2 + + + 1231.0*mm, 1068.5*mm, 896.5*mm, 757.0*mm, 631.0*mm, 529.5*mm, + 444.5*mm, 373.0*mm, 313.0*mm, 263.0*mm, 220.5*mm, 185.0*mm, 147.0*mm + + + 1350.0*mm, 1350.0*mm, 1308.0*mm, 1308.0*mm, 1266.0*mm, 1266.0*mm, + 1224.0*mm, 1224.0*mm, 1182.0*mm, 1182.0*mm, 1140.0*mm, 1140.0*mm,1140.0*mm + + + -1, 10, 8, 6, 4, 2, 0, -1, 10, 8, 6, 4, 2, 0, + -1, 12, 9, 7, 5, 3, 1, -1, 12, 9, 7, 5, 3, 1 + + + + diff --git a/Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml b/Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml similarity index 100% rename from Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml rename to Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml diff --git a/Geometry/ForwardCommonData/data/zdc/2026/v2/zdc.xml b/Geometry/ForwardCommonData/data/zdc/2030/v2/zdc.xml similarity index 100% rename from Geometry/ForwardCommonData/data/zdc/2026/v2/zdc.xml rename to Geometry/ForwardCommonData/data/zdc/2030/v2/zdc.xml diff --git a/Geometry/ForwardCommonData/python/hfnoseAloneXML_cfi.py b/Geometry/ForwardCommonData/python/hfnoseAloneXML_cfi.py index 2da5210f62000..12ab6ce9a1ab9 100644 --- a/Geometry/ForwardCommonData/python/hfnoseAloneXML_cfi.py +++ b/Geometry/ForwardCommonData/python/hfnoseAloneXML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2017/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v5/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v5/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v1/hgcalMaterial.xml', 'Geometry/ForwardCommonData/data/hfnose/v4/hfnose.xml', diff --git a/Geometry/ForwardCommonData/python/hfnoseXML_cfi.py b/Geometry/ForwardCommonData/python/hfnoseXML_cfi.py index aa9743efc047a..c6bf2bd493a57 100644 --- a/Geometry/ForwardCommonData/python/hfnoseXML_cfi.py +++ b/Geometry/ForwardCommonData/python/hfnoseXML_cfi.py @@ -6,13 +6,13 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2017/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v5/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v5/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/hfnose/v4/hfnose.xml', 'Geometry/ForwardCommonData/data/hfnoseCell/v1/hfnoseCell.xml', 'Geometry/ForwardCommonData/data/hfnoseWafer/v1/hfnoseWafer.xml', diff --git a/Geometry/ForwardCommonData/python/testHFNoseXML_cfi.py b/Geometry/ForwardCommonData/python/testHFNoseXML_cfi.py index 2022e9e8ac949..bb0c36dd29a7f 100644 --- a/Geometry/ForwardCommonData/python/testHFNoseXML_cfi.py +++ b/Geometry/ForwardCommonData/python/testHFNoseXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -75,17 +75,17 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', @@ -106,23 +106,23 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/ForwardSimData/data/hfnosesens.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', 'Geometry/ForwardSimData/data/hfnoseProdCuts.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/ForwardGeometry/plugins/moduleDB.cc b/Geometry/ForwardGeometry/plugins/moduleDB.cc index 57efa4faa0b72..d0fa964bc5b0c 100644 --- a/Geometry/ForwardGeometry/plugins/moduleDB.cc +++ b/Geometry/ForwardGeometry/plugins/moduleDB.cc @@ -41,7 +41,7 @@ CaloGeometryDBEP::produceAligned(const typena ZdcGeometry* zdcGeometry = new ZdcGeometry(&zdcTopology); PtrType ptr(zdcGeometry); - if (dins.size() > 0) { + if (!dins.empty()) { const unsigned int nTrParm(tvec.size() / zdcTopology.kSizeForDenseIndexing()); assert(dvec.size() == ZdcGeometry::k_NumberOfShapes * ZdcGeometry::k_NumberOfParametersPerShape); diff --git a/Geometry/GEMGeometry/python/gemGeometryCustoms.py b/Geometry/GEMGeometry/python/gemGeometryCustoms.py index 672c0e22a3d11..e89d4485c6f54 100644 --- a/Geometry/GEMGeometry/python/gemGeometryCustoms.py +++ b/Geometry/GEMGeometry/python/gemGeometryCustoms.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms ## change the current default GEM geometry diff --git a/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0TestReco_cff.py b/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0TestReco_cff.py index 640a6718e020e..6bedfb48f9d94 100644 --- a/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0TestReco_cff.py +++ b/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0TestReco_cff.py @@ -1,9 +1,9 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py +# This config was generated automatically using generateRun4Geometry.py # If you notice a mistake, please update the generating script, not just this config -from GeometryExtended2026GE0Test_cff import * +from GeometryExtendedRun4GE0Test_cff import * # tracker from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * diff --git a/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0Test_cff.py b/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0Test_cff.py index 75682e7d0cddf..1b5dc6acc306c 100644 --- a/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0Test_cff.py +++ b/Geometry/GEMGeometry/test/GeometryExtendedRun4GE0Test_cff.py @@ -1,6 +1,6 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py +# This config was generated automatically using generateRun4Geometry.py # If you notice a mistake, please update the generating script, not just this config from cmsExtendedGeometryRun4GE0TestXML_cfi import * diff --git a/Geometry/GEMGeometry/test/cmsExtendedGeometryRun4GE0TestXML_cfi.py b/Geometry/GEMGeometry/test/cmsExtendedGeometryRun4GE0TestXML_cfi.py index 8919dfa6ab5c0..c48cb46786afd 100644 --- a/Geometry/GEMGeometry/test/cmsExtendedGeometryRun4GE0TestXML_cfi.py +++ b/Geometry/GEMGeometry/test/cmsExtendedGeometryRun4GE0TestXML_cfi.py @@ -1,8 +1,5 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials.xml', @@ -14,16 +11,16 @@ 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', - 'Geometry/CMSCommonData/data/cms/2026/v3/cms.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v2/caloBase.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v3/muonBase.xml', + 'Geometry/CMSCommonData/data/cms/2030/v3/cms.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v2/caloBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v3/muonBase.xml', 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker613_MB_2019_04/pixfwd.xml', @@ -42,9 +39,9 @@ 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker404/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker700/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v1/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -74,13 +71,13 @@ 'Geometry/MuonCommonData/data/muonYoke/2021/v2/muonYoke.xml', 'Geometry/MuonCommonData/data/csc/2021/v1/csc.xml', 'Geometry/MuonCommonData/data/mfshield/2017/v1/mfshield.xml', - 'Geometry/MuonCommonData/data/mf/2026/v4/mf.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v2/rpcf.xml', + 'Geometry/MuonCommonData/data/mf/2030/v4/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v2/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Dev/gem21.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v2/ge0.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v1/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml', 'Geometry/ForwardCommonData/data/forwardshield/2017/v1/forwardshield.xml', 'Geometry/ForwardCommonData/data/brmrotations.xml', 'Geometry/ForwardCommonData/data/PostLS2/brm.xml', @@ -110,7 +107,7 @@ 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v9/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v9/GEMSpecs.xml', 'Geometry/ForwardCommonData/data/brmsens.xml', diff --git a/Geometry/GlobalTrackingGeometryBuilder/test/testGlobalTrackingGeometry_cfg.py b/Geometry/GlobalTrackingGeometryBuilder/test/testGlobalTrackingGeometry_cfg.py index d084295f27403..11d12ba851d2c 100644 --- a/Geometry/GlobalTrackingGeometryBuilder/test/testGlobalTrackingGeometry_cfg.py +++ b/Geometry/GlobalTrackingGeometryBuilder/test/testGlobalTrackingGeometry_cfg.py @@ -2,7 +2,7 @@ from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 process = cms.Process("Demo",Phase2C17I13M9) -process.load('Configuration.Geometry.GeometryExtended2026D99Reco_cff') +process.load('Configuration.Geometry.GeometryExtendedRun4D99Reco_cff') process.load('FWCore.MessageLogger.MessageLogger_cfi') if 'MessageLogger' in process.__dict__: diff --git a/Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml b/Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml index 4e48d357dbcec..fddfa568f2ad1 100644 --- a/Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml +++ b/Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml @@ -9,8 +9,8 @@ - - + + diff --git a/Geometry/HGCalCommonData/data/hgcalConsData/v19/hgcalConsData.xml b/Geometry/HGCalCommonData/data/hgcalConsData/v19/hgcalConsData.xml index 5851f98acd07a..8ab167592d189 100644 --- a/Geometry/HGCalCommonData/data/hgcalConsData/v19/hgcalConsData.xml +++ b/Geometry/HGCalCommonData/data/hgcalConsData/v19/hgcalConsData.xml @@ -3666,9 +3666,9 @@ 288, 288, 288, 288 - 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, - 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, - 4*mm, 4*mm + 4*mm, 4*mm, 4*mm, 4*mm, 8*mm, 8*mm, + 8*mm, 8*mm, 8*mm, 8*mm, 8*mm, 8*mm, + 8*mm, 8*mm 1537.06*mm, 1559.91*mm, 1582.76*mm, 1605.61*mm, 1629.48*mm, 1653.35*mm, diff --git a/Geometry/HGCalCommonData/data/hgcalHEmix/v19/hgcalHEmix.xml b/Geometry/HGCalCommonData/data/hgcalHEmix/v19/hgcalHEmix.xml index 8073bd461d125..98a7fb5c3db73 100644 --- a/Geometry/HGCalCommonData/data/hgcalHEmix/v19/hgcalHEmix.xml +++ b/Geometry/HGCalCommonData/data/hgcalHEmix/v19/hgcalHEmix.xml @@ -39,7 +39,7 @@ [hgcal:rMaxHGCal1], [hgcal:rMaxHGCal5], [hgcal:rMaxHGCal10], [hgcal:rMaxHGCal11] -, + hgcalwafer:HGCalHEWafer06HD120, hgcalwafer:HGCalHEWafer07HD120, hgcalwafer:HGCalHEWafer08HD120, hgcalwafer:HGCalHEWafer09HD120, hgcalwafer:HGCalHEWafer10HD120, hgcalwafer:HGCalHEWafer11HD120, @@ -1209,9 +1209,9 @@ 288, 288, 288, 288 - 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, - 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, 4*mm, - 4*mm, 4*mm + 4*mm, 4*mm, 4*mm, 4*mm, 8*mm, 8*mm, + 8*mm, 8*mm, 8*mm, 8*mm, 8*mm, 8*mm, + 8*mm, 8*mm 1537.06*mm, 1559.91*mm, 1582.76*mm, 1605.61*mm, 1629.48*mm, 1653.35*mm, diff --git a/Geometry/HGCalCommonData/data/hgcalwafer/v19/hgcalwafer.xml b/Geometry/HGCalCommonData/data/hgcalwafer/v19/hgcalwafer.xml index 998bc60f6e119..530af71f1ed40 100644 --- a/Geometry/HGCalCommonData/data/hgcalwafer/v19/hgcalwafer.xml +++ b/Geometry/HGCalCommonData/data/hgcalwafer/v19/hgcalwafer.xml @@ -434,7 +434,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness120], 1.050*mm @@ -482,7 +482,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness120], 1.050*mm @@ -530,7 +530,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate, HGCalHEAirGap0 hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4, + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium, materials:Air 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness200], 1.050*mm, @@ -580,7 +580,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate, HGCalHEAirGap0 hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4, + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium, materials:Air 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness200], 1.050*mm, @@ -630,7 +630,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate, HGCalHEAirGap0 hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4, + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium, materials:Air 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness200], 1.050*mm, @@ -680,7 +680,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate, HGCalHEAirGap0 hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4, + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium, materials:Air 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness200], 1.050*mm, @@ -730,7 +730,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium
5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness300], 1.050*mm @@ -778,7 +778,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium
5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness300], 1.050*mm @@ -1125,7 +1125,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium
5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness120], 1.05*mm @@ -1161,7 +1161,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium
5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness120], 1.05*mm @@ -1273,7 +1273,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate, HGCalHEAirGap0 hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4, + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium, materials:Air 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness200], 1.05*mm, @@ -1311,7 +1311,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate, HGCalHEAirGap0 hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4, + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium, materials:Air 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness200], 1.05*mm, @@ -1349,7 +1349,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium
5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness300], 1.05*mm @@ -1385,7 +1385,7 @@ HGCalHESiliconSensitive, HGCalHEBasePlate hgcalMaterial:HGC_HEServices, hgcalMaterial:HGC_Hexaboard, materials:Epoxy, - hgcalMaterial:HGC_Kapton, materials:Silicon, hgcalMaterial:HGC_G10-FR4 + hgcalMaterial:HGC_Kapton, materials:Silicon, materials:Titanium 5.060*mm, 1.300*mm, 0.125*mm, 0.300*mm, [WaferThickness300], 1.05*mm diff --git a/Geometry/HGCalCommonData/interface/HGCalDDDConstants.h b/Geometry/HGCalCommonData/interface/HGCalDDDConstants.h index 1e374985cf2c0..53e395b1ea82d 100644 --- a/Geometry/HGCalCommonData/interface/HGCalDDDConstants.h +++ b/Geometry/HGCalCommonData/interface/HGCalDDDConstants.h @@ -59,6 +59,7 @@ class HGCalDDDConstants { int cassetteTile(int iphi) const { return (HGCalTileIndex::tileCassette(iphi, hgpar_->phiOffset_, hgpar_->nphiCassette_, hgpar_->cassettes_)); } + double cellArea(const HGCSiliconDetId&, bool) const; std::pair cellEtaPhiTrap(int type, int irad) const; bool cellInLayer(int waferU, int waferV, int cellU, int cellV, int lay, int zside, bool reco) const; const HGCalCellOffset* cellOffset() const { return cellOffset_.get(); } @@ -152,6 +153,7 @@ class HGCalDDDConstants { int part = (ktr != hgpar_->waferInfoMap_.end()) ? (ktr->second).part : HGCalTypes::WaferFull; return part; } + int32_t placementIndex(const HGCSiliconDetId&) const; std::pair rangeR(double z, bool reco) const; std::pair rangeRLayer(int lay, bool reco) const; std::pair rangeZ(bool reco) const; diff --git a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalPassive.cc b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalPassive.cc index df1bb8b20d8ce..c164d18b17ab2 100644 --- a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalPassive.cc +++ b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalPassive.cc @@ -32,6 +32,7 @@ struct HGCalPassive { double moduleThick = args.value("ModuleThick"); // Thickness of the overall module int sectors = args.value("Sectors"); // number of phi sectors (cassettes) std::vector tagsector; // Tag of the sector (to be added to name) + tagsector.reserve(sectors); for (int k = 0; k < sectors; ++k) tagsector.emplace_back("F" + std::to_string(k)); int position = args.value("Position"); // 0 if -z; 1 if +z diff --git a/Geometry/HGCalCommonData/python/testHGCV16XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCV16XML_cfi.py index 3a9b752468e77..5c00d53e97fc1 100644 --- a/Geometry/HGCalCommonData/python/testHGCV16XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCV16XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v1/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -64,7 +64,7 @@ 'Geometry/HGCalCommonData/data/hgcalHEmix/v16/hgcalHEmix.xml', 'Geometry/HGCalCommonData/data/hgcalCons/v16/hgcalCons.xml', 'Geometry/HGCalCommonData/data/hgcalConsData/v16/hgcalConsData.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', )+ cms.vstring( 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', @@ -73,14 +73,14 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v1/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v7/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v1/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v7/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v5/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v5/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v3/ge0.xml', 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', @@ -92,7 +92,7 @@ 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/HcalSimData/data/hf.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCV17XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCV17XML_cfi.py index 18f99bb4bc503..782b2bf66ef86 100644 --- a/Geometry/HGCalCommonData/python/testHGCV17XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCV17XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -101,13 +101,13 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', @@ -115,7 +115,7 @@ 'Geometry/HcalSimData/data/HcalProdCuts/2021/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCV17nXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCV17nXML_cfi.py index 73b77723b5fac..ae0acf788d022 100644 --- a/Geometry/HGCalCommonData/python/testHGCV17nXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCV17nXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -69,22 +69,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -100,13 +100,13 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', @@ -114,7 +114,7 @@ 'Geometry/HcalSimData/data/HcalProdCuts/2021/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalEEV16XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalEEV16XML_cfi.py index a3ce02c942345..796ea2e5d70fc 100644 --- a/Geometry/HGCalCommonData/python/testHGCalEEV16XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalEEV16XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v16/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalEEV17XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalEEV17XML_cfi.py index 2ae779ea05527..d97d1bf5c91b0 100644 --- a/Geometry/HGCalCommonData/python/testHGCalEEV17XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalEEV17XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalEEV18XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalEEV18XML_cfi.py index 98d83e6bd8fde..e5785d6e01b16 100644 --- a/Geometry/HGCalCommonData/python/testHGCalEEV18XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalEEV18XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v18/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalEEV19XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalEEV19XML_cfi.py index 8e9d342abfcd9..87da0e9031c81 100644 --- a/Geometry/HGCalCommonData/python/testHGCalEEV19XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalEEV19XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v3/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEmixV16XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEmixV16XML_cfi.py index 78b823db1fa34..fa009c3ba5454 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEmixV16XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEmixV16XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v16/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEmixV17XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEmixV17XML_cfi.py index ab22a8ef59c23..1e7ba8d7c8187 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEmixV17XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEmixV17XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEmixV18XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEmixV18XML_cfi.py index 95de86e270df1..a2d7a282ca1ca 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEmixV18XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEmixV18XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v18/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEmixV19XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEmixV19XML_cfi.py index 188d56da6defb..bda231d6bb1b1 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEmixV19XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEmixV19XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v3/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEsilV16XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEsilV16XML_cfi.py index d1700f368bb07..b0f4336bafb6a 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEsilV16XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEsilV16XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v16/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py index 800154e632edb..5496d2666ec1f 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEsilV18XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEsilV18XML_cfi.py index d9385358edd65..210c0b539d189 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEsilV18XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEsilV18XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v18/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalHEsilV19XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEsilV19XML_cfi.py index 9b31cb3918da9..22405d16342eb 100644 --- a/Geometry/HGCalCommonData/python/testHGCalHEsilV19XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalHEsilV19XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v6/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v3/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalPassiveV18XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalPassiveV18XML_cfi.py index a04308ee6dde8..0fd4320bdea57 100644 --- a/Geometry/HGCalCommonData/python/testHGCalPassiveV18XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalPassiveV18XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v18/hgcal.xml', 'Geometry/HGCalCommonData/data/hgcalPassive/v18/hgcalPassive.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalPassiveV19XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalPassiveV19XML_cfi.py index 750d59d6d1a6c..05f49e9309a7d 100644 --- a/Geometry/HGCalCommonData/python/testHGCalPassiveV19XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalPassiveV19XML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v3/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml', 'Geometry/HGCalCommonData/data/hgcalPassive/v19/hgcalPassive.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalPassiveV19cXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalPassiveV19cXML_cfi.py index 230b1b60477c3..9cec600ff4b03 100644 --- a/Geometry/HGCalCommonData/python/testHGCalPassiveV19cXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalPassiveV19cXML_cfi.py @@ -6,10 +6,10 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v3/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v19/hgcal.xml', 'Geometry/HGCalCommonData/data/hgcalPassive/v19/hgcalPassive.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV16XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV16XML_cfi.py index 3be193c4190c0..4b1755788d26e 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV16XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV16XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -101,13 +101,13 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', @@ -115,7 +115,7 @@ 'Geometry/HcalSimData/data/HcalProdCuts/2021/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV17ShiftXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV17ShiftXML_cfi.py index 1b429b3e392d8..62d8293ff8a84 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV17ShiftXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV17ShiftXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -101,21 +101,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV17XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV17XML_cfi.py index d773887a940ef..f822e831b4a0b 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV17XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV17XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -101,21 +101,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV17nXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV17nXML_cfi.py index caa1cccd4c80e..38d148b06ddad 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV17nXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV17nXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -69,22 +69,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -100,21 +100,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV17ngXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV17ngXML_cfi.py index 3949fd1b1458d..12770f17d2074 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV17ngXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV17ngXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -69,22 +69,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -100,21 +100,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV18OXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV18OXML_cfi.py index 5ed763c8acbf4..ad86a4c62685a 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV18OXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV18OXML_cfi.py @@ -1,18 +1,15 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v18/hgcal.xml', @@ -24,9 +21,9 @@ 'Geometry/HGCalCommonData/data/hgcalHEmix/v18/hgcalHEmix.xml', 'Geometry/HGCalCommonData/data/hgcalCons/v18/hgcalCons.xml', 'Geometry/HGCalCommonData/data/hgcalConsData/v17/hgcalConsData.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', 'Geometry/CMSCommonData/data/FieldParameters.xml', ), diff --git a/Geometry/HGCalCommonData/python/testHGCalV18XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV18XML_cfi.py index 052f14d627d57..6c9b0dfc1fd20 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV18XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV18XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -71,22 +71,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -102,21 +102,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV18nXML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV18nXML_cfi.py index 59cadb36977e1..e7b51ead9c204 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV18nXML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV18nXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -101,21 +101,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/python/testHGCalV19XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalV19XML_cfi.py index 4af018e161211..3e059e4559301 100644 --- a/Geometry/HGCalCommonData/python/testHGCalV19XML_cfi.py +++ b/Geometry/HGCalCommonData/python/testHGCalV19XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v8/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v8/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -71,22 +71,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -102,21 +102,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv17n.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HGCalCommonData/src/HGCalDDDConstants.cc b/Geometry/HGCalCommonData/src/HGCalDDDConstants.cc index a8e38bc16b022..efc0bba93471c 100644 --- a/Geometry/HGCalCommonData/src/HGCalDDDConstants.cc +++ b/Geometry/HGCalCommonData/src/HGCalDDDConstants.cc @@ -293,6 +293,24 @@ bool HGCalDDDConstants::cassetteShiftScintillator(int zside, int layer, int iphi return shift; } +double HGCalDDDConstants::cellArea(const HGCSiliconDetId& id, bool reco) const { + double area(0); + int32_t indx = HGCalWaferIndex::waferIndex(id.layer(), id.waferU(), id.waferV()); + auto ktr = hgpar_->waferInfoMap_.find(indx); + if (ktr != hgpar_->waferInfoMap_.end()) { + if (ktr->second.part == HGCalTypes::WaferFull) { + area = cellOffset_->cellAreaUV(id.cellU(), id.cellV(), placementIndex(id), ktr->second.type, reco); + } else { + area = + cellOffset_->cellAreaUV(id.cellU(), id.cellV(), placementIndex(id), ktr->second.type, ktr->second.part, reco); + } + } +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "CellArea: " << id << " Area " << area; +#endif + return area; +} + std::pair HGCalDDDConstants::cellEtaPhiTrap(int type, int irad) const { double dr(0), df(0); if (tileTrapezoid()) { @@ -1231,6 +1249,22 @@ int HGCalDDDConstants::numberCellsHexagon(int lay, int waferU, int waferV, bool return N; } +int32_t HGCalDDDConstants::placementIndex(const HGCSiliconDetId& id) const { + int32_t place(0); + int32_t layer = id.layer(); + int32_t layertype = layerType(layer); + int32_t indx = HGCalWaferIndex::waferIndex(layer, id.waferU(), id.waferV()); + auto ktr = hgpar_->waferInfoMap_.find(indx); + if (ktr != hgpar_->waferInfoMap_.end()) { + place = HGCalCell::cellPlacementIndex(id.zside(), layertype, (ktr->second).orient); + } +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "ID: " << id << " Layer " << layer << ":" << layertype << " Index " << indx << ":" + << (ktr != hgpar_->waferInfoMap_.end()) << " Place " << place; +#endif + return place; +} + std::pair HGCalDDDConstants::rangeR(double z, bool reco) const { double rmin(0), rmax(0), zz(0); if (hgpar_->detectorType_ > 0) { diff --git a/Geometry/HGCalCommonData/test/HGCalTestCellArea.cc b/Geometry/HGCalCommonData/test/HGCalTestCellArea.cc new file mode 100644 index 0000000000000..31346286fb854 --- /dev/null +++ b/Geometry/HGCalCommonData/test/HGCalTestCellArea.cc @@ -0,0 +1,162 @@ +// -*- C++ -*- +// +// Package: HGCalTestCellArea +// Class: HGCalTestCellArea +// +/**\class HGCalTestCellArea HGCalTestCellArea.cc + test/HGCalTestCellArea.cc + + Description: + + Implementation: + +*/ +// +// Original Author: Sunanda Banerjee +// Created: Mon 2024/11/29 +// +// + +// system include files +#include +#include +#include +#include +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/Utilities/interface/transform.h" + +#include "DataFormats/DetId/interface/DetId.h" +#include "DataFormats/ForwardDetId/interface/HGCSiliconDetId.h" +#include "Geometry/HGCalCommonData/interface/HGCalDDDConstants.h" +#include "Geometry/HGCalCommonData/interface/HGCalGeomUtils.h" +#include "Geometry/Records/interface/IdealGeometryRecord.h" + +class HGCalTestCellArea : public edm::one::EDAnalyzer { +public: + explicit HGCalTestCellArea(const edm::ParameterSet &); + ~HGCalTestCellArea() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions &descriptions); + + void beginJob() override {} + void beginRun(edm::Run const &, edm::EventSetup const &) override; + void analyze(edm::Event const &iEvent, edm::EventSetup const &) override {} + void endRun(edm::Run const &, edm::EventSetup const &) override {} + void endJob() override {} + +private: + const std::vector nameDetectors_; + const std::string fileName_; + const std::vector> tok_hgcal_; + std::vector hgcCons_; + std::vector> detIds_; +}; + +HGCalTestCellArea::HGCalTestCellArea(const edm::ParameterSet &iC) + : nameDetectors_(iC.getParameter>("nameDetectors")), + fileName_(iC.getParameter("fileName")), + tok_hgcal_{edm::vector_transform(nameDetectors_, [this](const std::string &name) { + return esConsumes(edm::ESInputTag{"", name}); + })} { + std::ostringstream st1; + for (const auto &name : nameDetectors_) + st1 << " : " << name; + edm::LogVerbatim("HGCGeom") << "Test validity of cells for " << nameDetectors_.size() << " detectors" << st1.str() + << " with inputs from " << fileName_; + if (!fileName_.empty()) { + edm::FileInPath filetmp("Geometry/HGCalCommonData/data/" + fileName_); + std::string fileName = filetmp.fullPath(); + std::ifstream fInput(fileName.c_str()); + if (!fInput.good()) { + edm::LogVerbatim("HGCGeom") << "Cannot open file " << fileName; + } else { + char buffer[80]; + const std::vector dets = {DetId::HGCalEE, DetId::HGCalHSi, DetId::HGCalHSc}; + while (fInput.getline(buffer, 80)) { + std::vector items = HGCalGeomUtils::splitString(std::string(buffer)); + if (items.size() == 8) { + DetId::Detector det = static_cast(std::atoi(items[0].c_str())); + auto itr = std::find(dets.begin(), dets.end(), det); + if (itr != dets.end()) { + uint32_t pos = static_cast(itr - dets.begin()); + DetId id(0); + if ((det == DetId::HGCalEE) || (det == DetId::HGCalHSi)) { + int type = std::atoi(items[1].c_str()); + int zside = std::atoi(items[2].c_str()); + int layer = std::atoi(items[3].c_str()); + int waferU = std::atoi(items[4].c_str()); + int waferV = std::atoi(items[5].c_str()); + int cellU = std::atoi(items[6].c_str()); + int cellV = std::atoi(items[7].c_str()); + id = static_cast(HGCSiliconDetId(det, zside, type, layer, waferU, waferV, cellU, cellV)); + detIds_.emplace_back(id, pos); + } + } + } + } + fInput.close(); + } + } + edm::LogVerbatim("HGCGeom") << "Reads " << detIds_.size() << " ID's from " << fileName_; + for (unsigned int k = 0; k < detIds_.size(); ++k) { + edm::LogVerbatim("HGCGeom") << "[" << k << "] " << HGCSiliconDetId(detIds_[k].first) << " from DDConstant " + << (detIds_[k].second); + } +} + +void HGCalTestCellArea::fillDescriptions(edm::ConfigurationDescriptions &descriptions) { + std::vector names = {"HGCalEESensitive", "HGCalHESiliconSensitive"}; + edm::ParameterSetDescription desc; + desc.add>("nameDetectors", names); + desc.add("fileName", "missD88.txt"); + descriptions.add("hgcalTestCellArea", desc); +} + +// ------------ method called to produce the data ------------ +void HGCalTestCellArea::beginRun(edm::Run const &iRun, edm::EventSetup const &iSetup) { + //initiating hgc Geometry + std::vector names = {"HGCalEESensitive", "HGCalHESiliconSensitive"}; + std::vector dets = {DetId::HGCalEE, DetId::HGCalHSi}; + std::map detMap; + for (uint32_t i = 0; i < nameDetectors_.size(); i++) { + edm::LogVerbatim("HGCGeom") << "Tries to initialize HGCalGeometry and HGCalDDDConstants for " << i << ":" + << nameDetectors_[i]; + const edm::ESHandle &hgcCons = iSetup.getHandle(tok_hgcal_[i]); + if (hgcCons.isValid()) { + hgcCons_.push_back(hgcCons.product()); + } else { + edm::LogWarning("HGCGeom") << "Cannot initiate HGCalDDDConstants for " << nameDetectors_[i] << std::endl; + } + auto ii = std::find(names.begin(), names.end(), nameDetectors_[i]); + if (ii != names.end()) { + uint32_t k = static_cast(ii - names.begin()); + detMap[dets[k]] = i; + } + } + edm::LogVerbatim("HGCGeom") << "Loaded HGCalDDConstants for " << detMap.size() << " detectors"; + + for (auto itr = detMap.begin(); itr != detMap.end(); ++itr) + edm::LogVerbatim("HGCGeom") << "[" << itr->second << "]: " << nameDetectors_[itr->second] << " for Detector " + << itr->first; + + for (unsigned int k = 0; k < detIds_.size(); ++k) { + const HGCalDDDConstants *cons = hgcCons_[detMap[(detIds_[k].first).det()]]; + HGCSiliconDetId id(detIds_[k].first); + edm::LogVerbatim("HGCGeom") << "Hit[" << k << "] " << id << " Area " << cons->cellArea(id, false) << " Valid " + << cons->isValidHex8( + id.layer(), id.waferU(), id.waferV(), id.cellU(), id.cellV(), true); + } +} + +// define this as a plug-in +DEFINE_FWK_MODULE(HGCalTestCellArea); diff --git a/Geometry/HGCalCommonData/test/python/g4OverlapCheck_cfg.py b/Geometry/HGCalCommonData/test/python/g4OverlapCheck_cfg.py index a7226d43506db..ae67cec0848a0 100644 --- a/Geometry/HGCalCommonData/test/python/g4OverlapCheck_cfg.py +++ b/Geometry/HGCalCommonData/test/python/g4OverlapCheck_cfg.py @@ -60,6 +60,7 @@ if hasattr(process,'MessageLogger'): # process.MessageLogger.SimG4CoreGeometry=dict() process.MessageLogger.HGCalGeom=dict() + process.MessageLogger.EcalGeom=dict() from SimG4Core.PrintGeomInfo.g4TestGeometry_cfi import * process = checkOverlap(process) diff --git a/Geometry/HGCalCommonData/test/python/testHGCalCellArea_cfg.py b/Geometry/HGCalCommonData/test/python/testHGCalCellArea_cfg.py new file mode 100644 index 0000000000000..5f3a719d91150 --- /dev/null +++ b/Geometry/HGCalCommonData/test/python/testHGCalCellArea_cfg.py @@ -0,0 +1,76 @@ +############################################################################### +# Way to use this: +# cmsRun testHGCalNumbering_cfg.py type=V19 +# +# Options for type V16, V17, V17n, V18, V19 +# +############################################################################### +import FWCore.ParameterSet.Config as cms +import os, sys, importlib, re +import FWCore.ParameterSet.VarParsing as VarParsing + +#################################################################### +### SETUP OPTIONS +options = VarParsing.VarParsing('standard') +options.register('type', + "V19", + VarParsing.VarParsing.multiplicity.singleton, + VarParsing.VarParsing.varType.string, + "type of operations: V16, V17, V17n, V18, V19") + +### get and parse the command line arguments +options.parseArguments() +print(options) + +from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 +process = cms.Process("HGCalCellArea",Phase2C17I13M9) + +geomFile = "Geometry.HGCalCommonData.testHGCal" + options.type + "XML_cfi" +print("Geometry file: ", geomFile) + + +process.load(geomFile) +process.load("Geometry.HGCalCommonData.hgcalParametersInitialization_cfi") +process.load("Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi") +process.load("Geometry.EcalCommonData.ecalSimulationParameters_cff") +process.load("Geometry.HcalCommonData.hcalDDDSimConstants_cff") +process.load("SimGeneral.HepPDTESSource.pdt_cfi") +process.load('FWCore.MessageService.MessageLogger_cfi') + +if hasattr(process,'MessageLogger'): + process.MessageLogger.HGCalGeom=dict() + process.MessageLogger.HGCGeom=dict() + +process.load("IOMC.RandomEngine.IOMC_cff") +process.RandomNumberGeneratorService.generator.initialSeed = 456789 + +process.source = cms.Source("EmptySource") + +process.generator = cms.EDProducer("FlatRandomEGunProducer", + PGunParameters = cms.PSet( + PartID = cms.vint32(14), + MinEta = cms.double(-3.5), + MaxEta = cms.double(3.5), + MinPhi = cms.double(-3.14159265359), + MaxPhi = cms.double(3.14159265359), + MinE = cms.double(9.99), + MaxE = cms.double(10.01) + ), + AddAntiParticle = cms.bool(False), + Verbosity = cms.untracked.int32(0), + firstRun = cms.untracked.uint32(1) + ) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) +) + +process.SimpleMemoryCheck = cms.Service("SimpleMemoryCheck", + ignoreTotal = cms.untracked.int32(1), + moduleMemorySummary = cms.untracked.bool(True) +) + +process.load("Geometry.HGCalCommonData.hgcalTestCellArea_cfi") + + +process.p1 = cms.Path(process.generator*process.hgcalTestCellArea) diff --git a/Geometry/HGCalTBCommonData/python/testTB181V0XML_cfi.py b/Geometry/HGCalTBCommonData/python/testTB181V0XML_cfi.py index 194bb759a6d65..ac243c71ffcaf 100644 --- a/Geometry/HGCalTBCommonData/python/testTB181V0XML_cfi.py +++ b/Geometry/HGCalTBCommonData/python/testTB181V0XML_cfi.py @@ -14,7 +14,7 @@ 'Geometry/HGCalTBCommonData/data/TB181/Oct181/hgcalsense.xml', 'Geometry/HGCalTBCommonData/data/TB181/hgcProdCuts.xml', 'Geometry/HGCalTBCommonData/data/TB181/Oct181/hgcalCons.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml' + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml' ), rootNodeName = cms.string('cms:OCMS') ) diff --git a/Geometry/HGCalTBCommonData/python/testTB181V1XML_cfi.py b/Geometry/HGCalTBCommonData/python/testTB181V1XML_cfi.py index c5fa4490308f0..7d5dd19a226ba 100644 --- a/Geometry/HGCalTBCommonData/python/testTB181V1XML_cfi.py +++ b/Geometry/HGCalTBCommonData/python/testTB181V1XML_cfi.py @@ -11,7 +11,7 @@ 'Geometry/HGCalTBCommonData/data/TB181/Oct181/hgcalsense.xml', 'Geometry/HGCalTBCommonData/data/TB181/hgcProdCuts.xml', 'Geometry/HGCalTBCommonData/data/TB181/Oct181/hgcalCons.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml' + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml' ), rootNodeName = cms.string('cms:OCMS') diff --git a/Geometry/HGCalTBCommonData/python/testTB181V2XML_cfi.py b/Geometry/HGCalTBCommonData/python/testTB181V2XML_cfi.py index 4a7b7b98d7fc5..4bbb96bd65a98 100644 --- a/Geometry/HGCalTBCommonData/python/testTB181V2XML_cfi.py +++ b/Geometry/HGCalTBCommonData/python/testTB181V2XML_cfi.py @@ -11,7 +11,7 @@ 'Geometry/HGCalTBCommonData/data/TB181/Test/hgcalsense.xml', 'Geometry/HGCalTBCommonData/data/TB181/Test/hgcProdCuts.xml', 'Geometry/HGCalTBCommonData/data/TB181/Test/hgcalCons.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml' + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml' ), rootNodeName = cms.string('cms:OCMS') diff --git a/Geometry/HGCalTBCommonData/python/testTB181XML_cfi.py b/Geometry/HGCalTBCommonData/python/testTB181XML_cfi.py index 6a4671cefe747..20f8781916100 100644 --- a/Geometry/HGCalTBCommonData/python/testTB181XML_cfi.py +++ b/Geometry/HGCalTBCommonData/python/testTB181XML_cfi.py @@ -14,7 +14,7 @@ 'Geometry/HGCalTBCommonData/data/TB181/Oct181/hgcalsense.xml', 'Geometry/HGCalTBCommonData/data/TB181/hgcProdCuts.xml', 'Geometry/HGCalTBCommonData/data/TB181/Oct181/hgcalCons.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml' + 'Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml' ), rootNodeName = cms.string('cms:OCMS') diff --git a/Geometry/HcalCommonData/data/hcalRecNumbering/2026/hcalRecNumbering.xml b/Geometry/HcalCommonData/data/hcalRecNumbering/2030/hcalRecNumbering.xml similarity index 100% rename from Geometry/HcalCommonData/data/hcalRecNumbering/2026/hcalRecNumbering.xml rename to Geometry/HcalCommonData/data/hcalRecNumbering/2030/hcalRecNumbering.xml diff --git a/Geometry/HcalCommonData/data/hcalSimNumbering/2026/hcalSimNumbering.xml b/Geometry/HcalCommonData/data/hcalSimNumbering/2030/hcalSimNumbering.xml similarity index 100% rename from Geometry/HcalCommonData/data/hcalSimNumbering/2026/hcalSimNumbering.xml rename to Geometry/HcalCommonData/data/hcalSimNumbering/2030/hcalSimNumbering.xml diff --git a/Geometry/HcalCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py b/Geometry/HcalCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py index 157b81d870aa7..28a8c8a04daa0 100644 --- a/Geometry/HcalCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py +++ b/Geometry/HcalCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py @@ -1,25 +1,22 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -104,21 +101,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/HcalCommonData/python/testHcalOnlyGeometryXML_cfi.py b/Geometry/HcalCommonData/python/testHcalOnlyGeometryXML_cfi.py index 05ed21d99fbd2..e7a8bb479ebbf 100644 --- a/Geometry/HcalCommonData/python/testHcalOnlyGeometryXML_cfi.py +++ b/Geometry/HcalCommonData/python/testHcalOnlyGeometryXML_cfi.py @@ -8,7 +8,7 @@ 'Geometry/CMSCommonData/data/normal/cmsextent.xml', 'Geometry/CMSCommonData/data/cms/2017/v1/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v1/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/CMSCommonData/data/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', diff --git a/Geometry/HcalCommonData/python/testPhase2GeometryFineXML_cfi.py b/Geometry/HcalCommonData/python/testPhase2GeometryFineXML_cfi.py index 9293b5fa4b7b9..00ccab96beab1 100644 --- a/Geometry/HcalCommonData/python/testPhase2GeometryFineXML_cfi.py +++ b/Geometry/HcalCommonData/python/testPhase2GeometryFineXML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,19 +70,19 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/brmrotations.xml', - 'Geometry/ForwardCommonData/data/brm/2026/v1/brm.xml', + 'Geometry/ForwardCommonData/data/brm/2030/v1/brm.xml', 'Geometry/ForwardCommonData/data/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', @@ -98,21 +98,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardCommonData/data/brmsens.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/CMSCommonData/data/FieldParameters.xml', diff --git a/Geometry/HcalCommonData/python/testPhase2GeometryXML_cfi.py b/Geometry/HcalCommonData/python/testPhase2GeometryXML_cfi.py index 684b7f9b26c28..5aeac5851f052 100644 --- a/Geometry/HcalCommonData/python/testPhase2GeometryXML_cfi.py +++ b/Geometry/HcalCommonData/python/testPhase2GeometryXML_cfi.py @@ -1,25 +1,22 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -43,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -73,19 +70,19 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/brmrotations.xml', - 'Geometry/ForwardCommonData/data/brm/2026/v1/brm.xml', + 'Geometry/ForwardCommonData/data/brm/2030/v1/brm.xml', 'Geometry/ForwardCommonData/data/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', @@ -106,22 +103,22 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardCommonData/data/brmsens.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v2/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v1/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v1/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v1/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v1/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v1c/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v1c/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v1c/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v1c/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v2/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v2/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v2/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v2/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v3/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v3/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v3/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v3/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v3c/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v3c/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v3c/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v3c/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v4/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v4/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v4/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v4/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v4c/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v4c/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v4c/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v4c/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v5/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v5/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v5/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v5/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml b/Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml similarity index 100% rename from Geometry/HcalSimData/data/CaloUtil/2026/v5c/CaloUtil.xml rename to Geometry/HcalSimData/data/CaloUtil/2030/v5c/CaloUtil.xml diff --git a/Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml b/Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml similarity index 100% rename from Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml rename to Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml diff --git a/Geometry/MTDCommonData/interface/BTLElectronicsMapping.h b/Geometry/MTDCommonData/interface/BTLElectronicsMapping.h new file mode 100644 index 0000000000000..9fa4dfaf0ac6f --- /dev/null +++ b/Geometry/MTDCommonData/interface/BTLElectronicsMapping.h @@ -0,0 +1,80 @@ +#ifndef DATAFORMATS_BTLELECTRONICSMAPPING_H +#define DATAFORMATS_BTLELECTRONICSMAPPING_H 1 + +#include +#include + +#include "DataFormats/ForwardDetId/interface/BTLDetId.h" + +/** \brief BTL TOFHIR channel mapping with crystal BTLDetId + Convention: + SiPMside 0 == Minus Side + SiPMside 1 == Plus Side + */ + +class BTLElectronicsMapping { +public: + struct SiPMChPair { + int Minus; + int Plus; + }; + + struct TOFHIRChPair { + int Minus; + int Plus; + }; + + // Map SiPM Channel to crystal bars for Forward module orientation + static constexpr std::array SiPMChannelMapFW{ + {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}}; + // Map SiPM Channel to crystal bars for Backward module orientation + static constexpr std::array SiPMChannelMapBW{ + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16}}; + + // Map TOFHIR Channel to SiPM Channel + static constexpr std::array THChannelMap{ + {4, 1, 0, 3, 2, 6, 7, 9, 5, 11, 8, 12, 10, 14, 15, 13, + 17, 16, 18, 19, 20, 23, 21, 26, 22, 27, 28, 31, 30, 24, 25, 29}}; + + /** Default constructor -- invalid value */ + BTLElectronicsMapping(); + + // Get SiPM Channel number from crystal + int SiPMCh(uint32_t smodCopy, uint32_t crystal, uint32_t SiPMSide); + int SiPMCh(BTLDetId det, uint32_t SiPMSide); + int SiPMCh(uint32_t rawID, uint32_t SiPMSide); + + SiPMChPair GetSiPMChPair(uint32_t smodCopy, uint32_t crystal); + SiPMChPair GetSiPMChPair(BTLDetId det); + SiPMChPair GetSiPMChPair(uint32_t rawID); + + // Get TOFHIR Channel number from crystal + int TOFHIRCh(uint32_t smodCopy, uint32_t crystal, uint32_t SiPMSide); + int TOFHIRCh(BTLDetId det, uint32_t SiPMSide); + int TOFHIRCh(uint32_t rawID, uint32_t SiPMSide); + + TOFHIRChPair GetTOFHIRChPair(uint32_t smodCopy, uint32_t crystal); + TOFHIRChPair GetTOFHIRChPair(BTLDetId det); + TOFHIRChPair GetTOFHIRChPair(uint32_t rawID); + + // Get xtal from TOFHIR Channel number + int THChToXtal(uint32_t smodCopy, uint32_t THCh); + BTLDetId THChToBTLDetId( + uint32_t zside, uint32_t rod, uint32_t runit, uint32_t dmodule, uint32_t smodCopy, uint32_t THCh); + + /** Returns TOFHIR ASIC number in construction database. */ + int TOFHIRASIC(uint32_t dmodule, uint32_t smodCopy); + int TOFHIRASIC(BTLDetId det); + int TOFHIRASIC(uint32_t rawID); + + /** Returns FE board number */ + int FEBoardFromDM(uint32_t dmodule); + int FEBoard(BTLDetId det); + int FEBoard(uint32_t rawID); + +private: +}; + +#endif diff --git a/Geometry/MTDCommonData/interface/BTLNumberingScheme.h b/Geometry/MTDCommonData/interface/BTLNumberingScheme.h index e19b25a57cf4a..09e7b166e142a 100644 --- a/Geometry/MTDCommonData/interface/BTLNumberingScheme.h +++ b/Geometry/MTDCommonData/interface/BTLNumberingScheme.h @@ -9,9 +9,6 @@ class BTLNumberingScheme : public MTDNumberingScheme { static constexpr uint32_t kBTLcrystalLevel = 9; static constexpr uint32_t kBTLmoduleLevel = 8; - static constexpr std::array negModCopy{ - {3, 2, 1, 6, 5, 4, 9, 8, 7, 12, 11, 10, 15, 14, 13, 18, 17, 16, 21, 20, 19, 24, 23, 22}}; - // to temporarily map V3 into V2-like input static constexpr std::array globalru2type{ {1, 1, 2, 2, 3, 3}}; diff --git a/Geometry/MTDCommonData/src/BTLElectronicsMapping.cc b/Geometry/MTDCommonData/src/BTLElectronicsMapping.cc new file mode 100644 index 0000000000000..f751fbd411033 --- /dev/null +++ b/Geometry/MTDCommonData/src/BTLElectronicsMapping.cc @@ -0,0 +1,198 @@ +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "Geometry/MTDCommonData/interface/BTLElectronicsMapping.h" +#include "FWCore/Utilities/interface/Exception.h" + +#include +#include +#include +BTLElectronicsMapping::BTLElectronicsMapping() {} + +// Get SiPM Channel from crystal ID + +int BTLElectronicsMapping::SiPMCh(uint32_t smodCopy, uint32_t crystal, uint32_t SiPMSide) { + if (0 > int(crystal) || crystal > BTLDetId::kCrystalsPerModuleV2) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::BTLElectronicsMapping(): " + << "****************** Bad crystal number = " << int(crystal); + return 0; + } + + if (0 > int(smodCopy) || smodCopy > BTLDetId::kSModulesPerDM) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad detector module copy = " << int(smodCopy); + return 0; + } + + if (smodCopy == 0) + return BTLElectronicsMapping::SiPMChannelMapFW[crystal + SiPMSide * BTLDetId::kCrystalsPerModuleV2]; + else + return BTLElectronicsMapping::SiPMChannelMapBW[crystal + SiPMSide * BTLDetId::kCrystalsPerModuleV2]; +} + +int BTLElectronicsMapping::SiPMCh(BTLDetId det, uint32_t SiPMSide) { + uint32_t smodCopy = det.smodule(); + uint32_t crystal = det.crystal(); + + return BTLElectronicsMapping::SiPMCh(smodCopy, crystal, SiPMSide); +} + +int BTLElectronicsMapping::SiPMCh(uint32_t rawId, uint32_t SiPMSide) { + BTLDetId theId(rawId); + return BTLElectronicsMapping::SiPMCh(theId, SiPMSide); +} + +BTLElectronicsMapping::SiPMChPair BTLElectronicsMapping::GetSiPMChPair(uint32_t smodCopy, uint32_t crystal) { + BTLElectronicsMapping::SiPMChPair SiPMChs; + SiPMChs.Minus = BTLElectronicsMapping::SiPMCh(smodCopy, crystal, 0); + SiPMChs.Plus = BTLElectronicsMapping::SiPMCh(smodCopy, crystal, 1); + return SiPMChs; +} + +BTLElectronicsMapping::SiPMChPair BTLElectronicsMapping::GetSiPMChPair(BTLDetId det) { + BTLElectronicsMapping::SiPMChPair SiPMChs; + SiPMChs.Minus = BTLElectronicsMapping::SiPMCh(det, 0); + SiPMChs.Plus = BTLElectronicsMapping::SiPMCh(det, 1); + return SiPMChs; +} +BTLElectronicsMapping::SiPMChPair BTLElectronicsMapping::GetSiPMChPair(uint32_t rawID) { + BTLElectronicsMapping::SiPMChPair SiPMChs; + SiPMChs.Minus = BTLElectronicsMapping::SiPMCh(rawID, 0); + SiPMChs.Plus = BTLElectronicsMapping::SiPMCh(rawID, 1); + return SiPMChs; +} + +// Get TOFHIR Channel from crystal ID + +int BTLElectronicsMapping::TOFHIRCh(uint32_t smodCopy, uint32_t crystal, uint32_t SiPMSide) { + int SiPMCh_ = BTLElectronicsMapping::SiPMCh(smodCopy, crystal, SiPMSide); + return BTLElectronicsMapping::THChannelMap[SiPMCh_]; +} + +int BTLElectronicsMapping::TOFHIRCh(BTLDetId det, uint32_t SiPMSide) { + uint32_t smodCopy = det.smodule(); + uint32_t crystal = det.crystal(); + + return BTLElectronicsMapping::TOFHIRCh(smodCopy, crystal, SiPMSide); +} + +int BTLElectronicsMapping::TOFHIRCh(uint32_t rawId, uint32_t SiPMSide) { + BTLDetId theId(rawId); + return BTLElectronicsMapping::TOFHIRCh(theId, SiPMSide); +} + +BTLElectronicsMapping::TOFHIRChPair BTLElectronicsMapping::GetTOFHIRChPair(uint32_t smodCopy, uint32_t crystal) { + BTLElectronicsMapping::TOFHIRChPair TOFHIRChs; + TOFHIRChs.Minus = BTLElectronicsMapping::TOFHIRCh(smodCopy, crystal, 0); + TOFHIRChs.Plus = BTLElectronicsMapping::TOFHIRCh(smodCopy, crystal, 1); + return TOFHIRChs; +} + +BTLElectronicsMapping::TOFHIRChPair BTLElectronicsMapping::GetTOFHIRChPair(BTLDetId det) { + BTLElectronicsMapping::TOFHIRChPair TOFHIRChs; + TOFHIRChs.Minus = BTLElectronicsMapping::TOFHIRCh(det, 0); + TOFHIRChs.Plus = BTLElectronicsMapping::TOFHIRCh(det, 1); + return TOFHIRChs; +} +BTLElectronicsMapping::TOFHIRChPair BTLElectronicsMapping::GetTOFHIRChPair(uint32_t rawID) { + BTLElectronicsMapping::TOFHIRChPair TOFHIRChs; + TOFHIRChs.Minus = BTLElectronicsMapping::TOFHIRCh(rawID, 0); + TOFHIRChs.Plus = BTLElectronicsMapping::TOFHIRCh(rawID, 1); + return TOFHIRChs; +} + +// Get crystal ID from TOFHIR Channel + +int BTLElectronicsMapping::THChToXtal(uint32_t smodCopy, uint32_t THCh) { + if (0 > int(smodCopy) || BTLDetId::kSModulesPerDM < smodCopy) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad detector module copy = " << int(smodCopy); + return 0; + } + + auto THChPos = + std::find(BTLElectronicsMapping::THChannelMap.begin(), BTLElectronicsMapping::THChannelMap.end(), THCh); + int targetSiPMCh = std::distance(BTLElectronicsMapping::THChannelMap.begin(), THChPos); + + std::array SiPMChMap; + if (smodCopy == 0) + SiPMChMap = BTLElectronicsMapping::SiPMChannelMapFW; + else + SiPMChMap = BTLElectronicsMapping::SiPMChannelMapBW; + + auto targetpos = std::find(SiPMChMap.begin(), SiPMChMap.end(), targetSiPMCh); + return std::distance(SiPMChMap.begin(), targetpos) % BTLDetId::kCrystalsPerModuleV2 + 1; +} + +BTLDetId BTLElectronicsMapping::THChToBTLDetId( + uint32_t zside, uint32_t rod, uint32_t runit, uint32_t dmodule, uint32_t smodCopy, uint32_t THCh) { + if (0 > int(THCh) || 31 < THCh) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad TOFHIR channel = " << int(THCh); + return 0; + } + + if (0 > int(smodCopy) || BTLDetId::kSModulesPerDM < smodCopy) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad detector module copy = " << int(smodCopy); + return 0; + } + + if (0 > int(dmodule) || 12 < dmodule) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad module copy = " << int(dmodule); + return 0; + } + + if (1 > rod || 36 < rod) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad rod copy = " << rod; + return 0; + } + + if (1 < zside) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad side = " << zside; + return 0; + } + + int crystal = BTLElectronicsMapping::THChToXtal(smodCopy, THCh); + + return BTLDetId(zside, rod, runit, dmodule, smodCopy, crystal); +} + +// Get TOFHIR asic number +// if dmodule is odd number (DM range [1-12]) +// SM1 --> TOFHIR A0 (simply 0) +// SM2 --> TOFHIR A1 (simply 1) +// else if dmodule is even number the order is inverted +// SM1 --> TOFHIR A1 (simply 1) +// SM2 --> TOFHIR A0 (simply 0) +int BTLElectronicsMapping::TOFHIRASIC(uint32_t dmodule, uint32_t smodCopy) { + if (dmodule % BTLDetId::kSModulesInDM == 0) + return smodCopy; + else + return BTLDetId::kSModulesInDM - smodCopy - 1; +} + +int BTLElectronicsMapping::TOFHIRASIC(BTLDetId det) { + uint32_t dmodule = det.dmodule(); + uint32_t smodCopy = det.smodule(); + return BTLElectronicsMapping::TOFHIRASIC(dmodule, smodCopy); +} + +int BTLElectronicsMapping::TOFHIRASIC(uint32_t rawID) { + BTLDetId theId(rawID); + return BTLElectronicsMapping::TOFHIRASIC(theId); +} + +/** Returns FE board number */ +int BTLElectronicsMapping::FEBoardFromDM(uint32_t dmodule) { return dmodule; } + +int BTLElectronicsMapping::FEBoard(BTLDetId det) { + uint32_t dmodule = det.dmodule(); + return BTLElectronicsMapping::FEBoardFromDM(dmodule); +} + +int BTLElectronicsMapping::FEBoard(uint32_t rawID) { + BTLDetId theId(rawID); + return BTLElectronicsMapping::FEBoard(theId); +} diff --git a/Geometry/MTDCommonData/src/BTLNumberingScheme.cc b/Geometry/MTDCommonData/src/BTLNumberingScheme.cc index bd06ad10c7606..11815440c7cd6 100644 --- a/Geometry/MTDCommonData/src/BTLNumberingScheme.cc +++ b/Geometry/MTDCommonData/src/BTLNumberingScheme.cc @@ -1,3 +1,5 @@ +#define EDM_ML_DEBUG + #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "Geometry/MTDCommonData/interface/BTLNumberingScheme.h" @@ -17,7 +19,7 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { LogDebug("MTDGeom") << "BTLNumberingScheme geometry levels = " << nLevels; - uint32_t zside(999), rodCopy(0), runitCopy(0), modCopy(0), modtyp(0), crystal(0); + uint32_t zside(999), rodCopy(0), runitCopy(0), modCopy(0), modtyp(0), crystal(0), dmodCopy(0), smodCopy(0); bool isDD4hepOK(false); if (nLevels == kBTLcrystalLevel + 1) { @@ -26,16 +28,13 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { } } -#ifdef EDM_ML_DEBUG - LogDebug("MTDGeom") << "BTLNumberingScheme::getUnitID(): isDD4hep " << isDD4hepOK; -#endif - auto bareBaseName = [&](std::string_view name) { size_t ipos = name.rfind('_'); return (isDD4hepOK) ? name.substr(0, ipos) : name; }; if (nLevels == kBTLcrystalLevel || isDD4hepOK) { + // barphiflat scenario LogDebug("MTDGeom") << bareBaseName(baseNumber.getLevelName(0)) << "[" << baseNumber.getCopyNumber(0) << "], " << bareBaseName(baseNumber.getLevelName(1)) << "[" << baseNumber.getCopyNumber(1) << "], " << bareBaseName(baseNumber.getLevelName(2)) << "[" << baseNumber.getCopyNumber(2) << "], " @@ -46,130 +45,80 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { << bareBaseName(baseNumber.getLevelName(7)) << "[" << baseNumber.getCopyNumber(7) << "], " << bareBaseName(baseNumber.getLevelName(8)) << "[" << baseNumber.getCopyNumber(8) << "]"; - // barphiflat scenario - if (baseNumber.getLevelName(0).find("Timingactive") != std::string_view::npos) { - crystal = baseNumber.getCopyNumber(0); - - modCopy = baseNumber.getCopyNumber(2); - rodCopy = baseNumber.getCopyNumber(3); - - const std::string_view& modName(baseNumber.getLevelName(2)); // name of module volume - uint32_t pos = modName.find("Positive"); - - zside = (pos <= modName.size() ? 1 : 0); - std::string_view baseName = modName.substr(modName.find(':') + 1); - - modtyp = ::atoi(&baseName.at(7)); - if (modtyp == 17) { - modtyp = 2; - } else if (modtyp == 33) { - modtyp = 3; - } - - // error checking - - if (1 > crystal || 64 < crystal) { - edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad crystal number = " << crystal - << ", Volume Number = " << baseNumber.getCopyNumber(0); - return 0; - } - - if (1 > modtyp || 3 < modtyp) { - edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad module name = " << modName - << ", Volume Name = " << baseNumber.getLevelName(2); - return 0; - } - - if (1 > modCopy || 54 < modCopy) { - edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad module copy = " << modCopy - << ", Volume Number = " << baseNumber.getCopyNumber(2); - return 0; - } - - if (1 > rodCopy || 36 < rodCopy) { - edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad rod copy = " << rodCopy - << ", Volume Number = " << baseNumber.getCopyNumber(4); - return 0; - } - - if (1 < zside) { - edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad side = " << zside - << ", Volume Name = " << baseNumber.getLevelName(2); - return 0; - } + edm::LogError("MTDGeom") << "Geometry v1 of BTL not supported, run on a Geometry configuration D95 or latest "; + throw cms::Exception("Configuration") << "Invalid BTL Geometry configuration (v1)"; } else if (baseNumber.getLevelName(0).find("BTLCrystal") != std::string_view::npos) { // v2 or v3 scenario - crystal = baseNumber.getCopyNumber(0); - modCopy = baseNumber.getCopyNumber(1); - runitCopy = baseNumber.getCopyNumber(2); - rodCopy = baseNumber.getCopyNumber(3); - + // zside copy number const std::string_view& rodName(baseNumber.getLevelName(3)); // name of module volume uint32_t pos = rodName.find("Zpos"); zside = (pos <= rodName.size() ? 1 : 0); - // for negative side swap module numbers betwee sides of the tray, so as to keep the same number for the same phi angle - // in the existing model. This introduces a misalignemtn between module number and volume copy for the negative side. - if (zside == 0) { - modCopy = negModCopy[modCopy - 1]; - } - - bool isV2(bareBaseName(baseNumber.getLevelName(0)).back() != 'l'); + // rod (tray) copy number + rodCopy = baseNumber.getCopyNumber(3) - 1; -#ifdef EDM_ML_DEBUG - LogDebug("MTDGeom") << "BTLNumberingScheme::getUnitID(): isV2 " << isV2; -#endif - - if (isV2) { - // V2: the type is embedded in crystal name + // RU, global module and crystal copy numbers + // (everything start from 0) + // V3: RU number is global RU number + runitCopy = baseNumber.getCopyNumber(2) - 1; + // V2: the type is embedded in crystal name and RU number is by type + if (bareBaseName(baseNumber.getLevelName(0)).back() != 'l') { modtyp = ::atoi(&bareBaseName(baseNumber.getLevelName(2)).back()); - } else { - // V3: build type and RU number per type from global RU number - modtyp = globalru2type[runitCopy - 1]; - runitCopy = globalru2ru[runitCopy - 1]; + runitCopy = (modtyp - 1) * BTLDetId::kRUPerTypeV2 + baseNumber.getCopyNumber(2) - 1; } + modCopy = int(baseNumber.getCopyNumber(1)) - 1; + crystal = int(baseNumber.getCopyNumber(0)) - 1; + + // Detector and sensor module numbers from global module number 0-23 + dmodCopy = int((modCopy / BTLDetId::kDModulesInRUCol) / BTLDetId::kSModulesInDM) + + (modCopy % BTLDetId::kDModulesInRUCol) * BTLDetId::kDModulesInRURow; + smodCopy = int(modCopy / BTLDetId::kDModulesInRUCol) % BTLDetId::kSModulesInDM; + // error checking + if (0 > int(crystal) || BTLDetId::kCrystalsPerModuleV2 - 1 < crystal) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad crystal number = " << int(crystal) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(0) - 1; + return 0; + } - if (1 > crystal || BTLDetId::kCrystalsPerModuleV2 < crystal) { + if (0 > int(modCopy) || BTLDetId::kModulesPerRUV2 - 1 < modCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad crystal number = " << crystal - << ", Volume Number = " << baseNumber.getCopyNumber(0); + << "****************** Bad module copy = " << int(modCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(1) - 1; return 0; } - if (1 > modtyp || 3 < modtyp) { + if (0 > int(smodCopy) || BTLDetId::kSModulesPerDM - 1 < smodCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad RU name, Volume Name = " - << bareBaseName(baseNumber.getLevelName(2)); + << "****************** Bad detector module copy = " << int(smodCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(1) - 1; return 0; } - if (1 > modCopy || BTLDetId::kModulesPerRUV2 < modCopy) { + if (0 > int(dmodCopy) || BTLDetId::kDModulesPerRU - 1 < dmodCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad module copy = " << modCopy - << ", Volume Number = " << baseNumber.getCopyNumber(1); + << "****************** Bad detector module copy = " << int(dmodCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(1) - 1; return 0; } - if (1 > runitCopy || BTLDetId::kRUPerTypeV2 < runitCopy) { + if (0 > int(runitCopy) || BTLDetId::kRUPerRod - 1 < runitCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad readout unit copy = " << runitCopy - << ", Volume Number = " << baseNumber.getCopyNumber(2); + << "****************** Bad readout unit copy = " << int(runitCopy) + << " module type = " << int(modtyp) + << ", Volume Name= " << baseNumber.getLevelName(2) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(2) - 1; return 0; } - if (1 > rodCopy || BTLDetId::HALF_ROD < rodCopy) { + if (0 > int(rodCopy) || BTLDetId::HALF_ROD - 1 < rodCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad rod copy = " << rodCopy - << ", Volume Number = " << baseNumber.getCopyNumber(3); + << "****************** Bad rod copy = " << int(rodCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(3); return 0; } @@ -183,7 +132,7 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { // all inputs are fine. Go ahead and decode - BTLDetId thisBTLdetid(zside, rodCopy, runitCopy, modCopy, modtyp, crystal); + BTLDetId thisBTLdetid(zside, rodCopy, runitCopy, dmodCopy, smodCopy, crystal); intindex = thisBTLdetid.rawId(); } else if (nLevels == kBTLmoduleLevel && baseNumber.getLevelName(0).find("BTLModule") != std::string_view::npos) { @@ -198,62 +147,63 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { << bareBaseName(baseNumber.getLevelName(6)) << "[" << baseNumber.getCopyNumber(6) << "], " << bareBaseName(baseNumber.getLevelName(7)) << "[" << baseNumber.getCopyNumber(7) << "]"; - modCopy = baseNumber.getCopyNumber(0); - runitCopy = baseNumber.getCopyNumber(1); - rodCopy = baseNumber.getCopyNumber(2); - const std::string_view& rodName(baseNumber.getLevelName(2)); // name of module volume uint32_t pos = rodName.find("Zpos"); zside = (pos <= rodName.size() ? 1 : 0); - // for negative side swap module numbers betwee sides of the tray, so as to keep the same number for the same phi angle - // in the existing model. This introduces a misalignemtn between module number and volume copy for the negative side. - if (zside == 0) { - modCopy = negModCopy[modCopy - 1]; - } - - bool isV2(bareBaseName(baseNumber.getLevelName(0)).back() != 'e'); - -#ifdef EDM_ML_DEBUG - LogDebug("MTDGeom") << "BTLNumberingScheme::getUnitID(): isV2 " << isV2; -#endif + // rod (tray) copy number + rodCopy = baseNumber.getCopyNumber(2) - 1; - if (isV2) { - // V2: the type is embedded in crystal name + // RU, and global module copy numbers + // (everything start from 0) + // V3: RU number is global RU number + runitCopy = baseNumber.getCopyNumber(1) - 1; + // V2: the type is embedded in crystal name and RU number is by type + if (bareBaseName(baseNumber.getLevelName(0)).back() != 'e') { modtyp = ::atoi(&bareBaseName(baseNumber.getLevelName(1)).back()); - } else { - // V3: build type and RU number per type from global RU number - modtyp = globalru2type[runitCopy - 1]; - runitCopy = globalru2ru[runitCopy - 1]; + runitCopy = (modtyp - 1) * BTLDetId::kRUPerTypeV2 + baseNumber.getCopyNumber(1) - 1; } + modCopy = baseNumber.getCopyNumber(0) - 1; + + // eval detector and sensor module numbers from global module number 1-24 + dmodCopy = int((modCopy / BTLDetId::kDModulesInRUCol) / BTLDetId::kSModulesInDM) + + (modCopy % BTLDetId::kDModulesInRUCol) * BTLDetId::kDModulesInRURow; + smodCopy = int(modCopy / BTLDetId::kDModulesInRUCol) % BTLDetId::kSModulesInDM; // error checking - if (1 > modtyp || 3 < modtyp) { + if (0 > int(modCopy) || BTLDetId::kModulesPerRUV2 - 1 < modCopy) { + edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " + << "****************** Bad module copy = " << int(modCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(0) - 1; + return 0; + } + + if (0 > int(smodCopy) || BTLDetId::kSModulesPerDM - 1 < smodCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad RU name, Volume Name = " - << bareBaseName(baseNumber.getLevelName(1)); + << "****************** Bad detector module copy = " << int(smodCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(0) - 1; return 0; } - if (1 > modCopy || BTLDetId::kModulesPerRUV2 < modCopy) { + if (0 > int(dmodCopy) || BTLDetId::kDModulesPerRU - 1 < dmodCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad module copy = " << modCopy - << ", Volume Number = " << baseNumber.getCopyNumber(0); + << "****************** Bad detector module copy = " << int(dmodCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(0) - 1; return 0; } - if (1 > runitCopy || BTLDetId::kRUPerTypeV2 < runitCopy) { + if (0 > int(runitCopy) || BTLDetId::kRUPerRod - 1 < runitCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad readout unit copy = " << runitCopy - << ", Volume Number = " << baseNumber.getCopyNumber(1); + << "****************** Bad readout unit copy = " << int(runitCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(1) - 1; return 0; } - if (1 > rodCopy || BTLDetId::HALF_ROD < rodCopy) { + if (0 > int(rodCopy) || BTLDetId::HALF_ROD - 1 < rodCopy) { edm::LogWarning("MTDGeom") << "BTLNumberingScheme::getUnitID(): " - << "****************** Bad rod copy = " << rodCopy - << ", Volume Number = " << baseNumber.getCopyNumber(2); + << "****************** Bad rod copy = " << int(rodCopy) + << ", Volume Number (counting from 0)= " << baseNumber.getCopyNumber(2); return 0; } @@ -265,8 +215,7 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { } // all inputs are fine. Go ahead and decode - - BTLDetId thisBTLdetid(zside, rodCopy, runitCopy, modCopy, modtyp, 0); + BTLDetId thisBTLdetid(zside, rodCopy, runitCopy, dmodCopy, smodCopy, 0); intindex = thisBTLdetid.geographicalId(BTLDetId::CrysLayout::v2).rawId(); } else { @@ -277,8 +226,9 @@ uint32_t BTLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { } LogDebug("MTDGeom") << "BTL Numbering scheme: " - << " zside = " << zside << " rod = " << rodCopy << " modtyp = " << modtyp << " RU = " << runitCopy - << " module = " << modCopy << " crystal = " << crystal << " Raw Id = " << intindex << "\n" + << " Raw Id = " << intindex << " zside = " << zside << " rod = " << rodCopy + << " runit = " << runitCopy << " dmodule = " << dmodCopy << " smodule = " << smodCopy + << " module = " << modCopy + 1 << " crystal = " << crystal << "\n" << BTLDetId(intindex); return intindex; diff --git a/Geometry/MTDGeometryBuilder/interface/MTDGeomBuilderFromGeometricTimingDet.h b/Geometry/MTDGeometryBuilder/interface/MTDGeomBuilderFromGeometricTimingDet.h index 65781ab2aec78..542a8d1ba0c5e 100644 --- a/Geometry/MTDGeometryBuilder/interface/MTDGeomBuilderFromGeometricTimingDet.h +++ b/Geometry/MTDGeometryBuilder/interface/MTDGeomBuilderFromGeometricTimingDet.h @@ -9,13 +9,12 @@ #include "Geometry/CommonDetUnit/interface/GeomDetType.h" class MTDGeometry; -class MTDTopology; class MTDGeomDetType; class PMTDParameters; class MTDGeomBuilderFromGeometricTimingDet { public: - MTDGeometry* build(const GeometricTimingDet* gd, const PMTDParameters& ptp, const MTDTopology* tTopo); + MTDGeometry* build(const GeometricTimingDet* gd, const PMTDParameters& ptp); private: void buildPixel(std::vector const&, @@ -28,7 +27,6 @@ class MTDGeomBuilderFromGeometricTimingDet { double scaleFactor = 1.) const; std::map theMTDDetTypeMap; - const MTDTopology* theTopo; }; #endif diff --git a/Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h b/Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h index ab1d6cec9a4aa..14814aebaa380 100644 --- a/Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h +++ b/Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h @@ -12,7 +12,7 @@ #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" namespace edm { class Event; diff --git a/Geometry/MTDNumberingBuilder/interface/MTDTopology.h b/Geometry/MTDGeometryBuilder/interface/MTDTopology.h similarity index 50% rename from Geometry/MTDNumberingBuilder/interface/MTDTopology.h rename to Geometry/MTDGeometryBuilder/interface/MTDTopology.h index d8a572e6acf14..4ea6d97362571 100644 --- a/Geometry/MTDNumberingBuilder/interface/MTDTopology.h +++ b/Geometry/MTDGeometryBuilder/interface/MTDTopology.h @@ -3,7 +3,7 @@ #include "DataFormats/DetId/interface/DetId.h" #include "DataFormats/ForwardDetId/interface/ForwardSubdetector.h" -#include "DataFormats/ForwardDetId/interface/MTDDetId.h" +#include "DataFormats/ForwardDetId/interface/BTLDetId.h" #include "DataFormats/ForwardDetId/interface/ETLDetId.h" #include @@ -12,6 +12,20 @@ class MTDTopology { public: + struct BTLLayout { + // number of logical rods, i.e. rows of sensor modules along eta/z in phi, and of modules per rod + static constexpr uint32_t nBTLphi_ = BTLDetId::HALF_ROD * BTLDetId::kModulesPerTrkV2; + static constexpr uint32_t nBTLeta_ = + 2 * BTLDetId::kRUPerTypeV2 * BTLDetId::kCrystalTypes * BTLDetId::kModulesPerRUV2 / BTLDetId::kModulesPerTrkV2; + static constexpr uint32_t nBTLmodules_ = nBTLphi_ * nBTLeta_; + + std::array btlDetId_; + std::array btlPhi_; + std::array btlEta_; + }; + + using BTLValues = BTLLayout; + struct ETLfaceLayout { uint32_t idDiscSide_; // disc face identifier uint32_t idDetType1_; // module type id identifier for first row @@ -22,10 +36,24 @@ class MTDTopology { using ETLValues = std::vector; - MTDTopology(const int& topologyMode, const ETLValues& etl); + MTDTopology(const int& topologyMode, const BTLValues& btl, const ETLValues& etl); int getMTDTopologyMode() const { return mtdTopologyMode_; } + uint32_t btlRods() const { return btlVals_.nBTLphi_; } + uint32_t btlModulesPerRod() const { return btlVals_.nBTLeta_; } + uint32_t btlModules() const { return btlVals_.nBTLmodules_; } + + // BTL topology navigation is based on a predefined order of dets in MTDGeometry, mapped onto phi/eta grid + + std::pair btlIndex(const uint32_t detId) const; + uint32_t btlidFromIndex(const uint32_t iphi, const uint32_t ieta) const; + + // BTL topology navigation methods, find index of closest module along eta or phi + + uint32_t phishiftBTL(const uint32_t detid, const int phiShift) const; + uint32_t etashiftBTL(const uint32_t detid, const int etaShift) const; + // ETL topology navigation is based on a predefined order of dets in sector static bool orderETLSector(const GeomDet*& gd1, const GeomDet*& gd2); @@ -39,6 +67,8 @@ class MTDTopology { private: const int mtdTopologyMode_; + const BTLValues btlVals_; + const ETLValues etlVals_; static constexpr size_t failIndex_ = diff --git a/Geometry/MTDGeometryBuilder/plugins/MTDDigiGeometryESModule.cc b/Geometry/MTDGeometryBuilder/plugins/MTDDigiGeometryESModule.cc index f21a865e917b9..504be8ee5cf76 100644 --- a/Geometry/MTDGeometryBuilder/plugins/MTDDigiGeometryESModule.cc +++ b/Geometry/MTDGeometryBuilder/plugins/MTDDigiGeometryESModule.cc @@ -8,8 +8,6 @@ #include "Geometry/Records/interface/IdealGeometryRecord.h" #include "Geometry/Records/interface/PMTDParametersRcd.h" #include "CondFormats/GeometryObjects/interface/PMTDParameters.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" -#include "Geometry/Records/interface/MTDTopologyRcd.h" // Alignments #include "CondFormats/Alignment/interface/Alignments.h" @@ -45,7 +43,6 @@ class MTDDigiGeometryESModule : public edm::ESProducer { const std::string myLabel_; edm::ESGetToken geomTimingDetToken_; - edm::ESGetToken mtdTopoToken_; edm::ESGetToken pmtdParamsToken_; //alignment @@ -69,7 +66,6 @@ MTDDigiGeometryESModule::MTDDigiGeometryESModule(const edm::ParameterSet& p) auto cc = setWhatProduced(this); const edm::ESInputTag kEmpty; geomTimingDetToken_ = cc.consumesFrom(kEmpty); - mtdTopoToken_ = cc.consumesFrom(kEmpty); pmtdParamsToken_ = cc.consumesFrom(kEmpty); { @@ -109,12 +105,10 @@ std::unique_ptr MTDDigiGeometryESModule::produce(const MTDDigiGeome // GeometricTimingDet const& gD = iRecord.get(geomTimingDetToken_); - MTDTopology const& tTopo = iRecord.get(mtdTopoToken_); - PMTDParameters const& ptp = iRecord.get(pmtdParamsToken_); MTDGeomBuilderFromGeometricTimingDet builder; - std::unique_ptr mtd(builder.build(&(gD), ptp, &tTopo)); + std::unique_ptr mtd(builder.build(&(gD), ptp)); if (applyAlignment_) { // Since fake is fully working when checking for 'empty', we should get rid of applyAlignment_! diff --git a/Geometry/MTDNumberingBuilder/plugins/MTDTopologyEP.cc b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc similarity index 61% rename from Geometry/MTDNumberingBuilder/plugins/MTDTopologyEP.cc rename to Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc index e09488a7dfaac..0b060b6986a3d 100644 --- a/Geometry/MTDNumberingBuilder/plugins/MTDTopologyEP.cc +++ b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc @@ -6,11 +6,13 @@ #include "FWCore/Framework/interface/ModuleFactory.h" #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/ESProducer.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "CondFormats/GeometryObjects/interface/PMTDParameters.h" #include "Geometry/Records/interface/PMTDParametersRcd.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" +#include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include @@ -25,13 +27,18 @@ class MTDTopologyEP : public edm::ESProducer { ReturnType produce(const MTDTopologyRcd&); private: - void fillParameters(const PMTDParameters&, int& mtdTopologyMode, MTDTopology::ETLValues&); + void fillBTLtopology(const MTDGeometry&, MTDTopology::BTLValues&); + void fillETLtopology(const PMTDParameters&, int& mtdTopologyMode, MTDTopology::ETLValues&); - const edm::ESGetToken token_; + edm::ESGetToken mtdgeoToken_; + edm::ESGetToken mtdparToken_; }; -MTDTopologyEP::MTDTopologyEP(const edm::ParameterSet& conf) - : token_{setWhatProduced(this).consumesFrom(edm::ESInputTag())} {} +MTDTopologyEP::MTDTopologyEP(const edm::ParameterSet& conf) { + auto cc = setWhatProduced(this); + mtdgeoToken_ = cc.consumesFrom(edm::ESInputTag()); + mtdparToken_ = cc.consumesFrom(edm::ESInputTag()); +} void MTDTopologyEP::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription ttc; @@ -40,21 +47,47 @@ void MTDTopologyEP::fillDescriptions(edm::ConfigurationDescriptions& description MTDTopologyEP::ReturnType MTDTopologyEP::produce(const MTDTopologyRcd& iRecord) { int mtdTopologyMode; + MTDTopology::BTLValues btlVals; MTDTopology::ETLValues etlVals; - fillParameters(iRecord.get(token_), mtdTopologyMode, etlVals); + // build BTL topology content from MTDGeometry - return std::make_unique(mtdTopologyMode, etlVals); -} + fillBTLtopology(iRecord.get(mtdgeoToken_), btlVals); -void MTDTopologyEP::fillParameters(const PMTDParameters& ptp, int& mtdTopologyMode, MTDTopology::ETLValues& etlVals) { - mtdTopologyMode = ptp.topologyMode_; + // build ETL topology and topology mode information from PMTDParameters - // for legacy geometry scenarios no topology informastion is stored, only for newer ETL 2-discs layout + fillETLtopology(iRecord.get(mtdparToken_), mtdTopologyMode, etlVals); - if (mtdTopologyMode <= static_cast(MTDTopologyMode::Mode::barphiflat)) { - return; + return std::make_unique(mtdTopologyMode, btlVals, etlVals); +} + +void MTDTopologyEP::fillBTLtopology(const MTDGeometry& mtdgeo, MTDTopology::BTLValues& btlVals) { + MTDTopology::BTLLayout tmpLayout; + uint32_t index(0), iphi(1), ieta(0); + if (mtdgeo.detsBTL().size() != tmpLayout.nBTLmodules_) { + throw cms::Exception("MTDTopologyEP") << "Inconsistent size of BTL structure arrays"; } + for (const auto& det : mtdgeo.detsBTL()) { + ieta++; + + tmpLayout.btlDetId_[index] = det->geographicalId().rawId(); + tmpLayout.btlPhi_[index] = iphi; + tmpLayout.btlEta_[index] = ieta; +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("MTDTopologyEP") << "MTDTopology BTL# " << index << " id= " << det->geographicalId().rawId() + << " iphi/ieta= " << iphi << " / " << ieta; +#endif + if (ieta == tmpLayout.nBTLeta_) { + iphi++; + ieta = 0; + } + index++; + } + btlVals = tmpLayout; +} + +void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyMode, MTDTopology::ETLValues& etlVals) { + mtdTopologyMode = ptp.topologyMode_; // Check on the internal consistency of thr ETL layout information provided by parameters diff --git a/Geometry/MTDNumberingBuilder/src/ES_MTDTopology.cc b/Geometry/MTDGeometryBuilder/src/ES_MTDTopology.cc similarity index 57% rename from Geometry/MTDNumberingBuilder/src/ES_MTDTopology.cc rename to Geometry/MTDGeometryBuilder/src/ES_MTDTopology.cc index 7fcaa3b6d4ec7..2464da75b7823 100644 --- a/Geometry/MTDNumberingBuilder/src/ES_MTDTopology.cc +++ b/Geometry/MTDGeometryBuilder/src/ES_MTDTopology.cc @@ -1,4 +1,4 @@ -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "FWCore/Utilities/interface/typelookup.h" diff --git a/Geometry/MTDGeometryBuilder/src/MTDGeomBuilderFromGeometricTimingDet.cc b/Geometry/MTDGeometryBuilder/src/MTDGeomBuilderFromGeometricTimingDet.cc index 78263e7e226d7..044ea105d96ac 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDGeomBuilderFromGeometricTimingDet.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDGeomBuilderFromGeometricTimingDet.cc @@ -5,8 +5,8 @@ #include "Geometry/MTDGeometryBuilder/interface/MTDGeomDetUnit.h" #include "Geometry/MTDGeometryBuilder/interface/MTDPixelTopologyBuilder.h" #include "DataFormats/DetId/interface/DetId.h" +#include "DataFormats/ForwardDetId/interface/MTDDetId.h" #include "CondFormats/GeometryObjects/interface/PMTDParameters.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" #include "DataFormats/GeometrySurface/interface/MediumProperties.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/Utilities/interface/Exception.h" @@ -33,18 +33,13 @@ namespace { } } // namespace -MTDGeometry* MTDGeomBuilderFromGeometricTimingDet::build(const GeometricTimingDet* gd, - const PMTDParameters& ptp, - const MTDTopology* tTopo) { +MTDGeometry* MTDGeomBuilderFromGeometricTimingDet::build(const GeometricTimingDet* gd, const PMTDParameters& ptp) { theMTDDetTypeMap.clear(); MTDGeometry* tracker = new MTDGeometry(gd); std::vector comp; gd->deepComponents(comp); - if (tTopo) - theTopo = tTopo; - //define a vector which associate to the detid subdetector index -1 (from 0 to 5) the GeometridDet enumerator to be able to know which type of subdetector it is std::vector gdsubdetmap( diff --git a/Geometry/MTDNumberingBuilder/src/MTDTopology.cc b/Geometry/MTDGeometryBuilder/src/MTDTopology.cc similarity index 66% rename from Geometry/MTDNumberingBuilder/src/MTDTopology.cc rename to Geometry/MTDGeometryBuilder/src/MTDTopology.cc index 2db7cf2bf842a..2994ec2000ef1 100644 --- a/Geometry/MTDNumberingBuilder/src/MTDTopology.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDTopology.cc @@ -1,9 +1,101 @@ -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" -MTDTopology::MTDTopology(const int& topologyMode, const ETLValues& etl) - : mtdTopologyMode_(topologyMode), etlVals_(etl) {} +#include + +MTDTopology::MTDTopology(const int& topologyMode, const BTLValues& btl, const ETLValues& etl) + : mtdTopologyMode_(topologyMode), btlVals_(btl), etlVals_(etl) {} + +std::pair MTDTopology::btlIndex(const uint32_t detId) const { + size_t index(0); + bool found(false); + for (const auto& theid : btlVals_.btlDetId_) { + if (theid == detId) { + found = true; + break; + } + index++; + } + if (found) { + return std::make_pair(btlVals_.btlPhi_[index], btlVals_.btlEta_[index]); + } else { + edm::LogWarning("MTDTopology") << "Searching BTL topology for BTLDetId " << detId + << " not in BTL geometry structure"; + return std::make_pair(std::numeric_limits::max(), std::numeric_limits::max()); + } +} + +uint32_t MTDTopology::btlidFromIndex(const uint32_t iphi, const uint32_t ieta) const { + uint32_t res(0); + for (uint32_t index = 0; index < btlVals_.nBTLmodules_; index++) { + if (iphi == btlVals_.btlPhi_[index] && ieta == btlVals_.btlEta_[index]) { + res = btlVals_.btlDetId_[index]; + break; + } + } + return res; +} + +uint32_t MTDTopology::phishiftBTL(const uint32_t detid, const int phiShift) const { + if (phiShift == 0) { + edm::LogWarning("MTDTopology") << "asking of a null phiShift in BTL"; + return failIndex_; + } + // search for the next detector, check only sign from input + int sh = phiShift > 0 ? 1 : -1; + size_t index(0); + bool found(false); + for (const auto& theid : btlVals_.btlDetId_) { + if (theid == detid) { + found = true; + break; + } + index++; + } + if (found) { + int newIndex = index + sh * btlVals_.nBTLeta_; + if (newIndex >= static_cast(btlVals_.nBTLmodules_)) { + newIndex = newIndex - btlVals_.nBTLmodules_; + } else if (newIndex < 0) { + newIndex = newIndex + btlVals_.nBTLmodules_; + } + return newIndex; + } else { + edm::LogWarning("MTDTopology") << "Searching for non existent BTLDetId " << detid; + return failIndex_; + } +} + +uint32_t MTDTopology::etashiftBTL(const uint32_t detid, const int etaShift) const { + if (etaShift == 0) { + edm::LogWarning("MTDTopology") << "asking of a null etaShift in BTL"; + return failIndex_; + } + // search for the next detector, check only sign from input + int sh = etaShift > 0 ? 1 : -1; + size_t index(0); + bool found(false); + for (const auto& theid : btlVals_.btlDetId_) { + if (theid == detid) { + found = true; + break; + } + index++; + } + if (found) { + int newIndex = index + sh; + if (newIndex < 0 || newIndex >= static_cast(btlVals_.nBTLmodules_)) { + return failIndex_; + } else if (btlVals_.btlPhi_[newIndex] != btlVals_.btlPhi_[index]) { + return failIndex_; + } + return newIndex; + } else { + edm::LogWarning("MTDTopology") << "Searching for non existent BTLDetId " << detid; + return failIndex_; + } +} bool MTDTopology::orderETLSector(const GeomDet*& gd1, const GeomDet*& gd2) { ETLDetId det1(gd1->geographicalId().rawId()); diff --git a/Geometry/MTDGeometryBuilder/test/BuildFile.xml b/Geometry/MTDGeometryBuilder/test/BuildFile.xml index a4e689eabb3c7..e9d7d8d29d77f 100644 --- a/Geometry/MTDGeometryBuilder/test/BuildFile.xml +++ b/Geometry/MTDGeometryBuilder/test/BuildFile.xml @@ -1,17 +1,4 @@ - - - - - - - - - - - - - - + diff --git a/Geometry/MTDGeometryBuilder/test/DD4hep_TestBTLPixelTopology.cc b/Geometry/MTDGeometryBuilder/test/DD4hep_TestBTLPixelTopology.cc deleted file mode 100644 index 5ec8d2157cb76..0000000000000 --- a/Geometry/MTDGeometryBuilder/test/DD4hep_TestBTLPixelTopology.cc +++ /dev/null @@ -1,344 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/one/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESTransientHandle.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/Exception.h" - -#include "Geometry/Records/interface/IdealGeometryRecord.h" -#include "Geometry/Records/interface/DDSpecParRegistryRcd.h" - -#include "DetectorDescription/DDCMS/interface/DDDetector.h" -#include "DetectorDescription/DDCMS/interface/DDSolidShapes.h" -#include "DetectorDescription/DDCMS/interface/DDFilteredView.h" -#include "DetectorDescription/DDCMS/interface/DDSpecParRegistry.h" - -#include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" -#include "Geometry/MTDCommonData/interface/MTDBaseNumber.h" -#include "Geometry/MTDCommonData/interface/BTLNumberingScheme.h" -#include "Geometry/MTDCommonData/interface/ETLNumberingScheme.h" - -#include "DataFormats/ForwardDetId/interface/BTLDetId.h" -#include "DataFormats/ForwardDetId/interface/ETLDetId.h" - -#include "Geometry/Records/interface/MTDTopologyRcd.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" -#include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/Records/interface/MTDDigiGeometryRecord.h" -#include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" -#include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" - -#include "DataFormats/Math/interface/GeantUnits.h" -#include "DataFormats/Math/interface/Rounding.h" -#include - -using namespace cms; -using namespace geant_units::operators; - -class DD4hep_TestBTLPixelTopology : public edm::one::EDAnalyzer<> { -public: - explicit DD4hep_TestBTLPixelTopology(const edm::ParameterSet&); - ~DD4hep_TestBTLPixelTopology() = default; - - void beginJob() override {} - void analyze(edm::Event const&, edm::EventSetup const&) override; - void endJob() override {} - - void theBaseNumber(cms::DDFilteredView& fv); - -private: - const edm::ESInputTag tag_; - - MTDBaseNumber thisN_; - BTLNumberingScheme btlNS_; - - edm::ESGetToken dddetToken_; - edm::ESGetToken dspecToken_; - edm::ESGetToken mtdtopoToken_; - edm::ESGetToken mtdgeoToken_; - - std::stringstream sunitt; - constexpr static double tolerance{0.5e-3_mm}; -}; - -using DD3Vector = ROOT::Math::DisplacementVector3D>; -using cms_rounding::roundIfNear0; - -DD4hep_TestBTLPixelTopology::DD4hep_TestBTLPixelTopology(const edm::ParameterSet& iConfig) - : tag_(iConfig.getParameter("DDDetector")), thisN_(), btlNS_() { - dddetToken_ = esConsumes(tag_); - dspecToken_ = esConsumes(tag_); - mtdtopoToken_ = esConsumes(tag_); - mtdgeoToken_ = esConsumes(tag_); -} - -void DD4hep_TestBTLPixelTopology::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { - auto pDD = iSetup.getTransientHandle(dddetToken_); - - auto pSP = iSetup.getTransientHandle(dspecToken_); - - if (!pDD.isValid()) { - edm::LogError("DD4hep_TestBTLPixelTopology") << "ESTransientHandle pDD is not valid!"; - return; - } - if (pDD.description()) { - edm::LogInfo("DD4hep_TestBTLPixelTopology") << pDD.description()->type_ << " label: " << pDD.description()->label_; - } else { - edm::LogWarning("DD4hep_TestBTLPixelTopology") << "NO label found pDD.description() returned false."; - } - - if (!pSP.isValid()) { - edm::LogError("DD4hep_TestBTLPixelTopology") << "ESTransientHandle pSP is not valid!"; - return; - } - - auto pTP = iSetup.getTransientHandle(mtdtopoToken_); - if (!pTP.isValid()) { - edm::LogError("DD4hep_TestBTLPixelTopology") << "ESTransientHandle pTP is not valid!"; - return; - } else { - edm::LogInfo("DD4hep_TestBTLPixelTopology") - << "MTD topology mode = " << pTP.product()->getMTDTopologyMode() << " BTLDetId:CrysLayout = " - << static_cast(MTDTopologyMode::crysLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())); - } - - auto pDG = iSetup.getTransientHandle(mtdgeoToken_); - if (!pDG.isValid()) { - edm::LogError("DD4hep_TestBTLPixelTopology") << "ESTransientHandle pDG is not valid!"; - return; - } else { - edm::LogInfo("DD4hep_TestBTLPixelTopology") - << "Geometry node for MTDGeom is " << &(*pDG) << "\n" - << " # detectors = " << pDG.product()->detUnits().size() << "\n" - << " # types = " << pDG.product()->detTypes().size() << "\n" - << " # BTL dets = " << pDG.product()->detsBTL().size() << "\n" - << " # ETL dets = " << pDG.product()->detsETL().size() << "\n" - << " # layers " << pDG.product()->geomDetSubDetector(1) << " = " << pDG.product()->numberOfLayers(1) << "\n" - << " # layers " << pDG.product()->geomDetSubDetector(2) << " = " << pDG.product()->numberOfLayers(2) << "\n"; - } - - DDFilteredView fv(pDD.product(), pDD.product()->description()->worldVolume()); - fv.next(0); - - DDSpecParRefs specs; - std::string attribute("ReadOutName"), name("FastTimerHitsBarrel"); - pSP.product()->filter(specs, attribute, name); - - edm::LogVerbatim("DD4hep_TestBTLPixelTopology").log([&specs](auto& log) { - log << "Filtered DD SpecPar Registry size: " << specs.size() << "\n"; - for (const auto& t : specs) { - log << "\nSpecPar " << t.first << ":\nRegExps { "; - for (const auto& ki : t.second->paths) - log << ki << " "; - log << "};\n "; - for (const auto& kl : t.second->spars) { - log << kl.first << " = "; - for (const auto& kil : kl.second) { - log << kil << " "; - } - log << "\n "; - } - } - }); - - bool isBarrel = true; - bool exitLoop = false; - uint32_t level(0); - - do { - if (dd4hep::dd::noNamespace(fv.name()) == "BarrelTimingLayer") { - isBarrel = true; - edm::LogInfo("DD4hep_TestBTLPixelTopology") << "isBarrel = " << isBarrel; - } else if (dd4hep::dd::noNamespace(fv.name()) == "EndcapTimingLayer") { - isBarrel = false; - edm::LogInfo("DD4hep_TestBTLPixelTopology") << "isBarrel = " << isBarrel; - } - - theBaseNumber(fv); - - auto print_path = [&]() { - std::stringstream ss; - ss << " - OCMS[0]/"; - for (int ii = thisN_.getLevels() - 1; ii-- > 0;) { - ss << thisN_.getLevelName(ii); - ss << "["; - ss << thisN_.getCopyNumber(ii); - ss << "]/"; - } - return ss.str(); - }; - - if (level > 0 && fv.navPos().size() < level) { - level = 0; - exitLoop = true; - } - if (dd4hep::dd::noNamespace(fv.name()) == "BarrelTimingLayer") { - level = fv.navPos().size(); - } - - // Test only the desired subdetector - - if (exitLoop && isBarrel) { - break; - } - - // Actions for MTD volumes: search for sensitive detectors - - bool isSens = false; - - for (auto const& t : specs) { - for (auto const& it : t.second->paths) { - if (dd4hep::dd::compareEqual(dd4hep::dd::noNamespace(fv.name()), dd4hep::dd::realTopName(it))) { - isSens = true; - break; - } - } - } - - if (isSens && isBarrel) { - std::stringstream spix; - spix << print_path() << "\n\n"; - - BTLDetId theId(btlNS_.getUnitID(thisN_)); - - DetId geoId = theId.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())); - const MTDGeomDet* thedet = pDG.product()->idToDet(geoId); - - if (thedet == nullptr) { - throw cms::Exception("BTLDeviceSim") << "GeographicalID: " << std::hex << geoId.rawId() << " (" << theId.rawId() - << ") is invalid!" << std::dec << std::endl; - } - const ProxyMTDTopology& topoproxy = static_cast(thedet->topology()); - const RectangularMTDTopology& topo = static_cast(topoproxy.specificTopology()); - - int origRow = theId.row(topo.nrows()); - int origCol = theId.column(topo.nrows()); - spix << "rawId= " << theId.rawId() << " geoId= " << geoId.rawId() << " side/rod= " << theId.mtdSide() << " / " - << theId.mtdRR() << " type/RU= " << theId.modType() << " / " << theId.runit() - << " module/geomodule= " << theId.module() << " / " << static_cast(geoId).module() - << " crys= " << theId.crystal() << " BTLDetId row/col= " << origRow << " / " << origCol; - spix << "\n"; - - // - // Test of positions for sensitive detectors - // - - auto fround = [&](double in) { - std::stringstream ss; - ss << std::fixed << std::setw(14) << roundIfNear0(in); - return ss.str(); - }; - - if (!dd4hep::isA(fv.solid())) { - throw cms::Exception("DD4hep_TestBTLPixelTopology") << "MTD sensitive element not a DDBox"; - break; - } - dd4hep::Box mySens(fv.solid()); - - DD3Vector zeroLocal(0., 0., 0.); - DD3Vector cn1Local(mySens.x(), mySens.y(), mySens.z()); - DD3Vector cn2Local(-mySens.x(), -mySens.y(), -mySens.z()); - DD3Vector zeroGlobal = (fv.rotation())(zeroLocal) + fv.translation(); - DD3Vector cn1Global = (fv.rotation())(cn1Local) + fv.translation(); - DD3Vector cn2Global = (fv.rotation())(cn2Local) + fv.translation(); - - const size_t nTest(3); - std::array refLocalPoints{{Local3DPoint(zeroLocal.x(), zeroLocal.y(), zeroLocal.z()), - Local3DPoint(cn1Local.x(), cn1Local.y(), cn1Local.z()), - Local3DPoint(cn2Local.x(), cn2Local.y(), cn2Local.z())}}; - std::array refGlobalPoints{{zeroGlobal, cn1Global, cn2Global}}; - - for (size_t iloop = 0; iloop < nTest; iloop++) { - // translate from crystal-local coordinates to module-local coordinates to get the row and column - - Local3DPoint cmRefLocal(convertMmToCm(refLocalPoints[iloop].x() / dd4hep::mm), - convertMmToCm(refLocalPoints[iloop].y() / dd4hep::mm), - convertMmToCm(refLocalPoints[iloop].z() / dd4hep::mm)); - Local3DPoint modLocal = topo.pixelToModuleLocalPoint(cmRefLocal, origRow, origCol); - const auto& thepixel = topo.pixelIndex(modLocal); - uint8_t recoRow = static_cast(thepixel.first); - uint8_t recoCol = static_cast(thepixel.second); - - if (origRow != recoRow || origCol != recoCol) { - std::stringstream warnmsg; - warnmsg << "DIFFERENCE row/col, orig= " << origRow << " " << origCol - << " reco= " << static_cast(recoRow) << " " << static_cast(recoCol) << "\n"; - spix << warnmsg.str(); - sunitt << warnmsg.str(); - recoRow = origRow; - recoCol = origCol; - } - - Local3DPoint recoRefLocal = topo.moduleToPixelLocalPoint(modLocal); - - // reconstructed global position from reco geometry and rectangluar MTD topology - - const auto& modGlobal = thedet->toGlobal(modLocal); - - const double deltax = convertCmToMm(modGlobal.x()) - (refGlobalPoints[iloop].x() / dd4hep::mm); - const double deltay = convertCmToMm(modGlobal.y()) - (refGlobalPoints[iloop].y() / dd4hep::mm); - const double deltaz = convertCmToMm(modGlobal.z()) - (refGlobalPoints[iloop].z() / dd4hep::mm); - - const double local_deltax = recoRefLocal.x() - cmRefLocal.x(); - const double local_deltay = recoRefLocal.y() - cmRefLocal.y(); - const double local_deltaz = recoRefLocal.z() - cmRefLocal.z(); - - spix << "Ref#" << iloop << " local= " << fround(refLocalPoints[iloop].x() / dd4hep::mm) - << fround(refLocalPoints[iloop].y() / dd4hep::mm) << fround(refLocalPoints[iloop].z() / dd4hep::mm) - << " Orig global= " << fround(refGlobalPoints[iloop].x() / dd4hep::mm) - << fround(refGlobalPoints[iloop].y() / dd4hep::mm) << fround(refGlobalPoints[iloop].z() / dd4hep::mm) - << " Reco global= " << fround(convertCmToMm(modGlobal.x())) << fround(convertCmToMm(modGlobal.y())) - << fround(convertCmToMm(modGlobal.z())) << " Delta= " << fround(deltax) << fround(deltay) << fround(deltaz) - << " Local Delta= " << fround(local_deltax) << fround(local_deltay) << fround(local_deltaz) << "\n"; - if (std::abs(deltax) > tolerance || std::abs(deltay) > tolerance || std::abs(deltaz) > tolerance) { - std::stringstream warnmsg; - warnmsg << "DIFFERENCE detId/ref# " << theId.rawId() << " " << iloop << " dx/dy/dz= " << fround(deltax) - << fround(deltay) << fround(deltaz) << "\n"; - spix << warnmsg.str(); - sunitt << warnmsg.str(); - } - if (std::abs(local_deltax) > tolerance || std::abs(local_deltay) > tolerance || - std::abs(local_deltaz) > tolerance) { - std::stringstream warnmsg; - warnmsg << "DIFFERENCE detId/ref# " << theId.rawId() << " " << iloop - << " local dx/dy/dz= " << fround(local_deltax) << fround(local_deltay) << fround(local_deltaz) - << "\n"; - spix << warnmsg.str(); - sunitt << warnmsg.str(); - } - } - - spix << "\n"; - edm::LogVerbatim("DD4hep_TestBTLPixelTopology") << spix.str(); - } - } while (fv.next(0)); - - if (!sunitt.str().empty()) { - edm::LogVerbatim("MTDUnitTest") << sunitt.str(); - } -} - -void DD4hep_TestBTLPixelTopology::theBaseNumber(cms::DDFilteredView& fv) { - thisN_.reset(); - thisN_.setSize(fv.navPos().size()); - - for (uint ii = 0; ii < fv.navPos().size(); ii++) { - std::string_view name((fv.geoHistory()[ii])->GetName()); - size_t ipos = name.rfind('_'); - thisN_.addLevel(name.substr(0, ipos), fv.copyNos()[ii]); -#ifdef EDM_ML_DEBUG - edm::LogVerbatim("DD4hep_TestBTLPixelTopology") << ii << " " << name.substr(0, ipos) << " " << fv.copyNos()[ii]; -#endif - } -} - -DEFINE_FWK_MODULE(DD4hep_TestBTLPixelTopology); diff --git a/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc b/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc new file mode 100644 index 0000000000000..64317d821e7b5 --- /dev/null +++ b/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc @@ -0,0 +1,583 @@ +#include +#include +#include +#include +#include +#include + +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/ESTransientHandle.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/Exception.h" + +#include "Geometry/Records/interface/IdealGeometryRecord.h" +#include "Geometry/Records/interface/DDSpecParRegistryRcd.h" + +#include "DetectorDescription/DDCMS/interface/DDDetector.h" +#include "DetectorDescription/DDCMS/interface/DDSolidShapes.h" +#include "DetectorDescription/DDCMS/interface/DDFilteredView.h" +#include "DetectorDescription/DDCMS/interface/DDSpecParRegistry.h" + +#include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" +#include "Geometry/MTDCommonData/interface/MTDBaseNumber.h" +#include "Geometry/MTDCommonData/interface/BTLNumberingScheme.h" +#include "Geometry/MTDCommonData/interface/ETLNumberingScheme.h" + +#include "DataFormats/ForwardDetId/interface/BTLDetId.h" +#include "DataFormats/ForwardDetId/interface/ETLDetId.h" +#include "DataFormats/GeometrySurface/interface/MediumProperties.h" +#include "DataFormats/GeometrySurface/interface/RectangularPlaneBounds.h" + +#include "Geometry/Records/interface/MTDTopologyRcd.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDGeomDetUnit.h" +#include "Geometry/Records/interface/MTDDigiGeometryRecord.h" +#include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" + +#include "DataFormats/Math/interface/GeantUnits.h" +#include "DataFormats/Math/interface/Rounding.h" +#include "DataFormats/Math/interface/angle_units.h" +#include + +using namespace cms; +using namespace geant_units::operators; +using namespace cms_rounding; + +class DD4hep_TestPixelTopology : public edm::one::EDAnalyzer<> { +public: + explicit DD4hep_TestPixelTopology(const edm::ParameterSet&); + ~DD4hep_TestPixelTopology() = default; + + void beginJob() override {} + void analyze(edm::Event const&, edm::EventSetup const&) override; + void endJob() override {} + + void theBaseNumber(cms::DDFilteredView& fv); + +private: + inline std::string fround(const double in, const size_t prec) const { + std::stringstream ss; + ss << std::setprecision(prec) << std::fixed << std::setw(14) << roundIfNear0(in); + return ss.str(); + } + + inline std::string fvecround(const auto& vecin, const size_t prec) const { + std::stringstream ss; + ss << std::setprecision(prec) << std::fixed << std::setw(14) << roundVecIfNear0(vecin); + return ss.str(); + } + + void analyseRectangle(const GeomDetUnit& det); + void checkRotation(const GeomDetUnit& det); + + const edm::ESInputTag tag_; + std::string ddTopNodeName_; + + MTDBaseNumber thisN_; + BTLNumberingScheme btlNS_; + ETLNumberingScheme etlNS_; + + edm::ESGetToken dddetToken_; + edm::ESGetToken dspecToken_; + edm::ESGetToken mtdtopoToken_; + edm::ESGetToken mtdgeoToken_; + + std::stringstream sunitt_; + constexpr static double tolerance{0.5e-3_mm}; +}; + +using DD3Vector = ROOT::Math::DisplacementVector3D>; +using angle_units::operators::convertRadToDeg; + +DD4hep_TestPixelTopology::DD4hep_TestPixelTopology(const edm::ParameterSet& iConfig) + : tag_(iConfig.getParameter("DDDetector")), + ddTopNodeName_(iConfig.getUntrackedParameter("ddTopNodeName", "BarrelTimingLayer")), + thisN_(), + btlNS_(), + etlNS_() { + dddetToken_ = esConsumes(tag_); + dspecToken_ = esConsumes(tag_); + mtdtopoToken_ = esConsumes(tag_); + mtdgeoToken_ = esConsumes(tag_); +} + +void DD4hep_TestPixelTopology::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { + auto pDD = iSetup.getTransientHandle(dddetToken_); + + auto pSP = iSetup.getTransientHandle(dspecToken_); + + if (ddTopNodeName_ != "BarrelTimingLayer" && ddTopNodeName_ != "EndcapTimingLayer") { + edm::LogWarning("DD4hep_TestPixelTopology") << ddTopNodeName_ << "Not valid top MTD volume"; + return; + } + + if (!pDD.isValid()) { + edm::LogError("DD4hep_TestPixelTopology") << "ESTransientHandle pDD is not valid!"; + return; + } + if (pDD.description()) { + edm::LogVerbatim("DD4hep_TestPixelTopology") << pDD.description()->type_ << " label: " << pDD.description()->label_; + } else { + edm::LogPrint("DD4hep_TestPixelTopology") << "NO label found pDD.description() returned false."; + } + + if (!pSP.isValid()) { + edm::LogError("DD4hep_TestPixelTopology") << "ESTransientHandle pSP is not valid!"; + return; + } + + auto pTP = iSetup.getTransientHandle(mtdtopoToken_); + if (!pTP.isValid()) { + edm::LogError("DD4hep_TestPixelTopology") << "ESTransientHandle pTP is not valid!"; + return; + } else { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "MTD topology mode = " << pTP.product()->getMTDTopologyMode() << " BtlLayout = " + << static_cast(MTDTopologyMode::crysLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())) + << " EtlLayout = " + << static_cast(MTDTopologyMode::etlLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())); + sunitt_ << "MTD topology mode = " << pTP.product()->getMTDTopologyMode() << " BtlLayout = " + << static_cast(MTDTopologyMode::crysLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())) + << " EtlLayout = " + << static_cast(MTDTopologyMode::etlLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())); + } + + auto pDG = iSetup.getTransientHandle(mtdgeoToken_); + if (!pDG.isValid()) { + edm::LogError("DD4hep_TestPixelTopology") << "ESTransientHandle pDG is not valid!"; + return; + } + + DDSpecParRefs specs; + std::string attribute("MtdDDStructure"), name; + bool isBarrel = false; + if (ddTopNodeName_ == "BarrelTimingLayer") { + edm::LogVerbatim("DD4hep_TestPixelTopology") << " BTL MTDGeometry:\n"; + sunitt_ << " BTL MTDGeometry:\n"; + name = "FastTimerHitsBarrel"; + isBarrel = true; + } else if (ddTopNodeName_ == "EndcapTimingLayer") { + edm::LogVerbatim("DD4hep_TestPixelTopology") << " ETL MTDGeometry:\n"; + sunitt_ << " ETL MTDGeometry:\n"; + name = "FastTimerHitsEndcap"; + } else { + edm::LogError("DD4hep_TestPixelTopology") << "No correct sensitive detector provided, abort" << ddTopNodeName_; + return; + } + pSP.product()->filter(specs, attribute, ddTopNodeName_); + attribute = "ReadOutName"; + pSP.product()->filter(specs, attribute, name); + + edm::LogVerbatim("DD4hep_TestPixelTopology").log([&specs](auto& log) { + log << "Filtered DD SpecPar Registry size: " << specs.size() << "\n"; + for (const auto& t : specs) { + log << "\nSpecPar " << t.first << ":\nRegExps { "; + for (const auto& ki : t.second->paths) + log << ki << " "; + log << "};\n "; + for (const auto& kl : t.second->spars) { + log << kl.first << " = "; + for (const auto& kil : kl.second) { + log << kil << " "; + } + log << "\n "; + } + } + }); + + std::vector filterName; + for (auto const& t : specs) { + for (auto const& kl : t.second->spars) { + if (kl.first == attribute) { + for (auto const& it : t.second->paths) { + filterName.emplace_back(it); + } + } + } + } + + DDFilteredView fv(pDD.product(), pDD.product()->description()->worldVolume()); + fv.mergedSpecifics(specs); + fv.firstChild(); + + bool write = false; + bool exitLoop = false; + uint32_t level(0); + uint32_t count(0); + uint32_t nSensBTL(0); + uint32_t nSensETL(0); + uint32_t oldgeoId(0); + + do { + theBaseNumber(fv); + + auto print_path = [&]() { + std::stringstream ss; + ss << " - OCMS[0]/"; + for (int ii = thisN_.getLevels() - 1; ii-- > 0;) { + ss << thisN_.getLevelName(ii); + ss << "["; + ss << thisN_.getCopyNumber(ii); + ss << "]/"; + } + return ss.str(); + }; + + if (level > 0 && fv.navPos().size() < level && count == 2) { + exitLoop = true; + } + if (dd4hep::dd::noNamespace(fv.name()) == ddTopNodeName_) { + write = true; + level = fv.navPos().size(); + count++; + } + + // Test only the desired subdetector + + if (exitLoop) { + break; + } + + if (write) { + // Actions for MTD volumes: search for sensitive detectors + + bool isSens = false; + + for (auto const& it : filterName) { + if (dd4hep::dd::compareEqual(dd4hep::dd::noNamespace(fv.name()), dd4hep::dd::realTopName(it))) { + isSens = true; + break; + } + } + + if (isSens) { + DetId theId, geoId; + BTLDetId theIdBTL, modIdBTL; + ETLDetId theIdETL, modIdETL; + if (isBarrel) { + theIdBTL = btlNS_.getUnitID(thisN_); + theId = theIdBTL; + geoId = theIdBTL.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(pTP.product()->getMTDTopologyMode())); + modIdBTL = geoId; + } else { + theIdETL = etlNS_.getUnitID(thisN_); + theId = theIdETL; + geoId = theIdETL.geographicalId(); + modIdETL = geoId; + } + + const MTDGeomDet* thedet = pDG.product()->idToDet(geoId); + + if (dynamic_cast((thedet)) == nullptr) { + throw cms::Exception("DD4hep_TestPixelTopology") + << "GeographicalID: " << std::hex << geoId.rawId() << " (" << theId.rawId() + << ") with invalid MTDGeomDetUnit!" << std::dec << std::endl; + } + + bool isNewId(false); + if (geoId != oldgeoId) { + oldgeoId = geoId; + isNewId = true; + if (isBarrel) { + nSensBTL++; + } else { + nSensETL++; + } + const GeomDetUnit theDetUnit = *(dynamic_cast(thedet)); + + if (isBarrel) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "geoId= " << modIdBTL.rawId() << " side= " << modIdBTL.mtdSide() << " RU/mod= " << modIdBTL.runit() + << " / " << modIdBTL.module(); + sunitt_ << "geoId= " << modIdBTL.rawId() << " side= " << modIdBTL.mtdSide() + << " RU/mod= " << modIdBTL.runit() << " / " << modIdBTL.module(); + } else { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() + << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " << modIdETL.sector() + << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() << " / " << modIdETL.sensor(); + sunitt_ << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() + << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " + << modIdETL.sector() << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() + << " / " << modIdETL.sensor(); + } + analyseRectangle(theDetUnit); + } + + if (thedet == nullptr) { + throw cms::Exception("DD4hep_TestPixelTopology") << "GeographicalID: " << std::hex << geoId.rawId() << " (" + << theId.rawId() << ") is invalid!" << std::dec << std::endl; + } + const ProxyMTDTopology& topoproxy = static_cast(thedet->topology()); + const RectangularMTDTopology& topo = static_cast(topoproxy.specificTopology()); + + int origRow(-1), origCol(-1), recoRow(-1), recoCol(-1); + if (isBarrel) { + origRow = theIdBTL.row(topo.nrows()); + origCol = theIdBTL.column(topo.nrows()); + } + + // + // Test of positions for sensitive detectors + // + + if (!dd4hep::isA(fv.solid())) { + throw cms::Exception("DD4hep_TestPixelTopology") << "MTD sensitive element not a DDBox"; + break; + } + dd4hep::Box mySens(fv.solid()); + + double xoffset(0.); + double yoffset(0.); + if (!isBarrel) { + xoffset = topo.gapxBorder() + 0.5 * topo.pitch().first; + yoffset = topo.gapyBorder() + 0.5 * topo.pitch().second; + } + DD3Vector zeroLocal(0., 0., 0.); + DD3Vector cn1Local(mySens.x() - xoffset, mySens.y() - yoffset, mySens.z()); + DD3Vector cn2Local(-mySens.x() + xoffset, -mySens.y() + yoffset, -mySens.z()); + DD3Vector zeroGlobal = (fv.rotation())(zeroLocal) + fv.translation(); + DD3Vector cn1Global = (fv.rotation())(cn1Local) + fv.translation(); + DD3Vector cn2Global = (fv.rotation())(cn2Local) + fv.translation(); + + const size_t nTest(3); + std::array refLocalPoints{{Local3DPoint(zeroLocal.x(), zeroLocal.y(), zeroLocal.z()), + Local3DPoint(cn1Local.x(), cn1Local.y(), cn1Local.z()), + Local3DPoint(cn2Local.x(), cn2Local.y(), cn2Local.z())}}; + std::array refGlobalPoints{{zeroGlobal, cn1Global, cn2Global}}; + + for (size_t iloop = 0; iloop < nTest; iloop++) { + Local3DPoint cmRefLocal(convertMmToCm(refLocalPoints[iloop].x() / dd4hep::mm), + convertMmToCm(refLocalPoints[iloop].y() / dd4hep::mm), + convertMmToCm(refLocalPoints[iloop].z() / dd4hep::mm)); + + Local3DPoint modLocal, recoRefLocal; + if (isBarrel) { + // if BTL translate from crystal-local coordinates to module-local coordinates to get the row and column + modLocal = topo.pixelToModuleLocalPoint(cmRefLocal, origRow, origCol); + recoRefLocal = topo.moduleToPixelLocalPoint(modLocal); + const auto& thepixel = topo.pixelIndex(modLocal); + recoRow = thepixel.first; + recoCol = thepixel.second; + + if (origRow != recoRow || origCol != recoCol) { + edm::LogVerbatim("DD4hep_TestPixelTopology") << "DIFFERENCE row/col, orig= " << origRow << " " << origCol + << " reco= " << recoRow << " " << recoCol << "\n"; + sunitt_ << "DIFFERENCE row/col, orig= " << origRow << " " << origCol << " reco= " << recoRow << " " + << recoCol << "\n"; + recoRow = origRow; + recoCol = origCol; + } + } else { + // if ETL find the pixel corresponding to the referemce point, compute the pixel coordinate and convert back for check + modLocal = cmRefLocal; + const auto& thepixel = topo.pixelIndex(modLocal); + Local3DPoint pixLocal = topo.moduleToPixelLocalPoint(modLocal); + recoRefLocal = topo.pixelToModuleLocalPoint(pixLocal, thepixel.first, thepixel.second); + recoRow = thepixel.first; + recoCol = thepixel.second; + } + + // reconstructed global position from reco geometry and rectangluar MTD topology + + const auto& modGlobal = thedet->toGlobal(modLocal); + + if (isNewId && iloop == nTest - 1) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "row/col= " << recoRow << " / " << recoCol << " local pos= " << fvecround(modLocal, 4) + << " global pos= " << fvecround(modGlobal, 4) << "\n"; + sunitt_ << "row/col= " << recoRow << " / " << recoCol << " local pos= " << fvecround(modLocal, 2) + << " global pos= " << fvecround(modGlobal, 2) << "\n"; + } + + const double deltax = convertCmToMm(modGlobal.x()) - (refGlobalPoints[iloop].x() / dd4hep::mm); + const double deltay = convertCmToMm(modGlobal.y()) - (refGlobalPoints[iloop].y() / dd4hep::mm); + const double deltaz = convertCmToMm(modGlobal.z()) - (refGlobalPoints[iloop].z() / dd4hep::mm); + + const double local_deltax = recoRefLocal.x() - cmRefLocal.x(); + const double local_deltay = recoRefLocal.y() - cmRefLocal.y(); + const double local_deltaz = recoRefLocal.z() - cmRefLocal.z(); + + if (std::abs(deltax) > tolerance || std::abs(deltay) > tolerance || std::abs(deltaz) > tolerance || + std::abs(local_deltax) > tolerance || std::abs(local_deltay) > tolerance || + std::abs(local_deltaz) > tolerance) { + edm::LogVerbatim("DD4hep_TestPixelTopology") << print_path() << "\n"; + sunitt_ << print_path() << "\n"; + if (isBarrel) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "rawId= " << theIdBTL.rawId() << " geoId= " << geoId.rawId() << " side/rod= " << theIdBTL.mtdSide() + << " / " << theIdBTL.mtdRR() << " RU= " << theIdBTL.runit() + << " module/geomodule= " << theIdBTL.module() << " / " << static_cast(geoId).module() + << " crys= " << theIdBTL.crystal() << " BTLDetId row/col= " << origRow << " / " << origCol << "\n"; + sunitt_ << "rawId= " << theIdBTL.rawId() << " geoId= " << geoId.rawId() + << " side/rod= " << theIdBTL.mtdSide() << " / " << theIdBTL.mtdRR() << " RU= " << theIdBTL.runit() + << " module/geomodule= " << theIdBTL.module() << " / " << static_cast(geoId).module() + << " crys= " << theIdBTL.crystal() << " BTLDetId row/col= " << origRow << " / " << origCol + << "\n"; + } else { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() + << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " + << modIdETL.sector() << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() << " / " + << modIdETL.sensor() << "\n"; + sunitt_ << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() + << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " + << modIdETL.sector() << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() + << " / " << modIdETL.sensor() << "\n"; + } + + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "Ref#" << iloop << " local= " << fround(refLocalPoints[iloop].x() / dd4hep::mm, 4) + << fround(refLocalPoints[iloop].y() / dd4hep::mm, 4) + << fround(refLocalPoints[iloop].z() / dd4hep::mm, 4) + << " Orig global= " << fround(refGlobalPoints[iloop].x() / dd4hep::mm, 4) + << fround(refGlobalPoints[iloop].y() / dd4hep::mm, 4) + << fround(refGlobalPoints[iloop].z() / dd4hep::mm, 4) + << " Reco global= " << fround(convertCmToMm(modGlobal.x()), 4) + << fround(convertCmToMm(modGlobal.y()), 4) << fround(convertCmToMm(modGlobal.z()), 4) + << " Delta= " << fround(deltax, 4) << fround(deltay, 4) << fround(deltaz, 4) + << " Local Delta= " << fround(local_deltax, 4) << fround(local_deltay, 4) << fround(local_deltaz, 4) + << "\n"; + sunitt_ << "Ref#" << iloop << " local= " << fround(refLocalPoints[iloop].x() / dd4hep::mm, 2) + << fround(refLocalPoints[iloop].y() / dd4hep::mm, 2) + << fround(refLocalPoints[iloop].z() / dd4hep::mm, 2) + << " Orig global= " << fround(refGlobalPoints[iloop].x() / dd4hep::mm, 2) + << fround(refGlobalPoints[iloop].y() / dd4hep::mm, 2) + << fround(refGlobalPoints[iloop].z() / dd4hep::mm, 2) + << " Reco global= " << fround(convertCmToMm(modGlobal.x()), 2) + << fround(convertCmToMm(modGlobal.y()), 2) << fround(convertCmToMm(modGlobal.z()), 2) + << " Delta= " << fround(deltax, 2) << fround(deltay, 2) << fround(deltaz, 2) + << " Local Delta= " << fround(local_deltax, 2) << fround(local_deltay, 2) << fround(local_deltaz, 2) + << "\n"; + + if (std::abs(deltax) > tolerance || std::abs(deltay) > tolerance || std::abs(deltaz) > tolerance) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "DIFFERENCE detId/ref# " << theId.rawId() << " " << iloop << " dx/dy/dz= " << fround(deltax, 4) + << fround(deltay, 4) << fround(deltaz, 4) << "\n"; + sunitt_ << "DIFFERENCE detId/ref# " << theId.rawId() << " " << iloop << " dx/dy/dz= " << fround(deltax, 2) + << fround(deltay, 2) << fround(deltaz, 2) << "\n"; + } + if (std::abs(local_deltax) > tolerance || std::abs(local_deltay) > tolerance || + std::abs(local_deltaz) > tolerance) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "DIFFERENCE detId/ref# " << theId.rawId() << " " << iloop + << " local dx/dy/dz= " << fround(local_deltax, 4) << fround(local_deltay, 4) + << fround(local_deltaz, 4) << "\n"; + sunitt_ << "DIFFERENCE detId/ref# " << theId.rawId() << " " << iloop + << " local dx/dy/dz= " << fround(local_deltax, 2) << fround(local_deltay, 2) + << fround(local_deltaz, 2) << "\n"; + } + } + } + } + } + } while (fv.next(0)); + + if (isBarrel && nSensBTL != pDG.product()->detsBTL().size()) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "DIFFERENCE #ideal = " << nSensBTL << " #reco = " << pDG.product()->detsBTL().size() + << " BTL module numbers are not matching!"; + sunitt_ << "DIFFERENCE #ideal = " << nSensBTL << " #reco = " << pDG.product()->detsBTL().size() + << " BTL module numbers are not matching!"; + } + + if (!isBarrel && nSensETL != pDG.product()->detsETL().size()) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << "DIFFERENCE #ideal = " << nSensETL << " #reco = " << pDG.product()->detsBTL().size() + << " ETL module numbers are not matching!"; + sunitt_ << "DIFFERENCE #ideal = " << nSensETL << " #reco = " << pDG.product()->detsBTL().size() + << " ETL module numbers are not matching!"; + } + + if (!sunitt_.str().empty()) { + edm::LogVerbatim("MTDUnitTest") << sunitt_.str(); + } +} + +void DD4hep_TestPixelTopology::theBaseNumber(cms::DDFilteredView& fv) { + thisN_.reset(); + thisN_.setSize(fv.navPos().size()); + + for (uint ii = 0; ii < fv.navPos().size(); ii++) { + std::string_view name((fv.geoHistory()[ii])->GetName()); + size_t ipos = name.rfind('_'); + thisN_.addLevel(name.substr(0, ipos), fv.copyNos()[ii]); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("DD4hep_TestPixelTopology") << ii << " " << name.substr(0, ipos) << " " << fv.copyNos()[ii]; +#endif + } +} + +void DD4hep_TestPixelTopology::analyseRectangle(const GeomDetUnit& det) { + const double safety = 0.9999; + + const BoundPlane& p = det.specificSurface(); + const Bounds& bounds = det.surface().bounds(); + const RectangularPlaneBounds* tb = dynamic_cast(&bounds); + if (tb == nullptr) + return; // not trapezoidal + + const GlobalPoint& pos = det.position(); + double length = tb->length(); + double width = tb->width(); + double thickness = tb->thickness(); + + GlobalVector yShift = det.surface().toGlobal(LocalVector(0, 0, safety * length / 2.)); + GlobalPoint outerMiddle = pos + yShift; + GlobalPoint innerMiddle = pos + (-1. * yShift); + if (outerMiddle.perp() < innerMiddle.perp()) + std::swap(outerMiddle, innerMiddle); + + edm::LogVerbatim("DD4hep_TestPixelTopology") + << " " << fvecround(pos, 4) << " R= " << fround(std::sqrt(pos.x() * pos.x() + pos.y() * pos.y()), 4) + << " phi= " << fround(convertRadToDeg(pos.phi()), 4) << " outerMiddle " << fvecround(outerMiddle, 4) << "\n" + << " l/w/t " << fround(length, 4) << " / " << fround(width, 4) << " / " << fround(thickness, 4) + << " RadLeng= " << p.mediumProperties().radLen() << " Xi= " << p.mediumProperties().xi() + << " det center inside bounds? " << tb->inside(det.surface().toLocal(pos)) << "\n"; + sunitt_ << " " << fvecround(pos, 2) << " R= " << fround(std::sqrt(pos.x() * pos.x() + pos.y() * pos.y()), 2) + << " phi= " << fround(convertRadToDeg(pos.phi()), 2) << " outerMiddle " << fvecround(outerMiddle, 2) << "\n" + << " l/w/t " << fround(length, 2) << " / " << fround(width, 2) << " / " << fround(thickness, 2) + << " RadLeng= " << p.mediumProperties().radLen() << " Xi= " << p.mediumProperties().xi() + << " det center inside bounds? " << tb->inside(det.surface().toLocal(pos)) << "\n"; + + checkRotation(det); +} + +void DD4hep_TestPixelTopology::checkRotation(const GeomDetUnit& det) { + const double eps = 10. * std::numeric_limits::epsilon(); + static int first = 0; + if (first == 0) { + edm::LogVerbatim("DD4hep_TestPixelTopology") << "factor x numeric_limits::epsilon() " << eps; + first = 1; + } + + const Surface::RotationType& rot(det.surface().rotation()); + GlobalVector a(rot.xx(), rot.xy(), rot.xz()); + GlobalVector b(rot.yx(), rot.yy(), rot.yz()); + GlobalVector c(rot.zx(), rot.zy(), rot.zz()); + GlobalVector cref = a.cross(b); + GlobalVector aref = b.cross(c); + GlobalVector bref = c.cross(a); + if ((a - aref).mag() > eps || (b - bref).mag() > eps || (c - cref).mag() > eps) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << " DIFFERENCE Rotation not good by cross product: " << (a - aref).mag() << ", " << (b - bref).mag() << ", " + << (c - cref).mag() << " for det at pos " << det.surface().position() << "\n"; + sunitt_ << " DIFFERENCE Rotation not good by cross product: " << (a - aref).mag() << ", " << (b - bref).mag() + << ", " << (c - cref).mag() << " for det at pos " << det.surface().position() << "\n"; + } + if (fabs(a.mag() - 1.) > eps || fabs(b.mag() - 1.) > eps || fabs(c.mag() - 1.) > eps) { + edm::LogVerbatim("DD4hep_TestPixelTopology") + << " DIFFERENCE Rotation not good by vector mag: " << (a).mag() << ", " << (b).mag() << ", " << (c).mag() + << " for det at pos " << det.surface().position() << "\n"; + sunitt_ << " DIFFERENCE Rotation not good by vector mag: " << (a).mag() << ", " << (b).mag() << ", " << (c).mag() + << " for det at pos " << det.surface().position() << "\n"; + } +} + +DEFINE_FWK_MODULE(DD4hep_TestPixelTopology); diff --git a/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc b/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc index dc80d7eeb85d7..7a378e0054595 100644 --- a/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc +++ b/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc @@ -28,6 +28,8 @@ #include "CLHEP/Random/RandFlat.h" +using namespace cms_rounding; + // class declaration class MTDDigiGeometryAnalyzer : public edm::one::EDAnalyzer<> { @@ -40,18 +42,26 @@ class MTDDigiGeometryAnalyzer : public edm::one::EDAnalyzer<> { void endJob() override {} private: - void analyseRectangle(const GeomDetUnit& det); - void checkRotation(const GeomDetUnit& det); + inline std::string fround(const double in, const size_t prec) const { + std::stringstream ss; + ss << std::setprecision(prec) << std::fixed << std::setw(14) << roundIfNear0(in); + return ss.str(); + } + + inline std::string fvecround(const auto& vecin, const size_t prec) const { + std::stringstream ss; + ss << std::setprecision(prec) << std::fixed << std::setw(14) << roundVecIfNear0(vecin); + return ss.str(); + } + void checkRectangularMTDTopology(const RectangularMTDTopology&); void checkPixelsAcceptance(const GeomDetUnit& det); - std::stringstream sunitt; + std::stringstream sunitt_; edm::ESGetToken mtdgeoToken_; }; -using cms_rounding::roundIfNear0, cms_rounding::roundVecIfNear0; - MTDDigiGeometryAnalyzer::MTDDigiGeometryAnalyzer(const edm::ParameterSet& iConfig) { mtdgeoToken_ = esConsumes(); } @@ -62,40 +72,28 @@ void MTDDigiGeometryAnalyzer::analyze(const edm::Event& iEvent, const edm::Event // get the MTDGeometry // auto pDD = iSetup.getTransientHandle(mtdgeoToken_); - edm::LogInfo("MTDDigiGeometryAnalyzer") - << "Geometry node for MTDGeom is " << &(*pDD) << "\n" - << " # detectors = " << pDD->detUnits().size() << "\n" - << " # types = " << pDD->detTypes().size() << "\n" - << " # BTL dets = " << pDD->detsBTL().size() << "\n" - << " # ETL dets = " << pDD->detsETL().size() << "\n" - << " # layers " << pDD->geomDetSubDetector(1) << " = " << pDD->numberOfLayers(1) << "\n" - << " # layers " << pDD->geomDetSubDetector(2) << " = " << pDD->numberOfLayers(2) << "\n"; - sunitt << std::fixed << std::setw(7) << pDD->detUnits().size() << std::setw(7) << pDD->detTypes().size() << "\n"; - for (auto const& it : pDD->detUnits()) { - if (dynamic_cast((it)) != nullptr) { - const BoundPlane& p = (dynamic_cast((it)))->specificSurface(); - const MTDDetId mtdId(it->geographicalId()); - std::stringstream moduleLabel; - if (mtdId.mtdSubDetector() == 1) { - const BTLDetId btlId(it->geographicalId()); - moduleLabel << " BTL side " << btlId.mtdSide() << " Rod " << btlId.mtdRR() << " type/RU " << btlId.modType() - << "/" << btlId.runit() << " mod " << btlId.module(); - } else if (mtdId.mtdSubDetector() == 2) { - const ETLDetId etlId(it->geographicalId()); - moduleLabel << " ETL side " << mtdId.mtdSide() << " Disc/Side/Sector " << etlId.nDisc() << " " - << etlId.discSide() << " " << etlId.sector(); - } else { - edm::LogWarning("MTDDigiGeometryanalyzer") << (it->geographicalId()).rawId() << " unknown MTD subdetector!"; - } - edm::LogVerbatim("MTDDigiGeometryAnalyzer") - << "---------------------------------------------------------- \n" - << it->geographicalId().rawId() << moduleLabel.str() << " RadLeng Pixel " << p.mediumProperties().radLen() - << " Xi Pixel " << p.mediumProperties().xi(); - - const GeomDetUnit theDet = *(dynamic_cast(it)); - analyseRectangle(theDet); - } - } + edm::LogVerbatim("MTDDigiGeometryAnalyzer") + << "MTDGeometry:\n" + << " # detectors = " << pDD->detUnits().size() << "\n" + << " # types = " << pDD->detTypes().size() << "\n" + << " # BTL dets = " << pDD->detsBTL().size() << "\n" + << " # ETL dets = " << pDD->detsETL().size() << "\n" + << " # layers " << pDD->geomDetSubDetector(1) << " = " << pDD->numberOfLayers(1) << "\n" + << " # layers " << pDD->geomDetSubDetector(2) << " = " << pDD->numberOfLayers(2) << "\n" + << " # dets = " << pDD->dets().size() << "\n" + << " # detUnitIds = " << pDD->detUnitIds().size() << "\n" + << " # detIds = " << pDD->detIds().size() << "\n"; + + sunitt_ << "MTDGeometry:\n" + << " # detectors = " << pDD->detUnits().size() << "\n" + << " # types = " << pDD->detTypes().size() << "\n" + << " # BTL dets = " << pDD->detsBTL().size() << "\n" + << " # ETL dets = " << pDD->detsETL().size() << "\n" + << " # layers " << pDD->geomDetSubDetector(1) << " = " << pDD->numberOfLayers(1) << "\n" + << " # layers " << pDD->geomDetSubDetector(2) << " = " << pDD->numberOfLayers(2) << "\n" + << " # dets = " << pDD->dets().size() << "\n" + << " # detUnitIds = " << pDD->detUnitIds().size() << "\n" + << " # detIds = " << pDD->detIds().size() << "\n"; for (auto const& it : pDD->detTypes()) { if (dynamic_cast((it)) != nullptr) { @@ -106,117 +104,45 @@ void MTDDigiGeometryAnalyzer::analyze(const edm::Event& iEvent, const edm::Event << "\n Subdetector " << it->subDetector() << " MTD Det " << it->name() << "\n" << " Rows " << topo.nrows() << " Columns " << topo.ncolumns() << " ROCS X " << topo.rocsX() << " ROCS Y " << topo.rocsY() << " Rows/ROC " << topo.rowsperroc() << " Cols/ROC " << topo.colsperroc() - << " Pitch X " << pitchval.first << " Pitch Y " << pitchval.second << " Sensor Interpad X " - << topo.gapxInterpad() << " Sensor Interpad Y " << topo.gapyInterpad() << " Sensor Border X " - << topo.gapxBorder() << " Sensor Border Y " << topo.gapyBorder(); - sunitt << std::fixed << std::setw(7) << it->subDetector() << std::setw(4) << topo.nrows() << std::setw(4) - << topo.ncolumns() << std::setw(4) << std::setw(4) << topo.rocsX() << std::setw(4) << topo.rocsY() - << std::setw(4) << topo.rowsperroc() << std::setw(4) << topo.colsperroc() << std::setw(10) - << pitchval.first << std::setw(10) << pitchval.second << std::setw(10) << topo.gapxInterpad() - << std::setw(10) << topo.gapyInterpad() << std::setw(10) << topo.gapxBorder() << std::setw(10) - << topo.gapyBorder() << "\n"; + << " Pitch X " << fround(pitchval.first, 4) << " Pitch Y " << fround(pitchval.second, 4) + << " Sensor Interpad X " << fround(topo.gapxInterpad(), 4) << " Sensor Interpad Y " + << fround(topo.gapyInterpad(), 4) << " Sensor Border X " << fround(topo.gapxBorder(), 4) + << " Sensor Border Y " << fround(topo.gapyBorder(), 4) << "\n"; + sunitt_ << "\n Subdetector " << it->subDetector() << " MTD Det " << it->name() << "\n" + << " Rows " << topo.nrows() << " Columns " << topo.ncolumns() << " ROCS X " << topo.rocsX() + << " ROCS Y " << topo.rocsY() << " Rows/ROC " << topo.rowsperroc() << " Cols/ROC " << topo.colsperroc() + << " Pitch X " << fround(pitchval.first, 2) << " Pitch Y " << fround(pitchval.second, 2) + << " Sensor Interpad X " << fround(topo.gapxInterpad(), 2) << " Sensor Interpad Y " + << fround(topo.gapyInterpad(), 2) << " Sensor Border X " << fround(topo.gapxBorder(), 2) + << " Sensor Border Y " << fround(topo.gapyBorder(), 2) << "\n"; checkRectangularMTDTopology(topo); } } - edm::LogInfo("MTDDigiGeometryAnalyzer") << "Acceptance of BTL module:"; + edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "\nAcceptance of BTL module:"; + sunitt_ << "\nAcceptance of BTL module:"; auto const& btldet = *(dynamic_cast(pDD->detsBTL().front())); checkPixelsAcceptance(btldet); - edm::LogInfo("MTDDigiGeometryAnalyzer") << "Acceptance of ETL module:"; + edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "\nAcceptance of ETL module:"; + sunitt_ << "\nAcceptance of ETL module:"; auto const& etldet = *(dynamic_cast(pDD->detsETL().front())); checkPixelsAcceptance(etldet); - edm::LogInfo("MTDDigiGeometryAnalyzer") << "Additional MTD geometry content:" - << "\n" - << " # dets = " << pDD->dets().size() << "\n" - << " # detUnitIds = " << pDD->detUnitIds().size() << "\n" - << " # detIds = " << pDD->detIds().size() << "\n"; - sunitt << std::fixed << std::setw(7) << pDD->dets().size() << std::setw(7) << pDD->detUnitIds().size() << std::setw(7) - << pDD->detIds().size() << "\n"; - - edm::LogVerbatim("MTDUnitTest") << sunitt.str(); + edm::LogVerbatim("MTDUnitTest") << sunitt_.str(); } void MTDDigiGeometryAnalyzer::checkRectangularMTDTopology(const RectangularMTDTopology& topo) { - std::stringstream pixelinfo; - pixelinfo << "Pixel center location:\n"; + edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "Pixel center location:\n"; + sunitt_ << "Pixel center location:\n"; LocalPoint center(0, 0, 0); for (int r = 0; r < topo.nrows(); r++) { for (int c = 0; c < topo.ncolumns(); c++) { - sunitt << r << " " << c << " " << topo.pixelToModuleLocalPoint(center, r, c) << "\n"; - pixelinfo << r << " " << c << " " << topo.pixelToModuleLocalPoint(center, r, c) << "\n"; + edm::LogVerbatim("MTDDigiGeometryAnalyzer") << std::setw(7) << r << std::setw(7) << c << " " + << fvecround(topo.pixelToModuleLocalPoint(center, r, c), 4) << "\n"; + sunitt_ << std::setw(7) << r << std::setw(7) << c << " " + << fvecround(topo.pixelToModuleLocalPoint(center, r, c), 2) << "\n"; } } - edm::LogVerbatim("MTDDigiGeometryAnalyzer") << pixelinfo.str(); -} - -void MTDDigiGeometryAnalyzer::analyseRectangle(const GeomDetUnit& det) { - const double safety = 0.9999; - - const Bounds& bounds = det.surface().bounds(); - const RectangularPlaneBounds* tb = dynamic_cast(&bounds); - if (tb == nullptr) - return; // not trapezoidal - - const GlobalPoint& pos = det.position(); - double length = tb->length(); - double width = tb->width(); - double thickness = tb->thickness(); - - GlobalVector yShift = det.surface().toGlobal(LocalVector(0, 0, safety * length / 2.)); - GlobalPoint outerMiddle = pos + yShift; - GlobalPoint innerMiddle = pos + (-1. * yShift); - if (outerMiddle.perp() < innerMiddle.perp()) - std::swap(outerMiddle, innerMiddle); - - auto fround = [&](double in) { - std::stringstream ss; - ss << std::fixed << std::setw(14) << roundIfNear0(in); - return ss.str(); - }; - - auto fvecround = [&](GlobalPoint vecin) { - std::stringstream ss; - ss << std::fixed << std::setw(14) << roundVecIfNear0(vecin); - return ss.str(); - }; - - edm::LogVerbatim("MTDDigiGeometryAnalyzer") - << "Det at pos " << fvecround(pos) << " radius " << fround(std::sqrt(pos.x() * pos.x() + pos.y() * pos.y())) - << " has length " << fround(length) << " width " << fround(width) << " thickness " << fround(thickness) << "\n" - << "det center inside bounds? " << tb->inside(det.surface().toLocal(pos)) << "\n" - << "outerMiddle " << fvecround(outerMiddle); - sunitt << det.geographicalId().rawId() << fvecround(pos) << fround(length) << fround(width) << fround(thickness) - << tb->inside(det.surface().toLocal(pos)) << fvecround(outerMiddle) << "\n"; - - checkRotation(det); -} - -void MTDDigiGeometryAnalyzer::checkRotation(const GeomDetUnit& det) { - const double eps = std::numeric_limits::epsilon(); - static int first = 0; - if (first == 0) { - edm::LogVerbatim("MTDDigiGeometryAnalyzer") - << "numeric_limits::epsilon() " << std::numeric_limits::epsilon(); - first = 1; - } - - const Surface::RotationType& rot(det.surface().rotation()); - GlobalVector a(rot.xx(), rot.xy(), rot.xz()); - GlobalVector b(rot.yx(), rot.yy(), rot.yz()); - GlobalVector c(rot.zx(), rot.zy(), rot.zz()); - GlobalVector cref = a.cross(b); - GlobalVector aref = b.cross(c); - GlobalVector bref = c.cross(a); - if ((a - aref).mag() > eps || (b - bref).mag() > eps || (c - cref).mag() > eps) { - edm::LogWarning("MTDDigiGeometryAnalyzer") - << " Rotation not good by cross product: " << (a - aref).mag() << ", " << (b - bref).mag() << ", " - << (c - cref).mag() << " for det at pos " << det.surface().position(); - } - if (fabs(a.mag() - 1.) > eps || fabs(b.mag() - 1.) > eps || fabs(c.mag() - 1.) > eps) { - edm::LogWarning("MTDDigiGeometryAnalyzer") << " Rotation not good by bector mag: " << (a).mag() << ", " << (b).mag() - << ", " << (c).mag() << " for det at pos " << det.surface().position(); - } } void MTDDigiGeometryAnalyzer::checkPixelsAcceptance(const GeomDetUnit& det) { @@ -227,7 +153,9 @@ void MTDDigiGeometryAnalyzer::checkPixelsAcceptance(const GeomDetUnit& det) { double length = tb->length(); double width = tb->width(); - edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "X (width) = " << width << " Y (length) = " << length; + edm::LogVerbatim("MTDDigiGeometryAnalyzer") + << " X (width) = " << fround(width, 4) << " Y (length) = " << fround(length, 4); + sunitt_ << " X (width) = " << fround(width, 2) << " Y (length) = " << fround(length, 2); const ProxyMTDTopology& topoproxy = static_cast(det.topology()); const RectangularMTDTopology& topo = static_cast(topoproxy.specificTopology()); @@ -246,7 +174,8 @@ void MTDDigiGeometryAnalyzer::checkPixelsAcceptance(const GeomDetUnit& det) { } double acc = (double)inpixel / (double)maxindex; double accerr = std::sqrt(acc * (1. - acc) / (double)maxindex); - edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "Acceptance: " << acc << " +/- " << accerr; + edm::LogVerbatim("MTDDigiGeometryAnalyzer") << " Acceptance: " << fround(acc, 3) << " +/- " << fround(accerr, 3); + sunitt_ << " Acceptance: " << fround(acc, 3) << " +/- " << fround(accerr, 3); } //define this as a plug-in diff --git a/Geometry/MTDGeometryBuilder/test/dd4hep_mtd_cfg.py b/Geometry/MTDGeometryBuilder/test/dd4hep_mtd_cfg.py deleted file mode 100644 index 42df806bdad16..0000000000000 --- a/Geometry/MTDGeometryBuilder/test/dd4hep_mtd_cfg.py +++ /dev/null @@ -1,64 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -import Configuration.Geometry.defaultPhase2ConditionsEra_cff as _settings -_PH2_GLOBAL_TAG, _PH2_ERA = _settings.get_era_and_conditions(_settings.DEFAULT_VERSION) - -from Configuration.ProcessModifiers.dd4hep_cff import dd4hep - -process = cms.Process("GeometryTest",_PH2_ERA,dd4hep) - -process.source = cms.Source("EmptyIOVSource", - lastValue = cms.uint64(1), - timetype = cms.string('runnumber'), - firstValue = cms.uint64(1), - interval = cms.uint64(1) - ) - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(1) -) - -process.load("FWCore.MessageLogger.MessageLogger_cfi") -process.MessageLogger.cerr.threshold = cms.untracked.string('INFO') -process.MessageLogger.cerr.INFO = cms.untracked.PSet( - limit = cms.untracked.int32(0) -) -process.MessageLogger.cerr.MTDDigiGeometryAnalyzer = cms.untracked.PSet( - limit = cms.untracked.int32(-1) -) -process.MessageLogger.cerr.DD4hep_TestBTLPixelTopology = cms.untracked.PSet( - limit = cms.untracked.int32(-1) -) -process.MessageLogger.files.mtdGeometryDD4hep = cms.untracked.PSet( - DEBUG = cms.untracked.PSet( - limit = cms.untracked.int32(0) - ), - ERROR = cms.untracked.PSet( - limit = cms.untracked.int32(0) - ), - FWKINFO = cms.untracked.PSet( - limit = cms.untracked.int32(0) - ), - INFO = cms.untracked.PSet( - limit = cms.untracked.int32(0) - ), - MTDUnitTest = cms.untracked.PSet( - limit = cms.untracked.int32(-1) - ), - WARNING = cms.untracked.PSet( - limit = cms.untracked.int32(0) - ), - noLineBreaks = cms.untracked.bool(True), - threshold = cms.untracked.string('INFO') -) - -process.load("Configuration.Geometry.GeometryDD4hepExtendedRun4DefaultReco_cff") - -process.Timing = cms.Service("Timing") - -process.prod = cms.EDAnalyzer("MTDDigiGeometryAnalyzer") -process.prod1 = cms.EDAnalyzer("DD4hep_TestBTLPixelTopology", - DDDetector = cms.ESInputTag('',''), -) - -process.p1 = cms.Path(process.prod+process.prod1) diff --git a/Geometry/MTDGeometryBuilder/test/mtd_cfg.py b/Geometry/MTDGeometryBuilder/test/mtd_cfg.py index 59e7243471ceb..54cb0715bc0d5 100644 --- a/Geometry/MTDGeometryBuilder/test/mtd_cfg.py +++ b/Geometry/MTDGeometryBuilder/test/mtd_cfg.py @@ -3,7 +3,9 @@ import Configuration.Geometry.defaultPhase2ConditionsEra_cff as _settings _PH2_GLOBAL_TAG, _PH2_ERA = _settings.get_era_and_conditions(_settings.DEFAULT_VERSION) -process = cms.Process("GeometryTest", _PH2_ERA) +from Configuration.ProcessModifiers.dd4hep_cff import dd4hep + +process = cms.Process("GeometryTest",_PH2_ERA,dd4hep) process.source = cms.Source("EmptyIOVSource", lastValue = cms.uint64(1), @@ -22,9 +24,15 @@ limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.MTDDigiGeometryAnalyzer = cms.untracked.PSet( - limit = cms.untracked.int32(-1) + limit = cms.untracked.int32(0) +) +process.MessageLogger.cerr.DD4hep_TestPixelTopology = cms.untracked.PSet( + limit = cms.untracked.int32(0) +) +process.MessageLogger.cerr.MTDUnitTest = cms.untracked.PSet( + limit = cms.untracked.int32(0) ) -process.MessageLogger.files.mtdGeometryDDD = cms.untracked.PSet( +process.MessageLogger.files.mtdGeometryDD4hep = cms.untracked.PSet( DEBUG = cms.untracked.PSet( limit = cms.untracked.int32(0) ), @@ -47,18 +55,18 @@ threshold = cms.untracked.string('INFO') ) -process.load("Configuration.Geometry.GeometryExtendedRun4Default_cff") - -process.load("Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff") - -process.load("Geometry.MTDNumberingBuilder.mtdTopology_cfi") -process.load("Geometry.MTDGeometryBuilder.mtdParameters_cff") - -process.load("Geometry.MTDGeometryBuilder.mtdGeometry_cfi") -process.mtdGeometry.applyAlignment = cms.bool(False) +process.load("Configuration.Geometry.GeometryDD4hepExtendedRun4DefaultReco_cff") process.Timing = cms.Service("Timing") process.prod = cms.EDAnalyzer("MTDDigiGeometryAnalyzer") +process.prod1 = cms.EDAnalyzer("DD4hep_TestPixelTopology", + DDDetector = cms.ESInputTag('',''), + ddTopNodeName = cms.untracked.string('BarrelTimingLayer') +) +process.prod2 = cms.EDAnalyzer("DD4hep_TestPixelTopology", + DDDetector = cms.ESInputTag('',''), + ddTopNodeName = cms.untracked.string('EndcapTimingLayer') +) -process.p1 = cms.Path(process.prod) +process.p1 = cms.Path(cms.wait(process.prod)+cms.wait(process.prod1)+process.prod2) diff --git a/Geometry/MTDGeometryBuilder/test/runTest.sh b/Geometry/MTDGeometryBuilder/test/runTest.sh index bc2127a23aed7..825b1813daa39 100755 --- a/Geometry/MTDGeometryBuilder/test/runTest.sh +++ b/Geometry/MTDGeometryBuilder/test/runTest.sh @@ -14,7 +14,6 @@ function checkDiff { TEST_DIR=$CMSSW_BASE/src/Geometry/MTDGeometryBuilder/test F1=${TEST_DIR}/mtd_cfg.py -F2=${TEST_DIR}/dd4hep_mtd_cfg.py REF_FILE="Geometry/TestReference/data/mtdGeometryRef.log.gz" REF="" @@ -26,8 +25,7 @@ for d in $(echo $CMSSW_SEARCH_PATH | tr ':' '\n') ; do done [ -z $REF ] && exit 1 -FILE1=mtdGeometryDDD.log -FILE2=mtdGeometryDD4hep.log +FILE1=mtdGeometryDD4hep.log LOG=mtdgblog DIF=mtdgbdif @@ -39,11 +37,3 @@ rm -f $LOG $DIF $FILE1 cmsRun $F1 >& $LOG || die "Failure using cmsRun $F1" $? gzip -f $FILE1 || die "$FILE1 compression fail" $? (zdiff $FILE1.gz $REF >& $DIF || [ -s $DIF ] && checkDiff $DIF || echo "OK") || die "Failure in comparison for $FILE1" $? - -rm -f $LOG $DIF $FILE2 -echo "===== Test \"cmsRun dd4hep_mtd_cfg.py\" ====" - -cmsRun $F2 >& $LOG || die "Failure using cmsRun $F2" $? -gzip -f $FILE2 || die "$FILE2 compression fail" $? -(zdiff $FILE2.gz $REF >& $DIF || [ -s $DIF ] && checkDiff $DIF || echo "OK") || die "Failure in comparison for $FILE2" $? - diff --git a/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.cc b/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.cc index 12c61a3f9e09a..9c03f0fd1cdda 100644 --- a/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.cc +++ b/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.cc @@ -9,8 +9,6 @@ #include "DataFormats/ForwardDetId/interface/ETLDetId.h" #include "Geometry/MTDCommonData/interface/MTDBaseNumber.h" -#include "DataFormats/Math/interface/deltaPhi.h" - using angle_units::operators::convertRadToDeg; template @@ -39,14 +37,14 @@ bool CmsMTDConstruction::mtdOrderPhi(const GeometricTimingDet* a, template bool CmsMTDConstruction::btlOrderPhi(const GeometricTimingDet* a, const GeometricTimingDet* b) { - return static_cast(convertRadToDeg(angle0to2pi::make0To2pi(a->phi()))) < - static_cast(convertRadToDeg(angle0to2pi::make0To2pi(b->phi()))); + return static_cast(convertRadToDeg(makempiToppi(a->phi()))) < + static_cast(convertRadToDeg(makempiToppi(b->phi()))); } template bool CmsMTDConstruction::btlOrderZ(const GeometricTimingDet* a, const GeometricTimingDet* b) { - bool order = (static_cast(convertRadToDeg(angle0to2pi::make0To2pi(a->phi()))) == - static_cast(convertRadToDeg(angle0to2pi::make0To2pi(b->phi())))) && + bool order = (static_cast(convertRadToDeg(makempiToppi(a->phi()))) == + static_cast(convertRadToDeg(makempiToppi(b->phi())))) && (a->translation().z() < b->translation().z()); return order; } @@ -57,48 +55,20 @@ void CmsMTDConstruction::buildBTLModule(DDFilteredView& fv, Geom GeometricTimingDet* det = new GeometricTimingDet(&fv, theCmsMTDStringToEnum.type(nodeName.substr(0, CmsMTDStringToEnum::kModStrLen))); - if (isBTLV2(fv)) { - auto& gh = fv.geoHistory(); - - baseNumber_.reset(); - baseNumber_.setSize(gh.size()); - - for (uint i = gh.size(); i-- > 0;) { - baseNumber_.addLevel(gh[i].logicalPart().name().name(), gh[i].copyno()); -#ifdef EDM_ML_DEBUG - edm::LogVerbatim("CmsMTDConstruction") << gh[i].logicalPart().name().name() << " " << gh[i].copyno(); -#endif - } - - det->setGeographicalID(BTLDetId(btlScheme_.getUnitID(baseNumber_))); - - } else { - const auto& copyNumbers = fv.copyNumbers(); - auto module_number = copyNumbers[copyNumbers.size() - 2]; - - constexpr char positive[] = "PositiveZ"; - constexpr char negative[] = "NegativeZ"; + auto& gh = fv.geoHistory(); - const std::string& modname(fv.name()); - size_t delim1 = modname.find("BModule"); - size_t delim2 = modname.find("Layer"); - module_number += atoi(modname.substr(delim1 + CmsMTDStringToEnum::kModStrLen, delim2).c_str()) - 1; + baseNumber_.reset(); + baseNumber_.setSize(gh.size()); + for (uint i = gh.size(); i-- > 0;) { + baseNumber_.addLevel(gh[i].logicalPart().name().name(), gh[i].copyno()); #ifdef EDM_ML_DEBUG - edm::LogVerbatim("CmsMTDConstruction") - << "BTLModule = " << modname << " " << copyNumbers[copyNumbers.size() - 3] << " " << module_number; + edm::LogVerbatim("CmsMTDConstruction") << gh[i].logicalPart().name().name() << " " << gh[i].copyno(); #endif - - if (modname.find(positive) != std::string::npos) { - det->setGeographicalID(BTLDetId(1, copyNumbers[copyNumbers.size() - 3], module_number, 0, 1)); - } else if (modname.find(negative) != std::string::npos) { - det->setGeographicalID(BTLDetId(0, copyNumbers[copyNumbers.size() - 3], module_number, 0, 1)); - } else { - throw cms::Exception("CmsMTDConstruction::buildBTLModule") - << "BTL Module " << module_number << " is neither positive nor negative in Z!"; - } } + det->setGeographicalID(BTLDetId(btlScheme_.getUnitID(baseNumber_))); + mother->addComponent(det); } @@ -108,48 +78,20 @@ void CmsMTDConstruction::buildBTLModule(cms::DDFilteredView GeometricTimingDet* det = new GeometricTimingDet(&fv, theCmsMTDStringToEnum.type(nodeName.substr(0, CmsMTDStringToEnum::kModStrLen))); - if (isBTLV2(fv)) { - baseNumber_.reset(); - baseNumber_.setSize(fv.copyNos().size()); - - for (uint i = 0; i < fv.copyNos().size(); i++) { - std::string_view name((fv.geoHistory()[i])->GetName()); - size_t ipos = name.rfind('_'); - baseNumber_.addLevel(name.substr(0, ipos), fv.copyNos()[i]); -#ifdef EDM_ML_DEBUG - edm::LogVerbatim("CmsMTDConstruction") << name.substr(0, ipos) << " " << fv.copyNos()[i]; -#endif - } - - det->setGeographicalID(BTLDetId(btlScheme_.getUnitID(baseNumber_))); - - } else { - const auto& copyNumbers = fv.copyNumbers(); - auto module_number = copyNumbers[1]; - - constexpr char positive[] = "PositiveZ"; - constexpr char negative[] = "NegativeZ"; - - const std::string modname(fv.name()); - size_t delim1 = modname.find("BModule"); - size_t delim2 = modname.find("Layer"); - module_number += atoi(modname.substr(delim1 + CmsMTDStringToEnum::kModStrLen, delim2).c_str()) - 1; + baseNumber_.reset(); + baseNumber_.setSize(fv.copyNos().size()); + for (uint i = 0; i < fv.copyNos().size(); i++) { + std::string_view name((fv.geoHistory()[i])->GetName()); + size_t ipos = name.rfind('_'); + baseNumber_.addLevel(name.substr(0, ipos), fv.copyNos()[i]); #ifdef EDM_ML_DEBUG - edm::LogVerbatim("MTDNumbering") << fv.path() << "\nBTLModule = " << modname << " " << copyNumbers[2] << " " - << module_number; + edm::LogVerbatim("CmsMTDConstruction") << name.substr(0, ipos) << " " << fv.copyNos()[i]; #endif - - if (modname.find(positive) != std::string::npos) { - det->setGeographicalID(BTLDetId(1, copyNumbers[2], module_number, 0, 1)); - } else if (modname.find(negative) != std::string::npos) { - det->setGeographicalID(BTLDetId(0, copyNumbers[2], module_number, 0, 1)); - } else { - throw cms::Exception("CmsMTDConstruction::buildBTLModule") - << "BTL Module " << module_number << " is neither positive nor negative in Z!"; - } } + det->setGeographicalID(BTLDetId(btlScheme_.getUnitID(baseNumber_))); + mother->addComponent(det); } @@ -206,10 +148,10 @@ GeometricTimingDet* CmsMTDConstruction::buildSubdet(FilteredView& GeometricTimingDet* subdet = new GeometricTimingDet(&fv, thisDet); if (thisDet == GeometricTimingDet::BTL) { - subdet->setGeographicalID(BTLDetId(0, 0, 0, 0, 0)); + subdet->setGeographicalID(BTLDetId(0, 0, 0, 0, 0, 0)); } else if (thisDet == GeometricTimingDet::ETL) { const uint32_t side = subdet->translation().z() > 0 ? 1 : 0; - subdet->setGeographicalID(ETLDetId(side, 0, 0, 0, 0)); + subdet->setGeographicalID(ETLDetId(side, 0, 0, 0, 0, 0)); } else { throw cms::Exception("CmsMTDConstruction") << " ERROR - I was expecting a SubDet, I got a " << fv.name(); } @@ -245,11 +187,6 @@ GeometricTimingDet* CmsMTDConstruction::buildLayer(FilteredView& f return layer; } -template -bool CmsMTDConstruction::isBTLV2(FilteredView& fv) { - return (fv.name().substr(0, 9) == "BTLModule"); -} - template bool CmsMTDConstruction::isETLpreV8(FilteredView& fv) { return (fv.name().find("EModule") != std::string::npos); diff --git a/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.h b/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.h index c1bb036a21d85..3bd2beb18c619 100644 --- a/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.h +++ b/Geometry/MTDNumberingBuilder/plugins/CmsMTDConstruction.h @@ -7,6 +7,19 @@ #include "Geometry/MTDCommonData/interface/BTLNumberingScheme.h" #include "Geometry/MTDCommonData/interface/ETLNumberingScheme.h" +#include "DataFormats/Math/interface/deltaPhi.h" + +namespace { + + template + inline constexpr valType makempiToppi(valType angle) { + constexpr valType twoPi = 2. * M_PI; + constexpr valType epsilon = 1.e-13; + auto tmpphi = angle0to2pi::make0To2pi(angle); + return (tmpphi - M_PI > epsilon) ? tmpphi - twoPi : tmpphi; + } +} // namespace + /** * Adds GeometricTimingDets representing final modules to the previous level */ @@ -30,7 +43,6 @@ class CmsMTDConstruction { void baseNumberFromHistory(const DDGeoHistory& gh); - bool isBTLV2(FilteredView&); bool isETLpreV8(FilteredView&); protected: diff --git a/Geometry/MTDNumberingBuilder/plugins/DDCmsMTDConstruction.cc b/Geometry/MTDNumberingBuilder/plugins/DDCmsMTDConstruction.cc index c4c6d038c5de1..e21944679c301 100644 --- a/Geometry/MTDNumberingBuilder/plugins/DDCmsMTDConstruction.cc +++ b/Geometry/MTDNumberingBuilder/plugins/DDCmsMTDConstruction.cc @@ -1,3 +1,5 @@ +//#define EDM_ML_DEBUG + #include "Geometry/MTDNumberingBuilder/plugins/DDCmsMTDConstruction.h" #include @@ -27,7 +29,7 @@ class DDNameFilter : public DDFilter { void veto(const std::string& veto) { veto_.emplace_back(veto); } bool accept(const DDExpandedView& ev) const final { - if (allowedNS_.size() == 0 && allowed_.size() == 0 && veto_.size() == 0) { + if (allowedNS_.empty() && allowed_.empty() && veto_.empty()) { return true; } bool out(false); @@ -35,7 +37,7 @@ class DDNameFilter : public DDFilter { for (const auto& test : allowedNS_) { if (currentNSName.find(test) != std::string::npos) { out = true; - if (allowed_.size() > 0 || veto_.size() > 0) { + if (!allowed_.empty() || !veto_.empty()) { std::string_view currentName(ev.logicalPart().name().name()); for (const auto& test : veto_) { if (currentName.find(test) != std::string::npos) { @@ -70,8 +72,6 @@ std::unique_ptr DDCmsMTDConstruction::construct(const DDComp DDFilteredView fv(cpv, filter); CmsMTDStringToEnum theCmsMTDStringToEnum; - // temporary workaround to distinguish BTL scenarios ordering without introducing a dependency on MTDTopologyMode - auto isBTLV2 = false; // temporary workaround to distinguish ETL scenarios ordering without introducing a dependency on MTDTopologyMode const bool prev8(fv.name().find("EModule") != std::string::npos); @@ -134,12 +134,7 @@ std::unique_ptr DDCmsMTDConstruction::construct(const DDComp // the level chosen for old corresponds to wafers for D50 and previous scenarios // if ((thisNode == GeometricTimingDet::BTLModule) && limit == 0) { - if (theCmsMTDConstruction.isBTLV2(fv)) { - limit = num; - isBTLV2 = true; - } else { - limit = num + 1; - } + limit = num; } else if ((thisNode == ETLEndComponent) && limit == 0) { limit = num; } @@ -172,26 +167,15 @@ std::unique_ptr DDCmsMTDConstruction::construct(const DDComp edm::LogVerbatim("MTDNumbering") << "GeometricTimingDet order before sorting \n" << before.str(); #endif - if (!isBTLV2) { - for (size_t index = 0; index < layer.size(); index++) { - GeometricTimingDet::ConstGeometricTimingDetContainer& icomp = layer[index]->components(); + for (size_t index = 0; index < layer.size(); index++) { + GeometricTimingDet::ConstGeometricTimingDetContainer& icomp = layer[index]->components(); + if (index > 0) { std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderZ); std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderRR); - if (index > 0) { - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderPhi); - } - } - } else { - for (size_t index = 0; index < layer.size(); index++) { - GeometricTimingDet::ConstGeometricTimingDetContainer& icomp = layer[index]->components(); - if (index > 0) { - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderZ); - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderRR); - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderPhi); - } else { - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderPhi); - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderZ); - } + std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderPhi); + } else { + std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderPhi); + std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderZ); } } @@ -224,8 +208,8 @@ std::unique_ptr DDCmsMTDConstruction::construct(const DDComp std::stringstream after(std::stringstream::in | std::stringstream::out); for (const auto& it : comp) { after << "ORDER2 " << it->geographicalId().rawId() << " " << static_cast(it->geographicalId()).mtdRR() - << " " << it->type() << " " << it->translation().z() << " " - << convertRadToDeg(angle0to2pi::make0To2pi(it->phi())) << "\n"; + << " " << it->type() << " " << it->translation().z() << " " << convertRadToDeg(makempiToppi(it->phi())) + << "\n"; } edm::LogVerbatim("MTDNumbering") << "GeometricTimingDet order after sorting \n" << after.str(); #endif @@ -274,8 +258,6 @@ std::unique_ptr DDCmsMTDConstruction::construct(const cms::D CmsMTDStringToEnum theCmsMTDStringToEnum; CmsMTDConstruction theCmsMTDConstruction; - // temporary workaround to distinguish BTL scenarios ordering without introducing a dependency on MTDTopologyMode - auto isBTLV2 = false; // temporary workaround to distinguish ETL scenarios ordering without introducing a dependency on MTDTopologyMode const bool prev8(fv.name().find("EModule") != std::string::npos); @@ -317,11 +299,6 @@ std::unique_ptr DDCmsMTDConstruction::construct(const cms::D #ifdef EDM_ML_DEBUG edm::LogVerbatim("DD4hep_MTDNumbering") << "Registered in GeometricTimingDet as type " << thisNode; #endif - if (isBTLV2 == false) { - if (theCmsMTDConstruction.isBTLV2(fv)) { - isBTLV2 = true; - } - } theCmsMTDConstruction.buildBTLModule(fv, layer.back()); } else if (thisNode == ETLEndComponent) { #ifdef EDM_ML_DEBUG @@ -344,26 +321,15 @@ std::unique_ptr DDCmsMTDConstruction::construct(const cms::D edm::LogVerbatim("DD4hep_MTDNumbering") << "GeometricTimingDet order before sorting \n" << before.str(); #endif - if (!isBTLV2) { - for (size_t index = 0; index < layer.size(); index++) { - GeometricTimingDet::ConstGeometricTimingDetContainer& icomp = layer[index]->components(); + for (size_t index = 0; index < layer.size(); index++) { + GeometricTimingDet::ConstGeometricTimingDetContainer& icomp = layer[index]->components(); + if (index > 0) { std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderZ); std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderRR); - if (index > 0) { - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderPhi); - } - } - } else { - for (size_t index = 0; index < layer.size(); index++) { - GeometricTimingDet::ConstGeometricTimingDetContainer& icomp = layer[index]->components(); - if (index > 0) { - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderZ); - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderRR); - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderPhi); - } else { - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderPhi); - std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderZ); - } + std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::mtdOrderPhi); + } else { + std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderPhi); + std::stable_sort(icomp.begin(), icomp.end(), CmsMTDConstruction::btlOrderZ); } } @@ -396,8 +362,8 @@ std::unique_ptr DDCmsMTDConstruction::construct(const cms::D std::stringstream after(std::stringstream::in | std::stringstream::out); for (const auto& it : comp) { after << "ORDER2 " << it->geographicalId().rawId() << " " << static_cast(it->geographicalId()).mtdRR() - << " " << it->type() << " " << it->translation().z() << " " - << convertRadToDeg(angle0to2pi::make0To2pi(it->phi())) << "\n"; + << " " << it->type() << " " << it->translation().z() << " " << convertRadToDeg(makempiToppi(it->phi())) + << "\n"; } edm::LogVerbatim("DD4hep_MTDNumbering") << "GeometricTimingDet order after sorting \n" << after.str(); #endif diff --git a/Geometry/MTDNumberingBuilder/python/mtdTopology_cfi.py b/Geometry/MTDNumberingBuilder/python/mtdTopology_cfi.py new file mode 100644 index 0000000000000..b0622d8db9a06 --- /dev/null +++ b/Geometry/MTDNumberingBuilder/python/mtdTopology_cfi.py @@ -0,0 +1 @@ +from Geometry.MTDGeometryBuilder.mtdTopology_cfi import * diff --git a/Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml b/Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml new file mode 100644 index 0000000000000..dd1fd9c73994e --- /dev/null +++ b/Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml b/Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml similarity index 100% rename from Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml rename to Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml diff --git a/Geometry/MuonCommonData/data/ge0shield/2026/v2/ge0shield.xml b/Geometry/MuonCommonData/data/ge0shield/2030/v2/ge0shield.xml similarity index 100% rename from Geometry/MuonCommonData/data/ge0shield/2026/v2/ge0shield.xml rename to Geometry/MuonCommonData/data/ge0shield/2030/v2/ge0shield.xml diff --git a/Geometry/MuonCommonData/data/gem21/2025/v2/gem21.xml b/Geometry/MuonCommonData/data/gem21/2025/v2/gem21.xml new file mode 100644 index 0000000000000..bc3b2424e16fa --- /dev/null +++ b/Geometry/MuonCommonData/data/gem21/2025/v2/gem21.xml @@ -0,0 +1,2418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml b/Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml similarity index 100% rename from Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml rename to Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml diff --git a/Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml b/Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml new file mode 100644 index 0000000000000..6437a778881fd --- /dev/null +++ b/Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml @@ -0,0 +1,1756 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0, 0, [mbCommon:MBPos_z] + 0.*deg, 0.*deg, 180*deg, 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + 0, 0, -[mbCommon:MBPos_z] + 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + 0, 0, -[mbCommon:MBPos_z] + 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + 0, 0, [mbCommon:MBPos_z] + 0.*deg, 0.*deg, 180*deg, 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0, 0, -[mbCommon:MBPos_z] + 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0, 0, [mbCommon:MBPos_z] + 0.*deg, 0.*deg, 180*deg, 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + 0, 0, -[mbCommon:MBPos_z] + 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + 0, 0, [mbCommon:MBPos_z] + 0.*deg, 0.*deg, 180*deg, 90.*deg, 0.*deg, 90.*deg, 0.*deg, 0.*deg, 270.*deg-[MB3PosAngle] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -[mb3:MB3SLPhiL71]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mb3:MB3SLPhiL71]-3*[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mb3:MB3SLPhiL72]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -[mbCommon:MBSLZL56]-3*[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mbCommon:MBSLZL57]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mbCommon:MBSLZL58]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -[mb3:MB3SLPhiL71]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mb3:MB3SLPhiL71]-3*[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mb3:MB3SLPhiL72]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -[mbCommon:MBChimSLZL47]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mbCommon:MBChimSLZL47]-3*[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + -[mbCommon:MBChimSLZL48]-[mbCommon:MBCell_width]+[mbCommon:MBIbeamWall], 0.*mm, 0.*mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml b/Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml new file mode 100644 index 0000000000000..4240f06fee512 --- /dev/null +++ b/Geometry/MuonCommonData/data/mb4Shield/2021/v2/mb4Shield.xml @@ -0,0 +1,3782 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MuonCommonData/data/mf/2026/v1/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v1/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v1/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v1/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v2/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v2/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v2/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v2/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v3/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v3/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v3/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v3/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v4/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v4/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v4/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v4/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v5/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v5/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v5/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v5/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v6/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v6/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v6/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v6/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v7/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v7/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v7/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v7/mf.xml diff --git a/Geometry/MuonCommonData/data/mf/2026/v8/mf.xml b/Geometry/MuonCommonData/data/mf/2030/v8/mf.xml similarity index 100% rename from Geometry/MuonCommonData/data/mf/2026/v8/mf.xml rename to Geometry/MuonCommonData/data/mf/2030/v8/mf.xml diff --git a/Geometry/MuonCommonData/data/mfshield/2026/v1/mfshield.xml b/Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml similarity index 100% rename from Geometry/MuonCommonData/data/mfshield/2026/v1/mfshield.xml rename to Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml diff --git a/Geometry/MuonCommonData/data/mfshield/2026/v2/mfshield.xml b/Geometry/MuonCommonData/data/mfshield/2030/v2/mfshield.xml similarity index 100% rename from Geometry/MuonCommonData/data/mfshield/2026/v2/mfshield.xml rename to Geometry/MuonCommonData/data/mfshield/2030/v2/mfshield.xml diff --git a/Geometry/MuonCommonData/data/mfshield/2026/v3/mfshield.xml b/Geometry/MuonCommonData/data/mfshield/2030/v3/mfshield.xml similarity index 100% rename from Geometry/MuonCommonData/data/mfshield/2026/v3/mfshield.xml rename to Geometry/MuonCommonData/data/mfshield/2030/v3/mfshield.xml diff --git a/Geometry/MuonCommonData/data/mfshield/2026/v4/mfshield.xml b/Geometry/MuonCommonData/data/mfshield/2030/v4/mfshield.xml similarity index 100% rename from Geometry/MuonCommonData/data/mfshield/2026/v4/mfshield.xml rename to Geometry/MuonCommonData/data/mfshield/2030/v4/mfshield.xml diff --git a/Geometry/MuonCommonData/data/mfshield/2026/v5/mfshield.xml b/Geometry/MuonCommonData/data/mfshield/2030/v5/mfshield.xml similarity index 100% rename from Geometry/MuonCommonData/data/mfshield/2026/v5/mfshield.xml rename to Geometry/MuonCommonData/data/mfshield/2030/v5/mfshield.xml diff --git a/Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml b/Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml similarity index 100% rename from Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml rename to Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml diff --git a/Geometry/MuonCommonData/data/muonYoke/2026/v1/muonYoke.xml b/Geometry/MuonCommonData/data/muonYoke/2030/v1/muonYoke.xml similarity index 100% rename from Geometry/MuonCommonData/data/muonYoke/2026/v1/muonYoke.xml rename to Geometry/MuonCommonData/data/muonYoke/2030/v1/muonYoke.xml diff --git a/Geometry/MuonCommonData/data/muonYoke/2026/v2/muonYoke.xml b/Geometry/MuonCommonData/data/muonYoke/2030/v2/muonYoke.xml similarity index 100% rename from Geometry/MuonCommonData/data/muonYoke/2026/v2/muonYoke.xml rename to Geometry/MuonCommonData/data/muonYoke/2030/v2/muonYoke.xml diff --git a/Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml b/Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml similarity index 100% rename from Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml rename to Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml diff --git a/Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml b/Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml new file mode 100644 index 0000000000000..5dff3b3bbb4a5 --- /dev/null +++ b/Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml @@ -0,0 +1,4511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0, 0, 6.5900*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 6.885*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 7.099*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 7.62*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 7.565*m + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + 0, 0, 8.2425*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 8.870*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 8.82*m + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + 0, 0, 9.4975*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 9.950*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 9.9*m - 0.495*cm + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + 0, 0, 10.4075*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 10.7175*m + 0.455*cm + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 10.7425*m + 0.455*cm + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + + + + + 0, 0, 6.5900*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 6.885*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 7.099*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 7.62*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 7.565*m + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + 0, 0, 8.2425*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 8.870*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 8.82*m + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + 0, 0, 9.4975*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 9.950*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 9.9*m - 0.495*cm + 0*deg, 0.*deg, 0*deg + + + + + + + + + + + 0, 0, 10.4075*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 10.7175*m + 0.455*cm + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 10.7425*m + 0.455*cm + 0.*deg, 0*deg, 0.*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -102.7713*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -102.7713*deg + + + + + + + + + + + 0, 0, 0.62495*m + 0.*deg, 0.*deg, -90.8778*deg + + + + + + + + + + + 0, 0, -0.62495*m + 0.*deg, 0.*deg, -90.8778*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -78.0664*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.7713*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.7713*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -97.9027*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -97.9027*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -94.294*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -94.294*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -94.294*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -85.706*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, 94.294*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, 94.294*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -82.9603*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, 97.0397*deg + + + + + + + + + + + 0, 0, 0.186*m + 0.*deg, 0.*deg, -90.8778*deg + + + + + + + + + + + 0, 0, -0.186*m + 0.*deg, 0.*deg, -90.8778*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -78.0664*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -78.0664*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.7713*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.7713*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90.8778*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90.8778*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -78.0664*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -78.0664*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.073*m + 0.*deg, 0.*deg, -100.132*deg + + + + + + + + + + + 0, 0, 1.073*m + 0.*deg, 0.*deg, -100.132*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -94.1649*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -94.1649*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -94.1649*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -85.8351*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -85.8351*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -85.8351*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -79.8677*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -79.8677*deg + + + + + + + + + + + 0, 0, 0.195*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -0.195*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.63405*m + 0.*deg, 0.*deg, -102.776*deg + + + + + + + + + + + 0, 0, -0.63405*m + 0.*deg, 0.*deg, -102.776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -102.776*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -103.0847*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -103.0847*deg + + + + + + + + + + + 0, 0, 0.62495*m + 0.*deg, 0.*deg, -89.6287*deg + + + + + + + + + + + 0, 0, -0.62495*m + 0.*deg, 0.*deg, -89.6287*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -76.5635*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -76.5635*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0847*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0847*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -97.8748*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -97.8748*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -93.7125*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -93.7125*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -93.7125*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -86.2875*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -86.2875*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -86.2875*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -81.7612*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -81.7612*deg + + + + + + + + + + + 0, 0, 0.186*m + 0.*deg, 0.*deg, -89.6287*deg + + + + + + + + + + + 0, 0, -0.186*m + 0.*deg, 0.*deg, -89.6287*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.5635*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.5635*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0847*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0847*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -89.6287*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -89.6287*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.5635*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.5635*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -99.7567*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -99.7567*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -93.5375*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -93.5375*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -93.5375*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -86.4625*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -86.4625*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -86.4625*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -80.2433*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -80.2433*deg + + + + + + + + + + + 0, 0, 0.195*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -0.195*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -103.3987*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -103.3987*deg + + + + + + + + + + + 0, 0, 0.62495*m + 0.*deg, 0.*deg, -90.5026*deg + + + + + + + + + + + 0, 0, -0.62495*m + 0.*deg, 0.*deg, -90.5026*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -77.0779*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -77.0779*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.3987*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.3987*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -97.9976*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -97.9976*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -93.3782*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -93.3782*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -93.3782*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -86.6218*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -86.6218*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -86.6218*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -82.4959*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -82.4959*deg + + + + + + + + + + + 0, 0, 0.186*m + 0.*deg, 0.*deg, -90.5026*deg + + + + + + + + + + + 0, 0, -0.186*m + 0.*deg, 0.*deg, -90.5026*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -77.0779*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -77.0779*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.3987*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.3987*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90.5026*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90.5026*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -77.0779*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -77.0779*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -76.8409*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -76.8409*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.8409*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.8409*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.8409*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.8409*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -103.5332*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -103.5332*deg + + + + + + + + + + + 0, 0, 0.62495*m + 0.*deg, 0.*deg, -90.2228*deg + + + + + + + + + + + 0, 0, -0.62495*m + 0.*deg, 0.*deg, -90.2228*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -76.6776*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -76.6776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.5332*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.5332*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -97.9814*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -97.9814*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -93.1208*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -93.1208*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -93.1208*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -86.8792*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -86.8792*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -86.8792*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -82.2371*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -82.2371*deg + + + + + + + + + + + 0, 0, 0.186*m + 0.*deg, 0.*deg, -90.2228*deg + + + + + + + + + + + 0, 0, -0.186*m + 0.*deg, 0.*deg, -90.2228*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.6776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.6776*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.5332*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.5332*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90.2234*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90.2234*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.6782*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.6782*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -99.4324*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -99.4324*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -92.9962*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -92.9962*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -92.9962*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -87.0038*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -87.0038*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -87.0038*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0729*m + 0.*deg, 0.*deg, -80.5676*deg + + + + + + + + + + + 0, 0, 1.0729*m + 0.*deg, 0.*deg, -80.5676*deg + + + + + + + + + + + 0, 0, 0.195*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -0.195*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -103.0516*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -103.0516*deg + + + + + + + + + + + 0, 0, 0.62495*m + 0.*deg, 0.*deg, -89.3702*deg + + + + + + + + + + + 0, 0, -0.62495*m + 0.*deg, 0.*deg, -89.3702*deg + + + + + + + + + + + 0, 0, 0.63395*m + 0.*deg, 0.*deg, -76.3521*deg + + + + + + + + + + + 0, 0, -0.63395*m + 0.*deg, 0.*deg, -76.3521*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0516*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0516*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -97.337*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -97.337*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -92.8811*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -92.8811*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -92.8811*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -90*deg + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -87.1189*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -87.1189*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -87.1189*deg + + + + + + + + + + + + + + + + + 0, 0, -1.0639*m + 0.*deg, 0.*deg, -82.0437*deg + + + + + + + + + + + 0, 0, 1.0639*m + 0.*deg, 0.*deg, -82.0437*deg + + + + + + + + + + + 0, 0, 0.186*m + 0.*deg, 0.*deg, -89.3696*deg + + + + + + + + + + + 0, 0, -0.186*m + 0.*deg, 0.*deg, -89.3696*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.3516*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.3516*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0516*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -103.0516*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -89.3696*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -89.3696*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.3516*deg + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, -76.3516*deg + + + + + + + + + + + + 0, 0, 0.*m + 0.*deg, 0.*deg, 270.00*deg + + + diff --git a/Geometry/MuonCommonData/data/rpcf/2026/v1/rpcf.xml b/Geometry/MuonCommonData/data/rpcf/2030/v1/rpcf.xml similarity index 100% rename from Geometry/MuonCommonData/data/rpcf/2026/v1/rpcf.xml rename to Geometry/MuonCommonData/data/rpcf/2030/v1/rpcf.xml diff --git a/Geometry/MuonCommonData/data/rpcf/2026/v2/rpcf.xml b/Geometry/MuonCommonData/data/rpcf/2030/v2/rpcf.xml similarity index 100% rename from Geometry/MuonCommonData/data/rpcf/2026/v2/rpcf.xml rename to Geometry/MuonCommonData/data/rpcf/2030/v2/rpcf.xml diff --git a/Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml b/Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml similarity index 100% rename from Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml rename to Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml diff --git a/Geometry/MuonCommonData/python/cmsExtendedGeometry2026D99XML_cfi.py b/Geometry/MuonCommonData/python/cmsExtendedGeometry2026D99XML_cfi.py index 188c1b7ac1990..27fec75991d4b 100644 --- a/Geometry/MuonCommonData/python/cmsExtendedGeometry2026D99XML_cfi.py +++ b/Geometry/MuonCommonData/python/cmsExtendedGeometry2026D99XML_cfi.py @@ -6,17 +6,17 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -40,9 +40,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -70,22 +70,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -101,21 +101,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v4/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', diff --git a/Geometry/MuonCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py b/Geometry/MuonCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py new file mode 100644 index 0000000000000..27fec75991d4b --- /dev/null +++ b/Geometry/MuonCommonData/python/cmsExtendedGeometryRun4D99XML_cfi.py @@ -0,0 +1,125 @@ +import FWCore.ParameterSet.Config as cms + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_OT800_IT615_2022_10/pixbar.xml', + 'Geometry/TrackerCommonData/data/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_03/tracker.xml', + 'Geometry/TrackerCommonData/data/PhaseII/OuterTracker616_2020_04/otst.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixel.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerbar.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerStructureTopology.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackersens.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelsens.xml', + 'Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/trackerRecoMaterial.xml', + 'SimTracker/TrackerMaterialAnalysis/data/trackingMaterialGroups_ForPhaseII/v2/trackingMaterialGroups_ForPhaseII.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT702_2021_03/pixelProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/hcalRecNumbering.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v17/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v17/hgcalCons.xml', + 'Geometry/HGCalCommonData/data/hgcalConsData/v17/hgcalConsData.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2015/v2/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2015/v2/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', + 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v2/btl.xml', + 'Geometry/MTDCommonData/data/etl/v7/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v4/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v4/mtdParameters.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', + 'Geometry/HGCalSimData/data/hgcsensv15.xml', + 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/zdcsens.xml', + 'Geometry/MTDSimData/data/v4/mtdsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/MTDSimData/data/v4/mtdProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/MuonCommonData/python/testExtendedGeometry2026D54XML_cfi.py b/Geometry/MuonCommonData/python/testExtendedGeometry2026D54XML_cfi.py index a25895540f5a2..8b1020a10a80d 100644 --- a/Geometry/MuonCommonData/python/testExtendedGeometry2026D54XML_cfi.py +++ b/Geometry/MuonCommonData/python/testExtendedGeometry2026D54XML_cfi.py @@ -1,8 +1,5 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials.xml', @@ -14,16 +11,16 @@ 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', - 'Geometry/CMSCommonData/data/cms/2026/v3/cms.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v2/caloBase.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v3/muonBase.xml', + 'Geometry/CMSCommonData/data/cms/2030/v3/cms.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v2/caloBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v3/muonBase.xml', 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker613_MB_2019_04/pixfwd.xml', @@ -42,9 +39,9 @@ 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker404/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker700/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v1/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -74,12 +71,12 @@ 'Geometry/MuonCommonData/data/muonYoke/2021/v2/muonYoke.xml', 'Geometry/MuonCommonData/data/csc/2021/v1/csc.xml', 'Geometry/MuonCommonData/data/mfshield/2017/v1/mfshield.xml', - 'Geometry/MuonCommonData/data/mf/2026/v2/mf.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v2/rpcf.xml', + 'Geometry/MuonCommonData/data/mf/2030/v2/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v2/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v1/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml', 'Geometry/MuonCommonData/data/me0/TDR_Dev/v2/me0.xml', 'Geometry/ForwardCommonData/data/forwardshield/2017/v1/forwardshield.xml', 'Geometry/ForwardCommonData/data/brmrotations.xml', @@ -110,7 +107,7 @@ 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v11/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v11/GEMSpecs.xml', 'Geometry/ForwardCommonData/data/brmsens.xml', diff --git a/Geometry/MuonCommonData/python/testExtendedGeometry2026D54GE0XML_cfi.py b/Geometry/MuonCommonData/python/testExtendedGeometryRun4D54GE0XML_cfi.py similarity index 88% rename from Geometry/MuonCommonData/python/testExtendedGeometry2026D54GE0XML_cfi.py rename to Geometry/MuonCommonData/python/testExtendedGeometryRun4D54GE0XML_cfi.py index be30051efa98f..84cc31d5df9ea 100644 --- a/Geometry/MuonCommonData/python/testExtendedGeometry2026D54GE0XML_cfi.py +++ b/Geometry/MuonCommonData/python/testExtendedGeometryRun4D54GE0XML_cfi.py @@ -1,8 +1,5 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials.xml', @@ -14,16 +11,16 @@ 'Geometry/CMSCommonData/data/cmsCalo.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', - 'Geometry/CMSCommonData/data/cms/2026/v3/cms.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v2/caloBase.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v3/muonBase.xml', + 'Geometry/CMSCommonData/data/cms/2030/v3/cms.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v2/caloBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v3/muonBase.xml', 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker613_MB_2019_04/pixfwd.xml', @@ -42,9 +39,9 @@ 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker404/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker700/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v1/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -74,12 +71,12 @@ 'Geometry/MuonCommonData/data/muonYoke/2021/v2/muonYoke.xml', 'Geometry/MuonCommonData/data/csc/2021/v1/csc.xml', 'Geometry/MuonCommonData/data/mfshield/2017/v1/mfshield.xml', - 'Geometry/MuonCommonData/data/mf/2026/v4/mf.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v2/rpcf.xml', + 'Geometry/MuonCommonData/data/mf/2030/v4/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v2/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Dev/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v2/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v2/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v2/ge0.xml', 'Geometry/ForwardCommonData/data/forwardshield/2017/v1/forwardshield.xml', 'Geometry/ForwardCommonData/data/brmrotations.xml', @@ -110,7 +107,7 @@ 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v9/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v9/GEMSpecs.xml', 'Geometry/ForwardCommonData/data/brmsens.xml', diff --git a/Geometry/MuonCommonData/python/testExtendedGeometryRun4D54XML_cfi.py b/Geometry/MuonCommonData/python/testExtendedGeometryRun4D54XML_cfi.py new file mode 100644 index 0000000000000..8b1020a10a80d --- /dev/null +++ b/Geometry/MuonCommonData/python/testExtendedGeometryRun4D54XML_cfi.py @@ -0,0 +1,126 @@ +import FWCore.ParameterSet.Config as cms + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/CMSCommonData/data/cms/2030/v3/cms.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v2/caloBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v3/muonBase.xml', + 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker613_MB_2019_04/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker613_MB_2019_04/pixbar.xml', + 'Geometry/TrackerCommonData/data/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/otst.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker613_MB_2019_04/tracker.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker700/pixel.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerbar.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerStructureTopology.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker700/pixelStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker404/trackersens.xml', + 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker700/pixelsens.xml', + 'Geometry/TrackerRecoData/data/PhaseII/TiltedTracker700/trackerRecoMaterial.xml', + 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker404/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker700/pixelProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v1/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/hcalRecNumbering.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v1/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v11/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v10/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v11/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v11/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v9/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v9/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v11/hgcalCons.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2015/v2/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2015/v2/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v2/muonYoke.xml', + 'Geometry/MuonCommonData/data/csc/2021/v1/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v1/mfshield.xml', + 'Geometry/MuonCommonData/data/mf/2030/v2/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v2/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml', + 'Geometry/MuonCommonData/data/me0/TDR_Dev/v2/me0.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2017/v1/forwardshield.xml', + 'Geometry/ForwardCommonData/data/brmrotations.xml', + 'Geometry/ForwardCommonData/data/PostLS2/brm.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/MTDCommonData/data/btl.xml', + 'Geometry/MTDCommonData/data/etl/v2/etl.xml', + 'Geometry/MTDCommonData/data/CrystalBarPhiFlat/v3/mtd.xml', + 'Geometry/MTDCommonData/data/CrystalBarPhiFlat/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/CrystalBarPhiFlat/mtdParameters.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/muonNumbering.xml', + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil.xml', + 'Geometry/HGCalSimData/data/hgcsensv9.xml', + 'Geometry/MuonSimData/data/PhaseII/ME0EtaPart/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v11/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v11/GEMSpecs.xml', + 'Geometry/ForwardCommonData/data/brmsens.xml', + 'Geometry/ForwardSimData/data/zdcsens.xml', + 'Geometry/MTDSimData/data/CrystalBarPhiFlat/mtdsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv9.xml', + 'Geometry/MuonSimData/data/PhaseII/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/MTDSimData/data/CrystalBarPhiFlat/mtdProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/MuonCommonData/python/testGE0XML_cfi.py b/Geometry/MuonCommonData/python/testGE0XML_cfi.py index 96bfb5dd40100..35b1f11b0d697 100644 --- a/Geometry/MuonCommonData/python/testGE0XML_cfi.py +++ b/Geometry/MuonCommonData/python/testGE0XML_cfi.py @@ -6,12 +6,12 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v5/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v5/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', @@ -22,22 +22,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v1/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v1/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v3/muonNumbering.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/MuonSimData/data/PhaseII/muonProdCuts.xml', diff --git a/Geometry/MuonCommonData/python/testGE21XML_cfi.py b/Geometry/MuonCommonData/python/testGE21XML_cfi.py new file mode 100644 index 0000000000000..3df2b393fa289 --- /dev/null +++ b/Geometry/MuonCommonData/python/testGE21XML_cfi.py @@ -0,0 +1,43 @@ +import FWCore.ParameterSet.Config as cms + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v3/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cmsextent/2018/v0/cmsextent.xml', + 'Geometry/CMSCommonData/data/cms/2021/v3/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/muonBase/2018/v1/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v2/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2021/v1/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2021/v1/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2021/v1/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2021/v5/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2021/v3/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2025/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2025/v2/gem21.xml', + 'Geometry/MuonCommonData/data/csc/2021/v3/csc.xml', + 'Geometry/MuonCommonData/data/mfshield/2017/v2/mfshield.xml', + 'Geometry/MuonCommonData/data/muonNumbering/2024/v1/muonNumbering.xml', + 'Geometry/MuonSimData/data/muonSens/2021/v4/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2021/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/GEMSpecsFilter/2021/v2/GEMSpecsFilter.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2021/v3/muonProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/MuonCommonData/python/testGEMAllXML_cfi.py b/Geometry/MuonCommonData/python/testGEMAllXML_cfi.py index 9e1b2783a2437..de66d7a0d304c 100644 --- a/Geometry/MuonCommonData/python/testGEMAllXML_cfi.py +++ b/Geometry/MuonCommonData/python/testGEMAllXML_cfi.py @@ -6,22 +6,22 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', 'Geometry/CMSCommonData/data/FieldParameters.xml', ), rootNodeName = cms.string('cms:OCMS') diff --git a/Geometry/MuonCommonData/python/testGEMXML_cfi.py b/Geometry/MuonCommonData/python/testGEMXML_cfi.py index 3267616d30a95..c3ee29895f07d 100644 --- a/Geometry/MuonCommonData/python/testGEMXML_cfi.py +++ b/Geometry/MuonCommonData/python/testGEMXML_cfi.py @@ -6,16 +6,16 @@ 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v5/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v5/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', @@ -24,21 +24,21 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v1/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v6/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v1/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v6/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', 'Geometry/MuonCommonData/data/me0/TDR_Dev/v3/me0.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v4/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v4/mfshield.xml', 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v1/muonNumbering.xml', 'Geometry/MuonSimData/data/PhaseII/ME0EtaPart/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v11/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v11/GEMSpecs.xml', 'Geometry/MuonSimData/data/PhaseII/muonProdCuts.xml', diff --git a/Geometry/MuonCommonData/python/testMFXML_cfi.py b/Geometry/MuonCommonData/python/testMFXML_cfi.py index 259146e9d9547..373cc02c54d2b 100644 --- a/Geometry/MuonCommonData/python/testMFXML_cfi.py +++ b/Geometry/MuonCommonData/python/testMFXML_cfi.py @@ -1,24 +1,21 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generate2026Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials.xml', 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', - 'Geometry/CMSCommonData/data/cms/2026/v1/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v1/cms.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v1/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v1/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v2/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v2/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v1/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v1/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2017/v2/cavern.xml', @@ -47,21 +44,21 @@ 'Geometry/TrackerSimData/data/PhaseII/TiltedTracker4025/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', 'Geometry/EcalCommonData/data/ectkcable.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v1/eregalgo.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v1/eregalgo.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', 'Geometry/EcalCommonData/data/eecon.xml', - 'Geometry/EcalCommonData/data/escon/2026/v1/escon.xml', - 'Geometry/EcalCommonData/data/esalgo/2026/v1/esalgo.xml', + 'Geometry/EcalCommonData/data/escon/2030/v1/escon.xml', + 'Geometry/EcalCommonData/data/esalgo/2030/v1/esalgo.xml', 'Geometry/HcalCommonData/data/hcalrotations.xml', 'Geometry/HcalCommonData/data/hcal/HGCal/hcalalgo.xml', 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', 'Geometry/HcalCommonData/data/hcalendcap/HGCal/hcalendcapalgo.xml', 'Geometry/HcalCommonData/data/hcalouteralgo.xml', 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', - 'Geometry/HcalCommonData/data/hcalSimNumbering/2026/hcalSimNumbering.xml', - 'Geometry/HcalCommonData/data/hcalRecNumbering/2026/hcalRecNumbering.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/2030/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/2030/hcalRecNumbering.xml', 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', 'Geometry/HGCalCommonData/data/hgcal/v7/hgcal.xml', 'Geometry/HGCalCommonData/data/hgcalEE/v7/hgcalEE.xml', @@ -74,13 +71,13 @@ 'Geometry/MuonCommonData/data/mb3/2015/v1/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v1/mb4.xml', 'Geometry/MuonCommonData/data/design/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v2/mf.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v1/rpcf.xml', + 'Geometry/MuonCommonData/data/mf/2030/v2/mf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v1/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', 'Geometry/MuonCommonData/data/gem21/TDR_Dev/gem21.xml', 'Geometry/MuonCommonData/data/csc/2015/v1/csc.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v1/mfshield.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v1/mfshield.xml', 'Geometry/MuonCommonData/data/me0/TDR_Dev/me0.xml', 'Geometry/ForwardCommonData/data/forwardshield/2017/v1/forwardshield.xml', 'Geometry/ForwardCommonData/data/brmrotations.xml', diff --git a/Geometry/MuonCommonData/test/python/dumpGE0_cfg.py b/Geometry/MuonCommonData/test/python/dumpGE0_cfg.py index a10b8d367ae19..d4cd4cc8e0c2a 100644 --- a/Geometry/MuonCommonData/test/python/dumpGE0_cfg.py +++ b/Geometry/MuonCommonData/test/python/dumpGE0_cfg.py @@ -2,7 +2,7 @@ # Way to use this: # cmsRun dumpGE0_cfg.py geometry=GE0 # -# Options for geometry GE0, Mu24 +# Options for geometry GE0, Mu24, GE21 # ############################################################################### import FWCore.ParameterSet.Config as cms @@ -16,7 +16,7 @@ "GE0", VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, - "geometry of operations: GE0, Mu24") + "geometry of operations: GE0, Mu24, GE21") ### get and parse the command line arguments options.parseArguments() @@ -39,8 +39,8 @@ if 'MessageLogger' in process.__dict__: process.MessageLogger.G4cerr=dict() - process.MessageLogger.G4cout=dict() process.MessageLogger.MuonGeom=dict() +# process.MessageLogger.TGeoMgrFromDdd=dict() process.source = cms.Source("EmptySource") diff --git a/Geometry/MuonSimData/data/muonProdCuts/2026/v1/muonProdCuts.xml b/Geometry/MuonSimData/data/muonProdCuts/2030/v1/muonProdCuts.xml similarity index 100% rename from Geometry/MuonSimData/data/muonProdCuts/2026/v1/muonProdCuts.xml rename to Geometry/MuonSimData/data/muonProdCuts/2030/v1/muonProdCuts.xml diff --git a/Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml b/Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml similarity index 100% rename from Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml rename to Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml diff --git a/Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml b/Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml similarity index 100% rename from Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml rename to Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml diff --git a/Geometry/Records/interface/MTDDigiGeometryRecord.h b/Geometry/Records/interface/MTDDigiGeometryRecord.h index 115fc0bd07544..b14980b518edc 100644 --- a/Geometry/Records/interface/MTDDigiGeometryRecord.h +++ b/Geometry/Records/interface/MTDDigiGeometryRecord.h @@ -8,7 +8,6 @@ #include "CondFormats/AlignmentRecord/interface/MTDSurfaceDeformationRcd.h" #include "CondFormats/AlignmentRecord/interface/GlobalPositionRcd.h" #include "Geometry/Records/interface/IdealGeometryRecord.h" -#include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/Records/interface/PMTDParametersRcd.h" #include "FWCore/Utilities/interface/mplVector.h" @@ -19,7 +18,6 @@ class MTDDigiGeometryRecord MTDAlignmentErrorExtendedRcd, MTDSurfaceDeformationRcd, GlobalPositionRcd, - MTDTopologyRcd, PMTDParametersRcd> > {}; #endif /* RECORDS_MTDDIGIGEOMETRYRECORD_H */ diff --git a/Geometry/Records/interface/MTDTopologyRcd.h b/Geometry/Records/interface/MTDTopologyRcd.h index deb0d3b764d85..0c3f03ddd2780 100644 --- a/Geometry/Records/interface/MTDTopologyRcd.h +++ b/Geometry/Records/interface/MTDTopologyRcd.h @@ -3,13 +3,13 @@ #include "FWCore/Framework/interface/EventSetupRecordImplementation.h" #include "FWCore/Framework/interface/DependentRecordImplementation.h" -#include "Geometry/Records/interface/IdealGeometryRecord.h" +#include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/Records/interface/PMTDParametersRcd.h" #include "FWCore/Utilities/interface/mplVector.h" class MTDTopologyRcd : public edm::eventsetup::DependentRecordImplementation > { + edm::mpl::Vector > { }; #endif diff --git a/Geometry/TrackerCommonData/data/trackermaterial/2026/v1/trackermaterial.xml b/Geometry/TrackerCommonData/data/trackermaterial/2030/v1/trackermaterial.xml similarity index 100% rename from Geometry/TrackerCommonData/data/trackermaterial/2026/v1/trackermaterial.xml rename to Geometry/TrackerCommonData/data/trackermaterial/2030/v1/trackermaterial.xml diff --git a/Geometry/TrackerCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py b/Geometry/TrackerCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py index 01c06221da807..ba119328a3af4 100644 --- a/Geometry/TrackerCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py +++ b/Geometry/TrackerCommonData/python/cmsExtendedGeometryRun4D110XML_cfi.py @@ -1,25 +1,22 @@ import FWCore.ParameterSet.Config as cms -# This config was generated automatically using generateRun4Geometry.py -# If you notice a mistake, please update the generating script, not just this config - XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", geomXMLFiles = cms.vstring( 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', 'Geometry/CMSCommonData/data/rotations.xml', 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', - 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', 'Geometry/CMSCommonData/data/cmsMother.xml', 'Geometry/CMSCommonData/data/eta3/etaMax.xml', 'Geometry/CMSCommonData/data/cmsTracker.xml', - 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', 'Geometry/CMSCommonData/data/cmsCalo.xml', - 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', 'Geometry/CMSCommonData/data/cmsMuon.xml', 'Geometry/CMSCommonData/data/mgnt.xml', - 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', - 'Geometry/CMSCommonData/data/cmsBeam/2026/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', 'Geometry/CMSCommonData/data/muonMB.xml', 'Geometry/CMSCommonData/data/muonMagnet.xml', 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', @@ -42,9 +39,9 @@ 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', - 'Geometry/EcalCommonData/data/eregalgo/2026/v2/eregalgo.xml', - 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', - 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', 'Geometry/EcalCommonData/data/ebalgo.xml', 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', 'Geometry/EcalCommonData/data/ebrot.xml', @@ -72,22 +69,22 @@ 'Geometry/MuonCommonData/data/mb3/2015/v2/mb3.xml', 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', - 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', - 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', - 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v3/rpcf.xml', 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', - 'Geometry/MuonCommonData/data/gem21/2026/v1/gem21.xml', - 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', - 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', - 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v4/forwardshield.xml', 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', 'Geometry/ForwardCommonData/data/lumimaterials.xml', 'Geometry/ForwardCommonData/data/zdcrotations.xml', 'Geometry/ForwardCommonData/data/lumirotations.xml', - 'Geometry/ForwardCommonData/data/zdc/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', 'Geometry/ForwardCommonData/data/cmszdc.xml', 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', @@ -103,21 +100,21 @@ 'Geometry/HcalSimData/data/hf.xml', 'Geometry/HcalSimData/data/hfpmt.xml', 'Geometry/HcalSimData/data/hffibrebundle.xml', - 'Geometry/HcalSimData/data/CaloUtil/2026/v2c/CaloUtil.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', 'Geometry/HGCalSimData/data/hgcsensv15.xml', 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', - 'Geometry/RPCGeometryBuilder/data/2026/v1/RPCSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', 'Geometry/ForwardSimData/data/zdcsens.xml', 'Geometry/MTDSimData/data/v5/mtdsens.xml', - 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', 'Geometry/EcalSimData/data/EcalProdCuts.xml', 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', - 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', diff --git a/Geometry/TrackerCommonData/test/insertMaterial.py b/Geometry/TrackerCommonData/test/insertMaterial.py index a3e661fe3bf12..e03ad586526d1 100755 --- a/Geometry/TrackerCommonData/test/insertMaterial.py +++ b/Geometry/TrackerCommonData/test/insertMaterial.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import sys import xml.dom.minidom import math diff --git a/Geometry/TrackerNumberingBuilder/test/dumpSimGeometry_cfg.py b/Geometry/TrackerNumberingBuilder/test/dumpSimGeometry_cfg.py index bf3e25341d2e6..02cf1e83acb90 100644 --- a/Geometry/TrackerNumberingBuilder/test/dumpSimGeometry_cfg.py +++ b/Geometry/TrackerNumberingBuilder/test/dumpSimGeometry_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys import FWCore.ParameterSet.VarParsing as VarParsing diff --git a/HLTrigger/Configuration/python/HLT_2024v14_cff.py b/HLTrigger/Configuration/python/HLT_2024v14_cff.py index 2ef29dc8d6ce2..19e5caa23f4da 100644 --- a/HLTrigger/Configuration/python/HLT_2024v14_cff.py +++ b/HLTrigger/Configuration/python/HLT_2024v14_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT --cff --data --type 2024v14 +# hltGetConfiguration /frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT --cff --data --type 2024v14 -# /frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT/V6 (CMSSW_14_1_1) +# /frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT/V3 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT/V6") + tableName = cms.string("/frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT/V3") ) fragment.HLTIter4PSetTrajectoryBuilderIT = cms.PSet( @@ -8371,6 +8371,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -8949,6 +8950,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -9750,6 +9752,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -11782,6 +11785,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -12317,6 +12321,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -13118,6 +13123,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -16691,7 +16697,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombinedUnseeded = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeedsUnseeded = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedUnseeded" ), @@ -20610,7 +20617,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -70621,6 +70629,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PixelLessHitDoubletsForGlbDisplacedMuons = cms.EDProducer( "HitPairEDProducer", @@ -70862,6 +70871,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PixelLessHitDoubletsForDisplacedTkMuons = cms.EDProducer( "HitPairEDProducer", @@ -72276,6 +72286,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PFlowPixelLessHitDoubletsForTau = cms.EDProducer( "HitPairEDProducer", @@ -75330,6 +75341,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter1PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -75630,6 +75642,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter2PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -76549,6 +76562,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PFlowPixelLessHitDoublets = cms.EDProducer( "HitPairEDProducer", diff --git a/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPModulesDevLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPModulesDevLST_cfi.py new file mode 100644 index 0000000000000..3bf5fc90e4079 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPModulesDevLST_cfi.py @@ -0,0 +1,12 @@ +import FWCore.ParameterSet.Config as cms + +def _addProcessModulesDevLST(process): + process.hltESPModulesDevLST = cms.ESProducer('LSTModulesDevESProducer@alpaka', + appendToDataLabel = cms.string(''), + alpaka = cms.untracked.PSet( + backend = cms.untracked.string('') + ) + ) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +modifyConfigurationForTrackingLSTModulesDevLST_ = trackingLST.makeProcessModifier(_addProcessModulesDevLST) diff --git a/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltTTRBWR_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi.py similarity index 63% rename from HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltTTRBWR_cfi.py rename to HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi.py index 1454557e313bd..0eb2f41427bcb 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltTTRBWR_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi.py @@ -1,7 +1,7 @@ import FWCore.ParameterSet.Config as cms -hltTTRBWR = cms.ESProducer("TkTransientTrackingRecHitBuilderESProducer", - ComponentName = cms.string('hltESPTTRHBWithTrackAngle'), +hltESPTTRHBuilderWithTrackAngle = cms.ESProducer("TkTransientTrackingRecHitBuilderESProducer", + ComponentName = cms.string('hltESPTTRHBuilderWithTrackAngle'), ComputeCoarseLocalPositionFromDisk = cms.bool(False), Matcher = cms.string('StandardMatcher'), Phase2StripCPE = cms.string('Phase2StripCPE'), diff --git a/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPTTRHBuilderWithoutRefit_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPTTRHBuilderWithoutRefit_cfi.py new file mode 100644 index 0000000000000..34c6fea4f653e --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/eventsetup/hltESPTTRHBuilderWithoutRefit_cfi.py @@ -0,0 +1,14 @@ +import FWCore.ParameterSet.Config as cms + +def _addProcessTTRHBuilderWithoutRefit(process): + process.hltESPTTRHBuilderWithoutRefit = cms.ESProducer("TkTransientTrackingRecHitBuilderESProducer", + ComponentName = cms.string('hltESPTTRHBuilderWithoutRefit'), + ComputeCoarseLocalPositionFromDisk = cms.bool(False), + Matcher = cms.string('Fake'), + Phase2StripCPE = cms.string(''), + PixelCPE = cms.string('Fake'), + StripCPE = cms.string('Fake') + ) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +modifyConfigurationForTrackingLSTTTRHBuilderWithoutRefit_ = trackingLST.makeProcessModifier(_addProcessTTRHBuilderWithoutRefit) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightBestGsfChi2L1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightBestGsfChi2L1SeededFilter_cfi.py new file mode 100644 index 0000000000000..9c7fd8cd60b21 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightBestGsfChi2L1SeededFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightBestGsfChi2L1SeededFilter = cms.EDFilter("HLTEgammaGenericFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.479), + candTag = cms.InputTag("hltEle30WPTightBestGsfNLayerITL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB = cms.vdouble(0), + thrOverE2EE = cms.vdouble(0), + thrOverEEB = cms.vdouble(0), + thrOverEEE = cms.vdouble(0), + thrRegularEB = cms.vdouble(50.0), + thrRegularEE = cms.vdouble(50.0), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaBestGsfTrackVarsL1Seeded","Chi2") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightBestGsfNLayerITL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightBestGsfNLayerITL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..ab2ab5acb0acc --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightBestGsfNLayerITL1SeededFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightBestGsfNLayerITL1SeededFilter = cms.EDFilter("HLTEgammaGenericFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.479), + candTag = cms.InputTag("hltEle30WPTightGsfDphiL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(False), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB = cms.vdouble(0), + thrOverE2EE = cms.vdouble(0), + thrOverEEB = cms.vdouble(0), + thrOverEEE = cms.vdouble(0), + thrRegularEB = cms.vdouble(3), + thrRegularEE = cms.vdouble(3), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaBestGsfTrackVarsL1Seeded","NLayerIT") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..059a909f3a33f --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeL1SeededFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightClusterShapeL1SeededFilter = cms.EDFilter("HLTEgammaGenericFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.479), + candTag = cms.InputTag('hltEG30EtL1SeededFilter'), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB = cms.vdouble(0), + thrOverE2EE = cms.vdouble(0), + thrOverEEB = cms.vdouble(0), + thrOverEEE = cms.vdouble(0), + thrRegularEB = cms.vdouble(0.013), + thrRegularEE = cms.vdouble(0.013), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaClusterShapeL1Seeded","sigmaIEtaIEta5x5") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeSigmavvL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeSigmavvL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..24efa1dd9e24a --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeSigmavvL1SeededFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightClusterShapeSigmavvL1SeededFilter = cms.EDFilter("HLTEgammaGenericFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.479), + candTag = cms.InputTag("hltEle30WPTightClusterShapeL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB = cms.vdouble(0), + thrOverE2EE = cms.vdouble(0), + thrOverEEB = cms.vdouble(0.0008), + thrOverEEE = cms.vdouble(0.0008), + thrRegularEB = cms.vdouble(0.7225), + thrRegularEE = cms.vdouble(0.7225), + useEt = cms.bool(True), + varTag = cms.InputTag("hltEgammaHGCALIDVarsL1Seeded","sigma2vv") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeSigmawwL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeSigmawwL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..9699b9fa67f65 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightClusterShapeSigmawwL1SeededFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightClusterShapeSigmawwL1SeededFilter = cms.EDFilter("HLTEgammaGenericFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.479), + candTag = cms.InputTag("hltEle30WPTightClusterShapeSigmavvL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB = cms.vdouble(0), + thrOverE2EE = cms.vdouble(0), + thrOverEEB = cms.vdouble(0.04), + thrOverEEE = cms.vdouble(0.04), + thrRegularEB = cms.vdouble(72.25), + thrRegularEE = cms.vdouble(72.25), + useEt = cms.bool(True), + varTag = cms.InputTag("hltEgammaHGCALIDVarsL1Seeded","sigma2ww") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightEcalIsoL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightEcalIsoL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..388362d665acb --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightEcalIsoL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightEcalIsoL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.0, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightHEL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.2, 0.2, 0.25, 0.3), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(1.0), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag("hltFixedGridRhoFastjetAllCaloForEGamma"), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.02), + thrOverEEB2 = cms.vdouble(0.02), + thrOverEEE1 = cms.vdouble(0.02), + thrOverEEE2 = cms.vdouble(0.02), + thrRegularEB1 = cms.vdouble(9.0), + thrRegularEB2 = cms.vdouble(9.0), + thrRegularEE1 = cms.vdouble(9.0), + thrRegularEE2 = cms.vdouble(9.0), + useEt = cms.bool(True), + varTag = cms.InputTag("hltEgammaEcalPFClusterIsoL1Seeded") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfDetaL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfDetaL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..66ed1c550f89a --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfDetaL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightGsfDetaL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 0.8, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0, 0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(0.8), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.0), + thrOverEEB2 = cms.vdouble(0.0), + thrOverEEE1 = cms.vdouble(0.0), + thrOverEEE2 = cms.vdouble(0.0), + thrRegularEB1 = cms.vdouble(0.003), + thrRegularEB2 = cms.vdouble(0.009), + thrRegularEE1 = cms.vdouble(0.004), + thrRegularEE2 = cms.vdouble(0.004), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaGsfTrackVarsL1Seeded","DetaSeed") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfDphiL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfDphiL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..44dcd3951d053 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfDphiL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightGsfDphiL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 0.8, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightGsfDetaL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0, 0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(0.8), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.0), + thrOverEEB2 = cms.vdouble(0.0), + thrOverEEE1 = cms.vdouble(0.0), + thrOverEEE2 = cms.vdouble(0.0), + thrRegularEB1 = cms.vdouble(0.02), + thrRegularEB2 = cms.vdouble(0.09), + thrRegularEE1 = cms.vdouble(0.04), + thrRegularEE2 = cms.vdouble(0.04), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaGsfTrackVarsL1Seeded","Dphi") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..421ee488c6801 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 0.8, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightPMS2L1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0, 0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(0.8), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.0), + thrOverEEB2 = cms.vdouble(0.0), + thrOverEEE1 = cms.vdouble(0.0), + thrOverEEE2 = cms.vdouble(0.0), + thrRegularEB1 = cms.vdouble(0.04), + thrRegularEB2 = cms.vdouble(0.08), + thrRegularEE1 = cms.vdouble(0.04), + thrRegularEE2 = cms.vdouble(0.04), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaGsfTrackVarsL1Seeded","OneOESuperMinusOneOP") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..8ae9d7031ca0e --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 0.8, 1.479, 2.0), + candTag = cms.InputTag("hltEle30WPTightBestGsfChi2L1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0, 0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(0.8), + etaBoundaryEE12 = cms.double(2.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag("hltFixedGridRhoFastjetAllCaloForEGamma"), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.0), + thrOverEEB2 = cms.vdouble(0.0), + thrOverEEE1 = cms.vdouble(0.0), + thrOverEEE2 = cms.vdouble(0.0), + thrRegularEB1 = cms.vdouble(5.5), + thrRegularEB2 = cms.vdouble(8.0), + thrRegularEE1 = cms.vdouble(5.5), + thrRegularEE2 = cms.vdouble(5.5), + useEt = cms.bool(True), + varTag = cms.InputTag("hltEgammaEleL1TrkIsoL1Seeded") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfTrackIsoL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfTrackIsoL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..c62ab74f6bf51 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightGsfTrackIsoL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightGsfTrackIsoL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.0, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.029, 0.111, 0.114, 0.032), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(1.0), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag("hltFixedGridRhoFastjetAllCaloForEGamma"), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.0), + thrOverEEB2 = cms.vdouble(0.0), + thrOverEEE1 = cms.vdouble(0.0), + thrOverEEE2 = cms.vdouble(0.0), + thrRegularEB1 = cms.vdouble(2.5), + thrRegularEB2 = cms.vdouble(2.5), + thrRegularEE1 = cms.vdouble(2.2), + thrRegularEE2 = cms.vdouble(2.2), + useEt = cms.bool(True), + varTag = cms.InputTag("hltEgammaEleGsfTrackIsoV6L1Seeded") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHEL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHEL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..db9ebf8c6c370 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHEL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightHEL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.0, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightHgcalHEL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.1, 0.1, 0.3, 0.5), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(1.0), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag("hltFixedGridRhoFastjetAllCaloForEGamma"), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.175), + thrOverEEB2 = cms.vdouble(0.175), + thrOverEEE1 = cms.vdouble(0.0), + thrOverEEE2 = cms.vdouble(0.0), + thrRegularEB1 = cms.vdouble(0.0), + thrRegularEB2 = cms.vdouble(0.0), + thrRegularEE1 = cms.vdouble(9999.0), + thrRegularEE2 = cms.vdouble(9999.0), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaHoverEL1Seeded") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHcalIsoL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHcalIsoL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..f28a686ea6c08 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHcalIsoL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightHcalIsoL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.0, 1.479, 2.0), + candTag = cms.InputTag("hltEle30WPTightHgcalIsoL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.2, 0.2, 0.4, 0.5), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(1.0), + etaBoundaryEE12 = cms.double(2.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag("hltFixedGridRhoFastjetAllCaloForEGamma"), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.02), + thrOverEEB2 = cms.vdouble(0.02), + thrOverEEE1 = cms.vdouble(0.02), + thrOverEEE2 = cms.vdouble(0.02), + thrRegularEB1 = cms.vdouble(19), + thrRegularEB2 = cms.vdouble(19), + thrRegularEE1 = cms.vdouble(19), + thrRegularEE2 = cms.vdouble(19), + useEt = cms.bool(True), + varTag = cms.InputTag("hltEgammaHcalPFClusterIsoL1Seeded") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHgcalHEL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHgcalHEL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..e41af6e02a7c3 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHgcalHEL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightHgcalHEL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.0, 1.479, 2.1), + candTag = cms.InputTag("hltEle30WPTightClusterShapeSigmawwL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0, 0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(1.0), + etaBoundaryEE12 = cms.double(2.1), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag("hltFixedGridRhoFastjetAllCaloForEGamma"), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.0), + thrOverEEB2 = cms.vdouble(0.0), + thrOverEEE1 = cms.vdouble(0.15), + thrOverEEE2 = cms.vdouble(0.15), + thrRegularEB1 = cms.vdouble(9999.0), + thrRegularEB2 = cms.vdouble(9999.0), + thrRegularEE1 = cms.vdouble(5.0), + thrRegularEE2 = cms.vdouble(5.0), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaHGCALIDVarsL1Seeded","hForHOverE") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHgcalIsoL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHgcalIsoL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..4068c9ca4805a --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightHgcalIsoL1SeededFilter_cfi.py @@ -0,0 +1,32 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightHgcalIsoL1SeededFilter = cms.EDFilter("HLTEgammaGenericQuadraticEtaFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.0, 1.479, 2.0), + candTag = cms.InputTag("hltEle30WPTightEcalIsoL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0, 0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + etaBoundaryEB12 = cms.double(1.0), + etaBoundaryEE12 = cms.double(2.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB1 = cms.vdouble(0.0), + thrOverE2EB2 = cms.vdouble(0.0), + thrOverE2EE1 = cms.vdouble(0.0), + thrOverE2EE2 = cms.vdouble(0.0), + thrOverEEB1 = cms.vdouble(0.05), + thrOverEEB2 = cms.vdouble(0.05), + thrOverEEE1 = cms.vdouble(0.05), + thrOverEEE2 = cms.vdouble(0.05), + thrRegularEB1 = cms.vdouble(150), + thrRegularEB2 = cms.vdouble(150), + thrRegularEE1 = cms.vdouble(150), + thrRegularEE2 = cms.vdouble(350), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaHGCalLayerClusterIsoL1Seeded") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightPMS2L1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightPMS2L1SeededFilter_cfi.py new file mode 100644 index 0000000000000..241ce4038cb03 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightPMS2L1SeededFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightPMS2L1SeededFilter = cms.EDFilter("HLTEgammaGenericFilter", + absEtaLowEdges = cms.vdouble(0.0, 1.479), + candTag = cms.InputTag("hltEle30WPTightPixelMatchL1SeededFilter"), + doRhoCorrection = cms.bool(False), + effectiveAreas = cms.vdouble(0.0, 0.0), + energyLowEdges = cms.vdouble(0.0), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + lessThan = cms.bool(True), + ncandcut = cms.int32(1), + rhoMax = cms.double(99999999.0), + rhoScale = cms.double(1.0), + rhoTag = cms.InputTag(""), + saveTags = cms.bool(True), + thrOverE2EB = cms.vdouble(0), + thrOverE2EE = cms.vdouble(0), + thrOverEEB = cms.vdouble(0), + thrOverEEE = cms.vdouble(0), + thrRegularEB = cms.vdouble(55.0), + thrRegularEE = cms.vdouble(75.0), + useEt = cms.bool(False), + varTag = cms.InputTag("hltEgammaPixelMatchVarsL1Seeded","s2") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightPixelMatchL1SeededFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightPixelMatchL1SeededFilter_cfi.py new file mode 100644 index 0000000000000..64bceb4306990 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltEle30WPTightPixelMatchL1SeededFilter_cfi.py @@ -0,0 +1,25 @@ +import FWCore.ParameterSet.Config as cms + +hltEle30WPTightPixelMatchL1SeededFilter = cms.EDFilter("HLTElectronPixelMatchFilter", + candTag = cms.InputTag("hltEle30WPTightHcalIsoL1SeededFilter"), + l1EGCand = cms.InputTag("hltEgammaCandidatesL1Seeded"), + l1PixelSeedsTag = cms.InputTag("hltEgammaElectronPixelSeedsL1Seeded"), + ncandcut = cms.int32(1), + npixelmatchcut = cms.double(1.0), + pixelVeto = cms.bool(False), + s2_threshold = cms.double(0.4), + s_a_phi1B = cms.double(0.0069), + s_a_phi1F = cms.double(0.0076), + s_a_phi1I = cms.double(0.0088), + s_a_phi2B = cms.double(0.00037), + s_a_phi2F = cms.double(0.00906), + s_a_phi2I = cms.double(0.0007), + s_a_rF = cms.double(0.04), + s_a_rI = cms.double(0.027), + s_a_zB = cms.double(0.012), + saveTags = cms.bool(True), + tanhSO10BarrelThres = cms.double(0.35), + tanhSO10ForwardThres = cms.double(1.0), + tanhSO10InterThres = cms.double(1.0), + useS = cms.bool(False) +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltFilteredLayerClustersRecoveryL1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltFilteredLayerClustersRecoveryL1Seeded_cfi.py new file mode 100644 index 0000000000000..399eb6076eabc --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltFilteredLayerClustersRecoveryL1Seeded_cfi.py @@ -0,0 +1,14 @@ +import FWCore.ParameterSet.Config as cms + +hltFilteredLayerClustersRecoveryL1Seeded = cms.EDProducer("FilteredLayerClustersProducer", + LayerClusters = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded"), + LayerClustersInputMask = cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded"), + algo_number = cms.vint32(6, 7, 8), + clusterFilter = cms.string('ClusterFilterBySize'), + iteration_label = cms.string('Recovery'), + max_cluster_size = cms.int32(9999), + max_layerId = cms.int32(9999), + mightGet = cms.optional.untracked.vstring, + min_cluster_size = cms.int32(2), + min_layerId = cms.int32(0) +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltGeneralTracks_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltGeneralTracks_cfi.py index 2b746508d72e6..54e466f0614c8 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltGeneralTracks_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltGeneralTracks_cfi.py @@ -24,3 +24,58 @@ trackAlgoPriorityOrder = cms.string('trackAlgoPriorityOrder'), writeOnlyTrkQuals = cms.bool(False) ) + +_hltGeneralTracksSingleIterPatatrack = hltGeneralTracks.clone( + TrackProducers = ["hltInitialStepTrackSelectionHighPurity"], + hasSelector = [0], + indivShareFrac = [1.0], + selectedTrackQuals = ["hltInitialStepTrackSelectionHighPurity"], + setsToMerge = [cms.PSet( + pQual = cms.bool(True), + tLists = cms.vint32(0) + )] +) + +from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack +singleIterPatatrack.toReplaceWith(hltGeneralTracks, _hltGeneralTracksSingleIterPatatrack) + +_hltGeneralTracksLST = hltGeneralTracks.clone( + TrackProducers = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTrackSelectionHighPuritypLSTCLST", "hltInitialStepTracksT5TCLST", "hltHighPtTripletStepTrackSelectionHighPurity"], + hasSelector = [0,0,0,0], + indivShareFrac = [0.1,0.1,0.1,0.1], + selectedTrackQuals = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTrackSelectionHighPuritypLSTCLST", "hltInitialStepTracksT5TCLST", "hltHighPtTripletStepTrackSelectionHighPurity"], + setsToMerge = [cms.PSet( + pQual = cms.bool(True), + tLists = cms.vint32(0,1,2,3) + )] +) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toReplaceWith(hltGeneralTracks, _hltGeneralTracksLST) + +_hltGeneralTracksLSTSingleIterPatatrack = hltGeneralTracks.clone( + TrackProducers = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTrackSelectionHighPuritypLSTCLST", "hltInitialStepTracksT5TCLST"], + hasSelector = [0,0,0], + indivShareFrac = [0.1,0.1,0.1], + selectedTrackQuals = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTrackSelectionHighPuritypLSTCLST", "hltInitialStepTracksT5TCLST"], + setsToMerge = [cms.PSet( + pQual = cms.bool(True), + tLists = cms.vint32(0,1,2) + )] +) + +(singleIterPatatrack & trackingLST).toReplaceWith(hltGeneralTracks, _hltGeneralTracksLSTSingleIterPatatrack) + +_hltGeneralTracksLSTSeeding = hltGeneralTracks.clone( + TrackProducers = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTracksT5TCLST", "hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST"], + hasSelector = [0,0,0], + indivShareFrac = [0.1,0.1,0.1], + selectedTrackQuals = ["hltInitialStepTrackSelectionHighPuritypTTCLST", "hltInitialStepTracksT5TCLST", "hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST"], + setsToMerge = [cms.PSet( + pQual = cms.bool(True), + tLists = cms.vint32(0,1,2) + )] + ) + +from Configuration.ProcessModifiers.seedingLST_cff import seedingLST +(seedingLST & trackingLST).toReplaceWith(hltGeneralTracks, _hltGeneralTracksLSTSeeding) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepClusters_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepClusters_cfi.py index ed02f3aac573f..1656241d78dc7 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepClusters_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepClusters_cfi.py @@ -12,3 +12,10 @@ trackClassifier = cms.InputTag("","QualityMasks"), trajectories = cms.InputTag("hltInitialStepTrackSelectionHighPurity") ) + +_hltHighPtTripletStepClustersLST = hltHighPtTripletStepClusters.clone( + trajectories = "hltInitialStepSeedTracksLST" +) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toReplaceWith(hltHighPtTripletStepClusters, _hltHighPtTripletStepClustersLST) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepSeedTracksLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepSeedTracksLST_cfi.py new file mode 100644 index 0000000000000..7a48ace8c4e83 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepSeedTracksLST_cfi.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +hltHighPtTripletStepSeedTracksLST = cms.EDProducer( + "TrackFromSeedProducer", + src = cms.InputTag("hltHighPtTripletStepSeeds"), + beamSpot = cms.InputTag("hltOnlineBeamSpot"), + TTRHBuilder = cms.string("hltESPTTRHBuilderWithoutRefit") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackCandidatespLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackCandidatespLSTCLST_cfi.py new file mode 100644 index 0000000000000..6492ae62a6224 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackCandidatespLSTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltHighPtTripletStepTrackCandidates_cfi import hltHighPtTripletStepTrackCandidates as _hltHighPtTripletStepTrackCandidates +hltHighPtTripletStepTrackCandidatespLSTCLST = _hltHighPtTripletStepTrackCandidates.clone( src = "hltInitialStepTrackCandidates:pLSTSsLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackCutClassifierpLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackCutClassifierpLSTCLST_cfi.py new file mode 100644 index 0000000000000..e2c99d1e6dfd6 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackCutClassifierpLSTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltHighPtTripletStepTrackCutClassifier_cfi import hltHighPtTripletStepTrackCutClassifier as _hltHighPtTripletStepTrackCutClassifier +hltHighPtTripletStepTrackCutClassifierpLSTCLST = _hltHighPtTripletStepTrackCutClassifier.clone( src = "hltHighPtTripletStepTrackspLSTCLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST_cfi.py new file mode 100644 index 0000000000000..db9cba801df17 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST_cfi.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltHighPtTripletStepTrackSelectionHighPurity_cfi import hltHighPtTripletStepTrackSelectionHighPurity as _hltHighPtTripletStepTrackSelectionHighPurity +hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST = _hltHighPtTripletStepTrackSelectionHighPurity.clone( + originalMVAVals = "hltHighPtTripletStepTrackCutClassifierpLSTCLST:MVAValues", + originalQualVals = "hltHighPtTripletStepTrackCutClassifierpLSTCLST:QualityMasks", + originalSource = "hltHighPtTripletStepTrackspLSTCLST" +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackspLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackspLSTCLST_cfi.py new file mode 100644 index 0000000000000..9d78785012a7c --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHighPtTripletStepTrackspLSTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltHighPtTripletStepTracks_cfi import hltHighPtTripletStepTracks as _hltHighPtTripletStepTracks +hltHighPtTripletStepTrackspLSTCLST = _hltHighPtTripletStepTracks.clone( src = "hltHighPtTripletStepTrackCandidatespLSTCLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltHpsPFTau30LooseTauWPDeepTau_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHpsPFTau30LooseTauWPDeepTau_cfi.py new file mode 100644 index 0000000000000..e84dbfd99daae --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltHpsPFTau30LooseTauWPDeepTau_cfi.py @@ -0,0 +1,14 @@ +import FWCore.ParameterSet.Config as cms + +hltHpsPFTau30LooseTauWPDeepTau = cms.EDFilter("HLT1PFTau", + MaxEta = cms.double(2.1), + MaxMass = cms.double(-1.0), + MinE = cms.double(-1.0), + MinEta = cms.double(-1.0), + MinMass = cms.double(-1.0), + MinN = cms.int32(1), + MinPt = cms.double(30.0), + inputTag = cms.InputTag("hltHpsSelectedPFTauLooseTauWPDeepTau"), + saveTags = cms.bool(True), + triggerType = cms.int32(84) +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeedTracksLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeedTracksLST_cfi.py new file mode 100644 index 0000000000000..b803257685b64 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeedTracksLST_cfi.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +hltInitialStepSeedTracksLST = cms.EDProducer( + "TrackFromSeedProducer", + src = cms.InputTag("hltInitialStepSeeds"), + beamSpot = cms.InputTag("hltOnlineBeamSpot"), + TTRHBuilder = cms.string("hltESPTTRHBuilderWithoutRefit") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeeds_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeeds_cfi.py index 6eca9fb8de4d9..d43490415d5c3 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeeds_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepSeeds_cfi.py @@ -11,5 +11,9 @@ originRadius = cms.double(0.1), useEventsWithNoVertex = cms.bool(True), usePV = cms.bool(False), - useProtoTrackKinematics = cms.bool(False) + useProtoTrackKinematics = cms.bool(False), + includeFourthHit = cms.bool(False) ) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toModify(hltInitialStepSeeds, includeFourthHit = True) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCandidates_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCandidates_cfi.py index d504fc7fe972e..09cb1c6af611a 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCandidates_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCandidates_cfi.py @@ -23,3 +23,26 @@ src = cms.InputTag("hltInitialStepSeeds"), useHitsSplitting = cms.bool(False) ) + +_hltInitialStepTrackCandidatesLST = cms.EDProducer('LSTOutputConverter', + lstOutput = cms.InputTag('hltLST'), + phase2OTHits = cms.InputTag('hltPhase2OTHitsInputLST'), + lstPixelSeeds = cms.InputTag('hltPixelSeedInputLST'), + includeT5s = cms.bool(True), + includeNonpLSTSs = cms.bool(False), + propagatorAlong = cms.ESInputTag('', 'PropagatorWithMaterial'), + propagatorOpposite = cms.ESInputTag('', 'PropagatorWithMaterialOpposite'), + SeedCreatorPSet = cms.PSet( + ComponentName = cms.string('SeedFromConsecutiveHitsCreator'), + propagator = cms.string('PropagatorWithMaterial'), + SeedMomentumForBOFF = cms.double(5), + OriginTransverseErrorMultiplier = cms.double(1), + MinOneOverPtError = cms.double(1), + magneticField = cms.string(''), + TTRHBuilder = cms.string('WithTrackAngle'), + forceKinematicWithRegionDirection = cms.bool(False) + ) +) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesLST) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifierpLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifierpLSTCLST_cfi.py new file mode 100644 index 0000000000000..5ce18b8b69a20 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifierpLSTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTrackCutClassifier_cfi import hltInitialStepTrackCutClassifier as _hltInitialStepTrackCutClassifier +hltInitialStepTrackCutClassifierpLSTCLST = _hltInitialStepTrackCutClassifier.clone( src = "hltInitialStepTrackspLSTCLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifierpTTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifierpTTCLST_cfi.py new file mode 100644 index 0000000000000..35adc3f698f38 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackCutClassifierpTTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTrackCutClassifier_cfi import hltInitialStepTrackCutClassifier as _hltInitialStepTrackCutClassifier +hltInitialStepTrackCutClassifierpTTCLST = _hltInitialStepTrackCutClassifier.clone( src = "hltInitialStepTrackspTTCLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackSelectionHighPuritypLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackSelectionHighPuritypLSTCLST_cfi.py new file mode 100644 index 0000000000000..edf0d6527564f --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackSelectionHighPuritypLSTCLST_cfi.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTrackSelectionHighPurity_cfi import hltInitialStepTrackSelectionHighPurity as _hltInitialStepTrackSelectionHighPurity +hltInitialStepTrackSelectionHighPuritypLSTCLST = _hltInitialStepTrackSelectionHighPurity.clone( + originalMVAVals = "hltInitialStepTrackCutClassifierpLSTCLST:MVAValues", + originalQualVals = "hltInitialStepTrackCutClassifierpLSTCLST:QualityMasks", + originalSource = "hltInitialStepTrackspLSTCLST" +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackSelectionHighPuritypTTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackSelectionHighPuritypTTCLST_cfi.py new file mode 100644 index 0000000000000..ce39843dd293f --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackSelectionHighPuritypTTCLST_cfi.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTrackSelectionHighPurity_cfi import hltInitialStepTrackSelectionHighPurity as _hltInitialStepTrackSelectionHighPurity +hltInitialStepTrackSelectionHighPuritypTTCLST = _hltInitialStepTrackSelectionHighPurity.clone( + originalMVAVals = "hltInitialStepTrackCutClassifierpTTCLST:MVAValues", + originalQualVals = "hltInitialStepTrackCutClassifierpTTCLST:QualityMasks", + originalSource = "hltInitialStepTrackspTTCLST" +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTracksT5TCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTracksT5TCLST_cfi.py new file mode 100644 index 0000000000000..a7c0cc2b302d1 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTracksT5TCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTracks_cfi import hltInitialStepTracks as _hltInitialStepTracks +hltInitialStepTracksT5TCLST = _hltInitialStepTracks.clone( src = "hltInitialStepTrackCandidates:t5TCsLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackspLSTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackspLSTCLST_cfi.py new file mode 100644 index 0000000000000..0c3f3617b54bd --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackspLSTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTracks_cfi import hltInitialStepTracks as _hltInitialStepTracks +hltInitialStepTrackspLSTCLST = _hltInitialStepTracks.clone( src = "hltInitialStepTrackCandidates:pLSTCsLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackspTTCLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackspTTCLST_cfi.py new file mode 100644 index 0000000000000..84e716174a4ee --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltInitialStepTrackspTTCLST_cfi.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltInitialStepTracks_cfi import hltInitialStepTracks as _hltInitialStepTracks +hltInitialStepTrackspTTCLST = _hltInitialStepTracks.clone( src = "hltInitialStepTrackCandidates:pTTCsLST" ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent_cfi.py index 4c21c9e410770..ec464e133b5c1 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent_cfi.py @@ -1,7 +1,6 @@ import FWCore.ParameterSet.Config as cms hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent = cms.EDProducer("MaskedMeasurementTrackerEventProducer", - OnDemand = cms.bool(False), phase2clustersToSkip = cms.InputTag("hltIter2Phase2L3FromL1TkMuonClustersRefRemoval"), src = cms.InputTag("hltMeasurementTrackerEvent") ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered_cfi.py index deff17f466795..5ff8982912fe8 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered_cfi.py @@ -33,3 +33,10 @@ nSeedsMax_E = cms.int32(20), src = cms.InputTag("hltIter2Phase2L3FromL1TkMuonPixelSeeds") ) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify( + hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered, + L1TkMu = "hltPhase2L3MuonFilter:L1TkMuToReuse" +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltL2MuonSeedsFromL1TkMuon_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltL2MuonSeedsFromL1TkMuon_cfi.py index bfe3b7bfef6a8..60e6c350f1e93 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltL2MuonSeedsFromL1TkMuon_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltL2MuonSeedsFromL1TkMuon_cfi.py @@ -20,3 +20,30 @@ UseOfflineSeed = cms.untracked.bool(True), UseUnassociatedL1 = cms.bool(False) ) + +phase2HltL2MuonSeedsFromL1TkMuon = cms.EDProducer('Phase2L2MuonSeedCreator', + inputObjects = cms.InputTag('l1tTkMuonsGmt'), + cscRecSegmentLabel = cms.InputTag('hltCscSegments'), + dtRecSegmentLabel = cms.InputTag('hltDt4DSegments'), + minPL1Tk = cms.double(3.5), + maxPL1Tk = cms.double(200), + stubMatchDPhi = cms.double(0.05), + stubMatchDTheta = cms.double(0.1), + extrapolationWindowClose = cms.double(0.2), + extrapolationWindowFar = cms.double(0.1), + maximumEtaBarrel = cms.double(0.7), + maximumEtaOverlap = cms.double(1.3), + propagator = cms.string('SteppingHelixPropagatorAny'), + serviceParameters = cms.PSet( + Propagators = cms.untracked.vstring('SteppingHelixPropagatorAny'), + RPCLayers = cms.bool(True), + UseMuonNavigation = cms.untracked.bool(True) + ), + estimatorMaxChi2 = cms.double(1000.0) +) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +phase2L2AndL3Muons.toReplaceWith( + hltL2MuonSeedsFromL1TkMuon, + phase2HltL2MuonSeedsFromL1TkMuon + ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltLST_cfi.py new file mode 100644 index 0000000000000..dd8337d88d205 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltLST_cfi.py @@ -0,0 +1,18 @@ +import FWCore.ParameterSet.Config as cms + +hltLST = cms.EDProducer('LSTProducer@alpaka', + pixelSeedInput = cms.InputTag('hltPixelSeedInputLST'), + phase2OTHitsInput = cms.InputTag('hltPhase2OTHitsInputLST'), + verbose = cms.bool(False), + nopLSDupClean = cms.bool(False), + tcpLSTriplets = cms.bool(False), + mightGet = cms.optional.untracked.vstring, + alpaka = cms.untracked.PSet( + backend = cms.untracked.string('') + ) +) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +from Configuration.ProcessModifiers.seedingLST_cff import seedingLST +(seedingLST & trackingLST).toModify(hltLST, nopLSDupClean = True, + tcpLSTriplets = True ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions_cfi.py index 0a3b8c684c74c..347df20dedc9a 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions_cfi.py @@ -22,3 +22,10 @@ zErrorVetex = cms.double(0.2) ) ) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify( + hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions.RegionPSet, + input = "hltPhase2L3MuonFilter:L1TkMuToReuse" +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonFilter_cfi.py new file mode 100644 index 0000000000000..6b4b90afb9f6d --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonFilter_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +hltPhase2L3MuonFilter = cms.EDProducer("Phase2HLTMuonSelectorForL3", + l1TkMuons = cms.InputTag("l1tTkMuonsGmt"), + l2MuonsUpdVtx = cms.InputTag("hltL2MuonsFromL1TkMuon:UpdatedAtVtx"), + l3Tracks = cms.InputTag("hltIter2Phase2L3FromL1TkMuonMerged"), + IOFirst = cms.bool(True), + matchingDr = cms.double(0.02), + applyL3Filters = cms.bool(True), + MinNhits = cms.int32(1), + MaxNormalizedChi2 = cms.double(5.0), + MinNhitsMuons = cms.int32(0), + MinNhitsPixel = cms.int32(1), + MinNhitsTracker = cms.int32(6), + MaxPtDifference = cms.double(999.0), +) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify( + hltPhase2L3MuonFilter, + l3Tracks = "hltPhase2L3OIMuonTrackSelectionHighPurity", + IOFirst = False, +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonMerged_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonMerged_cfi.py index 710bf4a1eaac2..6a9c18040ae11 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonMerged_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonMerged_cfi.py @@ -8,18 +8,47 @@ MinFound = cms.int32(3), MinPT = cms.double(0.05), ShareFrac = cms.double(0.19), - TrackProducers = cms.VInputTag("hltPhase2L3OIMuonTrackSelectionHighPurity", "hltIter2Phase2L3FromL1TkMuonMerged"), + TrackProducers = cms.VInputTag( + "hltPhase2L3OIMuonTrackSelectionHighPurity", + "hltIter2Phase2L3FromL1TkMuonMerged", + ), allowFirstHitShare = cms.bool(True), copyExtras = cms.untracked.bool(True), copyMVA = cms.bool(False), hasSelector = cms.vint32(0, 0), indivShareFrac = cms.vdouble(1.0, 1.0), - newQuality = cms.string('confirmed'), - selectedTrackQuals = cms.VInputTag("hltPhase2L3OIMuonTrackSelectionHighPurity", "hltIter2Phase2L3FromL1TkMuonMerged"), - setsToMerge = cms.VPSet(cms.PSet( - pQual = cms.bool(False), - tLists = cms.vint32(0, 1) - )), - trackAlgoPriorityOrder = cms.string('hltESPTrackAlgoPriorityOrder'), - writeOnlyTrkQuals = cms.bool(False) + newQuality = cms.string("confirmed"), + selectedTrackQuals = cms.VInputTag( + "hltPhase2L3OIMuonTrackSelectionHighPurity", + "hltIter2Phase2L3FromL1TkMuonMerged", + ), + setsToMerge = cms.VPSet(cms.PSet(pQual = cms.bool(False), tLists = cms.vint32(0, 1))), + trackAlgoPriorityOrder = cms.string("hltESPTrackAlgoPriorityOrder"), + writeOnlyTrkQuals = cms.bool(False), +) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +phase2L2AndL3Muons.toModify( + hltPhase2L3MuonMerged, + TrackProducers = cms.VInputTag( + "hltPhase2L3OIMuonTrackSelectionHighPurity", + "hltPhase2L3MuonFilter:L3IOTracksFiltered", + ), + selectedTrackQuals = cms.VInputTag( + "hltPhase2L3OIMuonTrackSelectionHighPurity", + "hltPhase2L3MuonFilter:L3IOTracksFiltered", + ), +) + +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify( + hltPhase2L3MuonMerged, + TrackProducers = cms.VInputTag( + "hltPhase2L3MuonFilter:L3OITracksFiltered", + "hltIter2Phase2L3FromL1TkMuonMerged", + ), + selectedTrackQuals = cms.VInputTag( + "hltPhase2L3MuonFilter:L3OITracksFiltered", + "hltIter2Phase2L3FromL1TkMuonMerged", + ), ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3OISeedsFromL2Muons_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3OISeedsFromL2Muons_cfi.py index 3ec2fa2b86f9f..b67e7953e445e 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3OISeedsFromL2Muons_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3OISeedsFromL2Muons_cfi.py @@ -39,3 +39,15 @@ tsosDiff1 = cms.double(0.2), tsosDiff2 = cms.double(0.02) ) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +phase2L2AndL3Muons.toModify( + hltPhase2L3OISeedsFromL2Muons, + src = "hltPhase2L3MuonFilter:L2MuToReuse" +) + +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify( + hltPhase2L3OISeedsFromL2Muons, + src ="hltL2MuonsFromL1TkMuon:UpdatedAtVtx" +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2OTHitsInputLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2OTHitsInputLST_cfi.py new file mode 100644 index 0000000000000..ef388d2efd059 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2OTHitsInputLST_cfi.py @@ -0,0 +1,6 @@ +import FWCore.ParameterSet.Config as cms + +hltPhase2OTHitsInputLST = cms.EDProducer('LSTPhase2OTHitsInputProducer', + phase2OTRecHits = cms.InputTag('hltSiPhase2RecHits'), + mightGet = cms.optional.untracked.vstring +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2PixelTracksSoA_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2PixelTracksSoA_cfi.py index d52dbb5f12d09..0ab0ce7737f2c 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2PixelTracksSoA_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2PixelTracksSoA_cfi.py @@ -41,3 +41,8 @@ # autoselect the alpaka backend alpaka = cms.untracked.PSet(backend = cms.untracked.string('')) ) + +_hltPhase2PixelTracksSoASingleIterPatatrack = hltPhase2PixelTracksSoA.clone( minHitsPerNtuplet = 3 ) + +from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack +singleIterPatatrack.toReplaceWith(hltPhase2PixelTracksSoA, _hltPhase2PixelTracksSoASingleIterPatatrack) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPixelSeedInputLST_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPixelSeedInputLST_cfi.py new file mode 100644 index 0000000000000..c85dfc1682512 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPixelSeedInputLST_cfi.py @@ -0,0 +1,16 @@ +import FWCore.ParameterSet.Config as cms + +hltPixelSeedInputLST = cms.EDProducer('LSTPixelSeedInputProducer', + beamSpot = cms.InputTag('hltOnlineBeamSpot'), + seedTracks = cms.VInputTag( + 'hltInitialStepSeedTracksLST', + 'hltHighPtTripletStepSeedTracksLST' + ) +) + +_hltPixelSeedInputLSTSingleIterPatatrack = hltPixelSeedInputLST.clone( + seedTracks = ['hltInitialStepSeedTracksLST'] +) + +from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack +singleIterPatatrack.toReplaceWith(hltPixelSeedInputLST, _hltPixelSeedInputLSTSingleIterPatatrack) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltPuppiTauTkIsoEle45_22L1TkFilter_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPuppiTauTkIsoEle45_22L1TkFilter_cfi.py new file mode 100644 index 0000000000000..36a9c7102e889 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltPuppiTauTkIsoEle45_22L1TkFilter_cfi.py @@ -0,0 +1,5 @@ +import FWCore.ParameterSet.Config as cms + +hltPuppiTauTkIsoEle45_22L1TkFilter = cms.EDFilter("PathStatusFilter", + logicalExpression = cms.string('pPuppiTauTkIsoEle45_22') +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2Clusters_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2Clusters_cfi.py index 342699f45689b..f3b391e015cab 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2Clusters_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2Clusters_cfi.py @@ -1,4 +1,11 @@ import FWCore.ParameterSet.Config as cms -from RecoLocalTracker.SiPhase2Clusterizer.phase2TrackerClusterizer_cfi import siPhase2Clusters as _siPhase2Clusters -hltSiPhase2Clusters = _siPhase2Clusters.clone() +# Clusterizer options +hltSiPhase2Clusters = cms.EDProducer('Phase2TrackerClusterizer', + src = cms.InputTag("mix", "Tracker"), + maxClusterSize = cms.uint32(0), # was 8 + maxNumberClusters = cms.uint32(0) +) + +from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2 +premix_stage2.toModify(hltSiPhase2Clusters, src = "mixData:Tracker") diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2RecHits_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2RecHits_cfi.py new file mode 100644 index 0000000000000..32a3d48a6ad91 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPhase2RecHits_cfi.py @@ -0,0 +1,7 @@ +import FWCore.ParameterSet.Config as cms + +# RecHits options +hltSiPhase2RecHits = cms.EDProducer("Phase2TrackerRecHits", + src = cms.InputTag("hltSiPhase2Clusters"), + Phase2StripCPE = cms.ESInputTag("phase2StripCPEESProducer", "Phase2StripCPE") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPixelRecHits_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPixelRecHits_cfi.py index 98e1ba1899408..f0248206f35a6 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPixelRecHits_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltSiPixelRecHits_cfi.py @@ -2,7 +2,6 @@ hltSiPixelRecHits = cms.EDProducer("SiPixelRecHitConverter", CPE = cms.string('PixelCPEGeneric'), - VerboseLevel = cms.untracked.int32(0), src = cms.InputTag("hltSiPixelClusters") ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksL1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksL1Seeded_cfi.py index d4b4940ea7f05..d89b5ea6233a4 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksL1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksL1Seeded_cfi.py @@ -1,25 +1,12 @@ import FWCore.ParameterSet.Config as cms +from ..psets.hltTiclTracksterLinksPSet_cfi import hltTiclTracksterLinksPSet hltTiclTracksterLinksL1Seeded = cms.EDProducer("TracksterLinksProducer", detector = cms.string('HGCAL'), layer_clusters = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded"), layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded","timeLayerCluster"), inferenceAlgo = cms.string('TracksterInferenceByDNN'), - linkingPSet = cms.PSet( - algo_verbosity = cms.int32(0), - cylinder_radius_sqr = cms.vdouble(9, 9), - dot_prod_th = cms.double(0.97), - max_distance_projective_sqr = cms.vdouble(60, 60), - max_distance_projective_sqr_closest_points = cms.vdouble(60, 60), - max_z_distance_closest_points = cms.vdouble(35, 35), - min_distance_z = cms.vdouble(30, 30), - min_num_lcs = cms.uint32(7), - min_trackster_energy = cms.double(10), - pca_quality_th = cms.double(0.85), - track_time_quality_threshold = cms.double(0.5), - type = cms.string('Skeletons'), - wind = cms.double(0.036) - ), + linkingPSet = hltTiclTracksterLinksPSet, pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet( algo_verbosity = cms.int32(0), onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'), @@ -38,7 +25,7 @@ original_masks = cms.VInputTag("hltHgcalMergeLayerClustersL1Seeded:InitialLayerClustersMask"), propagator = cms.string('PropagatorWithMaterial'), regressionAndPid = cms.bool(True), - tracksters_collections = cms.VInputTag("hltTiclTrackstersCLUE3DHighL1Seeded", "hltTiclTrackstersPassthrough") + tracksters_collections = cms.VInputTag("hltTiclTrackstersCLUE3DHighL1Seeded", "hltTiclTrackstersRecoveryL1Seeded") ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksUnseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksUnseeded_cfi.py deleted file mode 100644 index 4d90a837a4a48..0000000000000 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksUnseeded_cfi.py +++ /dev/null @@ -1,44 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -hltTiclTracksterLinksUnseeded = cms.EDProducer("TracksterLinksProducer", - detector = cms.string('HGCAL'), - layer_clusters = cms.InputTag("hltHgcalMergeLayerClusters"), - layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClusters","timeLayerCluster"), - inferenceAlgo = cms.string('TracksterInferenceByDNN'), - linkingPSet = cms.PSet( - algo_verbosity = cms.int32(0), - cylinder_radius_sqr = cms.vdouble(9, 9), - dot_prod_th = cms.double(0.97), - max_distance_projective_sqr = cms.vdouble(60, 60), - max_distance_projective_sqr_closest_points = cms.vdouble(60, 60), - max_z_distance_closest_points = cms.vdouble(35, 35), - min_distance_z = cms.vdouble(30, 30), - min_num_lcs = cms.uint32(7), - min_trackster_energy = cms.double(10), - pca_quality_th = cms.double(0.85), - track_time_quality_threshold = cms.double(0.5), - type = cms.string('Skeletons'), - wind = cms.double(0.036) - ), - pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet( - algo_verbosity = cms.int32(0), - onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'), - onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/energy_v0.onnx'), - inputNames = cms.vstring('input'), - output_en = cms.vstring('enreg_output'), - output_id = cms.vstring('pid_output'), - eid_min_cluster_energy = cms.double(1), - eid_n_layers = cms.int32(50), - eid_n_clusters = cms.int32(10), - doPID = cms.int32(1), - doRegression = cms.int32(1), - type = cms.string('TracksterInferenceByDNN') - ), - mightGet = cms.optional.untracked.vstring, - original_masks = cms.VInputTag("hltHgcalMergeLayerClusters:InitialLayerClustersMask"), - propagator = cms.string('PropagatorWithMaterial'), - regressionAndPid = cms.bool(True), - tracksters_collections = cms.VInputTag("hltTiclTrackstersCLUE3DHigh", "hltTiclTrackstersPassthrough") -) - - diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinks_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinks_cfi.py index 3bf8faa4f4190..ec40871157f21 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinks_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinks_cfi.py @@ -1,25 +1,12 @@ import FWCore.ParameterSet.Config as cms +from ..psets.hltTiclTracksterLinksPSet_cfi import hltTiclTracksterLinksPSet hltTiclTracksterLinks = cms.EDProducer("TracksterLinksProducer", detector = cms.string('HGCAL'), layer_clusters = cms.InputTag("hltHgcalMergeLayerClusters"), layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClusters","timeLayerCluster"), inferenceAlgo = cms.string('TracksterInferenceByDNN'), - linkingPSet = cms.PSet( - algo_verbosity = cms.int32(0), - cylinder_radius_sqr = cms.vdouble(9, 9), - dot_prod_th = cms.double(0.97), - max_distance_projective_sqr = cms.vdouble(60, 60), - max_distance_projective_sqr_closest_points = cms.vdouble(60, 60), - max_z_distance_closest_points = cms.vdouble(35, 35), - min_distance_z = cms.vdouble(30, 30), - min_num_lcs = cms.uint32(7), - min_trackster_energy = cms.double(10), - pca_quality_th = cms.double(0.85), - track_time_quality_threshold = cms.double(0.5), - type = cms.string('Skeletons'), - wind = cms.double(0.036) - ), + linkingPSet = hltTiclTracksterLinksPSet, pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet( algo_verbosity = cms.int32(0), onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'), diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersRecoveryL1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersRecoveryL1Seeded_cfi.py new file mode 100644 index 0000000000000..43146ea1580bc --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersRecoveryL1Seeded_cfi.py @@ -0,0 +1,93 @@ +import FWCore.ParameterSet.Config as cms + +hltTiclTrackstersRecoveryL1Seeded = cms.EDProducer("TrackstersProducer", + detector = cms.string('HGCAL'), + filtered_mask = cms.InputTag("hltFilteredLayerClustersRecoveryL1Seeded","Recovery"), + itername = cms.string('Recovery'), + layer_clusters = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded"), + layer_clusters_hfnose_tiles = cms.InputTag("ticlLayerTileHFNose"), + layer_clusters_tiles = cms.InputTag("hltTiclLayerTileProducerL1Seeded"), + mightGet = cms.optional.untracked.vstring, + original_mask = cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded"), + patternRecognitionBy = cms.string('Recovery'), + inferenceAlgo = cms.string('TracksterInferenceByDNN'), + pluginPatternRecognitionByCA = cms.PSet( + algo_verbosity = cms.int32(0), + computeLocalTime = cms.bool(True), + energy_em_over_total_threshold = cms.double(-1), + etaLimitIncreaseWindow = cms.double(2.1), + filter_on_categories = cms.vint32(0), + max_delta_time = cms.double(3), + max_longitudinal_sigmaPCA = cms.double(9999), + max_missing_layers_in_trackster = cms.int32(9999), + max_out_in_hops = cms.int32(10), + min_cos_pointing = cms.double(-1), + min_cos_theta = cms.double(0.915), + min_layers_per_trackster = cms.int32(10), + oneTracksterPerTrackSeed = cms.bool(False), + out_in_dfs = cms.bool(True), + pid_threshold = cms.double(0), + promoteEmptyRegionToTrackster = cms.bool(False), + root_doublet_max_distance_from_seed_squared = cms.double(9999), + shower_start_max_layer = cms.int32(9999), + siblings_maxRSquared = cms.vdouble(0.0006, 0.0006, 0.0006), + skip_layers = cms.int32(0), + type = cms.string('CA') + ), + pluginPatternRecognitionByCLUE3D = cms.PSet( + algo_verbosity = cms.int32(0), + computeLocalTime = cms.bool(True), + criticalDensity = cms.vdouble(4, 4, 4), + criticalEtaPhiDistance = cms.vdouble(0.025, 0.025, 0.025), + criticalSelfDensity = cms.vdouble(0.15, 0.15, 0.15), + criticalXYDistance = cms.vdouble(1.8, 1.8, 1.8), + criticalZDistanceLyr = cms.vint32(5, 5, 5), + cutHadProb = cms.double(0.5), + densityEtaPhiDistanceSqr = cms.vdouble(0.0008, 0.0008, 0.0008), + densityOnSameLayer = cms.bool(False), + densitySiblingLayers = cms.vint32(3, 3, 3), + densityXYDistanceSqr = cms.vdouble(3.24, 3.24, 3.24), + doPidCut = cms.bool(False), + kernelDensityFactor = cms.vdouble(0.2, 0.2, 0.2), + minNumLayerCluster = cms.vint32(2, 2, 2), + nearestHigherOnSameLayer = cms.bool(False), + outlierMultiplier = cms.vdouble(2, 2, 2), + rescaleDensityByZ = cms.bool(False), + type = cms.string('CLUE3D'), + useAbsoluteProjectiveScale = cms.bool(True), + useClusterDimensionXY = cms.bool(False) + ), + pluginPatternRecognitionByFastJet = cms.PSet( + algo_verbosity = cms.int32(0), + antikt_radius = cms.double(0.09), + computeLocalTime = cms.bool(True), + minNumLayerCluster = cms.int32(5), + type = cms.string('FastJet') + ), + pluginPatternRecognitionByRecovery = cms.PSet( + algo_verbosity = cms.int32(0), + type = cms.string('Recovery') + ), + + pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet( + algo_verbosity = cms.int32(0), + onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/id_v0.onnx'), + onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/energy_v0.onnx'), + inputNames = cms.vstring('input'), + output_en = cms.vstring('enreg_output'), + output_id = cms.vstring('pid_output'), + eid_min_cluster_energy = cms.double(1), + eid_n_layers = cms.int32(50), + eid_n_clusters = cms.int32(10), + doPID = cms.int32(0), + doRegression = cms.int32(0), + type = cms.string('TracksterInferenceByDNN') + ), + pluginInferenceAlgoTracksterInferenceByANN = cms.PSet( + algo_verbosity = cms.int32(0), + type = cms.string('TracksterInferenceByANN') + + ), + seeding_regions = cms.InputTag("hltTiclSeedingL1"), + time_layerclusters = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded","timeLayerCluster") +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_AK4PFPuppiJet520_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_AK4PFPuppiJet520_cfi.py index c75c77b387b54..e835af21a0c6a 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_AK4PFPuppiJet520_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_AK4PFPuppiJet520_cfi.py @@ -12,4 +12,16 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_AK4PFPuppiJet520 = cms.Path(HLTBeginSequence+hltL1SeedsForPuppiJetFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltSingleAK4PFPuppiJet520+HLTEndSequence) +HLT_AK4PFPuppiJet520 = cms.Path( + HLTBeginSequence + + hltL1SeedsForPuppiJetFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltSingleAK4PFPuppiJet520 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_L1Seeded_cfi.py index 404fc49f9db52..348f1b257bf13 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreDiphoton3023IsoCaloIdL1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTDiphoton3023IsoCaloIdL1SeededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_Unseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_Unseeded_cfi.py index 2c0e74098f74b..be7a430f95498 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_Unseeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_Unseeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreDiphoton3023IsoCaloIdUnseeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTDiphoton3023IsoCaloIdUnseededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle23_12_Iso_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle23_12_Iso_L1Seeded_cfi.py index 47046f6d66c60..1c81dad9f355b 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle23_12_Iso_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle23_12_Iso_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreDoubleEle2312IsoL1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTDoubleEle2312IsoL1SeededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_L1Seeded_cfi.py index 3fb7a05ea48dc..24588d033958b 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreDoubleEle25CaloIdLPMS2L1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTDoubleEle25CaloIdLPMS2L1SeededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_Unseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_Unseeded_cfi.py index 151c07eb0294e..ac07eb66da9d8 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_Unseeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleEle25_CaloIdL_PMS2_Unseeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreDoubleEle25CaloIdLPMS2Unseeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTDoubleEle25CaloIdLPMS2UnseededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1_cfi.py index 92836e69259a3..f9cfbf2193bcc 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1_cfi.py @@ -17,4 +17,21 @@ from ..sequences.HLTRawToDigiSequence_cfi import * from ..modules.hltL1SeedForDoublePuppiTau_cfi import * -HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1 = cms.Path(HLTBeginSequence+hltL1SeedForDoublePuppiTau+hltPreDoublePFTauHPS+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFJetsReconstruction+hltAK4PFJetsForTaus+HLTPFTauHPS+HLTHPSMediumChargedIsoPFTauSequence+hltHpsSelectedPFTausTrackPt1MediumChargedIsolation+hltHpsDoublePFTau40TrackPt1MediumChargedIsolation+HLTEndSequence) +HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1 = cms.Path( + HLTBeginSequence + + hltL1SeedForDoublePuppiTau + + hltPreDoublePFTauHPS + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFJetsReconstruction + + hltAK4PFJetsForTaus + + HLTPFTauHPS + + HLTHPSMediumChargedIsoPFTauSequence + + hltHpsSelectedPFTausTrackPt1MediumChargedIsolation + + hltHpsDoublePFTau40TrackPt1MediumChargedIsolation + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1_cfi.py index 2e43a58e60c58..0572ea3683432 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1_cfi.py @@ -17,4 +17,21 @@ from ..sequences.HLTRawToDigiSequence_cfi import * from ..modules.hltL1SeedForDoublePuppiTau_cfi import * -HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1 = cms.Path(HLTBeginSequence+hltL1SeedForDoublePuppiTau+hltPreDoublePFTauHPS+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFJetsReconstruction+hltAK4PFJetsForTaus+HLTPFTauHPS+HLTHPSDeepTauPFTauSequence+hltHpsSelectedPFTausMediumDitauWPDeepTau+hltHpsDoublePFTau35MediumDitauWPDeepTau+HLTEndSequence) +HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1 = cms.Path( + HLTBeginSequence + + hltL1SeedForDoublePuppiTau + + hltPreDoublePFTauHPS + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFJetsReconstruction + + hltAK4PFJetsForTaus + + HLTPFTauHPS + + HLTHPSDeepTauPFTauSequence + + hltHpsSelectedPFTausMediumDitauWPDeepTau + + hltHpsDoublePFTau35MediumDitauWPDeepTau + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepCSV_2p4_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepCSV_2p4_cfi.py index a81a315dd5dc4..59475918ec8ae 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepCSV_2p4_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepCSV_2p4_cfi.py @@ -15,4 +15,19 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepCSV_2p4 = cms.Path(HLTBeginSequence+hltL1SeedsForDoublePuppiJetBtagFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltDoublePFPuppiJets128MaxEta2p4+hltDoublePFPuppiJets128Eta2p4MaxDeta1p6+HLTBtagDeepCSVSequencePFPuppiModEta2p4+hltBTagPFPuppiDeepCSV0p865DoubleEta2p4+HLTEndSequence) +HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepCSV_2p4 = cms.Path( + HLTBeginSequence + + hltL1SeedsForDoublePuppiJetBtagFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltDoublePFPuppiJets128MaxEta2p4 + + hltDoublePFPuppiJets128Eta2p4MaxDeta1p6 + + HLTBtagDeepCSVSequencePFPuppiModEta2p4 + + hltBTagPFPuppiDeepCSV0p865DoubleEta2p4 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepFlavour_2p4_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepFlavour_2p4_cfi.py index 72fb6c9aeac5a..d2a743a90b505 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepFlavour_2p4_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepFlavour_2p4_cfi.py @@ -15,4 +15,19 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepFlavour_2p4 = cms.Path(HLTBeginSequence+hltL1SeedsForDoublePuppiJetBtagFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltDoublePFPuppiJets128MaxEta2p4+hltDoublePFPuppiJets128Eta2p4MaxDeta1p6+HLTBtagDeepFlavourSequencePFPuppiModEta2p4+hltBTagPFPuppiDeepFlavour0p935DoubleEta2p4+HLTEndSequence) +HLT_DoublePFPuppiJets128_DoublePFPuppiBTagDeepFlavour_2p4 = cms.Path( + HLTBeginSequence + + hltL1SeedsForDoublePuppiJetBtagFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltDoublePFPuppiJets128MaxEta2p4 + + hltDoublePFPuppiJets128Eta2p4MaxDeta1p6 + + HLTBtagDeepFlavourSequencePFPuppiModEta2p4 + + hltBTagPFPuppiDeepFlavour0p935DoubleEta2p4 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele115_NonIso_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele115_NonIso_L1Seeded_cfi.py index 4e08a0cebc95c..75f1147eb2c54 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele115_NonIso_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele115_NonIso_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreEle115NonIsoL1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEle115NonIsoL1SeededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_L1Seeded_cfi.py index d62ae757cb975..f2009f0852442 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreEle26WP70L1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEle26WP70L1SeededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_Unseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_Unseeded_cfi.py index 632ef89e33fa2..6c829e91b161f 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_Unseeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele26_WP70_Unseeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreEle26WP70Unseeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEle26WP70UnseededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_cfi.py new file mode 100644 index 0000000000000..1ec84c3adefb8 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_cfi.py @@ -0,0 +1,107 @@ +import FWCore.ParameterSet.Config as cms +from ..sequences.HLTBeginSequence_cfi import * +from ..sequences.HLTDoFullUnpackingEgammaEcalL1SeededSequence_cfi import * +from ..sequences.HLTPFClusteringForEgammaL1SeededSequence_cfi import * +from ..sequences.HLTHgcalTiclPFClusteringForEgammaL1SeededSequence_cfi import * +from ..sequences.HLTEGammaDoLocalHcalSequence_cfi import * +from ..sequences.HLTFastJetForEgammaSequence_cfi import * +from ..sequences.HLTPFHcalClusteringForEgammaSequence_cfi import * +from ..sequences.HLTElePixelMatchL1SeededSequence_cfi import * +from ..sequences.HLTGsfElectronL1SeededSequence_cfi import * +from ..sequences.HLTAK4PFJetsReconstruction_cfi import * +from ..sequences.HLTPFTauHPS_cfi import * +from ..sequences.HLTHPSDeepTauPFTauSequence_cfi import * +from ..sequences.HLTRawToDigiSequence_cfi import * +from ..sequences.HLTHgcalLocalRecoSequence_cfi import * +from ..sequences.HLTLocalrecoSequence_cfi import * +from ..sequences.HLTTrackingV61Sequence_cfi import * +from ..sequences.HLTMuonsSequence_cfi import * +from ..sequences.HLTParticleFlowSequence_cfi import * +from ..sequences.HLTEndSequence_cfi import * +from ..modules.hltPuppiTauTkIsoEle45_22L1TkFilter_cfi import * +from ..modules.hltEgammaCandidatesL1Seeded_cfi import * +from ..modules.hltEgammaCandidatesWrapperL1Seeded_cfi import * +from ..modules.hltEgammaClusterShapeL1Seeded_cfi import * +from ..modules.hltEG30EtL1SeededFilter_cfi import * +from ..modules.hltEgammaHGCALIDVarsL1Seeded_cfi import * +from ..modules.hltEgammaHoverEL1Seeded_cfi import * +from ..modules.hltEgammaEcalPFClusterIsoL1Seeded_cfi import * +from ..modules.hltEgammaHGCalLayerClusterIsoL1Seeded_cfi import * +from ..modules.hltEgammaHcalPFClusterIsoL1Seeded_cfi import * +from ..modules.hltEgammaEleL1TrkIsoL1Seeded_cfi import * +from ..modules.hltEgammaEleGsfTrackIsoV6L1Seeded_cfi import * +from ..modules.hltAK4PFJetsForTaus_cfi import * +from ..modules.hltHpsSelectedPFTauLooseTauWPDeepTau_cfi import * +from ..modules.hltHpsPFTau30LooseTauWPDeepTau_cfi import * +from ..modules.hltEle30WPTightClusterShapeL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightClusterShapeSigmavvL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightClusterShapeSigmawwL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightHgcalHEL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightHEL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightEcalIsoL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightHgcalIsoL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightHcalIsoL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightPixelMatchL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightPMS2L1SeededFilter_cfi import * +from ..modules.hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightGsfDetaL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightGsfDphiL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightBestGsfNLayerITL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightBestGsfChi2L1SeededFilter_cfi import * +from ..modules.hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter_cfi import * +from ..modules.hltEle30WPTightGsfTrackIsoL1SeededFilter_cfi import * + + +HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1 = cms.Path( + HLTBeginSequence + + hltPuppiTauTkIsoEle45_22L1TkFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTDoFullUnpackingEgammaEcalL1SeededSequence + + HLTPFClusteringForEgammaL1SeededSequence + + HLTHgcalTiclPFClusteringForEgammaL1SeededSequence + + hltEgammaCandidatesL1Seeded + + hltEgammaCandidatesWrapperL1Seeded + + hltEG30EtL1SeededFilter + + hltEgammaClusterShapeL1Seeded + + hltEle30WPTightClusterShapeL1SeededFilter + + hltEgammaHGCALIDVarsL1Seeded + + hltEle30WPTightClusterShapeSigmavvL1SeededFilter + + hltEle30WPTightClusterShapeSigmawwL1SeededFilter + + hltEle30WPTightHgcalHEL1SeededFilter + + HLTEGammaDoLocalHcalSequence + + HLTFastJetForEgammaSequence + + hltEgammaHoverEL1Seeded + + hltEle30WPTightHEL1SeededFilter + + hltEgammaEcalPFClusterIsoL1Seeded + + hltEle30WPTightEcalIsoL1SeededFilter + + hltEgammaHGCalLayerClusterIsoL1Seeded + + hltEle30WPTightHgcalIsoL1SeededFilter + + HLTPFHcalClusteringForEgammaSequence + + hltEgammaHcalPFClusterIsoL1Seeded + + hltEle30WPTightHcalIsoL1SeededFilter + + HLTElePixelMatchL1SeededSequence + + hltEle30WPTightPixelMatchL1SeededFilter + + hltEle30WPTightPMS2L1SeededFilter + + HLTGsfElectronL1SeededSequence + + hltEle30WPTightGsfOneOEMinusOneOPL1SeededFilter + + hltEle30WPTightGsfDetaL1SeededFilter + + hltEle30WPTightGsfDphiL1SeededFilter + + hltEle30WPTightBestGsfNLayerITL1SeededFilter + + hltEle30WPTightBestGsfChi2L1SeededFilter + + hltEgammaEleL1TrkIsoL1Seeded + + hltEle30WPTightGsfTrackIsoFromL1TracksL1SeededFilter + + HLTTrackingV61Sequence + + hltEgammaEleGsfTrackIsoV6L1Seeded + + hltEle30WPTightGsfTrackIsoL1SeededFilter + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFJetsReconstruction + + hltAK4PFJetsForTaus + + HLTPFTauHPS + + HLTHPSDeepTauPFTauSequence + + hltHpsSelectedPFTauLooseTauWPDeepTau + + hltHpsPFTau30LooseTauWPDeepTau + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_L1Seeded_cfi.py index 11ba87c693f32..ce1774c5b6ee8 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreEle32WPTightL1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEle32WPTightL1SeededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_Unseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_Unseeded_cfi.py index 11abc9d782d5d..e58a9899bd14a 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_Unseeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Ele32_WPTight_Unseeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPreEle32WPTightUnseeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEle32WPTightUnseededSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_cfi.py index 30cadebad2006..98b68026f7b46 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_cfi.py @@ -32,29 +32,34 @@ from ..modules.hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p07_cfi import * HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1 = cms.Path( - HLTBeginSequence + - hltPuppiTauTkMuon4218L1TkFilter + - HLTRawToDigiSequence + HLTHgcalLocalRecoSequence + - HLTLocalrecoSequence + HLTTrackingV61Sequence + - HLTMuonsSequence + HLTParticleFlowSequence + - hltParticleFlowRecHitECALUnseeded + - hltParticleFlowClusterECALUncorrectedUnseeded + - hltParticleFlowClusterECALUnseeded + - hltFixedGridRhoFastjetAllCaloForEGamma + - hltPhase2L3MuonCandidates + - hltPhase2L3MuonsEcalIsodR0p3dRVeto0p000 + - hltPhase2L3MuonsHcalIsodR0p3dRVeto0p000 + - hltPhase2L3MuonsHgcalLCIsodR0p2dRVetoEM0p00dRVetoHad0p02minEEM0p00minEHad0p00 + - hltL3fL1TkSingleMu18Filtered20 + - hltL3crIsoL1TkSingleMu22EcalIso0p41 + - hltL3crIsoL1TkSingleMu22HcalIso0p40 + - hltL3crIsoL1TkSingleMu22HgcalIso4p70 + - HLTPhase2L3MuonGeneralTracksSequence + - hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p07 + - hltL3crIsoL1TkSingleMu22TrkIsoRegionalNewFiltered0p07EcalHcalHgcalTrk + - HLTAK4PFJetsReconstruction + hltAK4PFJetsForTaus + - HLTPFTauHPS + HLTHPSDeepTauPFTauSequence + - hltHpsSelectedPFTauLooseTauWPDeepTau + - hltHpsPFTau27LooseTauWPDeepTau + - HLTEndSequence + HLTBeginSequence + + hltPuppiTauTkMuon4218L1TkFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + hltParticleFlowRecHitECALUnseeded + + hltParticleFlowClusterECALUncorrectedUnseeded + + hltParticleFlowClusterECALUnseeded + + hltFixedGridRhoFastjetAllCaloForEGamma + + hltPhase2L3MuonCandidates + + hltPhase2L3MuonsEcalIsodR0p3dRVeto0p000 + + hltPhase2L3MuonsHcalIsodR0p3dRVeto0p000 + + hltPhase2L3MuonsHgcalLCIsodR0p2dRVetoEM0p00dRVetoHad0p02minEEM0p00minEHad0p00 + + hltL3fL1TkSingleMu18Filtered20 + + hltL3crIsoL1TkSingleMu22EcalIso0p41 + + hltL3crIsoL1TkSingleMu22HcalIso0p40 + + hltL3crIsoL1TkSingleMu22HgcalIso4p70 + + HLTPhase2L3MuonGeneralTracksSequence + + hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p07 + + hltL3crIsoL1TkSingleMu22TrkIsoRegionalNewFiltered0p07EcalHcalHgcalTrk + + HLTAK4PFJetsReconstruction + + hltAK4PFJetsForTaus + + HLTPFTauHPS + + HLTHPSDeepTauPFTauSequence + + hltHpsSelectedPFTauLooseTauWPDeepTau + + hltHpsPFTau27LooseTauWPDeepTau + + HLTEndSequence ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu24_FromL1TkMuon_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu24_FromL1TkMuon_cfi.py index 189e9781c5f46..e60c4c91228f1 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu24_FromL1TkMuon_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_IsoMu24_FromL1TkMuon_cfi.py @@ -8,14 +8,9 @@ from ..sequences.HLTHgcalLocalRecoSequence_cfi import * from ..sequences.HLTDoLocalHcalSequence_cfi import * from ..sequences.HLTDoFullUnpackingEgammaEcalSequence_cfi import * +from ..sequences.HLTMuonsSequence_cfi import * from ..sequences.HLTFastJetForEgammaSequence_cfi import * -from ..sequences.HLTIter0Phase2L3FromL1TkSequence_cfi import * -from ..sequences.HLTIter2Phase2L3FromL1TkSequence_cfi import * from ..sequences.HLTPfClusteringHBHEHFSequence_cfi import * -from ..sequences.HLTPhase2L3FromL1TkSequence_cfi import * -from ..sequences.HLTPhase2L3OISequence_cfi import * -from ..sequences.HLTPhase2L3MuonsSequence_cfi import * -from ..sequences.HLTL2MuonsFromL1TkSequence_cfi import * from ..sequences.HLTPFClusteringForEgammaUnseededSequence_cfi import * from ..sequences.HLTPhase2L3MuonGeneralTracksSequence_cfi import * from ..modules.hltSingleTkMuon22L1TkMuonFilter_cfi import * @@ -31,35 +26,30 @@ from ..modules.hltPhase2L3MuonsHgcalLCIsodR0p2dRVetoEM0p00dRVetoHad0p02minEEM0p00minEHad0p00_cfi import * from ..modules.hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p07_cfi import * - - -HLT_IsoMu24_FromL1TkMuon = cms.Path(HLTBeginSequence - +hltSingleTkMuon22L1TkMuonFilter - +HLTRawToDigiSequence - +HLTItLocalRecoSequence - +HLTOtLocalRecoSequence - +HLTL2MuonsFromL1TkSequence - +HLTPhase2L3OISequence - +hltPhase2PixelFitterByHelixProjections - +hltPhase2PixelTrackFilterByKinematics - +HLTPhase2L3FromL1TkSequence - +HLTIter0Phase2L3FromL1TkSequence - +HLTIter2Phase2L3FromL1TkSequence - +HLTPhase2L3MuonsSequence - +hltL3fL1TkSingleMu22L3Filtered24Q - +HLTHgcalLocalRecoSequence - +HLTDoLocalHcalSequence - +HLTDoFullUnpackingEgammaEcalSequence - +HLTFastJetForEgammaSequence - +HLTPfClusteringHBHEHFSequence - +HLTPFClusteringForEgammaUnseededSequence - +hltPhase2L3MuonsEcalIsodR0p3dRVeto0p000 - +hltPhase2L3MuonsHcalIsodR0p3dRVeto0p000 - +hltPhase2L3MuonsHgcalLCIsodR0p2dRVetoEM0p00dRVetoHad0p02minEEM0p00minEHad0p00 - +hltL3crIsoL1TkSingleMu22L3f24QL3pfecalIsoFiltered0p41 - +hltL3crIsoL1TkSingleMu22L3f24QL3pfhcalIsoFiltered0p40 - +hltL3crIsoL1TkSingleMu22L3f24QL3pfhgcalIsoFiltered4p70 - +HLTPhase2L3MuonGeneralTracksSequence - +hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p07 - +hltL3crIsoL1TkSingleMu22L3f24QL3trkIsoRegionalNewFiltered0p07EcalHcalHgcalTrk - +HLTEndSequence) +HLT_IsoMu24_FromL1TkMuon = cms.Path( + HLTBeginSequence + + hltSingleTkMuon22L1TkMuonFilter + + HLTRawToDigiSequence + + HLTItLocalRecoSequence + + HLTOtLocalRecoSequence + + hltPhase2PixelFitterByHelixProjections + + hltPhase2PixelTrackFilterByKinematics + + HLTMuonsSequence + + hltL3fL1TkSingleMu22L3Filtered24Q + + HLTHgcalLocalRecoSequence + + HLTDoLocalHcalSequence + + HLTDoFullUnpackingEgammaEcalSequence + + HLTFastJetForEgammaSequence + + HLTPfClusteringHBHEHFSequence + + HLTPFClusteringForEgammaUnseededSequence + + hltPhase2L3MuonsEcalIsodR0p3dRVeto0p000 + + hltPhase2L3MuonsHcalIsodR0p3dRVeto0p000 + + hltPhase2L3MuonsHgcalLCIsodR0p2dRVetoEM0p00dRVetoHad0p02minEEM0p00minEHad0p00 + + hltL3crIsoL1TkSingleMu22L3f24QL3pfecalIsoFiltered0p41 + + hltL3crIsoL1TkSingleMu22L3f24QL3pfhcalIsoFiltered0p40 + + hltL3crIsoL1TkSingleMu22L3f24QL3pfhgcalIsoFiltered4p70 + + HLTPhase2L3MuonGeneralTracksSequence + + hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p07 + + hltL3crIsoL1TkSingleMu22L3f24QL3trkIsoRegionalNewFiltered0p07EcalHcalHgcalTrk + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon_cfi.py index 50f0dea249ccf..6140917f554e4 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon_cfi.py @@ -5,49 +5,33 @@ from ..sequences.HLTRawToDigiSequence_cfi import * from ..sequences.HLTItLocalRecoSequence_cfi import * from ..sequences.HLTOtLocalRecoSequence_cfi import * -from ..sequences.HLTHgcalLocalRecoSequence_cfi import * -from ..sequences.HLTDoLocalHcalSequence_cfi import * -from ..sequences.HLTDoFullUnpackingEgammaEcalSequence_cfi import * -from ..sequences.HLTFastJetForEgammaSequence_cfi import * -from ..sequences.HLTIter0Phase2L3FromL1TkSequence_cfi import * -from ..sequences.HLTIter2Phase2L3FromL1TkSequence_cfi import * -from ..sequences.HLTPfClusteringHBHEHFSequence_cfi import * -from ..sequences.HLTPhase2L3FromL1TkSequence_cfi import * -from ..sequences.HLTPhase2L3OISequence_cfi import * -from ..sequences.HLTPhase2L3MuonsSequence_cfi import * -from ..sequences.HLTL2MuonsFromL1TkSequence_cfi import * -from ..sequences.HLTPFClusteringForEgammaUnseededSequence_cfi import * from ..sequences.HLTPhase2L3MuonGeneralTracksSequence_cfi import * +from ..sequences.HLTMuonsSequence_cfi import * from ..modules.hltDoubleTkMuon157L1TkMuonFilter_cfi import * from ..modules.hltPhase2PixelFitterByHelixProjections_cfi import * from ..modules.hltPhase2PixelTrackFilterByKinematics_cfi import * from ..modules.hltDiMuon178RelTrkIsoFiltered0p4_cfi import * from ..modules.hltDiMuon178RelTrkIsoFiltered0p4DzFiltered0p2_cfi import * from ..modules.hltDoubleMuon7DZ1p0_cfi import * -from ..modules.hltL1TkDoubleMuFiltered7_cfi import * -from ..modules.hltL1TkSingleMuFiltered15_cfi import * from ..modules.hltL3fL1DoubleMu155fFiltered17_cfi import * from ..modules.hltL3fL1DoubleMu155fPreFiltered8_cfi import * from ..modules.hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p4_cfi import * -HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon = cms.Path(HLTBeginSequence - +hltDoubleTkMuon157L1TkMuonFilter - +hltDoubleMuon7DZ1p0 - +HLTRawToDigiSequence - +HLTItLocalRecoSequence - +HLTOtLocalRecoSequence - +HLTL2MuonsFromL1TkSequence - +HLTPhase2L3OISequence - +hltPhase2PixelFitterByHelixProjections - +hltPhase2PixelTrackFilterByKinematics - +HLTPhase2L3FromL1TkSequence - +HLTIter0Phase2L3FromL1TkSequence - +HLTIter2Phase2L3FromL1TkSequence - +HLTPhase2L3MuonsSequence - +hltL3fL1DoubleMu155fPreFiltered8 - +hltL3fL1DoubleMu155fFiltered17 - +HLTPhase2L3MuonGeneralTracksSequence - +hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p4 - +hltDiMuon178RelTrkIsoFiltered0p4 - +hltDiMuon178RelTrkIsoFiltered0p4DzFiltered0p2 - +HLTEndSequence) +HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon = cms.Path( + HLTBeginSequence + + hltDoubleTkMuon157L1TkMuonFilter + + hltDoubleMuon7DZ1p0 + + HLTRawToDigiSequence + + HLTItLocalRecoSequence + + HLTOtLocalRecoSequence + + hltPhase2PixelFitterByHelixProjections + + hltPhase2PixelTrackFilterByKinematics + + HLTMuonsSequence + + hltL3fL1DoubleMu155fPreFiltered8 + + hltL3fL1DoubleMu155fFiltered17 + + HLTPhase2L3MuonGeneralTracksSequence + + hltPhase2L3MuonsTrkIsoRegionalNewdR0p3dRVeto0p005dz0p25dr0p20ChisqInfPtMin0p0Cut0p4 + + hltDiMuon178RelTrkIsoFiltered0p4 + + hltDiMuon178RelTrkIsoFiltered0p4DzFiltered0p2 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu37_Mu27_FromL1TkMuon_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu37_Mu27_FromL1TkMuon_cfi.py index bb9d916d1b20e..fc89377d28318 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu37_Mu27_FromL1TkMuon_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu37_Mu27_FromL1TkMuon_cfi.py @@ -13,15 +13,17 @@ from ..sequences.HLTMuonlocalrecoSequence_cfi import * from ..sequences.HLTOtLocalRecoSequence_cfi import * -HLT_Mu37_Mu27_FromL1TkMuon = cms.Path(HLTBeginSequence -+hltDoubleMuon7DZ1p0 -+HLTMuonlocalrecoSequence -+HLTItLocalRecoSequence -+HLTOtLocalRecoSequence -+hltPhase2PixelFitterByHelixProjections -+hltPhase2PixelTrackFilterByKinematics -+HLTMuonsSequence -+hltPhase2L3MuonCandidates -+hltL3fL1DoubleMu155fPreFiltered27 -+hltL3fL1DoubleMu155fFiltered37 -+HLTEndSequence) +HLT_Mu37_Mu27_FromL1TkMuon = cms.Path( + HLTBeginSequence + + hltDoubleMuon7DZ1p0 + + HLTMuonlocalrecoSequence + + HLTItLocalRecoSequence + + HLTOtLocalRecoSequence + + hltPhase2PixelFitterByHelixProjections + + hltPhase2PixelTrackFilterByKinematics + + HLTMuonsSequence + + hltPhase2L3MuonCandidates + + hltL3fL1DoubleMu155fPreFiltered27 + + hltL3fL1DoubleMu155fFiltered37 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu50_FromL1TkMuon_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu50_FromL1TkMuon_cfi.py index fe3dd25eaa47f..764b1d308e12e 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu50_FromL1TkMuon_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Mu50_FromL1TkMuon_cfi.py @@ -8,19 +8,20 @@ from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * from ..sequences.HLTMuonsSequence_cfi import * -from ..sequences.HLTTrackingV61Sequence_cfi import * from ..sequences.HLTItLocalRecoSequence_cfi import * from ..sequences.HLTMuonlocalrecoSequence_cfi import * from ..sequences.HLTOtLocalRecoSequence_cfi import * -HLT_Mu50_FromL1TkMuon = cms.Path(HLTBeginSequence - +hltSingleTkMuon22L1TkMuonFilter - +HLTMuonlocalrecoSequence - +HLTItLocalRecoSequence - +HLTOtLocalRecoSequence - +hltPhase2PixelFitterByHelixProjections - +hltPhase2PixelTrackFilterByKinematics - +HLTMuonsSequence - +hltPhase2L3MuonCandidates - +hltL3fL1TkSingleMu22L3Filtered50Q - +HLTEndSequence) +HLT_Mu50_FromL1TkMuon = cms.Path( + HLTBeginSequence + + hltSingleTkMuon22L1TkMuonFilter + + HLTMuonlocalrecoSequence + + HLTItLocalRecoSequence + + HLTOtLocalRecoSequence + + hltPhase2PixelFitterByHelixProjections + + hltPhase2PixelTrackFilterByKinematics + + HLTMuonsSequence + + hltPhase2L3MuonCandidates + + hltL3fL1TkSingleMu22L3Filtered50Q + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepCSV_2p4_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepCSV_2p4_cfi.py index 3852cc01b3e7a..f4cf26073d459 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepCSV_2p4_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepCSV_2p4_cfi.py @@ -18,4 +18,22 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepCSV_2p4 = cms.Path(HLTBeginSequence+hltL1SeedsForQuadPuppiJetTripleBtagFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltPFPuppiCentralJetQuad30MaxEta2p4+hlt1PFPuppiCentralJet70MaxEta2p4+hlt2PFPuppiCentralJet40MaxEta2p4+hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4+hltPFPuppiCentralJetsQuad30HT200MaxEta2p4+HLTBtagDeepCSVSequencePFPuppiModEta2p4+hltBTagPFPuppiDeepCSV0p38Eta2p4TripleEta2p4+HLTEndSequence) +HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepCSV_2p4 = cms.Path( + HLTBeginSequence + + hltL1SeedsForQuadPuppiJetTripleBtagFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltPFPuppiCentralJetQuad30MaxEta2p4 + + hlt1PFPuppiCentralJet70MaxEta2p4 + + hlt2PFPuppiCentralJet40MaxEta2p4 + + hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4 + + hltPFPuppiCentralJetsQuad30HT200MaxEta2p4 + + HLTBtagDeepCSVSequencePFPuppiModEta2p4 + + hltBTagPFPuppiDeepCSV0p38Eta2p4TripleEta2p4 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py index fff610e0e381b..687e2f7352de2 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py @@ -18,4 +18,22 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepFlavour_2p4 = cms.Path(HLTBeginSequence+hltL1SeedsForQuadPuppiJetTripleBtagFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltPFPuppiCentralJetQuad30MaxEta2p4+hlt1PFPuppiCentralJet70MaxEta2p4+hlt2PFPuppiCentralJet40MaxEta2p4+hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4+hltPFPuppiCentralJetsQuad30HT200MaxEta2p4+HLTBtagDeepFlavourSequencePFPuppiModEta2p4+hltBTagPFPuppiDeepFlavour0p375Eta2p4TripleEta2p4+HLTEndSequence) +HLT_PFHT200PT30_QuadPFPuppiJet_70_40_30_30_TriplePFPuppiBTagDeepFlavour_2p4 = cms.Path( + HLTBeginSequence + + hltL1SeedsForQuadPuppiJetTripleBtagFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltPFPuppiCentralJetQuad30MaxEta2p4 + + hlt1PFPuppiCentralJet70MaxEta2p4 + + hlt2PFPuppiCentralJet40MaxEta2p4 + + hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4 + + hltPFPuppiCentralJetsQuad30HT200MaxEta2p4 + + HLTBtagDeepFlavourSequencePFPuppiModEta2p4 + + hltBTagPFPuppiDeepFlavour0p375Eta2p4TripleEta2p4 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepCSV_2p4_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepCSV_2p4_cfi.py index ebd36ef894fb7..231ea26ef5c17 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepCSV_2p4_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepCSV_2p4_cfi.py @@ -20,4 +20,24 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepCSV_2p4 = cms.Path(HLTBeginSequence+hltL1SeedsForQuadPuppiJetTripleBtagFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltPFPuppiCentralJetQuad30MaxEta2p4+hlt1PFPuppiCentralJet75MaxEta2p4+hlt2PFPuppiCentralJet60MaxEta2p4+hlt3PFPuppiCentralJet45MaxEta2p4+hlt4PFPuppiCentralJet40MaxEta2p4+hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4+hltPFPuppiCentralJetsQuad30HT330MaxEta2p4+HLTBtagDeepCSVSequencePFPuppiModEta2p4+hltBTagPFPuppiDeepCSV0p31Eta2p4TripleEta2p4+HLTEndSequence) +HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepCSV_2p4 = cms.Path( + HLTBeginSequence + + hltL1SeedsForQuadPuppiJetTripleBtagFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltPFPuppiCentralJetQuad30MaxEta2p4 + + hlt1PFPuppiCentralJet75MaxEta2p4 + + hlt2PFPuppiCentralJet60MaxEta2p4 + + hlt3PFPuppiCentralJet45MaxEta2p4 + + hlt4PFPuppiCentralJet40MaxEta2p4 + + hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4 + + hltPFPuppiCentralJetsQuad30HT330MaxEta2p4 + + HLTBtagDeepCSVSequencePFPuppiModEta2p4 + + hltBTagPFPuppiDeepCSV0p31Eta2p4TripleEta2p4 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py index 74039707ac3f2..ea2419fe36f1e 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepFlavour_2p4_cfi.py @@ -20,4 +20,24 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepFlavour_2p4 = cms.Path(HLTBeginSequence+hltL1SeedsForQuadPuppiJetTripleBtagFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltPFPuppiCentralJetQuad30MaxEta2p4+hlt1PFPuppiCentralJet75MaxEta2p4+hlt2PFPuppiCentralJet60MaxEta2p4+hlt3PFPuppiCentralJet45MaxEta2p4+hlt4PFPuppiCentralJet40MaxEta2p4+hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4+hltPFPuppiCentralJetsQuad30HT330MaxEta2p4+HLTBtagDeepFlavourSequencePFPuppiModEta2p4+hltBTagPFPuppiDeepFlavour0p275Eta2p4TripleEta2p4+HLTEndSequence) +HLT_PFHT330PT30_QuadPFPuppiJet_75_60_45_40_TriplePFPuppiBTagDeepFlavour_2p4 = cms.Path( + HLTBeginSequence + + hltL1SeedsForQuadPuppiJetTripleBtagFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltPFPuppiCentralJetQuad30MaxEta2p4 + + hlt1PFPuppiCentralJet75MaxEta2p4 + + hlt2PFPuppiCentralJet60MaxEta2p4 + + hlt3PFPuppiCentralJet45MaxEta2p4 + + hlt4PFPuppiCentralJet40MaxEta2p4 + + hltHtMhtPFPuppiCentralJetsQuadC30MaxEta2p4 + + hltPFPuppiCentralJetsQuad30HT330MaxEta2p4 + + HLTBtagDeepFlavourSequencePFPuppiModEta2p4 + + hltBTagPFPuppiDeepFlavour0p275Eta2p4TripleEta2p4 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiHT1070_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiHT1070_cfi.py index f488b89ec23ea..cdd9341a71a02 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiHT1070_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiHT1070_cfi.py @@ -13,4 +13,17 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_PFPuppiHT1070 = cms.Path(HLTBeginSequence+hltL1SeedsForPuppiHTFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+hltPFPuppiHT+hltPFPuppiHT1070+HLTEndSequence) +HLT_PFPuppiHT1070 = cms.Path( + HLTBeginSequence + + hltL1SeedsForPuppiHTFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + hltPFPuppiHT + + hltPFPuppiHT1070 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiMETTypeOne140_PFPuppiMHT140_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiMETTypeOne140_PFPuppiMHT140_cfi.py index b22e829ce869a..63823e86f1083 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiMETTypeOne140_PFPuppiMHT140_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_PFPuppiMETTypeOne140_PFPuppiMHT140_cfi.py @@ -17,4 +17,21 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -HLT_PFPuppiMETTypeOne140_PFPuppiMHT140 = cms.Path(HLTBeginSequence+hltL1SeedsForPuppiMETFilter+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+HLTPFPuppiMETReconstruction+hltPFPuppiMETTypeOneCorrector+hltPFPuppiMETTypeOne+hltPFPuppiMETTypeOne140+hltPFPuppiMHT+hltPFPuppiMHT140+HLTEndSequence) +HLT_PFPuppiMETTypeOne140_PFPuppiMHT140 = cms.Path( + HLTBeginSequence + + hltL1SeedsForPuppiMETFilter + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + HLTPFPuppiMETReconstruction + + hltPFPuppiMETTypeOneCorrector + + hltPFPuppiMETTypeOne + + hltPFPuppiMETTypeOne140 + + hltPFPuppiMHT + + hltPFPuppiMHT140 + + HLTEndSequence +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_L1Seeded_cfi.py index a6e5a036debcc..857e665a06088 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPrePhoton108EBTightIDTightIsoL1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * from ..sequences.HLTPhoton108EBTightIDTightIsoL1SeededSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_Unseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_Unseeded_cfi.py index 8bf14dcec5a3a..4b40155559316 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_Unseeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon108EB_TightID_TightIso_Unseeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPrePhoton108EBTightIDTightIsoUnseeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * from ..sequences.HLTPhoton108EBTightIDTightIsoUnseededSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_L1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_L1Seeded_cfi.py index 64d95a14a00b6..e8efa3c4d5eb9 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_L1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_L1Seeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPrePhoton187L1Seeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * from ..sequences.HLTPhoton187L1SeededSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_Unseeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_Unseeded_cfi.py index 336d0f9930077..54a356fd165f6 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_Unseeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_Photon187_Unseeded_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms -from ..modules.hltPrePhoton187Unseeded_cfi import * from ..sequences.HLTBeginSequence_cfi import * from ..sequences.HLTEndSequence_cfi import * from ..sequences.HLTPhoton187UnseededSequence_cfi import * diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_TriMu_10_5_5_DZ_FromL1TkMuon_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_TriMu_10_5_5_DZ_FromL1TkMuon_cfi.py index 098cc0e2f0111..b9f14bc76dee4 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_TriMu_10_5_5_DZ_FromL1TkMuon_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/HLT_TriMu_10_5_5_DZ_FromL1TkMuon_cfi.py @@ -5,12 +5,6 @@ from ..sequences.HLTRawToDigiSequence_cfi import * from ..sequences.HLTItLocalRecoSequence_cfi import * from ..sequences.HLTOtLocalRecoSequence_cfi import * -from ..sequences.HLTHgcalLocalRecoSequence_cfi import * -from ..sequences.HLTDoLocalHcalSequence_cfi import * -from ..sequences.HLTDoFullUnpackingEgammaEcalSequence_cfi import * -from ..sequences.HLTFastJetForEgammaSequence_cfi import * -from ..sequences.HLTPfClusteringHBHEHFSequence_cfi import * -from ..sequences.HLTPFClusteringForEgammaUnseededSequence_cfi import * from ..sequences.HLTMuonsSequence_cfi import * from ..modules.hltPhase2PixelFitterByHelixProjections_cfi import * from ..modules.hltPhase2PixelTrackFilterByKinematics_cfi import * @@ -20,17 +14,19 @@ from ..modules.hltTripleMuon3DR0_cfi import * from ..modules.hltTripleMuon3DZ1p0_cfi import * -HLT_TriMu_10_5_5_DZ_FromL1TkMuon = cms.Path(HLTBeginSequence - +hltTripleMuon3DZ1p0 - +hltTripleMuon3DR0 - +HLTRawToDigiSequence - +HLTItLocalRecoSequence - +HLTOtLocalRecoSequence - +hltPhase2PixelFitterByHelixProjections - +hltPhase2PixelTrackFilterByKinematics - +HLTMuonsSequence - +hltL3fL1TkTripleMu533PreFiltered555 - +hltL3fL1TkTripleMu533L3Filtered1055 - +hltL3fL1TkTripleMu533L31055DZFiltered0p2 - +HLTEndSequence) -# +HLT_TriMu_10_5_5_DZ_FromL1TkMuon = cms.Path( + HLTBeginSequence + + hltTripleMuon3DZ1p0 + + hltTripleMuon3DR0 + + HLTRawToDigiSequence + + HLTItLocalRecoSequence + + HLTOtLocalRecoSequence + + hltPhase2PixelFitterByHelixProjections + + hltPhase2PixelTrackFilterByKinematics + + HLTMuonsSequence + + hltL3fL1TkTripleMu533PreFiltered555 + + hltL3fL1TkTripleMu533L3Filtered1055 + + hltL3fL1TkTripleMu533L31055DZFiltered0p2 + + HLTEndSequence +) + diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/MC_BTV_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/MC_BTV_cfi.py index 4d44642abce49..6cf52b857d58e 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/MC_BTV_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/MC_BTV_cfi.py @@ -11,4 +11,15 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -MC_BTV = cms.Path(HLTBeginSequence+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTAK4PFPuppiJetsReconstruction+HLTBtagDeepCSVSequencePFPuppi+HLTBtagDeepFlavourSequencePFPuppi) +MC_BTV = cms.Path( + HLTBeginSequence + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTAK4PFPuppiJetsReconstruction + + HLTBtagDeepCSVSequencePFPuppi + + HLTBtagDeepFlavourSequencePFPuppi +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/paths/MC_JME_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/paths/MC_JME_cfi.py index 64344d4ec2d5d..e0c163d7f8d36 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/paths/MC_JME_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/paths/MC_JME_cfi.py @@ -12,4 +12,16 @@ from ..sequences.HLTLocalrecoSequence_cfi import * from ..sequences.HLTRawToDigiSequence_cfi import * -MC_JME = cms.Path(HLTBeginSequence+HLTRawToDigiSequence+HLTHgcalLocalRecoSequence+HLTLocalrecoSequence+HLTTrackingV61Sequence+HLTMuonsSequence+HLTParticleFlowSequence+HLTHgcalTiclPFClusteringForEgamma+HLTJMESequence+hltPFPuppiHT+hltPFPuppiMHT) +MC_JME = cms.Path( + HLTBeginSequence + + HLTRawToDigiSequence + + HLTHgcalLocalRecoSequence + + HLTLocalrecoSequence + + HLTTrackingV61Sequence + + HLTMuonsSequence + + HLTParticleFlowSequence + + HLTHgcalTiclPFClusteringForEgamma + + HLTJMESequence + + hltPFPuppiHT + + hltPFPuppiMHT +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/psets/HLTPSetTrajectoryBuilderForGsfElectrons_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/psets/HLTPSetTrajectoryBuilderForGsfElectrons_cfi.py index 6f625533dbc49..9a76c110f0470 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/psets/HLTPSetTrajectoryBuilderForGsfElectrons_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/psets/HLTPSetTrajectoryBuilderForGsfElectrons_cfi.py @@ -2,7 +2,7 @@ HLTPSetTrajectoryBuilderForGsfElectrons = cms.PSet( ComponentType = cms.string('CkfTrajectoryBuilder'), - TTRHBuilder = cms.string('hltESPTTRHBWithTrackAngle'), + TTRHBuilder = cms.string('hltESPTTRHBuilderWithTrackAngle'), alwaysUseInvalidHits = cms.bool(True), estimator = cms.string('hltESPChi2ChargeMeasurementEstimator2000'), intermediateCleaning = cms.bool(False), @@ -15,4 +15,4 @@ refToPSet_ = cms.string('HLTPSetTrajectoryFilterForElectrons') ), updator = cms.string('hltESPKFUpdator') -) \ No newline at end of file +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/psets/hltTiclTracksterLinksPSet_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/psets/hltTiclTracksterLinksPSet_cfi.py new file mode 100644 index 0000000000000..78f553e3d5871 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/psets/hltTiclTracksterLinksPSet_cfi.py @@ -0,0 +1,50 @@ +import FWCore.ParameterSet.Config as cms + +hltTiclTracksterLinksPSet = cms.PSet( + cylinder_radius_sqr_split = cms.double(9), + proj_distance_split = cms.double(5), + track_time_quality_threshold = cms.double(0.5), + min_num_lcs = cms.uint32(15), + min_trackster_energy = cms.double(20), + pca_quality_th = cms.double(0.85), + dot_prod_th = cms.double(0.97), + deltaRxy = cms.double(4), + lower_boundary = cms.vdouble( + 20, + 10 + ), + upper_boundary = cms.vdouble( + 150, + 100 + ), + upper_distance_projective_sqr = cms.vdouble( + 30, + 60 + ), + lower_distance_projective_sqr = cms.vdouble( + 30, + 60 + ), + min_distance_z = cms.vdouble( + 35, + 35 + ), + upper_distance_projective_sqr_closest_points = cms.vdouble( + 5, + 30 + ), + lower_distance_projective_sqr_closest_points = cms.vdouble( + 10, + 50 + ), + max_z_distance_closest_points = cms.vdouble( + 35, + 35 + ), + cylinder_radius_sqr = cms.vdouble( + 9, + 15 + ), + algo_verbosity = cms.int32(0), + type = cms.string('Skeletons') + ) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHgcalTiclPFClusteringForEgammaUnseededSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHgcalTiclPFClusteringForEgammaUnseededSequence_cfi.py index f79c08e8721e9..d07102952c60c 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHgcalTiclPFClusteringForEgammaUnseededSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHgcalTiclPFClusteringForEgammaUnseededSequence_cfi.py @@ -18,7 +18,7 @@ from ..modules.hltHgcalSoARecHitsLayerClustersProducer_cfi import * from ..modules.hltHgcalSoALayerClustersProducer_cfi import * from ..modules.hltHgcalLayerClustersFromSoAProducer_cfi import * -from ..modules.hltTiclTracksterLinksUnseeded_cfi import * +from ..modules.hltTiclTracksterLinks_cfi import * _HgcalLocalRecoUnseededSequence = cms.Sequence(hltHgcalDigis+hltHGCalUncalibRecHit+hltHGCalRecHit+hltParticleFlowRecHitHGC+hltHgcalLayerClustersEE+hltHgcalLayerClustersHSci+hltHgcalLayerClustersHSi+hltHgcalMergeLayerClusters) _HgcalTICLPatternRecognitionUnseededSequence = cms.Sequence(hltFilteredLayerClustersCLUE3DHigh+hltTiclSeedingGlobal+hltTiclLayerTileProducer+hltTiclTrackstersCLUE3DHigh) @@ -49,7 +49,7 @@ ) # Use EGammaSuperClusterProducer at HLT in ticl v5 -hltTiclTracksterLinksSuperclusteringDNNUnseeded = hltTiclTracksterLinksUnseeded.clone( +hltTiclTracksterLinksSuperclusteringDNNUnseeded = hltTiclTracksterLinks.clone( linkingPSet = cms.PSet( type=cms.string("SuperClusteringDNN"), algo_verbosity=cms.int32(0), @@ -59,7 +59,7 @@ tracksters_collections = [cms.InputTag("hltTiclTrackstersCLUE3DHigh")], # to be changed to ticlTrackstersCLUE3DEM once separate CLUE3D iterations are introduced ) -hltTiclTracksterLinksSuperclusteringMustacheUnseeded = hltTiclTracksterLinksUnseeded.clone( +hltTiclTracksterLinksSuperclusteringMustacheUnseeded = hltTiclTracksterLinks.clone( linkingPSet = cms.PSet( type=cms.string("SuperClusteringMustache"), algo_verbosity=cms.int32(0) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHighPtTripletStepSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHighPtTripletStepSequence_cfi.py index 6f168f3abbc63..8c617bd954d72 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHighPtTripletStepSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTHighPtTripletStepSequence_cfi.py @@ -6,4 +6,27 @@ from ..modules.hltHighPtTripletStepTrackSelectionHighPurity_cfi import * from ..sequences.HLTHighPtTripletStepSeedingSequence_cfi import * -HLTHighPtTripletStepSequence = cms.Sequence(HLTHighPtTripletStepSeedingSequence+hltHighPtTripletStepTrackCandidates+hltHighPtTripletStepTracks+hltHighPtTripletStepTrackCutClassifier+hltHighPtTripletStepTrackSelectionHighPurity) +HLTHighPtTripletStepSequence = cms.Sequence( + HLTHighPtTripletStepSeedingSequence + +hltHighPtTripletStepTrackCandidates + +hltHighPtTripletStepTracks + +hltHighPtTripletStepTrackCutClassifier + +hltHighPtTripletStepTrackSelectionHighPurity +) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toReplaceWith(HLTHighPtTripletStepSequence, HLTHighPtTripletStepSequence.copyAndExclude([HLTHighPtTripletStepSeedingSequence])) + +from ..modules.hltHighPtTripletStepTrackCandidatespLSTCLST_cfi import * +from ..modules.hltHighPtTripletStepTrackspLSTCLST_cfi import * +from ..modules.hltHighPtTripletStepTrackCutClassifierpLSTCLST_cfi import * +from ..modules.hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST_cfi import * +_HLTHighPtTripletStepSequenceLSTSeeding = cms.Sequence( + hltHighPtTripletStepTrackCandidatespLSTCLST + +hltHighPtTripletStepTrackspLSTCLST + +hltHighPtTripletStepTrackCutClassifierpLSTCLST + +hltHighPtTripletStepTrackSelectionHighPuritypLSTCLST +) + +from Configuration.ProcessModifiers.seedingLST_cff import seedingLST +(seedingLST & trackingLST).toReplaceWith(HLTHighPtTripletStepSequence, _HLTHighPtTripletStepSequenceLSTSeeding) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTInitialStepSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTInitialStepSequence_cfi.py index f674cf77fe168..7473f986cf483 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTInitialStepSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTInitialStepSequence_cfi.py @@ -7,3 +7,45 @@ from ..modules.hltInitialStepTrackSelectionHighPurity_cfi import * HLTInitialStepSequence = cms.Sequence(hltInitialStepSeeds+hltInitialStepTrackCandidates+hltInitialStepTracks+hltInitialStepTrackCutClassifier+hltInitialStepTrackSelectionHighPurity) + +from ..modules.hltInitialStepSeedTracksLST_cfi import * +from ..sequences.HLTHighPtTripletStepSeedingSequence_cfi import * +from ..modules.hltHighPtTripletStepSeedTracksLST_cfi import * +from ..modules.hltPixelSeedInputLST_cfi import * +from ..modules.hltSiPhase2RecHits_cfi import * +from ..modules.hltPhase2OTHitsInputLST_cfi import * +from ..modules.hltLST_cfi import * +from ..modules.hltInitialStepTrackspTTCLST_cfi import * +from ..modules.hltInitialStepTrackspLSTCLST_cfi import * +from ..modules.hltInitialStepTracksT5TCLST_cfi import * +from ..modules.hltInitialStepTrackCutClassifierpTTCLST_cfi import * +from ..modules.hltInitialStepTrackCutClassifierpLSTCLST_cfi import * +from ..modules.hltInitialStepTrackSelectionHighPuritypTTCLST_cfi import * +from ..modules.hltInitialStepTrackSelectionHighPuritypLSTCLST_cfi import * +_HLTInitialStepSequenceLST = cms.Sequence( + hltInitialStepSeeds + +hltInitialStepSeedTracksLST + +HLTHighPtTripletStepSeedingSequence + +hltHighPtTripletStepSeedTracksLST + +hltPixelSeedInputLST + +hltSiPhase2RecHits # Probably need to move elsewhere in the final setup + +hltPhase2OTHitsInputLST # Probably need to move elsewhere in the final setup + +hltLST + +hltInitialStepTrackCandidates + +hltInitialStepTrackspTTCLST + +hltInitialStepTrackspLSTCLST + +hltInitialStepTracksT5TCLST + +hltInitialStepTrackCutClassifierpTTCLST + +hltInitialStepTrackCutClassifierpLSTCLST + +hltInitialStepTrackSelectionHighPuritypTTCLST + +hltInitialStepTrackSelectionHighPuritypLSTCLST +) + +from Configuration.ProcessModifiers.trackingLST_cff import trackingLST +trackingLST.toReplaceWith(HLTInitialStepSequence, _HLTInitialStepSequenceLST) + +from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack +(singleIterPatatrack & trackingLST).toReplaceWith(HLTInitialStepSequence, HLTInitialStepSequence.copyAndExclude([HLTHighPtTripletStepSeedingSequence,hltHighPtTripletStepSeedTracksLST])) + +from Configuration.ProcessModifiers.seedingLST_cff import seedingLST +(seedingLST & trackingLST).toReplaceWith(HLTInitialStepSequence, _HLTInitialStepSequenceLST.copyAndExclude([hltInitialStepTrackspLSTCLST,hltInitialStepTrackCutClassifierpLSTCLST,hltInitialStepTrackSelectionHighPuritypLSTCLST])) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter0Phase2L3FromL1TkSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter0Phase2L3FromL1TkSequence_cfi.py index acf7d66a7cd58..0f95370442a61 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter0Phase2L3FromL1TkSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter0Phase2L3FromL1TkSequence_cfi.py @@ -6,4 +6,10 @@ from ..modules.hltIter0Phase2L3FromL1TkMuonTrackCutClassifier_cfi import * from ..modules.hltIter0Phase2L3FromL1TkMuonTrackSelectionHighPurity_cfi import * -HLTIter0Phase2L3FromL1TkSequence = cms.Sequence(hltIter0Phase2L3FromL1TkMuonPixelSeedsFromPixelTracks+hltIter0Phase2L3FromL1TkMuonCkfTrackCandidates+hltIter0Phase2L3FromL1TkMuonCtfWithMaterialTracks+hltIter0Phase2L3FromL1TkMuonTrackCutClassifier+hltIter0Phase2L3FromL1TkMuonTrackSelectionHighPurity) +HLTIter0Phase2L3FromL1TkSequence = cms.Sequence( + hltIter0Phase2L3FromL1TkMuonPixelSeedsFromPixelTracks + + hltIter0Phase2L3FromL1TkMuonCkfTrackCandidates + + hltIter0Phase2L3FromL1TkMuonCtfWithMaterialTracks + + hltIter0Phase2L3FromL1TkMuonTrackCutClassifier + + hltIter0Phase2L3FromL1TkMuonTrackSelectionHighPurity +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter2Phase2L3FromL1TkSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter2Phase2L3FromL1TkSequence_cfi.py index f11cdee410d31..741f1307b5975 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter2Phase2L3FromL1TkSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTIter2Phase2L3FromL1TkSequence_cfi.py @@ -14,4 +14,18 @@ from ..modules.hltIter2Phase2L3FromL1TkMuonTrackCutClassifier_cfi import * from ..modules.hltIter2Phase2L3FromL1TkMuonTrackSelectionHighPurity_cfi import * -HLTIter2Phase2L3FromL1TkSequence = cms.Sequence(hltIter2Phase2L3FromL1TkMuonClustersRefRemoval+hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent+hltIter2Phase2L3FromL1TkMuonPixelLayerTriplets+hltIter2Phase2L3FromL1TkMuonPixelClusterCheck+hltIter2Phase2L3FromL1TkMuonPixelHitDoublets+hltIter2Phase2L3FromL1TkMuonPixelHitTriplets+hltIter2Phase2L3FromL1TkMuonPixelSeeds+hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered+hltIter2Phase2L3FromL1TkMuonCkfTrackCandidates+hltIter2Phase2L3FromL1TkMuonCtfWithMaterialTracks+hltIter2Phase2L3FromL1TkMuonTrackCutClassifier+hltIter2Phase2L3FromL1TkMuonTrackSelectionHighPurity+hltIter2Phase2L3FromL1TkMuonMerged) +HLTIter2Phase2L3FromL1TkSequence = cms.Sequence( + hltIter2Phase2L3FromL1TkMuonClustersRefRemoval + + hltIter2Phase2L3FromL1TkMuonMaskedMeasurementTrackerEvent + + hltIter2Phase2L3FromL1TkMuonPixelLayerTriplets + + hltIter2Phase2L3FromL1TkMuonPixelClusterCheck + + hltIter2Phase2L3FromL1TkMuonPixelHitDoublets + + hltIter2Phase2L3FromL1TkMuonPixelHitTriplets + + hltIter2Phase2L3FromL1TkMuonPixelSeeds + + hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered + + hltIter2Phase2L3FromL1TkMuonCkfTrackCandidates + + hltIter2Phase2L3FromL1TkMuonCtfWithMaterialTracks + + hltIter2Phase2L3FromL1TkMuonTrackCutClassifier + + hltIter2Phase2L3FromL1TkMuonTrackSelectionHighPurity + + hltIter2Phase2L3FromL1TkMuonMerged +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTL2MuonsFromL1TkSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTL2MuonsFromL1TkSequence_cfi.py index eca9f9f91d8c3..27041f8e8b53e 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTL2MuonsFromL1TkSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTL2MuonsFromL1TkSequence_cfi.py @@ -5,4 +5,16 @@ from ..modules.hltL2OfflineMuonSeeds_cfi import * from ..sequences.HLTMuonlocalrecoSequence_cfi import * -HLTL2MuonsFromL1TkSequence = cms.Sequence(HLTMuonlocalrecoSequence+hltL2OfflineMuonSeeds+hltL2MuonSeedsFromL1TkMuon+hltL2MuonsFromL1TkMuon) +HLTL2MuonsFromL1TkSequence = cms.Sequence( + HLTMuonlocalrecoSequence + + hltL2OfflineMuonSeeds + + hltL2MuonSeedsFromL1TkMuon + + hltL2MuonsFromL1TkMuon +) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons + +phase2L2AndL3Muons.toReplaceWith( + HLTL2MuonsFromL1TkSequence, + HLTL2MuonsFromL1TkSequence.copyAndExclude([hltL2OfflineMuonSeeds]), +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTMuonsSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTMuonsSequence_cfi.py index 22434b77a2ab3..0a0bb00ecc56b 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTMuonsSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTMuonsSequence_cfi.py @@ -7,4 +7,44 @@ from ..sequences.HLTPhase2L3MuonsSequence_cfi import * from ..sequences.HLTPhase2L3OISequence_cfi import * -HLTMuonsSequence = cms.Sequence(HLTL2MuonsFromL1TkSequence+HLTPhase2L3OISequence+HLTPhase2L3FromL1TkSequence+HLTIter0Phase2L3FromL1TkSequence+HLTIter2Phase2L3FromL1TkSequence+HLTPhase2L3MuonsSequence) +HLTMuonsSequence = cms.Sequence( + HLTL2MuonsFromL1TkSequence + + HLTPhase2L3OISequence + + HLTPhase2L3FromL1TkSequence + + HLTIter0Phase2L3FromL1TkSequence + + HLTIter2Phase2L3FromL1TkSequence + + HLTPhase2L3MuonsSequence +) + +from ..modules.hltPhase2L3MuonFilter_cfi import * + +# The IO first HLT Muons sequence +Phase2HLTMuonsSequenceIOFirst = cms.Sequence( + HLTL2MuonsFromL1TkSequence + + HLTPhase2L3FromL1TkSequence + + HLTIter0Phase2L3FromL1TkSequence + + HLTIter2Phase2L3FromL1TkSequence + + hltPhase2L3MuonFilter + + HLTPhase2L3OISequence + + HLTPhase2L3MuonsSequence +) +# The OI first HLT Muons sequence +Phase2HLTMuonsSequenceOIFirst = cms.Sequence( + HLTL2MuonsFromL1TkSequence + + HLTPhase2L3OISequence + + hltPhase2L3MuonFilter + + HLTPhase2L3FromL1TkSequence + + HLTIter0Phase2L3FromL1TkSequence + + HLTIter2Phase2L3FromL1TkSequence + + HLTPhase2L3MuonsSequence +) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons + +phase2L2AndL3Muons.toReplaceWith(HLTMuonsSequence, Phase2HLTMuonsSequenceIOFirst) + +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst + +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toReplaceWith( + HLTMuonsSequence, Phase2HLTMuonsSequenceOIFirst +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3FromL1TkSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3FromL1TkSequence_cfi.py index f9551d260efe7..a4f624201e340 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3FromL1TkSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3FromL1TkSequence_cfi.py @@ -8,4 +8,12 @@ from ..modules.hltPhase2L3FromL1TkMuonPixelVertices_cfi import * from ..modules.hltPhase2L3FromL1TkMuonTrimmedPixelVertices_cfi import * -HLTPhase2L3FromL1TkSequence = cms.Sequence(hltPhase2L3FromL1TkMuonPixelLayerQuadruplets+hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions+hltPhase2L3FromL1TkMuonPixelTracksHitDoublets+hltPhase2L3FromL1TkMuonPixelTracksHitQuadruplets+hltPhase2L3FromL1TkMuonPixelTracks+hltPhase2L3FromL1TkMuonPixelVertices+hltPhase2L3FromL1TkMuonTrimmedPixelVertices) +HLTPhase2L3FromL1TkSequence = cms.Sequence( + hltPhase2L3FromL1TkMuonPixelLayerQuadruplets + + hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions + + hltPhase2L3FromL1TkMuonPixelTracksHitDoublets + + hltPhase2L3FromL1TkMuonPixelTracksHitQuadruplets + + hltPhase2L3FromL1TkMuonPixelTracks + + hltPhase2L3FromL1TkMuonPixelVertices + + hltPhase2L3FromL1TkMuonTrimmedPixelVertices +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3MuonsSequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3MuonsSequence_cfi.py index 920fae389d4ac..65fd45f86ba8e 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3MuonsSequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3MuonsSequence_cfi.py @@ -6,4 +6,10 @@ from ..modules.hltPhase2L3MuonsNoID_cfi import * from ..modules.hltPhase2L3MuonCandidates_cfi import * -HLTPhase2L3MuonsSequence = cms.Sequence(hltPhase2L3MuonMerged+hltPhase2L3GlbMuon+hltPhase2L3MuonsNoID+hltPhase2L3Muons+hltPhase2L3MuonCandidates) +HLTPhase2L3MuonsSequence = cms.Sequence( + hltPhase2L3MuonMerged + + hltPhase2L3GlbMuon + + hltPhase2L3MuonsNoID + + hltPhase2L3Muons + + hltPhase2L3MuonCandidates +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3OISequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3OISequence_cfi.py index 7cc5ce52720d0..8f4b5ca4c7f86 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3OISequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTPhase2L3OISequence_cfi.py @@ -6,4 +6,10 @@ from ..modules.hltPhase2L3OISeedsFromL2Muons_cfi import * from ..modules.hltPhase2L3OITrackCandidates_cfi import * -HLTPhase2L3OISequence = cms.Sequence(hltPhase2L3OISeedsFromL2Muons+hltPhase2L3OITrackCandidates+hltPhase2L3OIMuCtfWithMaterialTracks+hltPhase2L3OIMuonTrackCutClassifier+hltPhase2L3OIMuonTrackSelectionHighPurity) +HLTPhase2L3OISequence = cms.Sequence( + hltPhase2L3OISeedsFromL2Muons + + hltPhase2L3OITrackCandidates + + hltPhase2L3OIMuCtfWithMaterialTracks + + hltPhase2L3OIMuonTrackCutClassifier + + hltPhase2L3OIMuonTrackSelectionHighPurity +) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTiclTrackstersRecoverySequenceL1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTiclTrackstersRecoverySequenceL1Seeded_cfi.py new file mode 100644 index 0000000000000..81cd3d157f059 --- /dev/null +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTiclTrackstersRecoverySequenceL1Seeded_cfi.py @@ -0,0 +1,6 @@ +import FWCore.ParameterSet.Config as cms + +from ..modules.hltFilteredLayerClustersRecoveryL1Seeded_cfi import * +from ..modules.hltTiclTrackstersRecoveryL1Seeded_cfi import * + +HLTTiclTrackstersRecoverySequence = cms.Sequence(hltFilteredLayerClustersRecovery+hltTiclTrackstersRecovery) diff --git a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTrackingV61Sequence_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTrackingV61Sequence_cfi.py index e10294c40bb74..4235e1a72f331 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTrackingV61Sequence_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/sequences/HLTTrackingV61Sequence_cfi.py @@ -10,3 +10,6 @@ from ..sequences.HLTOtLocalRecoSequence_cfi import * HLTTrackingV61Sequence = cms.Sequence((HLTItLocalRecoSequence+HLTOtLocalRecoSequence+hltTrackerClusterCheck+HLTPhase2PixelTracksSequence+hltPhase2PixelVertices+HLTInitialStepSequence+HLTHighPtTripletStepSequence+hltGeneralTracks)) + +from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack +singleIterPatatrack.toReplaceWith(HLTTrackingV61Sequence, HLTTrackingV61Sequence.copyAndExclude([HLTHighPtTripletStepSequence])) diff --git a/HLTrigger/Configuration/python/HLT_75e33_cff.py b/HLTrigger/Configuration/python/HLT_75e33_cff.py index b5f5d2d9e100f..5ac291af04d2d 100644 --- a/HLTrigger/Configuration/python/HLT_75e33_cff.py +++ b/HLTrigger/Configuration/python/HLT_75e33_cff.py @@ -84,7 +84,7 @@ fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPhase2L3MuonPixelTrackCleanerBySharedHits_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPhase2L3MuonTrackAlgoPriorityOrder_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPixelTracksCleanerBySharedHits_cfi") -fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltTTRBWR_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFFittingSmootherForL2Muon_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFTrajectoryFitterForL2Muon_cfi") @@ -96,6 +96,9 @@ fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPSiPixelCablingSoA_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPSiPixelGainCalibrationForHLTSoA_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPModulesDevLST_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPTTRHBuilderWithoutRefit_cfi") + fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_AK4PFPuppiJet520_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_L1Seeded_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_Unseeded_cfi") @@ -111,6 +114,7 @@ fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele26_WP70_Unseeded_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele32_WPTight_L1Seeded_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele32_WPTight_Unseeded_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_IsoMu24_FromL1TkMuon_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon_cfi") @@ -404,7 +408,7 @@ fragment.HLT_DoubleMediumChargedIsoPFTauHPS40_eta2p1, fragment.HLT_DoubleMediumDeepTauPFTauHPS35_eta2p1, fragment.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1, - + fragment.HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1, ### Removed temporarily until final decision on L1T tau Phase-2 #fragment.L1T_DoubleNNTau52, #fragment.L1T_SingleNNTau150, diff --git a/HLTrigger/Configuration/python/HLT_75e33_timing_cff.py b/HLTrigger/Configuration/python/HLT_75e33_timing_cff.py index e68e419d2152a..94269ff933833 100644 --- a/HLTrigger/Configuration/python/HLT_75e33_timing_cff.py +++ b/HLTrigger/Configuration/python/HLT_75e33_timing_cff.py @@ -89,7 +89,7 @@ fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPhase2L3MuonPixelTrackCleanerBySharedHits_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPhase2L3MuonTrackAlgoPriorityOrder_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPixelTracksCleanerBySharedHits_cfi") -fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltTTRBWR_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFFittingSmootherForL2Muon_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFTrajectoryFitterForL2Muon_cfi") @@ -101,6 +101,9 @@ fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPSiPixelCablingSoA_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPSiPixelGainCalibrationForHLTSoA_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPModulesDevLST_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPTTRHBuilderWithoutRefit_cfi") + fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_AK4PFPuppiJet520_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Diphoton30_23_IsoCaloId_L1Seeded_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_DoubleEle23_12_Iso_L1Seeded_cfi") @@ -111,6 +114,7 @@ fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele115_NonIso_L1Seeded_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele26_WP70_L1Seeded_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele32_WPTight_L1Seeded_cfi") +fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_IsoMu24_FromL1TkMuon_cfi") fragment.load("HLTrigger/Configuration/HLT_75e33/paths/HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_FromL1TkMuon_cfi") @@ -372,6 +376,7 @@ fragment.L1T_TkIsoEle22TkEm12, fragment.HLT_Ele32_WPTight_L1Seeded, + fragment.HLT_Ele30_WPTight_L1Seeded_LooseDeepTauPFTauHPS30_eta2p1_CrossL1, fragment.HLT_Ele115_NonIso_L1Seeded, fragment.HLT_Ele26_WP70_L1Seeded, fragment.HLT_Photon108EB_TightID_TightIso_L1Seeded, diff --git a/HLTrigger/Configuration/python/HLT_FULL_cff.py b/HLTrigger/Configuration/python/HLT_FULL_cff.py index 924e32d4be3b8..f45271fefb9b7 100644 --- a/HLTrigger/Configuration/python/HLT_FULL_cff.py +++ b/HLTrigger/Configuration/python/HLT_FULL_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/HLT --cff --data --type FULL +# hltGetConfiguration /dev/CMSSW_14_2_0/HLT --cff --data --type FULL -# /dev/CMSSW_14_1_0/HLT/V68 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/HLT/V15 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/HLT/V68") + tableName = cms.string("/dev/CMSSW_14_2_0/HLT/V15") ) fragment.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1694,6 +1694,22 @@ 'SpecialZeroBias17' ), PhysicsSpecialZeroBias9 = cms.vstring( 'SpecialZeroBias18', 'SpecialZeroBias19' ), + PhysicsVRRandom0 = cms.vstring( 'VRRandom0', + 'VRRandom1' ), + PhysicsVRRandom1 = cms.vstring( 'VRRandom2', + 'VRRandom3' ), + PhysicsVRRandom2 = cms.vstring( 'VRRandom4', + 'VRRandom5' ), + PhysicsVRRandom3 = cms.vstring( 'VRRandom6', + 'VRRandom7' ), + PhysicsVRRandom4 = cms.vstring( 'VRRandom8', + 'VRRandom9' ), + PhysicsVRRandom5 = cms.vstring( 'VRRandom10', + 'VRRandom11' ), + PhysicsVRRandom6 = cms.vstring( 'VRRandom12', + 'VRRandom13' ), + PhysicsVRRandom7 = cms.vstring( 'VRRandom14', + 'VRRandom15' ), PhysicsZeroBias0 = cms.vstring( 'EphemeralZeroBias0', 'EphemeralZeroBias1' ), PhysicsZeroBias1 = cms.vstring( 'EphemeralZeroBias2', @@ -2176,18 +2192,14 @@ HIDQMGPUvsCPU = cms.vstring( 'DQM_HIEcalReconstruction_v10', 'DQM_HIHcalReconstruction_v8', 'DQM_HIPixelReconstruction_v12' ), - HIDQMOnlineBeamspot = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIDQMOnlineBeamspot = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIEmptyBX = cms.vstring( 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1UnpairedBunchBptxMinus_v14', 'HLT_HIL1UnpairedBunchBptxPlus_v14' ), HIEphemeralHLTPhysics = cms.vstring( 'HLT_HIEphemeralPhysics_v5' ), HIEphemeralZeroBias0 = cms.vstring( 'HLT_HIEphemeralZeroBias_v5' ), HIEphemeralZeroBias1 = cms.vstring( 'HLT_HIEphemeralZeroBias_v5' ), - HIEventDisplay = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', + HIEventDisplay = cms.vstring( 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', 'HLT_HIDoubleEle15GsfMass50_v14', 'HLT_HIDoubleGEDPhoton20_v7', 'HLT_HIL1SingleMu5_SingleEG20Gsf_v7', @@ -2197,12 +2209,8 @@ 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', 'HLT_HIMinimumBiasHF1AND_copy_v6' ), - HIExpressAlignment = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIExpressAlignment = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIExpressPhysics = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', - 'HLT_HICsAK4PFJet100Eta1p5_v14', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIL1NotBptxOR_v14', @@ -2224,7 +2232,6 @@ 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', 'HLT_HIZeroBias_v14' ), HIExpressPhysicsRawPrime = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', - 'HLT_HICsAK4PFJet100Eta1p5_v14', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIL1NotBptxOR_v14', @@ -2248,6 +2255,8 @@ HIForward0 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2386,6 +2395,8 @@ HIForward1 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2524,6 +2535,8 @@ HIForward10 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2662,6 +2675,8 @@ HIForward11 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2800,6 +2815,8 @@ HIForward12 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2938,6 +2955,8 @@ HIForward13 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3076,6 +3095,8 @@ HIForward14 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3214,6 +3235,8 @@ HIForward15 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3352,6 +3375,8 @@ HIForward16 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3490,6 +3515,8 @@ HIForward17 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3628,6 +3655,8 @@ HIForward18 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3766,6 +3795,8 @@ HIForward19 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3904,6 +3935,8 @@ HIForward2 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4042,6 +4075,8 @@ HIForward3 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4180,6 +4215,8 @@ HIForward4 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4318,6 +4355,8 @@ HIForward5 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4456,6 +4495,8 @@ HIForward6 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4594,6 +4635,8 @@ HIForward7 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4732,6 +4775,8 @@ HIForward8 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4870,6 +4915,8 @@ HIForward9 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -5021,7 +5068,7 @@ 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7', 'HLT_HIMinimumBiasHF1AND_v7' ), HIOnlineMonitor = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', - 'HLT_HICsAK4PFJet100Eta1p5_v14', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIHcalNZS_v14', @@ -5044,15 +5091,7 @@ 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', 'HLT_HIZeroBias_v14' ), - HIPhysicsRawPrime0 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime0 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5153,15 +5192,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime1 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime1 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5262,15 +5293,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime10 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime10 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5371,15 +5394,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime11 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime11 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5480,15 +5495,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime12 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime12 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5589,15 +5596,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime13 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime13 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5698,15 +5697,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime14 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime14 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5807,15 +5798,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime15 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime15 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5916,15 +5899,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime16 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime16 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6025,15 +6000,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime17 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime17 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6134,15 +6101,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime18 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime18 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6243,15 +6202,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime19 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime19 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6352,15 +6303,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime2 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime2 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6461,15 +6404,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime20 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime20 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6570,15 +6505,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime21 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime21 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6679,15 +6606,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime22 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime22 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6788,15 +6707,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime23 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime23 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6897,15 +6808,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime24 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime24 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7006,15 +6909,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime25 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime25 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7115,15 +7010,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime26 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime26 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7224,15 +7111,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime27 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime27 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7333,15 +7212,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime28 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime28 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7442,15 +7313,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime29 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime29 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7551,15 +7414,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime3 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime3 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7660,15 +7515,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime30 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime30 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7769,15 +7616,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime31 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime31 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7878,15 +7717,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime32 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime32 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7987,15 +7818,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime33 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime33 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8096,15 +7919,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime34 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime34 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8205,15 +8020,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime35 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime35 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8314,15 +8121,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime36 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime36 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8423,15 +8222,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime37 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime37 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8532,15 +8323,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime38 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime38 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8641,15 +8424,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime39 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime39 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8750,15 +8525,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime4 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime4 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8859,15 +8626,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime40 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime40 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8968,15 +8727,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime41 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime41 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9077,15 +8828,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime42 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime42 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9186,15 +8929,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime43 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime43 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9295,15 +9030,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime44 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime44 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9404,15 +9131,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime45 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime45 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9513,15 +9232,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime46 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime46 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9622,15 +9333,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime47 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime47 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9731,15 +9434,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime48 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime48 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9840,15 +9535,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime49 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime49 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9949,15 +9636,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime5 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime5 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10058,15 +9737,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime50 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime50 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10167,15 +9838,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime51 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime51 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10276,15 +9939,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime52 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime52 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10385,15 +10040,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime53 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime53 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10494,15 +10141,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime54 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime54 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10603,15 +10242,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime55 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime55 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10712,15 +10343,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime56 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime56 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10821,15 +10444,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime57 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime57 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10930,15 +10545,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime58 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime58 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11039,15 +10646,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime59 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime59 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11148,15 +10747,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime6 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime6 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11257,15 +10848,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime7 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime7 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11366,15 +10949,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime8 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime8 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11475,15 +11050,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime9 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime9 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11596,11 +11163,14 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', 'HLT_L1SingleMuCosmics_CosmicTracking_v1', 'HLT_L1SingleMuCosmics_PointingCosmicTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -12971,10 +12541,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13022,10 +12588,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13073,10 +12635,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13124,10 +12682,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13175,10 +12729,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13322,6 +12872,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward1 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13337,6 +12888,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward10 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13352,6 +12904,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward11 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13367,6 +12920,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward12 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13382,6 +12936,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward13 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13397,6 +12952,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward14 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13412,6 +12968,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward15 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13427,6 +12984,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward16 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13442,6 +13000,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward17 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13457,6 +13016,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward18 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13472,6 +13032,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward19 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13487,6 +13048,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward2 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13502,6 +13064,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward20 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13517,6 +13080,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward21 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13532,6 +13096,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward22 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13547,6 +13112,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward23 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13562,6 +13128,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward24 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13577,6 +13144,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward3 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13592,6 +13160,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward4 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13607,6 +13176,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward5 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13622,6 +13192,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward6 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13637,6 +13208,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward7 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13652,6 +13224,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward8 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13667,6 +13240,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward9 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13682,6 +13256,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), ParkingDoubleMuonLowMass0 = cms.vstring( 'HLT_Dimuon0_Jpsi3p5_Muon2_v17', 'HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19', @@ -14796,6 +14371,22 @@ 'HLT_HcalCalibration_v6' ), TestEnablesEcalHcalDQM = cms.vstring( 'HLT_EcalCalibration_v4', 'HLT_HcalCalibration_v6' ), + VRRandom0 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom1 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom10 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom11 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom12 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom13 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom14 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom15 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom2 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom3 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom4 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom5 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom6 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom7 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom8 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom9 = cms.vstring( 'HLT_Random_HighRate_v1' ), ZeroBias = cms.vstring( 'HLT_Random_v3', 'HLT_ZeroBias_Alignment_v8', 'HLT_ZeroBias_FirstBXAfterTrain_v10', @@ -17144,8 +16735,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -17212,7 +16803,7 @@ ) fragment.hltL1sAlCaEcalPhiSymForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_MinimumBiasHF1_AND_BptxAND OR L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -17681,7 +17272,7 @@ ) fragment.hltL1sAlCaEcalPi0EtaForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -19341,6 +18932,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -19919,6 +19511,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -20720,6 +20313,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -22029,8 +21623,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -22752,6 +22346,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -23287,6 +22882,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -24088,6 +23684,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -25803,6 +25400,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoA" ) @@ -25876,6 +25474,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ) @@ -25921,7 +25520,7 @@ fragment.hltPixelTracksSoACompareGPUvsCPUPPOnAA = cms.EDProducer( "SiPixelHIonPhase1CompareTracks", pixelTrackReferenceSoA = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ), pixelTrackTargetSoA = cms.InputTag( "hltPixelTracksPPOnAASoA" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareDeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareGPUvsCPU" ), useQualityCut = cms.bool( True ), minQuality = cms.string( "loose" ), deltaR2cut = cms.double( 4.0E-4 ) @@ -25940,7 +25539,7 @@ pixelVertexReferenceSoA = cms.InputTag( "hltPixelVerticesPPOnAASoASerialSync" ), pixelVertexTargetSoA = cms.InputTag( "hltPixelVerticesPPOnAASoA" ), beamSpotSrc = cms.InputTag( "hltOnlineBeamSpot" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareSoADeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareGPUvsCPU" ), dzCut = cms.double( 1.0 ) ) fragment.hltL1sDQMHIEcalReconstruction = cms.EDFilter( "HLTL1TSeed", @@ -28001,7 +27600,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombinedUnseeded = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeedsUnseeded = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedUnseeded" ), @@ -31915,7 +31515,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -42503,6 +42104,10 @@ DepTag = cms.VInputTag( 'hltMuonTkRelIsolationCut0p14Map' ), IsolatorPSet = cms.PSet( ) ) +fragment.hltPreIsoMu24HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreIsoMu24eta2p1 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -44311,6 +43916,10 @@ MinPixHitsForDZ = cms.int32( 0 ), checkSC = cms.bool( False ) ) +fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -44492,6 +44101,10 @@ propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) ) +fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -81926,6 +81539,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PixelLessHitDoubletsForGlbDisplacedMuons = cms.EDProducer( "HitPairEDProducer", @@ -82167,6 +81781,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PixelLessHitDoubletsForDisplacedTkMuons = cms.EDProducer( "HitPairEDProducer", @@ -83581,6 +83196,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PFlowPixelLessHitDoubletsForTau = cms.EDProducer( "HitPairEDProducer", @@ -86635,6 +86251,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter1PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -86935,6 +86552,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter2PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -87854,6 +87472,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PFlowPixelLessHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -94883,7 +94502,79 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltPreHIMinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", +fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_Centrality_50_100_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) @@ -96353,6 +96044,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPreSplittingPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -96506,7 +96198,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) fragment.hltSiPixelClustersCacheAfterSplittingPPOnAA = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), @@ -96606,6 +96303,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -96837,6 +96535,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter1PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -97168,6 +96867,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter2PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -97403,6 +97103,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -98286,73 +97987,6 @@ cut = cms.string( "!isFake" ), filter = cms.bool( True ) ) -fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) fragment.hltL1Centrality30to50BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), L1SeedsLogicalExpression = cms.string( "L1_Centrality_30_50_BptxAND" ), @@ -98753,295 +98387,6 @@ MaxEta = cms.double( 5.1 ), MinN = cms.int32( 1 ) ) -fragment.hltL1sSingleJet44BptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet44_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHICsAK4PFJet60Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet60Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets60 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet60Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet60Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets60" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet60Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet60Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets60Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet60Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet60Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets60Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet80Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet70Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 70.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets70 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet70Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet80Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets70" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet80Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet70Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 70.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets70Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet70Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet80Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets70Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet100Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet80Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets80 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet80Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet100Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets80" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 100.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet100Eta1p5Beamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHICsAK4PFJet100Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet80Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets80Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet80Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet100Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets80Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 100.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet120Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet90Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 90.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets90 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet90Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet120Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets90" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 120.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -fragment.hltPreHICsAK4PFJet120Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltSinglePuAK4CaloJet90Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 90.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets90Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet90Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -fragment.hltSingleCsPFJet120Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets90Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 120.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) fragment.hltL1sL1SingleEG7BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), L1SeedsLogicalExpression = cms.string( "L1_SingleEG7_BptxAND" ), @@ -100285,7 +99630,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombinedPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeedsPPOnAA = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedPPOnAA" ), @@ -102425,6 +101771,7 @@ MaxNumberOfPixelClusters = cms.uint32( 10000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( True ) ) fragment.hltPixelTracksHitDoubletsLowPtForUPCPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -102574,7 +101921,7 @@ ) fragment.hltL1sZDC1nOR = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102599,7 +101946,7 @@ ) fragment.hltL1sZDC1nXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102642,7 +101989,7 @@ ) fragment.hltL1sZDC1nXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102667,7 +102014,7 @@ ) fragment.hltL1sZDC1nAsymXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102692,7 +102039,7 @@ ) fragment.hltL1sZDC1nAsymXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103137,6 +102484,27 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +fragment.hltL1sDoubleEG3NotHF2AND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleEG3_NotMinimumBiasHF2_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHIUPCDoubleEG3NotMBHF2AND = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -103164,7 +102532,7 @@ ) fragment.hltL1sZDC1nXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103181,7 +102549,7 @@ ) fragment.hltL1sZDC1nXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103198,7 +102566,7 @@ ) fragment.hltL1sZDC1nXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103215,7 +102583,7 @@ ) fragment.hltL1sZDC1nXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103232,7 +102600,7 @@ ) fragment.hltL1sZDC1nXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103249,7 +102617,7 @@ ) fragment.hltL1sZDC1nXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103266,7 +102634,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103283,7 +102651,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103300,7 +102668,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103317,7 +102685,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103334,7 +102702,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103351,7 +102719,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103508,7 +102876,7 @@ ) fragment.hltL1sZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103525,7 +102893,7 @@ ) fragment.hltL1sZeroBiasZDC1nORZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104125,7 +103493,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104142,7 +103510,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104159,7 +103527,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104176,7 +103544,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104193,7 +103561,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104210,7 +103578,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104380,7 +103748,7 @@ ) fragment.hltL1sNotZDC1nANDDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104397,7 +103765,7 @@ ) fragment.hltL1sNotZDC1nANDDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104414,7 +103782,7 @@ ) fragment.hltL1sNotZDC1nANDDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104431,7 +103799,7 @@ ) fragment.hltL1sNotZDC1nORDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104448,7 +103816,7 @@ ) fragment.hltL1sNotZDC1nORDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104465,7 +103833,7 @@ ) fragment.hltL1sNotZDC1nORDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -106635,6 +106003,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPreSplittingPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -106788,7 +106157,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) fragment.hltSiPixelClustersCacheAfterSplittingPPOnAAForDmeson = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), @@ -106861,6 +106235,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107092,6 +106467,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter1PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107296,6 +106672,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter2PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107498,6 +106875,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter3PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -107695,6 +107073,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter7MixedHitDoubletsAPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -107837,7 +107216,8 @@ ) ) fragment.hltFullIter7MixedSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltFullIter7CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -108038,6 +107418,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter8PixelLessHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -108251,6 +107632,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter9TobTecHitDoubletsTriplPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -108437,7 +107819,8 @@ ) ) fragment.hltFullIter9TobTecSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltFullIter9CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -113023,9 +112406,9 @@ MaxEta = cms.double( -1.0 ), MaxTimeSpread = cms.double( -1.0 ) ) -fragment.hltL1sSingleJet24 = cms.EDFilter( "HLTL1TSeed", +fragment.hltL1sZDC1nAsymXORSingleJet8 = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR OR L1_SingleJet8_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet8_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet8_ZDC1n_Bkp3_AsymXOR" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -113036,3099 +112419,200 @@ L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltPrePPRefDmesonTrackingGlobalDpt25 = cms.EDFilter( "HLTPrescaler", +fragment.hltPrePPRefUPCSingleJet8ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltSiPixelClustersCache = cms.EDProducer( "SiPixelClusterShapeCacheProducer", - src = cms.InputTag( "hltSiPixelClusters" ), - onDemand = cms.bool( False ) -) -fragment.hltFullIter0PixelQuadrupletsPreSplittingPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHits" ), - hitErrorRZ = cms.double( 0.006 ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHits" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) +fragment.hltL1sZDC1nAsymXORSingleJet12 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR OR L1_SingleJet12_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet12_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet12_ZDC1n_Bkp3_AsymXOR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0PixelTrackingRegionsPreSplittingPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionFromBeamSpotEDProducer", - RegionPSet = cms.PSet( - nSigmaZ = cms.double( 4.0 ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - ptMin = cms.double( 0.5 ), - originHalfLength = cms.double( 0.0 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) +fragment.hltPrePPRefUPCSingleJet12ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PixelClusterCheckPreSplittingPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltHITrackingSiStripRawToClustersFacilityZeroSuppression" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) +fragment.hltL1sZDC1nAsymXORSingleJet16 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR OR L1_SingleJet16_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet16_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet16_ZDC1n_Bkp3_AsymXOR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0PixelHitDoubletsPreSplittingPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter0PixelQuadrupletsPreSplittingPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter0PixelTrackingRegionsPreSplittingPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter0PixelClusterCheckPreSplittingPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) +fragment.hltPrePPRefUPCSingleJet16ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PixelHitQuadrupletsPreSplittingPPRefForDmeson = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter0PixelHitDoubletsPreSplittingPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0012 ), - CAPhiCut = cms.double( 0.2 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 50.0 ), - value1 = cms.double( 200.0 ), - pt1 = cms.double( 0.7 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCache" ) - ) +fragment.hltL1sZDC1nAsymXORSingleJet20 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR OR L1_SingleJet20_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet20_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet20_ZDC1n_Bkp3_AsymXOR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0PixelSeedsPreSplittingPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter0PixelHitQuadrupletsPreSplittingPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCache" ) - ) +fragment.hltPrePPRefUPCSingleJet20ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0CkfTrackCandidatesPreSplittingPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltMeasurementTrackerEvent" ), - src = cms.InputTag( "hltFullIter0PixelSeedsPreSplittingPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetInitialStepTrajectoryBuilderPreSplittingForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) +fragment.hltL1sZDC1nAsymXORSingleJet24 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR OR L1_SingleJet24_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet24_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet24_ZDC1n_Bkp3_AsymXOR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0CtfWithMaterialTracksPreSplittingPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter0CkfTrackCandidatesPreSplittingPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "initialStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "" ) +fragment.hltPrePPRefUPCSingleJet24ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PrimaryVerticesPreSplittingPPRefForDmeson = cms.EDProducer( "PrimaryVertexProducer", - vertexCollections = cms.VPSet( - cms.PSet( chi2cutoff = cms.double( 2.5 ), - label = cms.string( "" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ) - ), - verbose = cms.untracked.bool( False ), - TkFilterParameters = cms.PSet( - maxEta = cms.double( 2.4 ), - minPt = cms.double( 0.0 ), - minSiliconLayersWithHits = cms.int32( 5 ), - minPixelLayersWithHits = cms.int32( 2 ), - maxNormalizedChi2 = cms.double( 20.0 ), - trackQuality = cms.string( "any" ), - algorithm = cms.string( "filter" ), - maxD0Significance = cms.double( 5.0 ) - ), - beamSpotLabel = cms.InputTag( "hltOnlineBeamSpot" ), - TrackLabel = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPreSplittingPPRefForDmeson" ), - TrackTimeResosLabel = cms.InputTag( "dummy_default" ), - TrackTimesLabel = cms.InputTag( "dummy_default" ), - trackMTDTimeQualityVMapTag = cms.InputTag( "dummy_default" ), - TkClusParameters = cms.PSet( - algorithm = cms.string( "gap" ), - TkGapClusParameters = cms.PSet( zSeparation = cms.double( 1.0 ) ) - ), - isRecoveryIteration = cms.bool( False ), - recoveryVtxCollection = cms.InputTag( "" ), - useMVACut = cms.bool( False ), - minTrackTimeQuality = cms.double( 0.8 ) +fragment.hltL1sZDC1nAsymXORSingleJet28 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR OR L1_SingleJet28_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet28_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet28_ZDC1n_Bkp3_AsymXOR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltSiPixelClustersAfterSplittingPPRefForDmeson = cms.EDProducer( "JetCoreClusterSplitter", - pixelClusters = cms.InputTag( "hltSiPixelClusters" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPreSplittingPPRefForDmeson" ), - pixelCPE = cms.string( "hltESPPixelCPEGeneric" ), - verbose = cms.bool( False ), - ptMin = cms.double( 200.0 ), - cores = cms.InputTag( "hltJetsForCoreTracking" ), - chargeFractionMin = cms.double( 2.0 ), - deltaRmax = cms.double( 0.05 ), - forceXError = cms.double( 100.0 ), - forceYError = cms.double( 150.0 ), - fractionalWidth = cms.double( 0.4 ), - chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) +fragment.hltPrePPRefUPCSingleJet28ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltSiPixelClustersCacheAfterSplittingPPRefForDmeson = cms.EDProducer( "SiPixelClusterShapeCacheProducer", - src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - onDemand = cms.bool( False ) +fragment.hltL1sZDC1nORSingleJet8 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_OR OR L1_SingleJet8_ZDC1n_Bkp1_OR OR L1_SingleJet8_ZDC1n_Bkp2_OR OR L1_SingleJet8_ZDC1n_Bkp3_OR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltSiPixelRecHitsAfterSplittingPPRefForDmeson = cms.EDProducer( "SiPixelRecHitConverter", - src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - CPE = cms.string( "hltESPPixelCPEGeneric" ), - VerboseLevel = cms.untracked.int32( 0 ) +fragment.hltPrePPRefUPCSingleJet8ZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltAfterSplittingMeasureTrackerEventForDmeson = cms.EDProducer( "MeasurementTrackerEventProducer", - measurementTracker = cms.string( "hltESPMeasurementTracker" ), - skipClusters = cms.InputTag( "" ), - pixelClusterProducer = cms.string( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusterProducer = cms.string( "hltSiStripRawToClustersFacility" ), - Phase2TrackerCluster1DProducer = cms.string( "" ), - vectorHits = cms.InputTag( "" ), - vectorHitsRej = cms.InputTag( "" ), - inactivePixelDetectorLabels = cms.VInputTag( ), - badPixelFEDChannelCollectionLabels = cms.VInputTag( ), - pixelCablingMapLabel = cms.string( "" ), - inactiveStripDetectorLabels = cms.VInputTag( 'hltSiStripExcludedFEDListProducer' ), - switchOffPixelsIfEmpty = cms.bool( True ) +fragment.hltL1sZDC1nORSingleJet12 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_OR OR L1_SingleJet12_ZDC1n_Bkp1_OR OR L1_SingleJet12_ZDC1n_Bkp2_OR OR L1_SingleJet12_ZDC1n_Bkp3_OR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltSiStripMatchedRecHitsFullPPRef = cms.EDProducer( "SiStripRecHitConverter", - ClusterProducer = cms.InputTag( "hltSiStripRawToClustersFacility" ), - rphiRecHits = cms.string( "rphiRecHit" ), - stereoRecHits = cms.string( "stereoRecHit" ), - matchedRecHits = cms.string( "matchedRecHit" ), - useSiStripQuality = cms.bool( False ), - MaskBadAPVFibers = cms.bool( False ), - doMatching = cms.bool( True ), - StripCPE = cms.ESInputTag( "hltESPStripCPEfromTrackAngle","hltESPStripCPEfromTrackAngle" ), - Matcher = cms.ESInputTag( "SiStripRecHitMatcherESProducer","StandardMatcher" ), - siStripQualityLabel = cms.ESInputTag( "","" ) +fragment.hltPrePPRefUPCSingleJet12ZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PixelQuadrupletsPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) +fragment.hltL1sZDC1nORSingleJet16 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_OR OR L1_SingleJet16_ZDC1n_Bkp1_OR OR L1_SingleJet16_ZDC1n_Bkp2_OR OR L1_SingleJet16_ZDC1n_Bkp3_OR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0PixelTrackingRegionsPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionFromBeamSpotEDProducer", - RegionPSet = cms.PSet( - nSigmaZ = cms.double( 4.0 ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - ptMin = cms.double( 0.5 ), - originHalfLength = cms.double( 0.0 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) +fragment.hltPrePPRefUPCSingleJet16ZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PixelClusterCheckPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) +fragment.hltL1sZDC1nORSingleJet20 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_OR OR L1_SingleJet20_ZDC1n_Bkp1_OR OR L1_SingleJet20_ZDC1n_Bkp2_OR OR L1_SingleJet20_ZDC1n_Bkp3_OR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0PixelHitDoubletsPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter0PixelQuadrupletsPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter0PixelTrackingRegionsPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter0PixelClusterCheckPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) +fragment.hltPrePPRefUPCSingleJet20ZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PixelHitQuadrupletsPPRefForDmeson = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter0PixelHitDoubletsPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0012 ), - CAPhiCut = cms.double( 0.2 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 50.0 ), - value1 = cms.double( 200.0 ), - pt1 = cms.double( 0.7 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) +fragment.hltL1sZDC1nORSingleJet24 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_OR OR L1_SingleJet24_ZDC1n_Bkp1_OR OR L1_SingleJet24_ZDC1n_Bkp2_OR OR L1_SingleJet24_ZDC1n_Bkp3_OR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0PixelSeedsPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter0PixelHitQuadrupletsPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) +fragment.hltPrePPRefUPCSingleJet24ZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0CkfTrackCandidatesPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - src = cms.InputTag( "hltFullIter0PixelSeedsPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetInitialStepTrajectoryBuilderForDmesonPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) +fragment.hltL1sZDC1nORSingleJet28 = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_OR OR L1_SingleJet28_ZDC1n_Bkp1_OR OR L1_SingleJet28_ZDC1n_Bkp2_OR OR L1_SingleJet28_ZDC1n_Bkp3_OR" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltFullIter0CtfWithMaterialTracksPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter0CkfTrackCandidatesPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "initialStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "" ) +fragment.hltPrePPRefUPCSingleJet28ZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltFullIter0PrimaryVerticesPPRefForDmeson = cms.EDProducer( "PrimaryVertexProducer", - vertexCollections = cms.VPSet( - cms.PSet( chi2cutoff = cms.double( 2.5 ), - label = cms.string( "" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ) - ), - verbose = cms.untracked.bool( False ), - TkFilterParameters = cms.PSet( - maxEta = cms.double( 2.4 ), - minPt = cms.double( 0.0 ), - minSiliconLayersWithHits = cms.int32( 5 ), - minPixelLayersWithHits = cms.int32( 2 ), - maxNormalizedChi2 = cms.double( 20.0 ), - trackQuality = cms.string( "any" ), - algorithm = cms.string( "filter" ), - maxD0Significance = cms.double( 5.0 ) - ), - beamSpotLabel = cms.InputTag( "hltOnlineBeamSpot" ), - TrackLabel = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPPRefForDmeson" ), - TrackTimeResosLabel = cms.InputTag( "dummy_default" ), - TrackTimesLabel = cms.InputTag( "dummy_default" ), - trackMTDTimeQualityVMapTag = cms.InputTag( "dummy_default" ), - TkClusParameters = cms.PSet( - algorithm = cms.string( "gap" ), - TkGapClusParameters = cms.PSet( zSeparation = cms.double( 1.0 ) ) - ), - isRecoveryIteration = cms.bool( False ), - recoveryVtxCollection = cms.InputTag( "" ), - useMVACut = cms.bool( False ), - minTrackTimeQuality = cms.double( 0.8 ) -) -fragment.hltFullIter0TrackDNNClassifierPPRefForDmeson = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPPRefForDmeson" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.35, 0.1, 0.28 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter0HighPurityTracksPPRefForDmeson = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIter0TrackDNNClassifierPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter0TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter1ClustersRefRemovalPPRefForDmeson = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter0HighPurityTracksPPRefForDmeson" ), - trackClassifier = cms.InputTag( 'hltFullIter0TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ) -) -fragment.hltFullIter1PixelQuadrupletsPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter1PixelTrackingRegionsPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 4.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.15 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -fragment.hltFullIter1PixelClusterCheckPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter1PixelHitDoubletsPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter1PixelQuadrupletsPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter1PixelTrackingRegionsPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter1PixelClusterCheckPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) -) -fragment.hltFullIter1PixelHitQuadrupletsPPRefForDmeson = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter1PixelHitDoubletsPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0017 ), - CAPhiCut = cms.double( 0.3 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 150.0 ), - value1 = cms.double( 1000.0 ), - pt1 = cms.double( 0.7 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter1PixelSeedsPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter1PixelHitQuadrupletsPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -fragment.hltFullIter1CkfTrackCandidatesPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson" ), - src = cms.InputTag( "hltFullIter1PixelSeedsPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetLowPtQuadStepTrajectoryBuilderForDmesonPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPLowPtQuadStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter1CtfWithMaterialTracksPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter1CkfTrackCandidatesPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "lowPtQuadStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson" ) -) -fragment.hltFullIter1TrackDNNClassifierPPRefForDmeson = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter1CtfWithMaterialTracksPPRefForDmeson" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.33, 0.13, 0.35 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter1HighPurityTracksPPRefForDmeson = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter1CtfWithMaterialTracksPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIter1TrackDNNClassifierPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter1TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter2ClustersRefRemovalPPRefForDmeson = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter1HighPurityTracksPPRefForDmeson" ), - trackClassifier = cms.InputTag( 'hltFullIter1TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ) -) -fragment.hltFullIter2PixelTripletsPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix1+BPix3+BPix4', - 'BPix1+BPix2+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos', - 'BPix1+BPix2+FPix1_neg', - 'BPix1+BPix3+FPix1_pos', - 'BPix1+BPix3+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos', - 'BPix1+FPix1_neg+FPix2_neg', - 'BPix1+BPix2+FPix2_pos', - 'BPix1+BPix2+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg', - 'BPix1+FPix2_pos+FPix3_pos', - 'BPix1+FPix2_neg+FPix3_neg', - 'BPix1+FPix1_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter2PixelTrackingRegionsPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 4.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.2 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.55 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -fragment.hltFullIter2PixelClusterCheckPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter2PixelHitDoubletsPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter2PixelTripletsPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter2PixelTrackingRegionsPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter2PixelClusterCheckPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1 ) -) -fragment.hltFullIter2PixelHitTripletsPPRefForDmeson = cms.EDProducer( "CAHitTripletEDProducer", - doublets = cms.InputTag( "hltFullIter2PixelHitDoubletsPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.004 ), - CAPhiCut = cms.double( 0.07 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.3 ), - maxChi2 = cms.PSet( - value2 = cms.double( 6.0 ), - value1 = cms.double( 100.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 8.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter2PixelSeedsPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter2PixelHitTripletsPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -fragment.hltFullIter2CkfTrackCandidatesPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson" ), - src = cms.InputTag( "hltFullIter2PixelSeedsPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetHighPtTripletStepTrajectoryBuilderForDmesonPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter2CtfWithMaterialTracksPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter2CkfTrackCandidatesPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "highPtTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson" ) -) -fragment.hltFullIter2TrackDNNClassifierPPRefForDmeson = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter2CtfWithMaterialTracksPPRefForDmeson" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( 0.47, 0.55, 0.62 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter2HighPurityTracksPPRefForDmeson = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter2CtfWithMaterialTracksPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIter2TrackDNNClassifierPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter2TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter3ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter2HighPurityTracksPPRefForDmeson" ), - trackClassifier = cms.InputTag( 'hltFullIter2TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter3MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter3PixelTripletsPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix1+BPix3+BPix4', - 'BPix1+BPix2+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos', - 'BPix1+BPix2+FPix1_neg', - 'BPix1+BPix3+FPix1_pos', - 'BPix1+BPix3+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos', - 'BPix1+FPix1_neg+FPix2_neg', - 'BPix1+BPix2+FPix2_pos', - 'BPix1+BPix2+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg', - 'BPix1+FPix2_pos+FPix3_pos', - 'BPix1+FPix2_neg+FPix3_neg', - 'BPix1+FPix1_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter3PixelTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( False ), - nSigmaZ = cms.double( 4.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.2 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.2 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -fragment.hltFullIter3PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter3PixelHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter3PixelTripletsPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter3PixelTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter3PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1 ) -) -fragment.hltFullIter3PixelHitTripletsPPRef = cms.EDProducer( "CAHitTripletEDProducer", - doublets = cms.InputTag( "hltFullIter3PixelHitDoubletsPPRef" ), - extraHitRPhitolerance = cms.double( 0.032 ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.002 ), - CAPhiCut = cms.double( 0.05 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.3 ), - maxChi2 = cms.PSet( - value2 = cms.double( 8.0 ), - value1 = cms.double( 70.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter3PixelSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter3PixelHitTripletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -fragment.hltFullIter3CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter3MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter3PixelSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetLowPtTripletStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPLowPtTripletStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter3CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter3CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "lowPtTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter3MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter3TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter3CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.23, 0.15, 0.41 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter3HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter3CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter3TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter3TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter4ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter3HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter3TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter4MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter4PixelQuadrupletsPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter4PixelTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 1.0 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 1.5 ), - originRadius = cms.double( 1.0 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -fragment.hltFullIter4PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( True ), - MaxNumberOfStripClusters = cms.uint32( 500000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter4PixelHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter4PixelQuadrupletsPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter4PixelTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter4PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) -) -fragment.hltFullIter4PixelHitQuadrupletsPPRef = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter4PixelHitDoubletsPPRef" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0011 ), - CAPhiCut = cms.double( 0.0 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 100.0 ), - value1 = cms.double( 500.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter4PixelSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter4PixelHitQuadrupletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter4CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter4MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter4PixelSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetDetachedQuadStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPDetachedQuadStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter4CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter4CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "detachedQuadStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter4MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter4TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter4CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.66, -0.15, 0.46 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter4HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter4CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter4TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter4TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter5ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter4HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter4TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter5MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter5PixelTripletsPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter5PixelTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.25 ), - originRadius = cms.double( 1.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -fragment.hltFullIter5PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( True ), - MaxNumberOfStripClusters = cms.uint32( 500000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter5PixelHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter5PixelTripletsPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter5PixelTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter5PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1 ) -) -fragment.hltFullIter5PixelHitTripletsPPRef = cms.EDProducer( "CAHitTripletEDProducer", - doublets = cms.InputTag( "hltFullIter5PixelHitDoubletsPPRef" ), - extraHitRPhitolerance = cms.double( 0.032 ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.001 ), - CAPhiCut = cms.double( 0.0 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.2 ), - maxChi2 = cms.PSet( - value2 = cms.double( 10.0 ), - value1 = cms.double( 300.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -fragment.hltFullIter5PixelSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter5PixelHitTripletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter5CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter5MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter5PixelSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetDetachedTripletStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPDetachedTripletStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter5CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter5CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "detachedTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter5MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter5TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter5CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.42, 0.16, 0.78 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter5HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter5CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter5TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter5TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter6ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter5HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter5TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "tight" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter6MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter6PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( True ), - MaxNumberOfStripClusters = cms.uint32( 500000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter6PixelTrackingRegionSeedLayersBPPRef = cms.EDProducer( "PixelInactiveAreaTrackingRegionsSeedingLayersProducer", - RegionPSet = cms.PSet( - deltaEta_Cand = cms.double( -1.0 ), - vertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - zErrorBeamSpot = cms.double( 24.2 ), - extraPhi = cms.double( 0.0 ), - extraEta = cms.double( 0.0 ), - seedingMode = cms.string( "Global" ), - maxNVertices = cms.int32( 5 ), - nSigmaZVertex = cms.double( 3.0 ), - nSigmaZBeamSpot = cms.double( 4.0 ), - ptMin = cms.double( 5.0 ), - input = cms.InputTag( "" ), - operationMode = cms.string( "VerticesFixed" ), - searchOpt = cms.bool( False ), - whereToUseMeasurementTracker = cms.string( "Never" ), - deltaPhi_Cand = cms.double( -1.0 ), - originRadius = cms.double( 0.015 ), - measurementTrackerName = cms.InputTag( "" ), - precise = cms.bool( True ), - zErrorVertex = cms.double( 0.3 ) - ), - inactivePixelDetectorLabels = cms.VInputTag( 'hltSiPixelDigiErrors' ), - badPixelFEDChannelCollectionLabels = cms.VInputTag( 'hltSiPixelDigiErrors' ), - ignoreSingleFPixPanelModules = cms.bool( True ), - debug = cms.untracked.bool( False ), - createPlottingFiles = cms.untracked.bool( False ), - layerList = cms.vstring( 'BPix1+BPix2', - 'BPix1+BPix3', - 'BPix1+BPix4', - 'BPix2+BPix3', - 'BPix2+BPix4', - 'BPix3+BPix4', - 'BPix1+FPix1_pos', - 'BPix1+FPix1_neg', - 'BPix1+FPix2_pos', - 'BPix1+FPix2_neg', - 'BPix1+FPix3_pos', - 'BPix1+FPix3_neg', - 'BPix2+FPix1_pos', - 'BPix2+FPix1_neg', - 'BPix2+FPix2_pos', - 'BPix2+FPix2_neg', - 'BPix3+FPix1_pos', - 'BPix3+FPix1_neg', - 'FPix1_pos+FPix2_pos', - 'FPix1_neg+FPix2_neg', - 'FPix1_pos+FPix3_pos', - 'FPix1_neg+FPix3_neg', - 'FPix2_pos+FPix3_pos', - 'FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter6PixelHitDoubletsBPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "" ), - trackingRegions = cms.InputTag( "" ), - trackingRegionsSeedingLayers = cms.InputTag( "hltFullIter6PixelTrackingRegionSeedLayersBPPRef" ), - clusterCheck = cms.InputTag( "hltFullIter6PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( False ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -fragment.hltFullIter6PixelSeedsBPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter6PixelHitDoubletsBPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( False ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( True ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter6CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter6MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter6PixelSeedsBPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetPixelPairStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter6CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter6CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "pixelPairStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter6MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter6TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter6CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.31, -0.13, 0.13 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter6HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter6CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter6TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter6TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter7ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter6HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter6TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter7MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter7MixedLayersAPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 1 ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 1 ) - ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter7MixedTrackingRegionsAPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 3.75 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.4 ), - originRadius = cms.double( 1.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( True ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter7MixedClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter7MixedHitDoubletsAPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter7MixedLayersAPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter7MixedTrackingRegionsAPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter7MixedClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -fragment.hltFullIter7MixedHitTripletsAPPRef = cms.EDProducer( "PixelTripletLargeTipEDProducer", - doublets = cms.InputTag( "hltFullIter7MixedHitDoubletsAPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitTriplets = cms.bool( False ), - maxElement = cms.uint32( 1000000 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - useMultScattering = cms.bool( True ), - useBending = cms.bool( True ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ) -) -fragment.hltFullIter7MixedSeedsAPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter7MixedHitTripletsAPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPMixedStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter7MixedLayersBPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix3+BPix4+TIB1' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter7MixedTrackingRegionsBPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 2.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.6 ), - originRadius = cms.double( 1.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( True ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter7MixedHitDoubletsBPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter7MixedLayersBPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter7MixedTrackingRegionsBPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter7MixedClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -fragment.hltFullIter7MixedHitTripletsBPPRef = cms.EDProducer( "PixelTripletLargeTipEDProducer", - doublets = cms.InputTag( "hltFullIter7MixedHitDoubletsBPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitTriplets = cms.bool( False ), - maxElement = cms.uint32( 1000000 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - useMultScattering = cms.bool( True ), - useBending = cms.bool( True ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ) -) -fragment.hltFullIter7MixedSeedsBPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter7MixedHitTripletsBPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPMixedStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter7MixedSeedsPPRef = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPRef','hltFullIter7MixedSeedsBPPRef' ) -) -fragment.hltFullIter7CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( False ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter7MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter7MixedSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetMixedTripletStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPMixedTripletStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter7CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter7CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "mixedTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter7MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter7TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter7CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.86, -0.68, -0.43 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter7HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter7CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter7TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter7TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter8ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter7HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter7TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter8MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter8PixelLessLayersPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'TIB1+TIB2+MTIB3', - 'TIB1+TIB2+MTIB4', - 'TIB1+TIB2+MTID1_pos', - 'TIB1+TIB2+MTID1_neg', - 'TID1_pos+TID2_pos+TID3_pos', - 'TID1_neg+TID2_neg+TID3_neg', - 'TID1_pos+TID2_pos+MTID3_pos', - 'TID1_neg+TID2_neg+MTID3_neg', - 'TID1_pos+TID2_pos+MTEC1_pos', - 'TID1_neg+TID2_neg+MTEC1_neg', - 'TID2_pos+TID3_pos+TEC1_pos', - 'TID2_neg+TID3_neg+TEC1_neg', - 'TID2_pos+TID3_pos+MTEC1_pos', - 'TID2_neg+TID3_neg+MTEC1_neg', - 'TEC1_pos+TEC2_pos+TEC3_pos', - 'TEC1_neg+TEC2_neg+TEC3_neg', - 'TEC1_pos+TEC2_pos+MTEC3_pos', - 'TEC1_neg+TEC2_neg+MTEC3_neg', - 'TEC1_pos+TEC2_pos+TEC4_pos', - 'TEC1_neg+TEC2_neg+TEC4_neg', - 'TEC1_pos+TEC2_pos+MTEC4_pos', - 'TEC1_neg+TEC2_neg+MTEC4_neg', - 'TEC2_pos+TEC3_pos+TEC4_pos', - 'TEC2_neg+TEC3_neg+TEC4_neg', - 'TEC2_pos+TEC3_pos+MTEC4_pos', - 'TEC2_neg+TEC3_neg+MTEC4_neg', - 'TEC2_pos+TEC3_pos+TEC5_pos', - 'TEC2_neg+TEC3_neg+TEC5_neg', - 'TEC2_pos+TEC3_pos+TEC6_pos', - 'TEC2_neg+TEC3_neg+TEC6_neg', - 'TEC3_pos+TEC4_pos+TEC5_pos', - 'TEC3_neg+TEC4_neg+TEC5_neg', - 'TEC3_pos+TEC4_pos+MTEC5_pos', - 'TEC3_neg+TEC4_neg+MTEC5_neg', - 'TEC3_pos+TEC5_pos+TEC6_pos', - 'TEC3_neg+TEC5_neg+TEC6_neg', - 'TEC4_pos+TEC5_pos+TEC6_pos', - 'TEC4_neg+TEC5_neg+TEC6_neg' ), - BPix = cms.PSet( ), - FPix = cms.PSet( ), - TIB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TID = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 3 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 3 ) - ), - TOB = cms.PSet( ), - TEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 1 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 2 ) - ), - MTIB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ), - MTID = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 3 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 3 ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 3 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 3 ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ) -) -fragment.hltFullIter8PixelLessTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 3.0 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.4 ), - originRadius = cms.double( 1.0 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( False ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter8PixelLessClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter8PixelLessHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter8PixelLessLayersPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter8PixelLessTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter8PixelLessClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -fragment.hltFullIter8PixelLessHitTripletsPPRef = cms.EDProducer( "MultiHitFromChi2EDProducer", - doublets = cms.InputTag( "hltFullIter8PixelLessHitDoubletsPPRef" ), - maxElement = cms.uint32( 1000000 ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - extraZKDBox = cms.double( 0.2 ), - extraRKDBox = cms.double( 0.2 ), - extraPhiKDBox = cms.double( 0.005 ), - fnSigmaRZ = cms.double( 2.0 ), - refitHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - maxChi2 = cms.double( 5.0 ), - chi2VsPtCut = cms.bool( True ), - pt_interv = cms.vdouble( 0.4, 0.7, 1.0, 2.0 ), - chi2_cuts = cms.vdouble( 3.0, 4.0, 5.0, 5.0 ), - detIdsToDebug = cms.vint32( 0, 0, 0 ) -) -fragment.hltFullIter8PixelLessSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter8PixelLessHitTripletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - mode = cms.string( "and" ), - comparitors = cms.VPSet( - cms.PSet( FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPPixelLessStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ), - cms.PSet( subclusterCutSN = cms.double( 12.0 ), - trimMaxADC = cms.double( 30.0 ), - seedCutMIPs = cms.double( 0.35 ), - subclusterCutMIPs = cms.double( 0.45 ), - subclusterWindow = cms.double( 0.7 ), - maxNSat = cms.uint32( 3 ), - trimMaxFracNeigh = cms.double( 0.25 ), - FilterAtHelixStage = cms.bool( False ), - maxTrimmedSizeDiffNeg = cms.double( 1.0 ), - seedCutSN = cms.double( 7.0 ), - ComponentName = cms.string( "StripSubClusterShapeSeedFilter" ), - maxTrimmedSizeDiffPos = cms.double( 0.7 ), - trimMaxFracTotal = cms.double( 0.15 ), - layerMask = cms.PSet( ) - ) - ), - ComponentName = cms.string( "CombinedSeedComparitor" ) - ) -) -fragment.hltFullIter8CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( False ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter8MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter8PixelLessSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetPixelLessStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPPixelLessStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter8CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter8CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( True ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "pixelLessStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter8MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter8TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter8CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.82, -0.61, -0.16 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter8HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter8CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter8TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter8TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullIter9ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter8HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter8TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -fragment.hltFullIter9MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ) -) -fragment.hltFullIter9TobTecLayersTriplPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'TOB1+TOB2+MTOB3', - 'TOB1+TOB2+MTOB4', - 'TOB1+TOB2+MTEC1_pos', - 'TOB1+TOB2+MTEC1_neg' ), - BPix = cms.PSet( ), - FPix = cms.PSet( ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ), - MTEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 6 ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 7 ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ) -) -fragment.hltFullIter9TobTecTrackingRegionsTriplPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 5.0 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.55 ), - originRadius = cms.double( 3.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( False ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter9TobTecClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -fragment.hltFullIter9TobTecHitDoubletsTriplPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter9TobTecLayersTriplPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter9TobTecTrackingRegionsTriplPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter9TobTecClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -fragment.hltFullIter9TobTecHitTripletsTriplPPRef = cms.EDProducer( "MultiHitFromChi2EDProducer", - doublets = cms.InputTag( "hltFullIter9TobTecHitDoubletsTriplPPRef" ), - maxElement = cms.uint32( 1000000 ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - extraZKDBox = cms.double( 0.2 ), - extraRKDBox = cms.double( 0.2 ), - extraPhiKDBox = cms.double( 0.01 ), - fnSigmaRZ = cms.double( 2.0 ), - refitHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - maxChi2 = cms.double( 5.0 ), - chi2VsPtCut = cms.bool( True ), - pt_interv = cms.vdouble( 0.4, 0.7, 1.0, 2.0 ), - chi2_cuts = cms.vdouble( 3.0, 4.0, 5.0, 5.0 ), - detIdsToDebug = cms.vint32( 0, 0, 0 ) -) -fragment.hltFullIter9TobTecSeedsTriplPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter9TobTecHitTripletsTriplPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - mode = cms.string( "and" ), - comparitors = cms.VPSet( - cms.PSet( FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPTobTecStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ), - cms.PSet( subclusterCutSN = cms.double( 12.0 ), - trimMaxADC = cms.double( 30.0 ), - seedCutMIPs = cms.double( 0.35 ), - subclusterCutMIPs = cms.double( 0.45 ), - subclusterWindow = cms.double( 0.7 ), - maxNSat = cms.uint32( 3 ), - trimMaxFracNeigh = cms.double( 0.25 ), - FilterAtHelixStage = cms.bool( False ), - maxTrimmedSizeDiffNeg = cms.double( 1.0 ), - seedCutSN = cms.double( 7.0 ), - ComponentName = cms.string( "StripSubClusterShapeSeedFilter" ), - maxTrimmedSizeDiffPos = cms.double( 0.7 ), - trimMaxFracTotal = cms.double( 0.15 ), - layerMask = cms.PSet( ) - ) - ), - ComponentName = cms.string( "CombinedSeedComparitor" ) - ) -) -fragment.hltFullIter9TobTecLayersPairPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'TOB1+TEC1_pos', - 'TOB1+TEC1_neg', - 'TEC1_pos+TEC2_pos', - 'TEC1_neg+TEC2_neg', - 'TEC2_pos+TEC3_pos', - 'TEC2_neg+TEC3_neg', - 'TEC3_pos+TEC4_pos', - 'TEC3_neg+TEC4_neg', - 'TEC4_pos+TEC5_pos', - 'TEC4_neg+TEC5_neg', - 'TEC5_pos+TEC6_pos', - 'TEC5_neg+TEC6_neg', - 'TEC6_pos+TEC7_pos', - 'TEC6_neg+TEC7_neg' ), - BPix = cms.PSet( ), - FPix = cms.PSet( ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 5 ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 5 ) - ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter9TobTecTrackingRegionsPairPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 7.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.6 ), - originRadius = cms.double( 6.0 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( False ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -fragment.hltFullIter9TobTecHitDoubletsPairPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter9TobTecLayersPairPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter9TobTecTrackingRegionsPairPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter9TobTecClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -fragment.hltFullIter9TobTecSeedsPairPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter9TobTecHitDoubletsPairPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - mode = cms.string( "and" ), - comparitors = cms.VPSet( - cms.PSet( FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPTobTecStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ), - cms.PSet( subclusterCutSN = cms.double( 12.0 ), - trimMaxADC = cms.double( 30.0 ), - seedCutMIPs = cms.double( 0.35 ), - subclusterCutMIPs = cms.double( 0.45 ), - subclusterWindow = cms.double( 0.7 ), - maxNSat = cms.uint32( 3 ), - trimMaxFracNeigh = cms.double( 0.25 ), - FilterAtHelixStage = cms.bool( False ), - maxTrimmedSizeDiffNeg = cms.double( 1.0 ), - seedCutSN = cms.double( 7.0 ), - ComponentName = cms.string( "StripSubClusterShapeSeedFilter" ), - maxTrimmedSizeDiffPos = cms.double( 0.7 ), - trimMaxFracTotal = cms.double( 0.15 ), - layerMask = cms.PSet( ) - ) - ), - ComponentName = cms.string( "CombinedSeedComparitor" ) - ) -) -fragment.hltFullIter9TobTecSeedsPPRef = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPRef','hltFullIter9TobTecSeedsPairPPRef' ) -) -fragment.hltFullIter9CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter9MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter9TobTecSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetTobTecStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTobTecStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -fragment.hltFullIter9CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter9CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPTobTecStepFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( True ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "tobTecStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter9MaskedMeasurementTrackerEventPPRef" ) -) -fragment.hltFullIter9TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter9CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.76, -0.65, -0.55 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIter10JetCoreLayersPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix1+BPix3+BPix4', - 'BPix1+BPix2+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos', - 'BPix1+BPix2+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos', - 'BPix1+FPix1_neg+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg', - 'BPix1+BPix2+TIB1', - 'BPix1+BPix3+TIB1', - 'BPix1+BPix4+TIB1', - 'BPix2+BPix3+TIB1', - 'BPix2+BPix4+TIB1', - 'BPix3+BPix4+TIB1' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ), - hitErrorRZ = cms.double( 0.006 ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutNone" ) ) - ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -fragment.hltFullIter10JetCoreRegionSeedsPPRef = cms.EDProducer( "SeedGeneratorFromRegionHitsEDProducer", - OrderedHitsFactoryPSet = cms.PSet( - maxElement = cms.uint32( 0 ), - ComponentName = cms.string( "StandardHitTripletGenerator" ), - SeedingLayers = cms.InputTag( "hltFullIter10JetCoreLayersPPRef" ), - LayerSrc = cms.InputTag( "hltFullIter10JetCoreLayersPPRef" ), - GeneratorPSet = cms.PSet( - maxElement = cms.uint32( 0 ), - useBending = cms.bool( True ), - useFixedPreFiltering = cms.bool( False ), - ComponentName = cms.string( "PixelTripletHLTGenerator" ), - useMultScattering = cms.bool( True ), - phiPreFiltering = cms.double( 0.3 ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ), - extraHitRPhitolerance = cms.double( 0.032 ), - extraHitRZtolerance = cms.double( 0.037 ) - ) - ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ), - RegionFactoryPSet = cms.PSet( - ComponentName = cms.string( "CandidateSeededTrackingRegionsProducer" ), - RegionPSet = cms.PSet( - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - ptMin = cms.double( 10.0 ), - originRadius = cms.double( 0.2 ), - originHalfLength = cms.double( 0.2 ), - deltaPhiRegion = cms.double( 0.2 ), - measurementTrackerName = cms.string( "" ), - zVertex = cms.double( 5.0 ), - deltaEtaRegion = cms.double( 0.2 ), - rVertex = cms.double( 5.0 ), - useFakeVertices = cms.bool( False ), - JetSrc = cms.InputTag( "hltJetsForCoreTracking" ), - vertexSrc = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - howToUseMeasurementTracker = cms.string( "Never" ), - zErrorVetex = cms.double( 0.1 ), - nSigmaZVertex = cms.double( 3.0 ), - nSigmaZBeamSpot = cms.double( -1.0 ), - zErrorBeamSpot = cms.double( 15.0 ), - deltaEta = cms.double( 0.2 ), - deltaPhi = cms.double( 0.2 ), - vertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - maxNRegions = cms.int32( 3 ), - searchOpt = cms.bool( False ), - whereToUseMeasurementTracker = cms.string( "Never" ), - input = cms.InputTag( "hltJetsForCoreTracking" ), - maxNVertices = cms.int32( 1 ), - mode = cms.string( "VerticesFixed" ) - ), - CollectionsPSet = cms.PSet( - recoL2MuonsCollection = cms.InputTag( "" ), - recoTrackMuonsCollection = cms.InputTag( "" ), - recoMuonsCollection = cms.InputTag( "" ) - ), - RegionInJetsCheckPSet = cms.PSet( - recoCaloJetsCollection = cms.InputTag( "hltJetsForCoreTracking" ), - deltaRExclusionSize = cms.double( 0.3 ), - jetsPtMin = cms.double( 5.0 ), - doJetsExclusionCheck = cms.bool( True ) - ), - ToolsPSet = cms.PSet( - regionBase = cms.string( "seedOnJets" ), - thePropagatorName = cms.string( "AnalyticalPropagator" ) - ) - ), - SeedCreatorPSet = cms.PSet( - ComponentName = cms.string( "SeedFromConsecutiveHitsCreator" ), - forceKinematicWithRegionDirection = cms.bool( True ), - magneticField = cms.string( "ParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - MinOneOverPtError = cms.double( 1.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - maxseeds = cms.int32( 10000 ) - ), - ClusterCheckPSet = cms.PSet( - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - doClusterCheck = cms.bool( True ), - ClusterCollectionLabel = cms.InputTag( "hltMeasurementTrackerEvent" ), - MaxNumberOfStripClusters = cms.uint32( 500000 ) - ) -) -fragment.hltFullIter10CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( False ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - src = cms.InputTag( "hltFullIter10JetCoreRegionSeedsPPRef" ), - clustersToSkip = cms.InputTag( "" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetJetCoreStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 4 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 10000 ) -) -fragment.hltFullIter10CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter10CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "jetCoreRegionalStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "" ) -) -fragment.hltFullIter10TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter10CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.62, -0.49, -0.02 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -fragment.hltFullIterativeTrackingMergedPPRefForDmeson = cms.EDProducer( "TrackCollectionMerger", - trackProducers = cms.VInputTag( 'hltFullIter0CtfWithMaterialTracksPPRefForDmeson','hltFullIter1CtfWithMaterialTracksPPRefForDmeson','hltFullIter2CtfWithMaterialTracksPPRefForDmeson','hltFullIter3CtfWithMaterialTracksPPRef','hltFullIter4CtfWithMaterialTracksPPRef','hltFullIter5CtfWithMaterialTracksPPRef','hltFullIter6CtfWithMaterialTracksPPRef','hltFullIter7CtfWithMaterialTracksPPRef','hltFullIter8CtfWithMaterialTracksPPRef','hltFullIter9CtfWithMaterialTracksPPRef','hltFullIter10CtfWithMaterialTracksPPRef' ), - inputClassifiers = cms.vstring( 'hltFullIter0TrackDNNClassifierPPRefForDmeson', - 'hltFullIter1TrackDNNClassifierPPRefForDmeson', - 'hltFullIter2TrackDNNClassifierPPRefForDmeson', - 'hltFullIter3TrackDNNClassifierPPRef', - 'hltFullIter4TrackDNNClassifierPPRef', - 'hltFullIter5TrackDNNClassifierPPRef', - 'hltFullIter6TrackDNNClassifierPPRef', - 'hltFullIter7TrackDNNClassifierPPRef', - 'hltFullIter8TrackDNNClassifierPPRef', - 'hltFullIter9TrackDNNClassifierPPRef', - 'hltFullIter10TrackDNNClassifierPPRef' ), - trackAlgoPriorityOrder = cms.string( "hltESPTrackAlgoPriorityOrder" ), - shareFrac = cms.double( 0.19 ), - foundHitBonus = cms.double( 10.0 ), - lostHitPenalty = cms.double( 5.0 ), - minShareHits = cms.uint32( 2 ), - allowFirstHitShare = cms.bool( True ), - enableMerging = cms.bool( True ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullOnlinePrimaryVerticesPPRefForDmeson = cms.EDProducer( "PrimaryVertexProducer", - vertexCollections = cms.VPSet( - cms.PSet( chi2cutoff = cms.double( 3.0 ), - label = cms.string( "" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ), - cms.PSet( chi2cutoff = cms.double( 3.0 ), - label = cms.string( "WithBS" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ) - ), - verbose = cms.untracked.bool( False ), - TkFilterParameters = cms.PSet( - maxEta = cms.double( 2.4 ), - minPt = cms.double( 0.0 ), - minSiliconLayersWithHits = cms.int32( 5 ), - minPixelLayersWithHits = cms.int32( 2 ), - maxNormalizedChi2 = cms.double( 20.0 ), - trackQuality = cms.string( "any" ), - algorithm = cms.string( "filter" ), - maxD0Significance = cms.double( 5.0 ) - ), - beamSpotLabel = cms.InputTag( "hltOnlineBeamSpot" ), - TrackLabel = cms.InputTag( "hltFullIterativeTrackingMergedPPRefForDmeson" ), - TrackTimeResosLabel = cms.InputTag( "dummy_default" ), - TrackTimesLabel = cms.InputTag( "dummy_default" ), - trackMTDTimeQualityVMapTag = cms.InputTag( "dummy_default" ), - TkClusParameters = cms.PSet( - algorithm = cms.string( "gap" ), - TkGapClusParameters = cms.PSet( zSeparation = cms.double( 1.0 ) ) - ), - isRecoveryIteration = cms.bool( False ), - recoveryVtxCollection = cms.InputTag( "" ), - useMVACut = cms.bool( False ), - minTrackTimeQuality = cms.double( 0.8 ) -) -fragment.hltGoodHighPurityFullTracksForDmesonPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIterativeTrackingMergedPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIterativeTrackingMergedPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIterativeTrackingMergedPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -fragment.hltFullCandsPPRef = cms.EDProducer( "ConcreteChargedCandidateProducer", - src = cms.InputTag( "hltGoodHighPurityFullTracksForDmesonPPRef" ), - particleType = cms.string( "pi+" ) -) -fragment.hltFullTrackFilterForDmesonPPRef = cms.EDFilter( "HLTSingleVertexPixelTrackFilter", - saveTags = cms.bool( False ), - vertexCollection = cms.InputTag( "hltFullOnlinePrimaryVerticesPPRefForDmeson" ), - trackCollection = cms.InputTag( "hltFullCandsPPRef" ), - MinPt = cms.double( 0.0 ), - MaxPt = cms.double( 10000.0 ), - MaxEta = cms.double( 9999.0 ), - MaxVz = cms.double( 9999.0 ), - MinTrks = cms.int32( 0 ), - MinSep = cms.double( 999.0 ) -) -fragment.hltTkTkVtxForDmesonDpt25PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 25.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) -) -fragment.hltTkTkFilterForDmesonDpt25PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", - saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt25PPRef" ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) -) -fragment.hltPrePPRefDmesonTrackingGlobalDpt35 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltTkTkVtxForDmesonDpt35PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 35.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) -) -fragment.hltTkTkFilterForDmesonDpt35PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", - saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt35PPRef" ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) -) -fragment.hltL1sSingleJet44 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet44" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefDmesonTrackingGlobalDpt45 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltTkTkVtxForDmesonDpt45PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 45.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) -) -fragment.hltTkTkFilterForDmesonDpt45PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", - saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt45PPRef" ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) -) -fragment.hltPrePPRefDmesonTrackingGlobalDpt60 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltTkTkVtxForDmesonDpt60PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 60.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) -) -fragment.hltTkTkFilterForDmesonDpt60PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", - saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt60PPRef" ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) -) -fragment.hltL1sZDC1nAsymXORSingleJet8 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR OR L1_SingleJet8_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet8_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet8_ZDC1n_Bkp3_AsymXOR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet8ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nAsymXORSingleJet12 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR OR L1_SingleJet12_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet12_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet12_ZDC1n_Bkp3_AsymXOR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet12ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nAsymXORSingleJet16 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR OR L1_SingleJet16_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet16_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet16_ZDC1n_Bkp3_AsymXOR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet16ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nAsymXORSingleJet20 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR OR L1_SingleJet20_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet20_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet20_ZDC1n_Bkp3_AsymXOR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet20ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nAsymXORSingleJet24 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR OR L1_SingleJet24_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet24_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet24_ZDC1n_Bkp3_AsymXOR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet24ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nAsymXORSingleJet28 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR OR L1_SingleJet28_ZDC1n_Bkp1_AsymXOR OR L1_SingleJet28_ZDC1n_Bkp2_AsymXOR OR L1_SingleJet28_ZDC1n_Bkp3_AsymXOR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet28ZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nORSingleJet8 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_OR OR L1_SingleJet8_ZDC1n_Bkp1_OR OR L1_SingleJet8_ZDC1n_Bkp2_OR OR L1_SingleJet8_ZDC1n_Bkp3_OR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet8ZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nORSingleJet12 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_OR OR L1_SingleJet12_ZDC1n_Bkp1_OR OR L1_SingleJet12_ZDC1n_Bkp2_OR OR L1_SingleJet12_ZDC1n_Bkp3_OR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet12ZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nORSingleJet16 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_OR OR L1_SingleJet16_ZDC1n_Bkp1_OR OR L1_SingleJet16_ZDC1n_Bkp2_OR OR L1_SingleJet16_ZDC1n_Bkp3_OR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet16ZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nORSingleJet20 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_OR OR L1_SingleJet20_ZDC1n_Bkp1_OR OR L1_SingleJet20_ZDC1n_Bkp2_OR OR L1_SingleJet20_ZDC1n_Bkp3_OR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet20ZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nORSingleJet24 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_OR OR L1_SingleJet24_ZDC1n_Bkp1_OR OR L1_SingleJet24_ZDC1n_Bkp2_OR OR L1_SingleJet24_ZDC1n_Bkp3_OR" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPrePPRefUPCSingleJet24ZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC1nORSingleJet28 = cms.EDFilter( "HLTL1TSeed", +fragment.hltL1sZDC1nAsymXOR = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_OR OR L1_SingleJet28_ZDC1n_Bkp1_OR OR L1_SingleJet28_ZDC1n_Bkp2_OR OR L1_SingleJet28_ZDC1n_Bkp3_OR" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR OR L1_ZDC1n_Bkp1_AsymXOR OR L1_ZDC1n_Bkp2_AsymXOR OR L1_ZDC1n_Bkp3_AsymXOR" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -116139,13 +112623,13 @@ L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltPrePPRefUPCSingleJet28ZDC1nOR = cms.EDFilter( "HLTPrescaler", +fragment.hltPrePPRefUPCZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltL1sZDC1nAsymXOR = cms.EDFilter( "HLTL1TSeed", +fragment.hltL1sZDC1nORPRef = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR OR L1_ZDC1n_Bkp1_AsymXOR OR L1_ZDC1n_Bkp2_AsymXOR OR L1_ZDC1n_Bkp3_AsymXOR" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR OR L1_ZDC1n_Bkp1_OR OR L1_ZDC1n_Bkp2_OR OR L1_ZDC1n_Bkp3_OR" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -116156,13 +112640,13 @@ L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltPrePPRefUPCZDC1nAsymXOR = cms.EDFilter( "HLTPrescaler", +fragment.hltPrePPRefUPCZDC1nOR = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltL1sZDC1nORPRef = cms.EDFilter( "HLTL1TSeed", +fragment.hltL1sL1ZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR OR L1_ZDC1n_Bkp1_OR OR L1_ZDC1n_Bkp2_OR OR L1_ZDC1n_Bkp3_OR" ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInTrain" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -116173,7 +112657,7 @@ L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -fragment.hltPrePPRefUPCZDC1nOR = cms.EDFilter( "HLTPrescaler", +fragment.hltPrePPRefZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) @@ -119355,6 +115839,22 @@ fragment.hltCombinatorialcosmicseedfinderP5 = cms.EDProducer( "CtfSpecialSeedGenerator", SeedMomentum = cms.double( 5.0 ), ErrorRescaling = cms.double( 50.0 ), + UseScintillatorsConstraint = cms.bool( False ), + TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), + SeedsFromPositiveY = cms.bool( True ), + SeedsFromNegativeY = cms.bool( False ), + CheckHitsAreOnDifferentLayers = cms.bool( False ), + SetMomentum = cms.bool( True ), + requireBOFF = cms.bool( True ), + maxSeeds = cms.int32( 10000 ), + doClusterCheck = cms.bool( True ), + MaxNumberOfStripClusters = cms.uint32( 300 ), + ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), + MaxNumberOfPixelClusters = cms.uint32( 1000 ), + PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), + cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 20 ), + Charges = cms.vint32( -1 ), RegionFactoryPSet = cms.PSet( RegionPSet = cms.PSet( ptMin = cms.double( 0.9 ), @@ -119368,7 +115868,20 @@ ), ComponentName = cms.string( "GlobalRegionProducer" ) ), - Charges = cms.vint32( -1 ), + UpperScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( 300.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), + LowerScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( -100.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), OrderedHitsFactoryPSets = cms.VPSet( cms.PSet( LayerSrc = cms.InputTag( "hltCombinatorialcosmicseedingtripletsP5" ), NavigationDirection = cms.string( "outsideIn" ), @@ -119400,40 +115913,11 @@ PropagationDirection = cms.string( "alongMomentum" ), ComponentName = cms.string( "GenericPairGenerator" ) ) - ), - UseScintillatorsConstraint = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - SeedsFromPositiveY = cms.bool( True ), - SeedsFromNegativeY = cms.bool( False ), - doClusterCheck = cms.bool( True ), - ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), - MaxNumberOfStripClusters = cms.uint32( 300 ), - MaxNumberOfPixelClusters = cms.uint32( 1000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), - CheckHitsAreOnDifferentLayers = cms.bool( False ), - SetMomentum = cms.bool( True ), - requireBOFF = cms.bool( True ), - maxSeeds = cms.int32( 10000 ), - DontCountDetsAboveNClusters = cms.untracked.uint32( 20 ), - UpperScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( 300.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) - ), - LowerScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( -100.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) ) ) fragment.hltCombinedP5SeedsForCTF = cms.EDProducer( "SeedCombiner", seedCollections = cms.VInputTag( 'hltCombinatorialcosmicseedfinderP5','hltSimpleCosmicBONSeeds' ), - PairCollection = cms.untracked.InputTag( "hltCombinatorialcosmicseedfinderP5" ), - TripletCollection = cms.untracked.InputTag( "hltSimpleCosmicBONSeeds" ) + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltCkfTrackCandidatesP5 = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -119795,7 +116279,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_HT300_Beamspot_v23', 'HLT_HT60_Beamspot_v22', 'HLT_ZeroBias_Beamspot_v16' ) @@ -120138,7 +116622,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 80', + triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 40', 'HLT_BptxOR_v6', 'HLT_DoublePhoton85_v25', 'HLT_L1ETM120_v4', @@ -120172,8 +116656,8 @@ 'HLT_L1SingleJet90_v4', 'HLT_L1SingleMu7_v5', 'HLT_PFJet500_v33 / 3', - 'HLT_PPRefGEDPhoton30_v6', - 'HLT_PPRefL3SingleMu7_v8 / 80', + 'HLT_PPRefGEDPhoton30_v6 / 50', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Physics_v14 / 10' ) ) fragment.hltPreDatasetEventDisplay = cms.EDFilter( "HLTPrescaler", @@ -120186,7 +116670,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_HT300_Beamspot_PixelClusters_WP2_v7', 'HLT_HT300_Beamspot_v23', 'HLT_HT60_Beamspot_v22', @@ -120241,7 +116725,7 @@ 'HLT_L1SingleJet60_v4', 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17 / 3', 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27', - 'HLT_PPRefEle15Ele10GsfMass50_v6', + 'HLT_PPRefEle15Ele10GsfMass50_v6 / 12', 'HLT_PPRefL3SingleMu7_v8 / 80', 'HLT_PPRefUPC_ZDC1nOR_v1 / 8500', 'HLT_Physics_v14 / 2', @@ -120277,10 +116761,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) fragment.hltPreDatasetHIDQMOnlineBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120334,12 +116815,11 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14 / 15', - 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8 / 0', + triggerConditions = cms.vstring( 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8 / 0', 'HLT_HIDoubleEle15GsfMass50_v14', - 'HLT_HIDoubleGEDPhoton20_v7 / 65', + 'HLT_HIDoubleGEDPhoton20_v7 / 6', 'HLT_HIL1SingleMu5_SingleEG20Gsf_v7', - 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 25', + 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 6', 'HLT_HIL2DoubleMu0_M1p5to6_Open_v7 / 335', 'HLT_HIL3DoubleMu2_Quarkonia_Open_v7 / 200', 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', @@ -120356,10 +116836,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) fragment.hltPreDatasetHIExpressAlignment = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120372,7 +116849,6 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HICsAK4PFJet100Eta1p5_v14 / 3', 'HLT_HIEle20Gsf_v14 / 2', 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIL1NotBptxOR_v14', @@ -120385,14 +116861,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) fragment.hltPreDatasetHIExpressPhysics = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120405,9 +116881,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HICsAK4PFJet100Eta1p5_v14 / 3', - 'HLT_HIEle20Gsf_v14', - 'HLT_HIGEDPhoton40_v14 / 2', + 'HLT_HIEle20Gsf_v14 / 2', + 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1SingleMu0_Cosmic_v7 / 0', 'HLT_HIL1UnpairedBunchBptxMinus_v14 / 2', @@ -120418,14 +116893,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 5', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) fragment.hltPreDatasetHIExpressPhysicsRawPrime = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120440,6 +116915,8 @@ triggerConditions = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -120688,8 +117165,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HICsAK4PFJet100Eta1p5_v14 / 3', - 'HLT_HIEle20Gsf_v14 / 3', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 / 5', + 'HLT_HIEle20Gsf_v14 / 2', 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIHcalNZS_v14 / 3', 'HLT_HIHcalPhiSym_v14 / 3', @@ -120703,14 +117180,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 10', 'HLT_HIL3SingleMu5_v7 / 0', 'HLT_HIL3SingleMu7_v7 / 0', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 20', - 'HLT_HIMinimumBiasHF1AND_copy_v6 / 20', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 2', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7 / 3', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', - 'HLT_HIZeroBias_v14 / 3' ) + 'HLT_HIZeroBias_v14' ) ) fragment.hltPreDatasetHIOnlineMonitor = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120722,9 +117199,9 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 700', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 700', - 'HLT_HIMinimumBiasHF1AND_v7 / 700' ) + triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 5000', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 5000', + 'HLT_HIMinimumBiasHF1AND_v7 / 5000' ) ) fragment.hltPreDatasetHIMinimumBias0 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120748,15 +117225,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + triggerConditions = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -120900,7 +117369,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 8', + triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 20', 'HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29', 'HLT_Ele32_WPTight_Gsf_v25 / 5', 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', @@ -120908,11 +117377,14 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', 'HLT_L1SingleMuCosmics_CosmicTracking_v1', 'HLT_L1SingleMuCosmics_PointingCosmicTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -121451,8 +117923,8 @@ throw = cms.bool( True ), triggerConditions = ( cms.vstring( 'DQM_Random_v1', 'DQM_ZeroBias_v3', - 'HLT_AK4PFJet100_v8', - 'HLT_AK4PFJetFwd80_v8', + 'HLT_AK4PFJet100_v8 / 10', + 'HLT_AK4PFJetFwd80_v8 / 2', 'HLT_AK8DiPFJet250_250_SoftDropMass40_v6', 'HLT_AK8DiPFJet250_250_SoftDropMass50_v6', 'HLT_AK8DiPFJet260_260_SoftDropMass30_v6', @@ -121987,13 +118459,13 @@ 'HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31', 'HLT_PFMETTypeOne140_PFMHT140_IDTight_v23', 'HLT_PFMETTypeOne200_BeamHaloCleaned_v21', - 'HLT_PPRefDoubleEle10Gsf_v6', - 'HLT_PPRefEle30Gsf_v7', - 'HLT_PPRefGEDPhoton30_EB_v6', - 'HLT_PPRefGEDPhoton40_v6', - 'HLT_PPRefL3DoubleMu0_Open_v8', - 'HLT_PPRefL3DoubleMu0_v8', - 'HLT_PPRefL3SingleMu7_v8', + 'HLT_PPRefDoubleEle10Gsf_v6 / 50', + 'HLT_PPRefEle30Gsf_v7 / 5', + 'HLT_PPRefGEDPhoton30_EB_v6 / 20', + 'HLT_PPRefGEDPhoton40_v6 / 10', + 'HLT_PPRefL3DoubleMu0_Open_v8 / 0', + 'HLT_PPRefL3DoubleMu0_v8 / 200', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Photon100EBHE10_v12', 'HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3', 'HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5', @@ -122135,10 +118607,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -122226,6 +118694,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) ) fragment.hltPreDatasetPPRefZeroBiasPlusForward0 = cms.EDFilter( "HLTPrescaler", @@ -122606,6 +119075,78 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +fragment.hltDatasetVRRandom = cms.EDFilter( "TriggerResultsFilter", + usePathStatus = cms.bool( True ), + hltResults = cms.InputTag( "" ), + l1tResults = cms.InputTag( "" ), + l1tIgnoreMaskAndPrescale = cms.bool( False ), + throw = cms.bool( True ), + triggerConditions = cms.vstring( 'HLT_Random_HighRate_v1' ) +) +fragment.hltPreDatasetVRRandom0 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom1 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 1 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom2 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 2 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom3 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 3 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom4 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 4 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom5 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 5 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom6 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 6 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom7 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 7 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom8 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 8 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom9 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 9 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom10 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 10 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom11 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 11 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom12 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 12 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom13 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 13 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom14 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 14 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom15 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 15 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltDatasetZeroBias = cms.EDFilter( "TriggerResultsFilter", usePathStatus = cms.bool( True ), hltResults = cms.InputTag( "" ), @@ -123914,24 +120455,6 @@ fragment.HLTHIGEDPhoton60PPRefSequence = cms.Sequence( fragment.HLTDoFullUnpackingEgammaEcalSequence + fragment.HLTPFClusteringForEgamma + fragment.hltEgammaCandidates + fragment.hltEgammaCandidatesWrapper + fragment.hltEG60EtPPRefFilter + fragment.HLTDoLocalHcalWithTowerSequence + fragment.hltEgammaHoverE + fragment.hltEG60HoverELoosePPRefFilter ) fragment.HLTHIGEDPhoton60EBPPRefSequence = cms.Sequence( fragment.HLTDoFullUnpackingEgammaEcalSequence + fragment.HLTPFClusteringForEgamma + fragment.hltEgammaCandidates + fragment.hltEgammaCandidatesWrapper + fragment.hltEG60EtEBPPRefFilter + fragment.HLTDoLocalHcalWithTowerSequence + fragment.hltEgammaHoverE + fragment.hltEG60HoverELooseEBPPRefFilter ) fragment.HLTDoubleGEDPhoton20PPRefSequence = cms.Sequence( fragment.HLTDoFullUnpackingEgammaEcalSequence + fragment.HLTPFClusteringForEgamma + fragment.hltEgammaCandidates + fragment.hltEgammaCandidatesWrapper + fragment.hltDoubleEG20EtPPRefFilter + fragment.HLTDoLocalHcalWithTowerSequence + fragment.hltEgammaHoverE + fragment.hltDoubleEG20HoverELoosePPRefFilter ) -fragment.HLTDoLocalPixelSequenceForPFPPRefForDmeson = cms.Sequence( fragment.HLTDoLocalPixelSequence + fragment.hltSiPixelClustersCache ) -fragment.HLTFullIterativeTrackingIteration0PreSplittingPPRefForDmeson = cms.Sequence( fragment.hltFullIter0PixelQuadrupletsPreSplittingPPRefForDmeson + fragment.hltFullIter0PixelTrackingRegionsPreSplittingPPRefForDmeson + fragment.hltFullIter0PixelClusterCheckPreSplittingPPRefForDmeson + fragment.hltFullIter0PixelHitDoubletsPreSplittingPPRefForDmeson + fragment.hltFullIter0PixelHitQuadrupletsPreSplittingPPRefForDmeson + fragment.hltFullIter0PixelSeedsPreSplittingPPRefForDmeson + fragment.hltFullIter0CkfTrackCandidatesPreSplittingPPRefForDmeson + fragment.hltFullIter0CtfWithMaterialTracksPreSplittingPPRefForDmeson + fragment.hltFullIter0PrimaryVerticesPreSplittingPPRefForDmeson ) -fragment.HLTDoLocalPixelSequenceAfterSplittingPPRefForDmeson = cms.Sequence( fragment.hltSiPixelClustersAfterSplittingPPRefForDmeson + fragment.hltSiPixelClustersCacheAfterSplittingPPRefForDmeson + fragment.hltSiPixelRecHitsAfterSplittingPPRefForDmeson ) -fragment.HLTDoLocalStripSequenceFullPPRefForDmeson = cms.Sequence( fragment.hltSiStripExcludedFEDListProducer + fragment.hltAfterSplittingMeasureTrackerEventForDmeson + fragment.hltSiStripMatchedRecHitsFullPPRef ) -fragment.HLTPixelClusterSplittingForPFPPRefForDmeson = cms.Sequence( fragment.hltJetsForCoreTracking + fragment.HLTDoLocalPixelSequenceForPFPPRefForDmeson + fragment.HLTDoLocalPixelSequence + fragment.HLTDoLocalStripSequence + fragment.HLTFullIterativeTrackingIteration0PreSplittingPPRefForDmeson + fragment.HLTDoLocalPixelSequenceAfterSplittingPPRefForDmeson + fragment.HLTDoLocalStripSequenceFullPPRefForDmeson ) -fragment.HLTFullIterativeTrackingIteration0PPRefForDmeson = cms.Sequence( fragment.hltFullIter0PixelQuadrupletsPPRefForDmeson + fragment.hltFullIter0PixelTrackingRegionsPPRefForDmeson + fragment.hltFullIter0PixelClusterCheckPPRefForDmeson + fragment.hltFullIter0PixelHitDoubletsPPRefForDmeson + fragment.hltFullIter0PixelHitQuadrupletsPPRefForDmeson + fragment.hltFullIter0PixelSeedsPPRefForDmeson + fragment.hltFullIter0CkfTrackCandidatesPPRefForDmeson + fragment.hltFullIter0CtfWithMaterialTracksPPRefForDmeson + fragment.hltFullIter0PrimaryVerticesPPRefForDmeson + fragment.hltFullIter0TrackDNNClassifierPPRefForDmeson + fragment.hltFullIter0HighPurityTracksPPRefForDmeson ) -fragment.HLTFullIterativeTrackingIteration1PPRefForDmeson = cms.Sequence( fragment.hltFullIter1ClustersRefRemovalPPRefForDmeson + fragment.hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson + fragment.hltFullIter1PixelQuadrupletsPPRefForDmeson + fragment.hltFullIter1PixelTrackingRegionsPPRefForDmeson + fragment.hltFullIter1PixelClusterCheckPPRefForDmeson + fragment.hltFullIter1PixelHitDoubletsPPRefForDmeson + fragment.hltFullIter1PixelHitQuadrupletsPPRefForDmeson + fragment.hltFullIter1PixelSeedsPPRefForDmeson + fragment.hltFullIter1CkfTrackCandidatesPPRefForDmeson + fragment.hltFullIter1CtfWithMaterialTracksPPRefForDmeson + fragment.hltFullIter1TrackDNNClassifierPPRefForDmeson + fragment.hltFullIter1HighPurityTracksPPRefForDmeson ) -fragment.HLTFullIterativeTrackingIteration2PPRefForDmeson = cms.Sequence( fragment.hltFullIter2ClustersRefRemovalPPRefForDmeson + fragment.hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson + fragment.hltFullIter2PixelTripletsPPRefForDmeson + fragment.hltFullIter2PixelTrackingRegionsPPRefForDmeson + fragment.hltFullIter2PixelClusterCheckPPRefForDmeson + fragment.hltFullIter2PixelHitDoubletsPPRefForDmeson + fragment.hltFullIter2PixelHitTripletsPPRefForDmeson + fragment.hltFullIter2PixelSeedsPPRefForDmeson + fragment.hltFullIter2CkfTrackCandidatesPPRefForDmeson + fragment.hltFullIter2CtfWithMaterialTracksPPRefForDmeson + fragment.hltFullIter2TrackDNNClassifierPPRefForDmeson + fragment.hltFullIter2HighPurityTracksPPRefForDmeson ) -fragment.HLTFullIterativeTrackingIteration3PPRef = cms.Sequence( fragment.hltFullIter3ClustersRefRemovalPPRef + fragment.hltFullIter3MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter3PixelTripletsPPRef + fragment.hltFullIter3PixelTrackingRegionsPPRef + fragment.hltFullIter3PixelClusterCheckPPRef + fragment.hltFullIter3PixelHitDoubletsPPRef + fragment.hltFullIter3PixelHitTripletsPPRef + fragment.hltFullIter3PixelSeedsPPRef + fragment.hltFullIter3CkfTrackCandidatesPPRef + fragment.hltFullIter3CtfWithMaterialTracksPPRef + fragment.hltFullIter3TrackDNNClassifierPPRef + fragment.hltFullIter3HighPurityTracksPPRef ) -fragment.HLTFullIterativeTrackingIteration4PPRef = cms.Sequence( fragment.hltFullIter4ClustersRefRemovalPPRef + fragment.hltFullIter4MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter4PixelQuadrupletsPPRef + fragment.hltFullIter4PixelTrackingRegionsPPRef + fragment.hltFullIter4PixelClusterCheckPPRef + fragment.hltFullIter4PixelHitDoubletsPPRef + fragment.hltFullIter4PixelHitQuadrupletsPPRef + fragment.hltFullIter4PixelSeedsPPRef + fragment.hltFullIter4CkfTrackCandidatesPPRef + fragment.hltFullIter4CtfWithMaterialTracksPPRef + fragment.hltFullIter4TrackDNNClassifierPPRef + fragment.hltFullIter4HighPurityTracksPPRef ) -fragment.HLTFullIterativeTrackingIteration5PPRef = cms.Sequence( fragment.hltFullIter5ClustersRefRemovalPPRef + fragment.hltFullIter5MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter5PixelTripletsPPRef + fragment.hltFullIter5PixelTrackingRegionsPPRef + fragment.hltFullIter5PixelClusterCheckPPRef + fragment.hltFullIter5PixelHitDoubletsPPRef + fragment.hltFullIter5PixelHitTripletsPPRef + fragment.hltFullIter5PixelSeedsPPRef + fragment.hltFullIter5CkfTrackCandidatesPPRef + fragment.hltFullIter5CtfWithMaterialTracksPPRef + fragment.hltFullIter5TrackDNNClassifierPPRef + fragment.hltFullIter5HighPurityTracksPPRef ) -fragment.HLTFullIterativeTrackingIteration6PPRef = cms.Sequence( fragment.hltFullIter6ClustersRefRemovalPPRef + fragment.hltFullIter6MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter6PixelClusterCheckPPRef + fragment.hltFullIter6PixelTrackingRegionSeedLayersBPPRef + fragment.hltFullIter6PixelHitDoubletsBPPRef + fragment.hltFullIter6PixelSeedsBPPRef + fragment.hltFullIter6CkfTrackCandidatesPPRef + fragment.hltFullIter6CtfWithMaterialTracksPPRef + fragment.hltFullIter6TrackDNNClassifierPPRef + fragment.hltFullIter6HighPurityTracksPPRef ) -fragment.HLTFullIterativeTrackingIteration7PPRef = cms.Sequence( fragment.hltFullIter7ClustersRefRemovalPPRef + fragment.hltFullIter7MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter7MixedLayersAPPRef + fragment.hltFullIter7MixedTrackingRegionsAPPRef + fragment.hltFullIter7MixedClusterCheckPPRef + fragment.hltFullIter7MixedHitDoubletsAPPRef + fragment.hltFullIter7MixedHitTripletsAPPRef + fragment.hltFullIter7MixedSeedsAPPRef + fragment.hltFullIter7MixedLayersBPPRef + fragment.hltFullIter7MixedTrackingRegionsBPPRef + fragment.hltFullIter7MixedHitDoubletsBPPRef + fragment.hltFullIter7MixedHitTripletsBPPRef + fragment.hltFullIter7MixedSeedsBPPRef + fragment.hltFullIter7MixedSeedsPPRef + fragment.hltFullIter7CkfTrackCandidatesPPRef + fragment.hltFullIter7CtfWithMaterialTracksPPRef + fragment.hltFullIter7TrackDNNClassifierPPRef + fragment.hltFullIter7HighPurityTracksPPRef ) -fragment.HLTFullIterativeTrackingIteration8PPRef = cms.Sequence( fragment.hltFullIter8ClustersRefRemovalPPRef + fragment.hltFullIter8MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter8PixelLessLayersPPRef + fragment.hltFullIter8PixelLessTrackingRegionsPPRef + fragment.hltFullIter8PixelLessClusterCheckPPRef + fragment.hltFullIter8PixelLessHitDoubletsPPRef + fragment.hltFullIter8PixelLessHitTripletsPPRef + fragment.hltFullIter8PixelLessSeedsPPRef + fragment.hltFullIter8CkfTrackCandidatesPPRef + fragment.hltFullIter8CtfWithMaterialTracksPPRef + fragment.hltFullIter8TrackDNNClassifierPPRef + fragment.hltFullIter8HighPurityTracksPPRef ) -fragment.HLTFullIterativeTrackingIteration9PPRef = cms.Sequence( fragment.hltFullIter9ClustersRefRemovalPPRef + fragment.hltFullIter9MaskedMeasurementTrackerEventPPRef + fragment.hltFullIter9TobTecLayersTriplPPRef + fragment.hltFullIter9TobTecTrackingRegionsTriplPPRef + fragment.hltFullIter9TobTecClusterCheckPPRef + fragment.hltFullIter9TobTecHitDoubletsTriplPPRef + fragment.hltFullIter9TobTecHitTripletsTriplPPRef + fragment.hltFullIter9TobTecSeedsTriplPPRef + fragment.hltFullIter9TobTecLayersPairPPRef + fragment.hltFullIter9TobTecTrackingRegionsPairPPRef + fragment.hltFullIter9TobTecHitDoubletsPairPPRef + fragment.hltFullIter9TobTecSeedsPairPPRef + fragment.hltFullIter9TobTecSeedsPPRef + fragment.hltFullIter9CkfTrackCandidatesPPRef + fragment.hltFullIter9CtfWithMaterialTracksPPRef + fragment.hltFullIter9TrackDNNClassifierPPRef ) -fragment.HLTFullIterativeTrackingIteration10PPRef = cms.Sequence( fragment.hltFullIter10JetCoreLayersPPRef + fragment.hltFullIter10JetCoreRegionSeedsPPRef + fragment.hltFullIter10CkfTrackCandidatesPPRef + fragment.hltFullIter10CtfWithMaterialTracksPPRef + fragment.hltFullIter10TrackDNNClassifierPPRef ) -fragment.HLTFullIterativeTrackingPPRefForDmeson = cms.Sequence( fragment.HLTFullIterativeTrackingIteration0PPRefForDmeson + fragment.HLTFullIterativeTrackingIteration1PPRefForDmeson + fragment.HLTFullIterativeTrackingIteration2PPRefForDmeson + fragment.HLTFullIterativeTrackingIteration3PPRef + fragment.HLTFullIterativeTrackingIteration4PPRef + fragment.HLTFullIterativeTrackingIteration5PPRef + fragment.HLTFullIterativeTrackingIteration6PPRef + fragment.HLTFullIterativeTrackingIteration7PPRef + fragment.HLTFullIterativeTrackingIteration8PPRef + fragment.HLTFullIterativeTrackingIteration9PPRef + fragment.HLTFullIterativeTrackingIteration10PPRef + fragment.hltFullIterativeTrackingMergedPPRefForDmeson ) -fragment.HLTFullTracksForDmesonPPRef = cms.Sequence( fragment.hltGoodHighPurityFullTracksForDmesonPPRef + fragment.hltFullCandsPPRef + fragment.hltFullTrackFilterForDmesonPPRef ) fragment.HLTNoPUSequence = cms.Sequence( fragment.HLTDoLocalPixelSequence + fragment.HLTRecopixelvertexingSequence + fragment.hltSelectorJets20L1FastJetForNoPU + fragment.hltCaloJetFromPV ) fragment.HLTEgammaOpenSequence = cms.Sequence( fragment.HLTDoFullUnpackingEgammaEcalSequence + fragment.HLTPFClusteringForEgamma + fragment.hltEgammaCandidates + fragment.hltEgammaClusterShape + fragment.hltEgammaR9ID + fragment.HLTDoLocalHcalSequence + fragment.HLTFastJetForEgamma + fragment.hltEgammaHoverE + fragment.hltEgammaEcalPFClusterIso + fragment.HLTPFHcalClustering + fragment.hltEgammaHcalPFClusterIso + fragment.HLTTrackReconstructionForIsoForPhotons + fragment.hltEgammaHollowTrackIso + fragment.HLTElePixelMatchSequence + fragment.HLTGsfElectronSequence + fragment.HLTTrackReconstructionForIsoElectronIter02 + fragment.hltEgammaEleGsfTrackIso ) fragment.HLTElePixelMatchUnseededSequenceForBParking = cms.Sequence( fragment.HLTDoLocalPixelSequence + fragment.HLTDoLocalStripSequence + fragment.hltPixelLayerPairs + fragment.hltPixelLayerTriplets + fragment.hltEgammaHoverEUnseeded + fragment.hltEgammaSuperClustersToPixelMatchUnseeded + fragment.hltEleSeedsTrackingRegionsUnseeded + fragment.hltElePixelHitDoubletsUnseeded + fragment.hltElePixelHitDoubletsForTripletsUnseeded + fragment.hltElePixelHitTripletsUnseeded + fragment.hltElePixelSeedsDoubletsUnseeded + fragment.hltElePixelSeedsTripletsUnseeded + fragment.hltElePixelSeedsCombinedUnseeded + fragment.hltEgammaElectronPixelSeedsForBParkingUnseeded + fragment.hltEgammaPixelMatchVarsForBParkingUnseeded ) @@ -124090,6 +120613,7 @@ fragment.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleAndDoubleEGor + fragment.hltPreEle32WPTightGsfL1DoubleEG + fragment.HLTEle32L1DoubleEGWPTightGsfSequence + fragment.HLTEndSequence ) fragment.HLT_IsoMu20_v27 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu18 + fragment.hltPreIsoMu20 + fragment.hltL1fL1sMu18L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sMu18L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu18L1Filtered0) + fragment.hltL3fL1sMu18L1f0L2f10QL3Filtered20Q + fragment.HLTMu20IsolationSequence + fragment.hltL3crIsoL1sMu18L1f0L2f10QL3f20QL3trkIsoFiltered + fragment.HLTEndSequence ) fragment.HLT_IsoMu24_v25 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22 + fragment.hltPreIsoMu24 + fragment.hltL1fL1sMu22L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22L1Filtered0) + fragment.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + fragment.HLTMu24IsolationSequence + fragment.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + fragment.HLTEndSequence ) +fragment.HLT_IsoMu24_HLTTracking_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22 + fragment.hltPreIsoMu24HLTTracking + fragment.hltL1fL1sMu22L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22L1Filtered0) + fragment.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + fragment.HLTMu24IsolationSequence + fragment.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.HLT_IsoMu24_eta2p1_v27 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22 + fragment.hltPreIsoMu24eta2p1 + fragment.hltL1fL1sMu22erL1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sSingleMu22erL1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22erL1Filtered0) + fragment.hltL3fL1sSingleMu22erL1f0L2f10QL3Filtered24Q + fragment.HLTMu24Eta2p1IsolationSequence + fragment.hltL3crIsoL1sSingleMu22erL1f0L2f10QL3f24QL3trkIsoFiltered + fragment.HLTEndSequence ) fragment.HLT_IsoMu27_v28 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22or25 + fragment.hltPreIsoMu27 + fragment.hltL1fL1sMu22or25L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sMu22or25L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22or25L1Filtered0) + fragment.hltL3fL1sMu22Or25L1f0L2f10QL3Filtered27Q + fragment.HLTMu27IsolationSequence + fragment.hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered + fragment.HLTEndSequence ) fragment.HLT_UncorrectedJetE30_NoBPTX_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sV0SingleJetC20NotBptxOR + fragment.hltPreUncorrectedJetE30NoBPTX + fragment.HLTStoppedHSCPLocalHcalReco + fragment.HLTStoppedHSCPJetSequence + fragment.hltStoppedHSCP1CaloJetEnergy30 + fragment.HLTEndSequence ) @@ -124115,11 +120639,13 @@ fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVL + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.HLTEndSequence ) fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVL + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered9 + fragment.hltL3fL1DoubleMu155fFiltered19 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon199RelTrkIsoVVLFiltered + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZ + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.HLTEndSequence ) +fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered9 + fragment.hltL3fL1DoubleMu155fFiltered19 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon199RelTrkIsoVVLFiltered + fragment.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8PFJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK4CaloJetsSequence + fragment.hltSingleCaloJet10 + fragment.HLTAK4PFJetsSequence + fragment.hltPFJetsCorrectedMatchedToCaloJets10 + fragment.hltSinglePFJet30 + fragment.HLTEndSequence ) fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZMass8 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered9 + fragment.hltL3fL1DoubleMu155fFiltered19 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon199RelTrkIsoVVLFiltered + fragment.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon199Mass8Filtered + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass3p8Filtered + fragment.HLTEndSequence ) +fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass3p8Filtered + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK4CaloJetsSequence + fragment.hltSingleCaloJet30 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8PFJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK8CaloJetsSequence + fragment.hltSingleCaloJet10AK8 + fragment.HLTAK8PFJetsSequence + fragment.hltPFJetsCorrectedMatchedToCaloJets10AK8 + fragment.hltSinglePFJet30AK8 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8CaloJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK8CaloJetsSequence + fragment.hltSingleCaloJet30AK8 + fragment.HLTEndSequence ) @@ -124732,14 +121258,12 @@ fragment.HLT_HIZeroBias_HighRateRAW_v4 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZeroBiasCopy + fragment.hltPreHIZeroBiasHighRateRAW + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1AND_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1AND + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1AND_copy_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDcopy + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HIMinimumBiasHF1AND_Beamspot_v8 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC1nOR + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC2nOR + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC1nORcopy + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC2nORcopy + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) -fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) fragment.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND + fragment.hltPreHICentrality30100FirstCollisionAfterAbortGap + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) +fragment.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND + fragment.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) fragment.HLT_HIL1Centrality30_50_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1Centrality30to50BptxAND + fragment.hltPreHIL1Centrality3050 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIL1_UCC_0_0p5_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sUCC00p5 + fragment.hltPreHIL1UCC00p5 + fragment.HLTDoLocalHcalSequence + fragment.hltTowerMakerForHf + fragment.hltCaloMETProducerForHf + fragment.hltGlobalSumsETHfMaxFilter + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIL1_UCC_0_1_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sUCC01 + fragment.hltPreHIL1UCC01 + fragment.HLTDoLocalHcalSequence + fragment.hltTowerMakerForHf + fragment.hltCaloMETProducerForHf + fragment.hltGlobalSumsETHfMaxFilter + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) @@ -124758,15 +121282,6 @@ fragment.HLT_HIPuAK4CaloJet80Fwd_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet64FwdBptxAND + fragment.hltPreHIPuAK4CaloJet80Fwd + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet80Fwd + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIPuAK4CaloJet100Fwd_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet64FwdBptxAND + fragment.hltPreHIPuAK4CaloJet100Fwd + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet100Fwd + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIPuAK4CaloJet120Fwd_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet64FwdBptxAND + fragment.hltPreHIPuAK4CaloJet120Fwd + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet120Fwd + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet60Eta1p5_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet44BptxAND + fragment.hltPreHICsAK4PFJet60Eta1p5 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet60Eta1p5 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets60 + fragment.hltSingleCsPFJet60Eta1p5 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet60Eta2p1_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet44BptxAND + fragment.hltPreHICsAK4PFJet60Eta2p1 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet60Eta2p1 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets60Eta2p1 + fragment.hltSingleCsPFJet60Eta2p1 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet80Eta1p5_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet60BptxAND + fragment.hltPreHICsAK4PFJet80Eta1p5 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet70Eta1p5 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets70 + fragment.hltSingleCsPFJet80Eta1p5 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet80Eta2p1_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet60BptxAND + fragment.hltPreHICsAK4PFJet80Eta2p1 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet70Eta2p1 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets70Eta2p1 + fragment.hltSingleCsPFJet80Eta2p1 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet100Eta1p5_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet60BptxAND + fragment.hltPreHICsAK4PFJet100Eta1p5 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet80Eta1p5 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets80 + fragment.hltSingleCsPFJet100Eta1p5 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet60BptxAND + fragment.hltPreHICsAK4PFJet100Eta1p5Beamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet80Eta1p5 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets80 + fragment.hltSingleCsPFJet100Eta1p5 + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet100Eta2p1_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet60BptxAND + fragment.hltPreHICsAK4PFJet100Eta2p1 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet80Eta2p1 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets80Eta2p1 + fragment.hltSingleCsPFJet100Eta2p1 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet120Eta1p5_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet80BptxAND + fragment.hltPreHICsAK4PFJet120Eta1p5 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet90Eta1p5 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets90 + fragment.hltSingleCsPFJet120Eta1p5 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HICsAK4PFJet120Eta2p1_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet80BptxAND + fragment.hltPreHICsAK4PFJet120Eta2p1 + fragment.HLTPuAK4CaloJetsSequence + fragment.hltSinglePuAK4CaloJet90Eta2p1 + fragment.HLTCsAK4PFJetsSequence + fragment.hltCsPFJetsCorrectedMatchedToPuCaloJets90Eta2p1 + fragment.hltSingleCsPFJet120Eta2p1 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIGEDPhoton10_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1SingleEG7BptxAND + fragment.hltPreHIGEDPhoton10 + fragment.HLTHIGEDPhoton10PPOnAASequence + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIGEDPhoton10_EB_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1SingleEG7BptxAND + fragment.hltPreHIGEDPhoton10EB + fragment.HLTHIGEDPhoton10EBPPOnAASequence + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIGEDPhoton20_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1SingleEG7BptxAND + fragment.hltPreHIGEDPhoton20 + fragment.HLTHIGEDPhoton20PPOnAASequence + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) @@ -124845,6 +121360,8 @@ fragment.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG2BptxAND + fragment.hltPreHIUPCDoubleEG2BptxANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.hltPixelActivityFilterMaxClusters1e3 + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG2NotHF2AND + fragment.hltPreHIUPCDoubleEG2NotMBHF2ANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG2NotHF2AND + fragment.hltPreHIUPCDoubleEG2NotMBHF2AND + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) +fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG3NotHF2AND + fragment.hltPreHIUPCDoubleEG3NotMBHF2AND + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) +fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG3NotHF2AND + fragment.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG5BptxAND + fragment.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.hltPixelActivityFilterMaxClusters1e3 + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG5NotHF2AND + fragment.hltPreHIUPCDoubleEG5NotMBHF2ANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG5NotHF2AND + fragment.hltPreHIUPCDoubleEG5NotMBHF2AND + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) @@ -125069,10 +121586,6 @@ fragment.HLT_PPRefCscCluster_Loose_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMuShowerOneNominal + fragment.hltPrePPRefCscClusterLoose + fragment.HLTMuonLocalRecoSequence + fragment.hltCSCrechitClusters + fragment.hltCscClusterLoosePPRef + fragment.HLTEndSequence ) fragment.HLT_PPRefCscCluster_Medium_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMuShowerOneNominal + fragment.hltPrePPRefCscClusterMedium + fragment.HLTMuonLocalRecoSequence + fragment.hltCSCrechitClusters + fragment.hltCscClusterMediumPPRef + fragment.HLTEndSequence ) fragment.HLT_PPRefCscCluster_Tight_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMuShowerOneNominal + fragment.hltPrePPRefCscClusterTight + fragment.HLTMuonLocalRecoSequence + fragment.hltCSCrechitClusters + fragment.hltCscClusterTightPPRef + fragment.HLTEndSequence ) -fragment.HLT_PPRefDmesonTrackingGlobal_Dpt25_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet24 + fragment.hltPrePPRefDmesonTrackingGlobalDpt25 + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTPixelClusterSplittingForPFPPRefForDmeson + fragment.HLTFullIterativeTrackingPPRefForDmeson + fragment.hltFullOnlinePrimaryVerticesPPRefForDmeson + fragment.HLTFullTracksForDmesonPPRef + fragment.hltTkTkVtxForDmesonDpt25PPRef + fragment.hltTkTkFilterForDmesonDpt25PPRef + fragment.HLTEndSequence ) -fragment.HLT_PPRefDmesonTrackingGlobal_Dpt35_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet35 + fragment.hltPrePPRefDmesonTrackingGlobalDpt35 + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTPixelClusterSplittingForPFPPRefForDmeson + fragment.HLTFullIterativeTrackingPPRefForDmeson + fragment.hltFullOnlinePrimaryVerticesPPRefForDmeson + fragment.HLTFullTracksForDmesonPPRef + fragment.hltTkTkVtxForDmesonDpt35PPRef + fragment.hltTkTkFilterForDmesonDpt35PPRef + fragment.HLTEndSequence ) -fragment.HLT_PPRefDmesonTrackingGlobal_Dpt45_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet44 + fragment.hltPrePPRefDmesonTrackingGlobalDpt45 + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTPixelClusterSplittingForPFPPRefForDmeson + fragment.HLTFullIterativeTrackingPPRefForDmeson + fragment.hltFullOnlinePrimaryVerticesPPRefForDmeson + fragment.HLTFullTracksForDmesonPPRef + fragment.hltTkTkVtxForDmesonDpt45PPRef + fragment.hltTkTkFilterForDmesonDpt45PPRef + fragment.HLTEndSequence ) -fragment.HLT_PPRefDmesonTrackingGlobal_Dpt60_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleJet60 + fragment.hltPrePPRefDmesonTrackingGlobalDpt60 + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTPixelClusterSplittingForPFPPRefForDmeson + fragment.HLTFullIterativeTrackingPPRefForDmeson + fragment.hltFullOnlinePrimaryVerticesPPRefForDmeson + fragment.HLTFullTracksForDmesonPPRef + fragment.hltTkTkVtxForDmesonDpt60PPRef + fragment.hltTkTkFilterForDmesonDpt60PPRef + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nAsymXORSingleJet8 + fragment.hltPrePPRefUPCSingleJet8ZDC1nAsymXOR + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nAsymXORSingleJet12 + fragment.hltPrePPRefUPCSingleJet12ZDC1nAsymXOR + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nAsymXORSingleJet16 + fragment.hltPrePPRefUPCSingleJet16ZDC1nAsymXOR + fragment.HLTEndSequence ) @@ -125087,6 +121600,7 @@ fragment.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORSingleJet28 + fragment.hltPrePPRefUPCSingleJet28ZDC1nOR + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_ZDC1nAsymXOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nAsymXOR + fragment.hltPrePPRefUPCZDC1nAsymXOR + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_ZDC1nOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORPRef + fragment.hltPrePPRefUPCZDC1nOR + fragment.HLTEndSequence ) +fragment.HLT_PPRefZeroBias_FirstCollisionInTrain_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1ZeroBiasFirstCollisionInTrain + fragment.hltPrePPRefZeroBiasFirstCollisionInTrain + fragment.HLTEndSequence ) fragment.MC_ReducedIterativeTracking_v22 = cms.Path( fragment.HLTBeginSequence + fragment.hltPreMCReducedIterativeTracking + fragment.HLTDoLocalPixelSequence + fragment.HLTRecopixelvertexingSequence + fragment.HLTDoLocalStripSequence + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.MC_AK4CaloJets_v19 = cms.Path( fragment.HLTBeginSequence + fragment.hltPreMCAK4CaloJets + fragment.HLTAK4CaloJetsSequence + fragment.hltCaloJetCollection20Filter + fragment.HLTEndSequence ) fragment.MC_AK4CaloJetsFromPV_v18 = cms.Path( fragment.HLTBeginSequence + fragment.hltPreMCAK4CaloJetsFromPV + fragment.HLTAK4CaloJetsSequence + fragment.HLTNoPUSequence + fragment.hltCaloJetFromPVCollection20Filter + fragment.hltHtMhtFromPVForMC + fragment.hltCaloHtMhtFromPVOpenFilter + fragment.HLTEndSequence ) @@ -125309,6 +121823,22 @@ fragment.Dataset_Tau = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetTau + fragment.hltPreDatasetTau ) fragment.Dataset_TestEnablesEcalHcal = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetTestEnablesEcalHcal + fragment.hltPreDatasetTestEnablesEcalHcal ) fragment.Dataset_TestEnablesEcalHcalDQM = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetTestEnablesEcalHcalDQM + fragment.hltPreDatasetTestEnablesEcalHcalDQM ) +fragment.Dataset_VRRandom0 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom0 ) +fragment.Dataset_VRRandom1 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom1 ) +fragment.Dataset_VRRandom2 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom2 ) +fragment.Dataset_VRRandom3 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom3 ) +fragment.Dataset_VRRandom4 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom4 ) +fragment.Dataset_VRRandom5 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom5 ) +fragment.Dataset_VRRandom6 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom6 ) +fragment.Dataset_VRRandom7 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom7 ) +fragment.Dataset_VRRandom8 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom8 ) +fragment.Dataset_VRRandom9 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom9 ) +fragment.Dataset_VRRandom10 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom10 ) +fragment.Dataset_VRRandom11 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom11 ) +fragment.Dataset_VRRandom12 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom12 ) +fragment.Dataset_VRRandom13 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom13 ) +fragment.Dataset_VRRandom14 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom14 ) +fragment.Dataset_VRRandom15 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom15 ) fragment.Dataset_ZeroBias = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetZeroBias + fragment.hltPreDatasetZeroBias ) fragment.ScoutingPFOutput = cms.FinalPath( ) fragment.Dataset_SpecialRandom0 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetSpecialRandom + fragment.hltPreDatasetSpecialRandom0 ) @@ -125486,7 +122016,7 @@ fragment.Dataset_HIPhysicsRawPrime59 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetHIPhysicsRawPrime + fragment.hltPreDatasetHIPhysicsRawPrime59 ) -fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_EcalPhiSymForHI_v12, fragment.AlCa_EcalEtaEBonly_v25, fragment.AlCa_EcalEtaEEonly_v25, fragment.AlCa_EcalPi0EBonly_v25, fragment.AlCa_EcalPi0EEonly_v25, fragment.AlCa_EcalEtaEBonlyForHI_v13, fragment.AlCa_EcalEtaEEonlyForHI_v13, fragment.AlCa_EcalPi0EBonlyForHI_v13, fragment.AlCa_EcalPi0EEonlyForHI_v13, fragment.AlCa_HIEcalEtaEBonly_v12, fragment.AlCa_HIEcalEtaEEonly_v12, fragment.AlCa_HIEcalPi0EBonly_v12, fragment.AlCa_HIEcalPi0EEonly_v12, fragment.AlCa_RPCMuonNormalisation_v23, fragment.AlCa_RPCMuonNormalisationForHI_v11, fragment.AlCa_HIRPCMuonNormalisation_v11, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.AlCa_PFJet40_v32, fragment.AlCa_PFJet40_CPUOnly_v11, fragment.AlCa_AK8PFJet40_v27, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DQM_HIPixelReconstruction_v12, fragment.DQM_HIEcalReconstruction_v10, fragment.DQM_HIHcalReconstruction_v8, fragment.DQM_Random_v1, fragment.DQM_ZeroBias_v3, fragment.DST_ZeroBias_v11, fragment.DST_Physics_v16, fragment.DST_PFScouting_DoubleMuon_v6, fragment.DST_PFScouting_DoubleEG_v6, fragment.DST_PFScouting_JetHT_v6, fragment.DST_PFScouting_AXOVLoose_v4, fragment.DST_PFScouting_AXOLoose_v4, fragment.DST_PFScouting_AXONominal_v6, fragment.DST_PFScouting_AXOTight_v6, fragment.DST_PFScouting_AXOVTight_v4, fragment.DST_PFScouting_CICADAVLoose_v2, fragment.DST_PFScouting_CICADALoose_v2, fragment.DST_PFScouting_CICADAMedium_v2, fragment.DST_PFScouting_CICADATight_v2, fragment.DST_PFScouting_CICADAVTight_v2, fragment.DST_PFScouting_SingleMuon_v6, fragment.DST_PFScouting_SinglePhotonEB_v3, fragment.DST_PFScouting_ZeroBias_v4, fragment.HLT_EphemeralPhysics_v9, fragment.HLT_EphemeralZeroBias_v9, fragment.HLT_HIEphemeralPhysics_v5, fragment.HLT_HIEphemeralZeroBias_v5, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Alignment_v8, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_IsolatedBunches_v12, fragment.HLT_ZeroBias_FirstBXAfterTrain_v10, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_ZeroBias_FirstCollisionInTrain_v11, fragment.HLT_ZeroBias_LastCollisionInTrain_v10, fragment.HLT_HT300_Beamspot_v23, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_PFJet40_GPUvsCPU_v7, fragment.HLT_AK8PFJet380_SoftDropMass30_v6, fragment.HLT_AK8PFJet400_SoftDropMass30_v6, fragment.HLT_AK8PFJet425_SoftDropMass30_v6, fragment.HLT_AK8PFJet450_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, fragment.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, fragment.HLT_CaloJet500_NoJetID_v22, fragment.HLT_CaloJet550_NoJetID_v17, fragment.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, fragment.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, fragment.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, fragment.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, fragment.HLT_DoubleEle25_CaloIdL_MW_v15, fragment.HLT_DoubleEle27_CaloIdL_MW_v15, fragment.HLT_DoubleEle33_CaloIdL_MW_v28, fragment.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, fragment.HLT_Mu27_Ele37_CaloIdL_MW_v17, fragment.HLT_Mu37_Ele27_CaloIdL_MW_v17, fragment.HLT_Mu37_TkMu27_v17, fragment.HLT_DoubleMu4_3_Bs_v27, fragment.HLT_DoubleMu4_3_Jpsi_v27, fragment.HLT_DoubleMu4_3_LowMass_v13, fragment.HLT_DoubleMu4_LowMass_Displaced_v13, fragment.HLT_Mu0_L1DoubleMu_v13, fragment.HLT_Mu4_L1DoubleMu_v13, fragment.HLT_DoubleMu2_Jpsi_LowPt_v6, fragment.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu3_Trk_Tau3mu_v24, fragment.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, fragment.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, fragment.HLT_DoubleMu4_MuMuTrk_Displaced_v27, fragment.HLT_Mu3_PFJet40_v28, fragment.HLT_Mu7p5_L2Mu2_Jpsi_v22, fragment.HLT_Mu7p5_L2Mu2_Upsilon_v22, fragment.HLT_Mu3_L1SingleMu5orSingleMu7_v13, fragment.HLT_Mu0_Barrel_v6, fragment.HLT_Mu0_Barrel_L1HP6_v3, fragment.HLT_Mu0_Barrel_L1HP7_v3, fragment.HLT_Mu0_Barrel_L1HP8_v4, fragment.HLT_Mu0_Barrel_L1HP9_v4, fragment.HLT_Mu0_Barrel_L1HP10_v6, fragment.HLT_Mu0_Barrel_L1HP11_v6, fragment.HLT_Mu0_Barrel_L1HP6_IP6_v3, fragment.HLT_Mu6_Barrel_L1HP7_IP6_v3, fragment.HLT_Mu7_Barrel_L1HP8_IP6_v4, fragment.HLT_Mu8_Barrel_L1HP9_IP6_v4, fragment.HLT_Mu9_Barrel_L1HP10_IP6_v6, fragment.HLT_Mu10_Barrel_L1HP11_IP6_v6, fragment.HLT_DoublePhoton33_CaloIdL_v17, fragment.HLT_DoublePhoton70_v17, fragment.HLT_DoublePhoton85_v25, fragment.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, fragment.HLT_Ele30_WPTight_Gsf_v11, fragment.HLT_Ele32_WPTight_Gsf_v25, fragment.HLT_Ele35_WPTight_Gsf_v19, fragment.HLT_Ele38_WPTight_Gsf_v19, fragment.HLT_Ele40_WPTight_Gsf_v19, fragment.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, fragment.HLT_IsoMu20_v27, fragment.HLT_IsoMu24_v25, fragment.HLT_IsoMu24_eta2p1_v27, fragment.HLT_IsoMu27_v28, fragment.HLT_UncorrectedJetE30_NoBPTX_v14, fragment.HLT_UncorrectedJetE30_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE60_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE70_NoBPTX3BX_v14, fragment.HLT_L1SingleMuCosmics_v8, fragment.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, fragment.HLT_L2Mu10_NoVertex_NoBPTX_v15, fragment.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, fragment.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, fragment.HLT_L2Mu23NoVtx_2Cha_v10, fragment.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, fragment.HLT_DoubleL2Mu50_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, fragment.HLT_Mu30_TkMu0_Psi_v13, fragment.HLT_Mu30_TkMu0_Upsilon_v13, fragment.HLT_Mu25_TkMu0_Phi_v20, fragment.HLT_Mu15_v15, fragment.HLT_Mu20_v24, fragment.HLT_Mu27_v25, fragment.HLT_Mu50_v25, fragment.HLT_Mu55_v15, fragment.HLT_CascadeMu100_v13, fragment.HLT_HighPtTkMu100_v12, fragment.HLT_DiPFJetAve40_v26, fragment.HLT_DiPFJetAve60_v26, fragment.HLT_DiPFJetAve80_v26, fragment.HLT_DiPFJetAve140_v25, fragment.HLT_DiPFJetAve200_v25, fragment.HLT_DiPFJetAve260_v26, fragment.HLT_DiPFJetAve320_v26, fragment.HLT_DiPFJetAve400_v26, fragment.HLT_DiPFJetAve500_v26, fragment.HLT_DiPFJetAve60_HFJEC_v27, fragment.HLT_DiPFJetAve80_HFJEC_v29, fragment.HLT_DiPFJetAve100_HFJEC_v29, fragment.HLT_DiPFJetAve160_HFJEC_v28, fragment.HLT_DiPFJetAve220_HFJEC_v28, fragment.HLT_DiPFJetAve260_HFJEC_v11, fragment.HLT_DiPFJetAve300_HFJEC_v28, fragment.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, fragment.HLT_AK8PFJet40_v28, fragment.HLT_AK8PFJet60_v27, fragment.HLT_AK8PFJet80_v28, fragment.HLT_AK8PFJet140_v27, fragment.HLT_AK8PFJet200_v27, fragment.HLT_AK8PFJet260_v28, fragment.HLT_AK8PFJet320_v28, fragment.HLT_AK8PFJet400_v28, fragment.HLT_AK8PFJet450_v28, fragment.HLT_AK8PFJet500_v28, fragment.HLT_AK8PFJet550_v23, fragment.HLT_PFJet40_v33, fragment.HLT_PFJet60_v33, fragment.HLT_PFJet80_v33, fragment.HLT_PFJet110_v12, fragment.HLT_PFJet140_v31, fragment.HLT_PFJet200_v31, fragment.HLT_PFJet260_v32, fragment.HLT_PFJet320_v32, fragment.HLT_PFJet400_v32, fragment.HLT_PFJet450_v33, fragment.HLT_PFJet500_v33, fragment.HLT_PFJet550_v23, fragment.HLT_PFJetFwd40_v31, fragment.HLT_PFJetFwd60_v31, fragment.HLT_PFJetFwd80_v30, fragment.HLT_PFJetFwd140_v30, fragment.HLT_PFJetFwd200_v30, fragment.HLT_PFJetFwd260_v31, fragment.HLT_PFJetFwd320_v31, fragment.HLT_PFJetFwd400_v31, fragment.HLT_PFJetFwd450_v31, fragment.HLT_PFJetFwd500_v31, fragment.HLT_AK8PFJetFwd40_v27, fragment.HLT_AK8PFJetFwd60_v26, fragment.HLT_AK8PFJetFwd80_v26, fragment.HLT_AK8PFJetFwd140_v26, fragment.HLT_AK8PFJetFwd200_v26, fragment.HLT_AK8PFJetFwd260_v27, fragment.HLT_AK8PFJetFwd320_v27, fragment.HLT_AK8PFJetFwd400_v27, fragment.HLT_AK8PFJetFwd450_v27, fragment.HLT_AK8PFJetFwd500_v27, fragment.HLT_PFHT180_v29, fragment.HLT_PFHT250_v29, fragment.HLT_PFHT370_v29, fragment.HLT_PFHT430_v29, fragment.HLT_PFHT510_v29, fragment.HLT_PFHT590_v29, fragment.HLT_PFHT680_v29, fragment.HLT_PFHT780_v29, fragment.HLT_PFHT890_v29, fragment.HLT_PFHT1050_v30, fragment.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, fragment.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, fragment.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, fragment.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, fragment.HLT_PFMET120_PFMHT120_IDTight_v32, fragment.HLT_PFMET130_PFMHT130_IDTight_v32, fragment.HLT_PFMET140_PFMHT140_IDTight_v32, fragment.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, fragment.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, fragment.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, fragment.HLT_L1ETMHadSeeds_v10, fragment.HLT_CaloMHT90_v14, fragment.HLT_CaloMET90_NotCleaned_v14, fragment.HLT_CaloMET350_NotCleaned_v14, fragment.HLT_PFMET200_NotCleaned_v21, fragment.HLT_PFMET250_NotCleaned_v21, fragment.HLT_PFMET300_NotCleaned_v21, fragment.HLT_PFMET200_BeamHaloCleaned_v21, fragment.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, fragment.HLT_MET105_IsoTrk50_v19, fragment.HLT_MET120_IsoTrk50_v19, fragment.HLT_Mu12eta2p3_v13, fragment.HLT_Mu12eta2p3_PFJet40_v13, fragment.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Photon300_NoHE_v23, fragment.HLT_Mu8_TrkIsoVVL_v24, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, fragment.HLT_Mu17_TrkIsoVVL_v25, fragment.HLT_Mu19_TrkIsoVVL_v16, fragment.HLT_BTagMu_AK4DiJet20_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet40_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet70_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet110_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet170_Mu5_v24, fragment.HLT_BTagMu_AK4Jet300_Mu5_v24, fragment.HLT_BTagMu_AK8DiJet170_Mu5_v21, fragment.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, fragment.HLT_BTagMu_AK8Jet300_Mu5_v24, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, fragment.HLT_Photon33_v15, fragment.HLT_Photon50_v23, fragment.HLT_Photon75_v23, fragment.HLT_Photon90_v23, fragment.HLT_Photon120_v23, fragment.HLT_Photon150_v17, fragment.HLT_Photon175_v25, fragment.HLT_Photon200_v24, fragment.HLT_Photon45EB_v3, fragment.HLT_Photon40EB_v3, fragment.HLT_Photon50EB_v4, fragment.HLT_Photon30EB_TightID_TightIso_v12, fragment.HLT_Photon40EB_TightID_TightIso_v3, fragment.HLT_Photon45EB_TightID_TightIso_v3, fragment.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_v8, fragment.HLT_Photon55EB_TightID_TightIso_v4, fragment.HLT_Photon75EB_TightID_TightIso_v8, fragment.HLT_Photon90EB_TightID_TightIso_v8, fragment.HLT_Photon110EB_TightID_TightIso_v12, fragment.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon100EBHE10_v12, fragment.HLT_Photon50_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon75_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon90_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon120_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon165_R9Id90_HE10_IsoM_v25, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, fragment.HLT_DiphotonMVA14p25_Mass90_v3, fragment.HLT_DiphotonMVA14p25_Tight_Mass90_v3, fragment.HLT_Photon35_TwoProngs35_v13, fragment.HLT_IsoMu24_TwoProngs35_v13, fragment.HLT_Dimuon0_Jpsi_L1_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_v20, fragment.HLT_Dimuon0_Jpsi_NoVertexing_v20, fragment.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi3p5_Muon2_v17, fragment.HLT_Dimuon0_Upsilon_L1_4p5_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, fragment.HLT_Dimuon0_Upsilon_NoVertexing_v19, fragment.HLT_Dimuon0_LowMass_L1_0er1p5_v20, fragment.HLT_Dimuon0_LowMass_v20, fragment.HLT_Dimuon0_LowMass_L1_4_v20, fragment.HLT_Dimuon0_LowMass_L1_TM530_v18, fragment.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, fragment.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, fragment.HLT_TripleMu_10_5_5_DZ_v22, fragment.HLT_TripleMu_12_10_5_v22, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, fragment.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, fragment.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, fragment.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, fragment.HLT_DoubleMu4_3_LowMass_SS_v6, fragment.HLT_DoubleMu4_Jpsi_Displaced_v19, fragment.HLT_DoubleMu4_Jpsi_NoVertexing_v19, fragment.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, fragment.HLT_DoubleMu4_JpsiTrk_Bc_v12, fragment.HLT_DoubleMu43NoFiltersNoVtx_v14, fragment.HLT_DoubleMu48NoFiltersNoVtx_v14, fragment.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, fragment.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, fragment.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, fragment.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, fragment.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, fragment.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, fragment.HLT_Ele28_HighEta_SC20_Mass55_v23, fragment.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, fragment.HLT_Ele15_IsoVVVL_PFHT450_v28, fragment.HLT_Ele50_IsoVVVL_PFHT450_v28, fragment.HLT_Ele15_IsoVVVL_PFHT600_v32, fragment.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, fragment.HLT_Mu15_IsoVVVL_PFHT450_v27, fragment.HLT_Mu50_IsoVVVL_PFHT450_v27, fragment.HLT_Mu15_IsoVVVL_PFHT600_v31, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, fragment.HLT_Dimuon10_Upsilon_y1p4_v13, fragment.HLT_Dimuon12_Upsilon_y1p4_v14, fragment.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, fragment.HLT_Dimuon25_Jpsi_v26, fragment.HLT_Dimuon14_PsiPrime_v25, fragment.HLT_Dimuon14_PsiPrime_noCorrL1_v17, fragment.HLT_Dimuon18_PsiPrime_v26, fragment.HLT_Dimuon18_PsiPrime_noCorrL1_v18, fragment.HLT_Dimuon24_Upsilon_noCorrL1_v18, fragment.HLT_Dimuon24_Phi_noCorrL1_v18, fragment.HLT_Dimuon25_Jpsi_noCorrL1_v18, fragment.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, fragment.HLT_DoubleIsoMu20_eta2p1_v19, fragment.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, fragment.HLT_Mu8_v24, fragment.HLT_Mu17_v25, fragment.HLT_Mu19_v16, fragment.HLT_Mu17_Photon30_IsoCaloId_v18, fragment.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, fragment.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, fragment.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, fragment.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, fragment.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, fragment.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, fragment.HLT_PFHT400_SixPFJet32_v21, fragment.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, fragment.HLT_PFHT450_SixPFJet36_v20, fragment.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, fragment.HLT_PFHT350_v31, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, fragment.HLT_ECALHT800_v20, fragment.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, fragment.HLT_Photon20_HoverELoose_v20, fragment.HLT_Photon30_HoverELoose_v20, fragment.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, fragment.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, fragment.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, fragment.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, fragment.HLT_Mu18_Mu9_SameSign_v16, fragment.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, fragment.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, fragment.HLT_QuadPFJet103_88_75_15_v17, fragment.HLT_QuadPFJet105_88_76_15_v17, fragment.HLT_QuadPFJet111_90_80_15_v17, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, fragment.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, fragment.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, fragment.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, fragment.HLT_PFHT250_QuadPFJet25_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, fragment.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, fragment.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, fragment.HLT_QuadPFJet100_88_70_30_v10, fragment.HLT_QuadPFJet105_88_75_30_v9, fragment.HLT_QuadPFJet111_90_80_30_v9, fragment.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, fragment.HLT_AK8PFJet220_SoftDropMass40_v13, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_v13, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_Nch45_v6, fragment.HLT_AK8PFJet275_Nch40_v6, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, fragment.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, fragment.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, fragment.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu10NoVtx_2Cha_v9, fragment.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L3Mu10NoVtx_v10, fragment.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, fragment.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, fragment.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, fragment.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, fragment.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, fragment.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, fragment.HLT_L1Mu6HT240_v9, fragment.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, fragment.HLT_HT350_v7, fragment.HLT_HT425_v19, fragment.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT550_DisplacedDijet60_Inclusive_v23, fragment.HLT_HT650_DisplacedDijet60_Inclusive_v23, fragment.HLT_CaloMET60_DTCluster50_v11, fragment.HLT_CaloMET60_DTClusterNoMB1S50_v11, fragment.HLT_L1MET_DTCluster50_v11, fragment.HLT_L1MET_DTClusterNoMB1S50_v11, fragment.HLT_CscCluster_Loose_v10, fragment.HLT_CscCluster_Medium_v10, fragment.HLT_CscCluster_Tight_v10, fragment.HLT_CscCluster50_Photon20Unseeded_v4, fragment.HLT_CscCluster50_Photon30Unseeded_v4, fragment.HLT_CscCluster100_Ele5_v4, fragment.HLT_CscCluster100_Mu5_v6, fragment.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, fragment.HLT_DoubleCscCluster75_v7, fragment.HLT_IsoTrk200_L1SingleMuShower_v4, fragment.HLT_IsoTrk400_L1SingleMuShower_v4, fragment.HLT_DoubleCscCluster100_v7, fragment.HLT_L1CSCShower_DTCluster50_v10, fragment.HLT_L1CSCShower_DTCluster75_v10, fragment.HLT_PFMET105_IsoTrk50_v13, fragment.HLT_L1SingleLLPJet_v7, fragment.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, fragment.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, fragment.HLT_DiPhoton10Time1ns_v10, fragment.HLT_DiPhoton10Time1p2ns_v10, fragment.HLT_DiPhoton10Time1p4ns_v10, fragment.HLT_DiPhoton10Time1p6ns_v10, fragment.HLT_DiPhoton10Time1p8ns_v10, fragment.HLT_DiPhoton10Time2ns_v10, fragment.HLT_DiPhoton10_CaloIdL_v10, fragment.HLT_DoubleEle6p5_eta1p22_mMax6_v10, fragment.HLT_DoubleEle8_eta1p22_mMax6_v10, fragment.HLT_DoubleEle10_eta1p22_mMax6_v10, fragment.HLT_SingleEle8_v9, fragment.HLT_SingleEle8_SingleEGL1_v9, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Mu50_L1SingleMuShower_v11, fragment.HLT_IsoMu24_OneProng32_v9, fragment.HLT_Photon32_OneProng32_M50To105_v10, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1050_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1200_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_PFJet200_TimeLtNeg2p5ns_v10, fragment.HLT_PFJet200_TimeGt2p5ns_v10, fragment.HLT_Photon50_TimeLtNeg2p5ns_v7, fragment.HLT_Photon50_TimeGt2p5ns_v7, fragment.HLT_PPSMaxTracksPerArm1_v9, fragment.HLT_PPSMaxTracksPerRP4_v9, fragment.HLT_PPSRandom_v1, fragment.HLT_HIL1NotBptxOR_v14, fragment.HLT_HIL1UnpairedBunchBptxPlus_v14, fragment.HLT_HIL1UnpairedBunchBptxMinus_v14, fragment.HLT_HIPhysics_v14, fragment.HLT_HIPhysicsForZS_v14, fragment.HLT_HIRandom_v7, fragment.HLT_HIRandom_HighRate_v3, fragment.HLT_HIHcalNZS_v14, fragment.HLT_HIHcalPhiSym_v14, fragment.HLT_HIZeroBias_v14, fragment.HLT_HIZeroBias_HighRate_v7, fragment.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, fragment.HLT_HIZeroBias_HighRateRAW_v4, fragment.HLT_HIMinimumBiasHF1AND_v7, fragment.HLT_HIMinimumBiasHF1AND_copy_v6, fragment.HLT_HIMinimumBiasHF1AND_Beamspot_v8, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8, fragment.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, fragment.HLT_HIL1Centrality30_50_v7, fragment.HLT_HIL1_UCC_0_0p5_v7, fragment.HLT_HIL1_UCC_0_1_v7, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet80Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet100Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet120Eta2p1_v7, fragment.HLT_HIPuAK4CaloJet120Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet40Fwd_v7, fragment.HLT_HIPuAK4CaloJet60Fwd_v7, fragment.HLT_HIPuAK4CaloJet80Fwd_v7, fragment.HLT_HIPuAK4CaloJet100Fwd_v7, fragment.HLT_HIPuAK4CaloJet120Fwd_v7, fragment.HLT_HICsAK4PFJet60Eta1p5_v14, fragment.HLT_HICsAK4PFJet60Eta2p1_v7, fragment.HLT_HICsAK4PFJet80Eta1p5_v14, fragment.HLT_HICsAK4PFJet80Eta2p1_v7, fragment.HLT_HICsAK4PFJet100Eta1p5_v14, fragment.HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8, fragment.HLT_HICsAK4PFJet100Eta2p1_v7, fragment.HLT_HICsAK4PFJet120Eta1p5_v14, fragment.HLT_HICsAK4PFJet120Eta2p1_v7, fragment.HLT_HIGEDPhoton10_v14, fragment.HLT_HIGEDPhoton10_EB_v14, fragment.HLT_HIGEDPhoton20_v14, fragment.HLT_HIGEDPhoton20_EB_v14, fragment.HLT_HIGEDPhoton30_v14, fragment.HLT_HIGEDPhoton30_EB_v14, fragment.HLT_HIGEDPhoton40_v14, fragment.HLT_HIGEDPhoton40_EB_v14, fragment.HLT_HIGEDPhoton50_v14, fragment.HLT_HIGEDPhoton50_EB_v14, fragment.HLT_HIGEDPhoton60_v14, fragment.HLT_HIGEDPhoton60_EB_v14, fragment.HLT_HIDoubleGEDPhoton20_v7, fragment.HLT_HIEle10Gsf_v14, fragment.HLT_HIEle15Gsf_v14, fragment.HLT_HIEle20Gsf_v14, fragment.HLT_HIEle30Gsf_v14, fragment.HLT_HIEle40Gsf_v14, fragment.HLT_HIEle50Gsf_v14, fragment.HLT_HIEle15Ele10Gsf_v14, fragment.HLT_HIEle15Ele10GsfMass50_v14, fragment.HLT_HIDoubleEle10Gsf_v14, fragment.HLT_HIDoubleEle10GsfMass50_v14, fragment.HLT_HIDoubleEle15Gsf_v14, fragment.HLT_HIDoubleEle15GsfMass50_v14, fragment.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_NotMBHF2_v5, fragment.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, fragment.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, fragment.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, fragment.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_Random_HighRate_v1, fragment.HLT_HIUPC_HFafterglowCombined_v1, fragment.HLT_HIL1SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality40to100_v1, fragment.HLT_HIL1SingleMu0_v7, fragment.HLT_HIL1SingleMu0_Open_v7, fragment.HLT_HIL1SingleMu0_Cosmic_v7, fragment.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, fragment.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, fragment.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, fragment.HLT_HIL2DoubleMuOpen_SS_v1, fragment.HLT_HIL2DoubleMuOpen_OS_v1, fragment.HLT_HIL1DoubleMu0_v7, fragment.HLT_HIL2DoubleMu0_SQ_v1, fragment.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, fragment.HLT_HIL1DoubleMu0_SQ_v7, fragment.HLT_HIL2SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality40to100_v1, fragment.HLT_HIL2SingleMu3_Open_v7, fragment.HLT_HIL2SingleMu5_v7, fragment.HLT_HIL2SingleMu7_v7, fragment.HLT_HIL2SingleMu12_v1, fragment.HLT_HIL2DoubleMu0_Open_v7, fragment.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu3_M7to15_Open_v7, fragment.HLT_HIL3SingleMu3_Open_v7, fragment.HLT_HIL3SingleMu5_v7, fragment.HLT_HIL3SingleMu7_v7, fragment.HLT_HIL3SingleMu12_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3DoubleMu0_M0toInf_Open_v7, fragment.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, fragment.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu2_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, fragment.HLT_HICscCluster_Loose_v7, fragment.HLT_HICscCluster_Medium_v7, fragment.HLT_HICscCluster_Tight_v7, fragment.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, fragment.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, fragment.HLT_HIL1NotBptxORForPPRef_v9, fragment.HLT_HIHT80_Beamspot_ppRef5TeV_v15, fragment.HLT_PPRefZeroBias_v6, fragment.HLT_AK4CaloJet40_v6, fragment.HLT_AK4CaloJet60_v6, fragment.HLT_AK4CaloJet70_v6, fragment.HLT_AK4CaloJet80_v6, fragment.HLT_AK4CaloJet100_v6, fragment.HLT_AK4CaloJet120_v6, fragment.HLT_AK4CaloJetFwd40_v6, fragment.HLT_AK4CaloJetFwd60_v6, fragment.HLT_AK4CaloJetFwd70_v6, fragment.HLT_AK4CaloJetFwd80_v6, fragment.HLT_AK4CaloJetFwd100_v6, fragment.HLT_AK4CaloJetFwd120_v6, fragment.HLT_AK4PFJet40_v8, fragment.HLT_AK4PFJet60_v8, fragment.HLT_AK4PFJet80_v8, fragment.HLT_AK4PFJet100_v8, fragment.HLT_AK4PFJet120_v8, fragment.HLT_AK4PFJetFwd40_v8, fragment.HLT_AK4PFJetFwd60_v8, fragment.HLT_AK4PFJetFwd80_v8, fragment.HLT_AK4PFJetFwd100_v8, fragment.HLT_AK4PFJetFwd120_v8, fragment.HLT_PPRefDoubleEle10Gsf_v6, fragment.HLT_PPRefDoubleEle10GsfMass50_v6, fragment.HLT_PPRefDoubleEle15Gsf_v6, fragment.HLT_PPRefDoubleEle15GsfMass50_v6, fragment.HLT_PPRefEle15Ele10Gsf_v6, fragment.HLT_PPRefEle15Ele10GsfMass50_v6, fragment.HLT_PPRefEle10Gsf_v6, fragment.HLT_PPRefEle15Gsf_v6, fragment.HLT_PPRefEle20Gsf_v7, fragment.HLT_PPRefEle30Gsf_v7, fragment.HLT_PPRefEle40Gsf_v6, fragment.HLT_PPRefEle50Gsf_v6, fragment.HLT_PPRefGEDPhoton10_v6, fragment.HLT_PPRefGEDPhoton10_EB_v6, fragment.HLT_PPRefGEDPhoton20_v6, fragment.HLT_PPRefGEDPhoton20_EB_v6, fragment.HLT_PPRefGEDPhoton30_v6, fragment.HLT_PPRefGEDPhoton30_EB_v6, fragment.HLT_PPRefGEDPhoton40_v6, fragment.HLT_PPRefGEDPhoton40_EB_v6, fragment.HLT_PPRefGEDPhoton50_v6, fragment.HLT_PPRefGEDPhoton50_EB_v6, fragment.HLT_PPRefGEDPhoton60_v6, fragment.HLT_PPRefGEDPhoton60_EB_v6, fragment.HLT_PPRefDoubleGEDPhoton20_v1, fragment.HLT_PPRefL1DoubleMu0_v6, fragment.HLT_PPRefL1DoubleMu0_SQ_v1, fragment.HLT_PPRefL1DoubleMu0_Open_v6, fragment.HLT_PPRefL1DoubleMu2_v1, fragment.HLT_PPRefL1DoubleMu2_SQ_v1, fragment.HLT_PPRefL1SingleMu0_Cosmics_v6, fragment.HLT_PPRefL1SingleMu7_v6, fragment.HLT_PPRefL1SingleMu12_v6, fragment.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, fragment.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, fragment.HLT_PPRefL2DoubleMu0_v6, fragment.HLT_PPRefL2DoubleMu0_Open_v6, fragment.HLT_PPRefL2SingleMu7_v6, fragment.HLT_PPRefL2SingleMu12_v6, fragment.HLT_PPRefL2SingleMu15_v6, fragment.HLT_PPRefL2SingleMu20_v6, fragment.HLT_PPRefL3DoubleMu0_v8, fragment.HLT_PPRefL3DoubleMu0_Open_v8, fragment.HLT_PPRefL3SingleMu3_v8, fragment.HLT_PPRefL3SingleMu5_v8, fragment.HLT_PPRefL3SingleMu7_v8, fragment.HLT_PPRefL3SingleMu12_v8, fragment.HLT_PPRefL3SingleMu15_v8, fragment.HLT_PPRefL3SingleMu20_v8, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, fragment.HLT_PPRefCscCluster_Loose_v6, fragment.HLT_PPRefCscCluster_Medium_v6, fragment.HLT_PPRefCscCluster_Tight_v6, fragment.HLT_PPRefDmesonTrackingGlobal_Dpt25_v6, fragment.HLT_PPRefDmesonTrackingGlobal_Dpt35_v6, fragment.HLT_PPRefDmesonTrackingGlobal_Dpt45_v6, fragment.HLT_PPRefDmesonTrackingGlobal_Dpt60_v6, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, fragment.HLT_PPRefUPC_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_ZDC1nOR_v1, fragment.MC_ReducedIterativeTracking_v22, fragment.MC_AK4CaloJets_v19, fragment.MC_AK4CaloJetsFromPV_v18, fragment.MC_CaloHT_v18, fragment.MC_AK8CaloHT_v18, fragment.MC_CaloMHT_v18, fragment.MC_AK4PFJets_v29, fragment.MC_PFHT_v28, fragment.MC_AK8PFJets_v29, fragment.MC_AK8PFHT_v28, fragment.MC_CaloMET_v18, fragment.MC_CaloMET_JetIdCleaned_v19, fragment.MC_PFMET_v29, fragment.MC_PFMHT_v28, fragment.MC_AK4PFJetPNet_v5, fragment.MC_AK8PFJetPNet_v5, fragment.MC_Egamma_Open_v8, fragment.MC_Egamma_Open_Unseeded_v8, fragment.MC_Ele5_WPTight_Gsf_v18, fragment.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, fragment.MC_DoubleEle5_CaloIdL_MW_v26, fragment.MC_IsoMu_v27, fragment.MC_DoubleMu_TrkIsoVVL_DZ_v23, fragment.MC_DoubleMuNoFiltersNoVtx_v17, fragment.MC_PFScouting_v6, fragment.HLT_SpecialHLTPhysics_v7, fragment.AlCa_LumiPixelsCounts_RandomHighRate_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, fragment.HLT_L1AXOVTight_v4, fragment.HLT_L1SingleMuOpen_v6, fragment.HLT_L1SingleMuOpen_DT_v6, fragment.HLT_L1SingleMu3_v5, fragment.HLT_L1SingleMu5_v5, fragment.HLT_L1SingleMu7_v5, fragment.HLT_L1DoubleMu0_v5, fragment.HLT_L1SingleJet8erHE_v5, fragment.HLT_L1SingleJet10erHE_v5, fragment.HLT_L1SingleJet12erHE_v5, fragment.HLT_L1SingleJet35_v5, fragment.HLT_L1SingleJet200_v5, fragment.HLT_L1SingleEG8er2p5_v4, fragment.HLT_L1SingleEG10er2p5_v4, fragment.HLT_L1SingleEG15er2p5_v4, fragment.HLT_L1SingleEG26er2p5_v4, fragment.HLT_L1SingleEG28er2p5_v4, fragment.HLT_L1SingleEG28er2p1_v4, fragment.HLT_L1SingleEG28er1p5_v4, fragment.HLT_L1SingleEG34er2p5_v4, fragment.HLT_L1SingleEG36er2p5_v4, fragment.HLT_L1SingleEG38er2p5_v4, fragment.HLT_L1SingleEG40er2p5_v4, fragment.HLT_L1SingleEG42er2p5_v4, fragment.HLT_L1SingleEG45er2p5_v4, fragment.HLT_L1SingleEG50_v4, fragment.HLT_L1SingleJet60_v4, fragment.HLT_L1SingleJet90_v4, fragment.HLT_L1SingleJet120_v4, fragment.HLT_L1SingleJet180_v4, fragment.HLT_L1HTT120er_v4, fragment.HLT_L1HTT160er_v4, fragment.HLT_L1HTT200er_v4, fragment.HLT_L1HTT255er_v4, fragment.HLT_L1HTT280er_v4, fragment.HLT_L1HTT320er_v4, fragment.HLT_L1HTT360er_v4, fragment.HLT_L1HTT400er_v4, fragment.HLT_L1HTT450er_v4, fragment.HLT_L1ETM120_v4, fragment.HLT_L1ETM150_v4, fragment.HLT_L1EXT_HCAL_LaserMon1_v5, fragment.HLT_L1EXT_HCAL_LaserMon4_v5, fragment.HLT_CscCluster_Cosmic_v4, fragment.HLT_HT60_Beamspot_v22, fragment.HLT_HT300_Beamspot_PixelClusters_WP2_v7, fragment.HLT_PixelClusters_WP2_v4, fragment.HLT_PixelClusters_WP1_v4, fragment.HLT_BptxOR_v6, fragment.HLT_L1SingleMuCosmics_EMTF_v4, fragment.HLT_L1SingleMuCosmics_CosmicTracking_v1, fragment.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, fragment.HLT_L1FatEvents_v5, fragment.HLT_Random_HighRate_v1, fragment.HLT_ZeroBias_HighRate_v4, fragment.HLT_ZeroBias_Gated_v4, fragment.HLT_SpecialZeroBias_v6, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLowPtJet, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate0, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate1, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate2, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate3, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate4, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate5, fragment.Dataset_AlCaLumiPixelsCountsGated, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPPSExpress, fragment.Dataset_AlCaPPSPrompt, fragment.Dataset_AlCaPhiSym, fragment.Dataset_BTagMu, fragment.Dataset_Commissioning, fragment.Dataset_Cosmics, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_DQMPPSRandom, fragment.Dataset_DisplacedJet, fragment.Dataset_EGamma0, fragment.Dataset_EGamma1, fragment.Dataset_EcalLaser, fragment.Dataset_EmptyBX, fragment.Dataset_EphemeralHLTPhysics0, fragment.Dataset_EphemeralHLTPhysics1, fragment.Dataset_EphemeralHLTPhysics2, fragment.Dataset_EphemeralHLTPhysics3, fragment.Dataset_EphemeralHLTPhysics4, fragment.Dataset_EphemeralHLTPhysics5, fragment.Dataset_EphemeralHLTPhysics6, fragment.Dataset_EphemeralHLTPhysics7, fragment.Dataset_EphemeralZeroBias0, fragment.Dataset_EphemeralZeroBias1, fragment.Dataset_EphemeralZeroBias2, fragment.Dataset_EphemeralZeroBias3, fragment.Dataset_EphemeralZeroBias4, fragment.Dataset_EphemeralZeroBias5, fragment.Dataset_EphemeralZeroBias6, fragment.Dataset_EphemeralZeroBias7, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressCosmics, fragment.Dataset_ExpressPhysics, fragment.Dataset_HIDQMGPUvsCPU, fragment.Dataset_HIDQMOnlineBeamspot, fragment.Dataset_HIEmptyBX, fragment.Dataset_HIEphemeralHLTPhysics, fragment.Dataset_HIEphemeralZeroBias0, fragment.Dataset_HIEphemeralZeroBias1, fragment.Dataset_HIEventDisplay, fragment.Dataset_HIExpressAlignment, fragment.Dataset_HIExpressPhysics, fragment.Dataset_HIExpressPhysicsRawPrime, fragment.Dataset_HIForward0, fragment.Dataset_HIForward1, fragment.Dataset_HIForward2, fragment.Dataset_HIForward3, fragment.Dataset_HIForward4, fragment.Dataset_HIForward5, fragment.Dataset_HIForward6, fragment.Dataset_HIForward7, fragment.Dataset_HIForward8, fragment.Dataset_HIForward9, fragment.Dataset_HIForward10, fragment.Dataset_HIForward11, fragment.Dataset_HIForward12, fragment.Dataset_HIForward13, fragment.Dataset_HIForward14, fragment.Dataset_HIForward15, fragment.Dataset_HIForward16, fragment.Dataset_HIForward17, fragment.Dataset_HIForward18, fragment.Dataset_HIForward19, fragment.Dataset_HIHLTPhysics, fragment.Dataset_HIHcalNZS, fragment.Dataset_HIOnlineMonitor, fragment.Dataset_HIMinimumBias0, fragment.Dataset_HIMinimumBias1, fragment.Dataset_HIMinimumBias2, fragment.Dataset_HIMinimumBias3, fragment.Dataset_HIPhysicsRawPrime0, fragment.Dataset_HITrackerNZS, fragment.Dataset_HIZeroBias0, fragment.Dataset_HIZeroBias1, fragment.Dataset_HIZeroBias2, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_JetMET0, fragment.Dataset_JetMET1, fragment.Dataset_L1Accept, fragment.Dataset_MinimumBias, fragment.Dataset_MonteCarlo, fragment.Dataset_Muon0, fragment.Dataset_Muon1, fragment.Dataset_MuonEG, fragment.Dataset_MuonShower, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_PPRefDoubleMuon0, fragment.Dataset_PPRefDoubleMuon1, fragment.Dataset_PPRefDoubleMuon2, fragment.Dataset_PPRefDoubleMuon3, fragment.Dataset_PPRefHardProbes0, fragment.Dataset_PPRefSingleMuon0, fragment.Dataset_PPRefZeroBiasPlusForward0, fragment.Dataset_ParkingDoubleMuonLowMass0, fragment.Dataset_ParkingDoubleMuonLowMass1, fragment.Dataset_ParkingDoubleMuonLowMass2, fragment.Dataset_ParkingDoubleMuonLowMass3, fragment.Dataset_ParkingDoubleMuonLowMass4, fragment.Dataset_ParkingDoubleMuonLowMass5, fragment.Dataset_ParkingDoubleMuonLowMass6, fragment.Dataset_ParkingDoubleMuonLowMass7, fragment.Dataset_ParkingHH, fragment.Dataset_ParkingLLP, fragment.Dataset_ParkingSingleMuon0, fragment.Dataset_ParkingVBF0, fragment.Dataset_ParkingVBF1, fragment.Dataset_ParkingVBF2, fragment.Dataset_ParkingVBF3, fragment.Dataset_ParkingVBF4, fragment.Dataset_ParkingVBF5, fragment.Dataset_ParkingVBF6, fragment.Dataset_ParkingVBF7, fragment.Dataset_RPCMonitor, fragment.Dataset_ScoutingPFMonitor, fragment.Dataset_ScoutingPFRun3, fragment.Dataset_Tau, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_ZeroBias, fragment.ScoutingPFOutput, fragment.Dataset_SpecialRandom0, fragment.Dataset_SpecialRandom1, fragment.Dataset_SpecialRandom2, fragment.Dataset_SpecialRandom3, fragment.Dataset_SpecialRandom4, fragment.Dataset_SpecialRandom5, fragment.Dataset_SpecialRandom6, fragment.Dataset_SpecialRandom7, fragment.Dataset_SpecialRandom8, fragment.Dataset_SpecialRandom9, fragment.Dataset_SpecialRandom10, fragment.Dataset_SpecialRandom11, fragment.Dataset_SpecialRandom12, fragment.Dataset_SpecialRandom13, fragment.Dataset_SpecialRandom14, fragment.Dataset_SpecialRandom15, fragment.Dataset_SpecialRandom16, fragment.Dataset_SpecialRandom17, fragment.Dataset_SpecialRandom18, fragment.Dataset_SpecialRandom19, fragment.Dataset_SpecialZeroBias0, fragment.Dataset_SpecialZeroBias1, fragment.Dataset_SpecialZeroBias2, fragment.Dataset_SpecialZeroBias3, fragment.Dataset_SpecialZeroBias4, fragment.Dataset_SpecialZeroBias5, fragment.Dataset_SpecialZeroBias6, fragment.Dataset_SpecialZeroBias7, fragment.Dataset_SpecialZeroBias8, fragment.Dataset_SpecialZeroBias9, fragment.Dataset_SpecialZeroBias10, fragment.Dataset_SpecialZeroBias11, fragment.Dataset_SpecialZeroBias12, fragment.Dataset_SpecialZeroBias13, fragment.Dataset_SpecialZeroBias14, fragment.Dataset_SpecialZeroBias15, fragment.Dataset_SpecialZeroBias16, fragment.Dataset_SpecialZeroBias17, fragment.Dataset_SpecialZeroBias18, fragment.Dataset_SpecialZeroBias19, fragment.Dataset_SpecialZeroBias20, fragment.Dataset_SpecialZeroBias21, fragment.Dataset_SpecialZeroBias22, fragment.Dataset_SpecialZeroBias23, fragment.Dataset_SpecialZeroBias24, fragment.Dataset_SpecialZeroBias25, fragment.Dataset_SpecialZeroBias26, fragment.Dataset_SpecialZeroBias27, fragment.Dataset_SpecialZeroBias28, fragment.Dataset_SpecialZeroBias29, fragment.Dataset_SpecialZeroBias30, fragment.Dataset_SpecialZeroBias31, fragment.Dataset_SpecialHLTPhysics0, fragment.Dataset_SpecialHLTPhysics1, fragment.Dataset_SpecialHLTPhysics2, fragment.Dataset_SpecialHLTPhysics3, fragment.Dataset_SpecialHLTPhysics4, fragment.Dataset_SpecialHLTPhysics5, fragment.Dataset_SpecialHLTPhysics6, fragment.Dataset_SpecialHLTPhysics7, fragment.Dataset_SpecialHLTPhysics8, fragment.Dataset_SpecialHLTPhysics9, fragment.Dataset_SpecialHLTPhysics10, fragment.Dataset_SpecialHLTPhysics11, fragment.Dataset_SpecialHLTPhysics12, fragment.Dataset_SpecialHLTPhysics13, fragment.Dataset_SpecialHLTPhysics14, fragment.Dataset_SpecialHLTPhysics15, fragment.Dataset_SpecialHLTPhysics16, fragment.Dataset_SpecialHLTPhysics17, fragment.Dataset_SpecialHLTPhysics18, fragment.Dataset_SpecialHLTPhysics19, fragment.Dataset_ParkingSingleMuon1, fragment.Dataset_ParkingSingleMuon2, fragment.Dataset_ParkingSingleMuon3, fragment.Dataset_ParkingSingleMuon4, fragment.Dataset_ParkingSingleMuon5, fragment.Dataset_ParkingSingleMuon6, fragment.Dataset_ParkingSingleMuon7, fragment.Dataset_ParkingSingleMuon8, fragment.Dataset_ParkingSingleMuon9, fragment.Dataset_ParkingSingleMuon10, fragment.Dataset_ParkingSingleMuon11, fragment.Dataset_PPRefZeroBiasPlusForward1, fragment.Dataset_PPRefZeroBiasPlusForward2, fragment.Dataset_PPRefZeroBiasPlusForward3, fragment.Dataset_PPRefZeroBiasPlusForward4, fragment.Dataset_PPRefZeroBiasPlusForward5, fragment.Dataset_PPRefZeroBiasPlusForward6, fragment.Dataset_PPRefZeroBiasPlusForward7, fragment.Dataset_PPRefZeroBiasPlusForward8, fragment.Dataset_PPRefZeroBiasPlusForward9, fragment.Dataset_PPRefZeroBiasPlusForward10, fragment.Dataset_PPRefZeroBiasPlusForward11, fragment.Dataset_PPRefZeroBiasPlusForward12, fragment.Dataset_PPRefZeroBiasPlusForward13, fragment.Dataset_PPRefZeroBiasPlusForward14, fragment.Dataset_PPRefZeroBiasPlusForward15, fragment.Dataset_PPRefZeroBiasPlusForward16, fragment.Dataset_PPRefZeroBiasPlusForward17, fragment.Dataset_PPRefZeroBiasPlusForward18, fragment.Dataset_PPRefZeroBiasPlusForward19, fragment.Dataset_PPRefZeroBiasPlusForward20, fragment.Dataset_PPRefZeroBiasPlusForward21, fragment.Dataset_PPRefZeroBiasPlusForward22, fragment.Dataset_PPRefZeroBiasPlusForward23, fragment.Dataset_PPRefZeroBiasPlusForward24, fragment.Dataset_PPRefSingleMuon1, fragment.Dataset_PPRefSingleMuon2, fragment.Dataset_PPRefSingleMuon3, fragment.Dataset_PPRefHardProbes1, fragment.Dataset_PPRefHardProbes2, fragment.Dataset_PPRefHardProbes3, fragment.Dataset_PPRefHardProbes4, fragment.Dataset_HIPhysicsRawPrime1, fragment.Dataset_HIPhysicsRawPrime2, fragment.Dataset_HIPhysicsRawPrime3, fragment.Dataset_HIPhysicsRawPrime4, fragment.Dataset_HIPhysicsRawPrime5, fragment.Dataset_HIPhysicsRawPrime6, fragment.Dataset_HIPhysicsRawPrime7, fragment.Dataset_HIPhysicsRawPrime8, fragment.Dataset_HIPhysicsRawPrime9, fragment.Dataset_HIPhysicsRawPrime10, fragment.Dataset_HIPhysicsRawPrime11, fragment.Dataset_HIPhysicsRawPrime12, fragment.Dataset_HIPhysicsRawPrime13, fragment.Dataset_HIPhysicsRawPrime14, fragment.Dataset_HIPhysicsRawPrime15, fragment.Dataset_HIPhysicsRawPrime16, fragment.Dataset_HIPhysicsRawPrime17, fragment.Dataset_HIPhysicsRawPrime18, fragment.Dataset_HIPhysicsRawPrime19, fragment.Dataset_HIPhysicsRawPrime20, fragment.Dataset_HIPhysicsRawPrime21, fragment.Dataset_HIPhysicsRawPrime22, fragment.Dataset_HIPhysicsRawPrime23, fragment.Dataset_HIPhysicsRawPrime24, fragment.Dataset_HIPhysicsRawPrime25, fragment.Dataset_HIPhysicsRawPrime26, fragment.Dataset_HIPhysicsRawPrime27, fragment.Dataset_HIPhysicsRawPrime28, fragment.Dataset_HIPhysicsRawPrime29, fragment.Dataset_HIPhysicsRawPrime30, fragment.Dataset_HIPhysicsRawPrime31, fragment.Dataset_HIPhysicsRawPrime32, fragment.Dataset_HIPhysicsRawPrime33, fragment.Dataset_HIPhysicsRawPrime34, fragment.Dataset_HIPhysicsRawPrime35, fragment.Dataset_HIPhysicsRawPrime36, fragment.Dataset_HIPhysicsRawPrime37, fragment.Dataset_HIPhysicsRawPrime38, fragment.Dataset_HIPhysicsRawPrime39, fragment.Dataset_HIPhysicsRawPrime40, fragment.Dataset_HIPhysicsRawPrime41, fragment.Dataset_HIPhysicsRawPrime42, fragment.Dataset_HIPhysicsRawPrime43, fragment.Dataset_HIPhysicsRawPrime44, fragment.Dataset_HIPhysicsRawPrime45, fragment.Dataset_HIPhysicsRawPrime46, fragment.Dataset_HIPhysicsRawPrime47, fragment.Dataset_HIPhysicsRawPrime48, fragment.Dataset_HIPhysicsRawPrime49, fragment.Dataset_HIPhysicsRawPrime50, fragment.Dataset_HIPhysicsRawPrime51, fragment.Dataset_HIPhysicsRawPrime52, fragment.Dataset_HIPhysicsRawPrime53, fragment.Dataset_HIPhysicsRawPrime54, fragment.Dataset_HIPhysicsRawPrime55, fragment.Dataset_HIPhysicsRawPrime56, fragment.Dataset_HIPhysicsRawPrime57, fragment.Dataset_HIPhysicsRawPrime58, fragment.Dataset_HIPhysicsRawPrime59, )) +fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_EcalPhiSymForHI_v12, fragment.AlCa_EcalEtaEBonly_v25, fragment.AlCa_EcalEtaEEonly_v25, fragment.AlCa_EcalPi0EBonly_v25, fragment.AlCa_EcalPi0EEonly_v25, fragment.AlCa_EcalEtaEBonlyForHI_v13, fragment.AlCa_EcalEtaEEonlyForHI_v13, fragment.AlCa_EcalPi0EBonlyForHI_v13, fragment.AlCa_EcalPi0EEonlyForHI_v13, fragment.AlCa_HIEcalEtaEBonly_v12, fragment.AlCa_HIEcalEtaEEonly_v12, fragment.AlCa_HIEcalPi0EBonly_v12, fragment.AlCa_HIEcalPi0EEonly_v12, fragment.AlCa_RPCMuonNormalisation_v23, fragment.AlCa_RPCMuonNormalisationForHI_v11, fragment.AlCa_HIRPCMuonNormalisation_v11, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.AlCa_PFJet40_v32, fragment.AlCa_PFJet40_CPUOnly_v11, fragment.AlCa_AK8PFJet40_v27, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DQM_HIPixelReconstruction_v12, fragment.DQM_HIEcalReconstruction_v10, fragment.DQM_HIHcalReconstruction_v8, fragment.DQM_Random_v1, fragment.DQM_ZeroBias_v3, fragment.DST_ZeroBias_v11, fragment.DST_Physics_v16, fragment.DST_PFScouting_DoubleMuon_v6, fragment.DST_PFScouting_DoubleEG_v6, fragment.DST_PFScouting_JetHT_v6, fragment.DST_PFScouting_AXOVLoose_v4, fragment.DST_PFScouting_AXOLoose_v4, fragment.DST_PFScouting_AXONominal_v6, fragment.DST_PFScouting_AXOTight_v6, fragment.DST_PFScouting_AXOVTight_v4, fragment.DST_PFScouting_CICADAVLoose_v2, fragment.DST_PFScouting_CICADALoose_v2, fragment.DST_PFScouting_CICADAMedium_v2, fragment.DST_PFScouting_CICADATight_v2, fragment.DST_PFScouting_CICADAVTight_v2, fragment.DST_PFScouting_SingleMuon_v6, fragment.DST_PFScouting_SinglePhotonEB_v3, fragment.DST_PFScouting_ZeroBias_v4, fragment.HLT_EphemeralPhysics_v9, fragment.HLT_EphemeralZeroBias_v9, fragment.HLT_HIEphemeralPhysics_v5, fragment.HLT_HIEphemeralZeroBias_v5, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Alignment_v8, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_IsolatedBunches_v12, fragment.HLT_ZeroBias_FirstBXAfterTrain_v10, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_ZeroBias_FirstCollisionInTrain_v11, fragment.HLT_ZeroBias_LastCollisionInTrain_v10, fragment.HLT_HT300_Beamspot_v23, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_PFJet40_GPUvsCPU_v7, fragment.HLT_AK8PFJet380_SoftDropMass30_v6, fragment.HLT_AK8PFJet400_SoftDropMass30_v6, fragment.HLT_AK8PFJet425_SoftDropMass30_v6, fragment.HLT_AK8PFJet450_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, fragment.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, fragment.HLT_CaloJet500_NoJetID_v22, fragment.HLT_CaloJet550_NoJetID_v17, fragment.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, fragment.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, fragment.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, fragment.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, fragment.HLT_DoubleEle25_CaloIdL_MW_v15, fragment.HLT_DoubleEle27_CaloIdL_MW_v15, fragment.HLT_DoubleEle33_CaloIdL_MW_v28, fragment.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, fragment.HLT_Mu27_Ele37_CaloIdL_MW_v17, fragment.HLT_Mu37_Ele27_CaloIdL_MW_v17, fragment.HLT_Mu37_TkMu27_v17, fragment.HLT_DoubleMu4_3_Bs_v27, fragment.HLT_DoubleMu4_3_Jpsi_v27, fragment.HLT_DoubleMu4_3_LowMass_v13, fragment.HLT_DoubleMu4_LowMass_Displaced_v13, fragment.HLT_Mu0_L1DoubleMu_v13, fragment.HLT_Mu4_L1DoubleMu_v13, fragment.HLT_DoubleMu2_Jpsi_LowPt_v6, fragment.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu3_Trk_Tau3mu_v24, fragment.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, fragment.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, fragment.HLT_DoubleMu4_MuMuTrk_Displaced_v27, fragment.HLT_Mu3_PFJet40_v28, fragment.HLT_Mu7p5_L2Mu2_Jpsi_v22, fragment.HLT_Mu7p5_L2Mu2_Upsilon_v22, fragment.HLT_Mu3_L1SingleMu5orSingleMu7_v13, fragment.HLT_Mu0_Barrel_v6, fragment.HLT_Mu0_Barrel_L1HP6_v3, fragment.HLT_Mu0_Barrel_L1HP7_v3, fragment.HLT_Mu0_Barrel_L1HP8_v4, fragment.HLT_Mu0_Barrel_L1HP9_v4, fragment.HLT_Mu0_Barrel_L1HP10_v6, fragment.HLT_Mu0_Barrel_L1HP11_v6, fragment.HLT_Mu0_Barrel_L1HP6_IP6_v3, fragment.HLT_Mu6_Barrel_L1HP7_IP6_v3, fragment.HLT_Mu7_Barrel_L1HP8_IP6_v4, fragment.HLT_Mu8_Barrel_L1HP9_IP6_v4, fragment.HLT_Mu9_Barrel_L1HP10_IP6_v6, fragment.HLT_Mu10_Barrel_L1HP11_IP6_v6, fragment.HLT_DoublePhoton33_CaloIdL_v17, fragment.HLT_DoublePhoton70_v17, fragment.HLT_DoublePhoton85_v25, fragment.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, fragment.HLT_Ele30_WPTight_Gsf_v11, fragment.HLT_Ele32_WPTight_Gsf_v25, fragment.HLT_Ele35_WPTight_Gsf_v19, fragment.HLT_Ele38_WPTight_Gsf_v19, fragment.HLT_Ele40_WPTight_Gsf_v19, fragment.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, fragment.HLT_IsoMu20_v27, fragment.HLT_IsoMu24_v25, fragment.HLT_IsoMu24_HLTTracking_v1, fragment.HLT_IsoMu24_eta2p1_v27, fragment.HLT_IsoMu27_v28, fragment.HLT_UncorrectedJetE30_NoBPTX_v14, fragment.HLT_UncorrectedJetE30_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE60_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE70_NoBPTX3BX_v14, fragment.HLT_L1SingleMuCosmics_v8, fragment.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, fragment.HLT_L2Mu10_NoVertex_NoBPTX_v15, fragment.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, fragment.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, fragment.HLT_L2Mu23NoVtx_2Cha_v10, fragment.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, fragment.HLT_DoubleL2Mu50_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, fragment.HLT_Mu30_TkMu0_Psi_v13, fragment.HLT_Mu30_TkMu0_Upsilon_v13, fragment.HLT_Mu25_TkMu0_Phi_v20, fragment.HLT_Mu15_v15, fragment.HLT_Mu20_v24, fragment.HLT_Mu27_v25, fragment.HLT_Mu50_v25, fragment.HLT_Mu55_v15, fragment.HLT_CascadeMu100_v13, fragment.HLT_HighPtTkMu100_v12, fragment.HLT_DiPFJetAve40_v26, fragment.HLT_DiPFJetAve60_v26, fragment.HLT_DiPFJetAve80_v26, fragment.HLT_DiPFJetAve140_v25, fragment.HLT_DiPFJetAve200_v25, fragment.HLT_DiPFJetAve260_v26, fragment.HLT_DiPFJetAve320_v26, fragment.HLT_DiPFJetAve400_v26, fragment.HLT_DiPFJetAve500_v26, fragment.HLT_DiPFJetAve60_HFJEC_v27, fragment.HLT_DiPFJetAve80_HFJEC_v29, fragment.HLT_DiPFJetAve100_HFJEC_v29, fragment.HLT_DiPFJetAve160_HFJEC_v28, fragment.HLT_DiPFJetAve220_HFJEC_v28, fragment.HLT_DiPFJetAve260_HFJEC_v11, fragment.HLT_DiPFJetAve300_HFJEC_v28, fragment.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, fragment.HLT_AK8PFJet40_v28, fragment.HLT_AK8PFJet60_v27, fragment.HLT_AK8PFJet80_v28, fragment.HLT_AK8PFJet140_v27, fragment.HLT_AK8PFJet200_v27, fragment.HLT_AK8PFJet260_v28, fragment.HLT_AK8PFJet320_v28, fragment.HLT_AK8PFJet400_v28, fragment.HLT_AK8PFJet450_v28, fragment.HLT_AK8PFJet500_v28, fragment.HLT_AK8PFJet550_v23, fragment.HLT_PFJet40_v33, fragment.HLT_PFJet60_v33, fragment.HLT_PFJet80_v33, fragment.HLT_PFJet110_v12, fragment.HLT_PFJet140_v31, fragment.HLT_PFJet200_v31, fragment.HLT_PFJet260_v32, fragment.HLT_PFJet320_v32, fragment.HLT_PFJet400_v32, fragment.HLT_PFJet450_v33, fragment.HLT_PFJet500_v33, fragment.HLT_PFJet550_v23, fragment.HLT_PFJetFwd40_v31, fragment.HLT_PFJetFwd60_v31, fragment.HLT_PFJetFwd80_v30, fragment.HLT_PFJetFwd140_v30, fragment.HLT_PFJetFwd200_v30, fragment.HLT_PFJetFwd260_v31, fragment.HLT_PFJetFwd320_v31, fragment.HLT_PFJetFwd400_v31, fragment.HLT_PFJetFwd450_v31, fragment.HLT_PFJetFwd500_v31, fragment.HLT_AK8PFJetFwd40_v27, fragment.HLT_AK8PFJetFwd60_v26, fragment.HLT_AK8PFJetFwd80_v26, fragment.HLT_AK8PFJetFwd140_v26, fragment.HLT_AK8PFJetFwd200_v26, fragment.HLT_AK8PFJetFwd260_v27, fragment.HLT_AK8PFJetFwd320_v27, fragment.HLT_AK8PFJetFwd400_v27, fragment.HLT_AK8PFJetFwd450_v27, fragment.HLT_AK8PFJetFwd500_v27, fragment.HLT_PFHT180_v29, fragment.HLT_PFHT250_v29, fragment.HLT_PFHT370_v29, fragment.HLT_PFHT430_v29, fragment.HLT_PFHT510_v29, fragment.HLT_PFHT590_v29, fragment.HLT_PFHT680_v29, fragment.HLT_PFHT780_v29, fragment.HLT_PFHT890_v29, fragment.HLT_PFHT1050_v30, fragment.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, fragment.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, fragment.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, fragment.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, fragment.HLT_PFMET120_PFMHT120_IDTight_v32, fragment.HLT_PFMET130_PFMHT130_IDTight_v32, fragment.HLT_PFMET140_PFMHT140_IDTight_v32, fragment.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, fragment.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, fragment.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, fragment.HLT_L1ETMHadSeeds_v10, fragment.HLT_CaloMHT90_v14, fragment.HLT_CaloMET90_NotCleaned_v14, fragment.HLT_CaloMET350_NotCleaned_v14, fragment.HLT_PFMET200_NotCleaned_v21, fragment.HLT_PFMET250_NotCleaned_v21, fragment.HLT_PFMET300_NotCleaned_v21, fragment.HLT_PFMET200_BeamHaloCleaned_v21, fragment.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, fragment.HLT_MET105_IsoTrk50_v19, fragment.HLT_MET120_IsoTrk50_v19, fragment.HLT_Mu12eta2p3_v13, fragment.HLT_Mu12eta2p3_PFJet40_v13, fragment.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Photon300_NoHE_v23, fragment.HLT_Mu8_TrkIsoVVL_v24, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, fragment.HLT_Mu17_TrkIsoVVL_v25, fragment.HLT_Mu19_TrkIsoVVL_v16, fragment.HLT_BTagMu_AK4DiJet20_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet40_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet70_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet110_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet170_Mu5_v24, fragment.HLT_BTagMu_AK4Jet300_Mu5_v24, fragment.HLT_BTagMu_AK8DiJet170_Mu5_v21, fragment.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, fragment.HLT_BTagMu_AK8Jet300_Mu5_v24, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, fragment.HLT_Photon33_v15, fragment.HLT_Photon50_v23, fragment.HLT_Photon75_v23, fragment.HLT_Photon90_v23, fragment.HLT_Photon120_v23, fragment.HLT_Photon150_v17, fragment.HLT_Photon175_v25, fragment.HLT_Photon200_v24, fragment.HLT_Photon45EB_v3, fragment.HLT_Photon40EB_v3, fragment.HLT_Photon50EB_v4, fragment.HLT_Photon30EB_TightID_TightIso_v12, fragment.HLT_Photon40EB_TightID_TightIso_v3, fragment.HLT_Photon45EB_TightID_TightIso_v3, fragment.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_v8, fragment.HLT_Photon55EB_TightID_TightIso_v4, fragment.HLT_Photon75EB_TightID_TightIso_v8, fragment.HLT_Photon90EB_TightID_TightIso_v8, fragment.HLT_Photon110EB_TightID_TightIso_v12, fragment.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon100EBHE10_v12, fragment.HLT_Photon50_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon75_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon90_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon120_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon165_R9Id90_HE10_IsoM_v25, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, fragment.HLT_DiphotonMVA14p25_Mass90_v3, fragment.HLT_DiphotonMVA14p25_Tight_Mass90_v3, fragment.HLT_Photon35_TwoProngs35_v13, fragment.HLT_IsoMu24_TwoProngs35_v13, fragment.HLT_Dimuon0_Jpsi_L1_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_v20, fragment.HLT_Dimuon0_Jpsi_NoVertexing_v20, fragment.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi3p5_Muon2_v17, fragment.HLT_Dimuon0_Upsilon_L1_4p5_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, fragment.HLT_Dimuon0_Upsilon_NoVertexing_v19, fragment.HLT_Dimuon0_LowMass_L1_0er1p5_v20, fragment.HLT_Dimuon0_LowMass_v20, fragment.HLT_Dimuon0_LowMass_L1_4_v20, fragment.HLT_Dimuon0_LowMass_L1_TM530_v18, fragment.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, fragment.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, fragment.HLT_TripleMu_10_5_5_DZ_v22, fragment.HLT_TripleMu_12_10_5_v22, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, fragment.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, fragment.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, fragment.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, fragment.HLT_DoubleMu4_3_LowMass_SS_v6, fragment.HLT_DoubleMu4_Jpsi_Displaced_v19, fragment.HLT_DoubleMu4_Jpsi_NoVertexing_v19, fragment.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, fragment.HLT_DoubleMu4_JpsiTrk_Bc_v12, fragment.HLT_DoubleMu43NoFiltersNoVtx_v14, fragment.HLT_DoubleMu48NoFiltersNoVtx_v14, fragment.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, fragment.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, fragment.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, fragment.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, fragment.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, fragment.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, fragment.HLT_Ele28_HighEta_SC20_Mass55_v23, fragment.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, fragment.HLT_Ele15_IsoVVVL_PFHT450_v28, fragment.HLT_Ele50_IsoVVVL_PFHT450_v28, fragment.HLT_Ele15_IsoVVVL_PFHT600_v32, fragment.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, fragment.HLT_Mu15_IsoVVVL_PFHT450_v27, fragment.HLT_Mu50_IsoVVVL_PFHT450_v27, fragment.HLT_Mu15_IsoVVVL_PFHT600_v31, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, fragment.HLT_Dimuon10_Upsilon_y1p4_v13, fragment.HLT_Dimuon12_Upsilon_y1p4_v14, fragment.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, fragment.HLT_Dimuon25_Jpsi_v26, fragment.HLT_Dimuon14_PsiPrime_v25, fragment.HLT_Dimuon14_PsiPrime_noCorrL1_v17, fragment.HLT_Dimuon18_PsiPrime_v26, fragment.HLT_Dimuon18_PsiPrime_noCorrL1_v18, fragment.HLT_Dimuon24_Upsilon_noCorrL1_v18, fragment.HLT_Dimuon24_Phi_noCorrL1_v18, fragment.HLT_Dimuon25_Jpsi_noCorrL1_v18, fragment.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, fragment.HLT_DoubleIsoMu20_eta2p1_v19, fragment.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, fragment.HLT_Mu8_v24, fragment.HLT_Mu17_v25, fragment.HLT_Mu19_v16, fragment.HLT_Mu17_Photon30_IsoCaloId_v18, fragment.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, fragment.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, fragment.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, fragment.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, fragment.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, fragment.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, fragment.HLT_PFHT400_SixPFJet32_v21, fragment.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, fragment.HLT_PFHT450_SixPFJet36_v20, fragment.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, fragment.HLT_PFHT350_v31, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, fragment.HLT_ECALHT800_v20, fragment.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, fragment.HLT_Photon20_HoverELoose_v20, fragment.HLT_Photon30_HoverELoose_v20, fragment.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, fragment.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, fragment.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, fragment.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, fragment.HLT_Mu18_Mu9_SameSign_v16, fragment.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, fragment.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, fragment.HLT_QuadPFJet103_88_75_15_v17, fragment.HLT_QuadPFJet105_88_76_15_v17, fragment.HLT_QuadPFJet111_90_80_15_v17, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, fragment.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, fragment.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, fragment.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, fragment.HLT_PFHT250_QuadPFJet25_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, fragment.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, fragment.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, fragment.HLT_QuadPFJet100_88_70_30_v10, fragment.HLT_QuadPFJet105_88_75_30_v9, fragment.HLT_QuadPFJet111_90_80_30_v9, fragment.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, fragment.HLT_AK8PFJet220_SoftDropMass40_v13, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_v13, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_Nch45_v6, fragment.HLT_AK8PFJet275_Nch40_v6, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, fragment.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, fragment.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, fragment.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu10NoVtx_2Cha_v9, fragment.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L3Mu10NoVtx_v10, fragment.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, fragment.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, fragment.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, fragment.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, fragment.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, fragment.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, fragment.HLT_L1Mu6HT240_v9, fragment.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, fragment.HLT_HT350_v7, fragment.HLT_HT425_v19, fragment.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT550_DisplacedDijet60_Inclusive_v23, fragment.HLT_HT650_DisplacedDijet60_Inclusive_v23, fragment.HLT_CaloMET60_DTCluster50_v11, fragment.HLT_CaloMET60_DTClusterNoMB1S50_v11, fragment.HLT_L1MET_DTCluster50_v11, fragment.HLT_L1MET_DTClusterNoMB1S50_v11, fragment.HLT_CscCluster_Loose_v10, fragment.HLT_CscCluster_Medium_v10, fragment.HLT_CscCluster_Tight_v10, fragment.HLT_CscCluster50_Photon20Unseeded_v4, fragment.HLT_CscCluster50_Photon30Unseeded_v4, fragment.HLT_CscCluster100_Ele5_v4, fragment.HLT_CscCluster100_Mu5_v6, fragment.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, fragment.HLT_DoubleCscCluster75_v7, fragment.HLT_IsoTrk200_L1SingleMuShower_v4, fragment.HLT_IsoTrk400_L1SingleMuShower_v4, fragment.HLT_DoubleCscCluster100_v7, fragment.HLT_L1CSCShower_DTCluster50_v10, fragment.HLT_L1CSCShower_DTCluster75_v10, fragment.HLT_PFMET105_IsoTrk50_v13, fragment.HLT_L1SingleLLPJet_v7, fragment.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, fragment.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, fragment.HLT_DiPhoton10Time1ns_v10, fragment.HLT_DiPhoton10Time1p2ns_v10, fragment.HLT_DiPhoton10Time1p4ns_v10, fragment.HLT_DiPhoton10Time1p6ns_v10, fragment.HLT_DiPhoton10Time1p8ns_v10, fragment.HLT_DiPhoton10Time2ns_v10, fragment.HLT_DiPhoton10_CaloIdL_v10, fragment.HLT_DoubleEle6p5_eta1p22_mMax6_v10, fragment.HLT_DoubleEle8_eta1p22_mMax6_v10, fragment.HLT_DoubleEle10_eta1p22_mMax6_v10, fragment.HLT_SingleEle8_v9, fragment.HLT_SingleEle8_SingleEGL1_v9, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Mu50_L1SingleMuShower_v11, fragment.HLT_IsoMu24_OneProng32_v9, fragment.HLT_Photon32_OneProng32_M50To105_v10, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1050_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1200_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_PFJet200_TimeLtNeg2p5ns_v10, fragment.HLT_PFJet200_TimeGt2p5ns_v10, fragment.HLT_Photon50_TimeLtNeg2p5ns_v7, fragment.HLT_Photon50_TimeGt2p5ns_v7, fragment.HLT_PPSMaxTracksPerArm1_v9, fragment.HLT_PPSMaxTracksPerRP4_v9, fragment.HLT_PPSRandom_v1, fragment.HLT_HIL1NotBptxOR_v14, fragment.HLT_HIL1UnpairedBunchBptxPlus_v14, fragment.HLT_HIL1UnpairedBunchBptxMinus_v14, fragment.HLT_HIPhysics_v14, fragment.HLT_HIPhysicsForZS_v14, fragment.HLT_HIRandom_v7, fragment.HLT_HIRandom_HighRate_v3, fragment.HLT_HIHcalNZS_v14, fragment.HLT_HIHcalPhiSym_v14, fragment.HLT_HIZeroBias_v14, fragment.HLT_HIZeroBias_HighRate_v7, fragment.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, fragment.HLT_HIZeroBias_HighRateRAW_v4, fragment.HLT_HIMinimumBiasHF1AND_v7, fragment.HLT_HIMinimumBiasHF1AND_copy_v6, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, fragment.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, fragment.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1, fragment.HLT_HIL1Centrality30_50_v7, fragment.HLT_HIL1_UCC_0_0p5_v7, fragment.HLT_HIL1_UCC_0_1_v7, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet80Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet100Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet120Eta2p1_v7, fragment.HLT_HIPuAK4CaloJet120Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet40Fwd_v7, fragment.HLT_HIPuAK4CaloJet60Fwd_v7, fragment.HLT_HIPuAK4CaloJet80Fwd_v7, fragment.HLT_HIPuAK4CaloJet100Fwd_v7, fragment.HLT_HIPuAK4CaloJet120Fwd_v7, fragment.HLT_HIGEDPhoton10_v14, fragment.HLT_HIGEDPhoton10_EB_v14, fragment.HLT_HIGEDPhoton20_v14, fragment.HLT_HIGEDPhoton20_EB_v14, fragment.HLT_HIGEDPhoton30_v14, fragment.HLT_HIGEDPhoton30_EB_v14, fragment.HLT_HIGEDPhoton40_v14, fragment.HLT_HIGEDPhoton40_EB_v14, fragment.HLT_HIGEDPhoton50_v14, fragment.HLT_HIGEDPhoton50_EB_v14, fragment.HLT_HIGEDPhoton60_v14, fragment.HLT_HIGEDPhoton60_EB_v14, fragment.HLT_HIDoubleGEDPhoton20_v7, fragment.HLT_HIEle10Gsf_v14, fragment.HLT_HIEle15Gsf_v14, fragment.HLT_HIEle20Gsf_v14, fragment.HLT_HIEle30Gsf_v14, fragment.HLT_HIEle40Gsf_v14, fragment.HLT_HIEle50Gsf_v14, fragment.HLT_HIEle15Ele10Gsf_v14, fragment.HLT_HIEle15Ele10GsfMass50_v14, fragment.HLT_HIDoubleEle10Gsf_v14, fragment.HLT_HIDoubleEle10GsfMass50_v14, fragment.HLT_HIDoubleEle15Gsf_v14, fragment.HLT_HIDoubleEle15GsfMass50_v14, fragment.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_NotMBHF2_v5, fragment.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, fragment.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1, fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1, fragment.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, fragment.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_Random_HighRate_v1, fragment.HLT_HIUPC_HFafterglowCombined_v1, fragment.HLT_HIL1SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality40to100_v1, fragment.HLT_HIL1SingleMu0_v7, fragment.HLT_HIL1SingleMu0_Open_v7, fragment.HLT_HIL1SingleMu0_Cosmic_v7, fragment.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, fragment.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, fragment.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, fragment.HLT_HIL2DoubleMuOpen_SS_v1, fragment.HLT_HIL2DoubleMuOpen_OS_v1, fragment.HLT_HIL1DoubleMu0_v7, fragment.HLT_HIL2DoubleMu0_SQ_v1, fragment.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, fragment.HLT_HIL1DoubleMu0_SQ_v7, fragment.HLT_HIL2SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality40to100_v1, fragment.HLT_HIL2SingleMu3_Open_v7, fragment.HLT_HIL2SingleMu5_v7, fragment.HLT_HIL2SingleMu7_v7, fragment.HLT_HIL2SingleMu12_v1, fragment.HLT_HIL2DoubleMu0_Open_v7, fragment.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu3_M7to15_Open_v7, fragment.HLT_HIL3SingleMu3_Open_v7, fragment.HLT_HIL3SingleMu5_v7, fragment.HLT_HIL3SingleMu7_v7, fragment.HLT_HIL3SingleMu12_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3DoubleMu0_M0toInf_Open_v7, fragment.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, fragment.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu2_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, fragment.HLT_HICscCluster_Loose_v7, fragment.HLT_HICscCluster_Medium_v7, fragment.HLT_HICscCluster_Tight_v7, fragment.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, fragment.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, fragment.HLT_HIL1NotBptxORForPPRef_v9, fragment.HLT_HIHT80_Beamspot_ppRef5TeV_v15, fragment.HLT_PPRefZeroBias_v6, fragment.HLT_AK4CaloJet40_v6, fragment.HLT_AK4CaloJet60_v6, fragment.HLT_AK4CaloJet70_v6, fragment.HLT_AK4CaloJet80_v6, fragment.HLT_AK4CaloJet100_v6, fragment.HLT_AK4CaloJet120_v6, fragment.HLT_AK4CaloJetFwd40_v6, fragment.HLT_AK4CaloJetFwd60_v6, fragment.HLT_AK4CaloJetFwd70_v6, fragment.HLT_AK4CaloJetFwd80_v6, fragment.HLT_AK4CaloJetFwd100_v6, fragment.HLT_AK4CaloJetFwd120_v6, fragment.HLT_AK4PFJet40_v8, fragment.HLT_AK4PFJet60_v8, fragment.HLT_AK4PFJet80_v8, fragment.HLT_AK4PFJet100_v8, fragment.HLT_AK4PFJet120_v8, fragment.HLT_AK4PFJetFwd40_v8, fragment.HLT_AK4PFJetFwd60_v8, fragment.HLT_AK4PFJetFwd80_v8, fragment.HLT_AK4PFJetFwd100_v8, fragment.HLT_AK4PFJetFwd120_v8, fragment.HLT_PPRefDoubleEle10Gsf_v6, fragment.HLT_PPRefDoubleEle10GsfMass50_v6, fragment.HLT_PPRefDoubleEle15Gsf_v6, fragment.HLT_PPRefDoubleEle15GsfMass50_v6, fragment.HLT_PPRefEle15Ele10Gsf_v6, fragment.HLT_PPRefEle15Ele10GsfMass50_v6, fragment.HLT_PPRefEle10Gsf_v6, fragment.HLT_PPRefEle15Gsf_v6, fragment.HLT_PPRefEle20Gsf_v7, fragment.HLT_PPRefEle30Gsf_v7, fragment.HLT_PPRefEle40Gsf_v6, fragment.HLT_PPRefEle50Gsf_v6, fragment.HLT_PPRefGEDPhoton10_v6, fragment.HLT_PPRefGEDPhoton10_EB_v6, fragment.HLT_PPRefGEDPhoton20_v6, fragment.HLT_PPRefGEDPhoton20_EB_v6, fragment.HLT_PPRefGEDPhoton30_v6, fragment.HLT_PPRefGEDPhoton30_EB_v6, fragment.HLT_PPRefGEDPhoton40_v6, fragment.HLT_PPRefGEDPhoton40_EB_v6, fragment.HLT_PPRefGEDPhoton50_v6, fragment.HLT_PPRefGEDPhoton50_EB_v6, fragment.HLT_PPRefGEDPhoton60_v6, fragment.HLT_PPRefGEDPhoton60_EB_v6, fragment.HLT_PPRefDoubleGEDPhoton20_v1, fragment.HLT_PPRefL1DoubleMu0_v6, fragment.HLT_PPRefL1DoubleMu0_SQ_v1, fragment.HLT_PPRefL1DoubleMu0_Open_v6, fragment.HLT_PPRefL1DoubleMu2_v1, fragment.HLT_PPRefL1DoubleMu2_SQ_v1, fragment.HLT_PPRefL1SingleMu0_Cosmics_v6, fragment.HLT_PPRefL1SingleMu7_v6, fragment.HLT_PPRefL1SingleMu12_v6, fragment.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, fragment.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, fragment.HLT_PPRefL2DoubleMu0_v6, fragment.HLT_PPRefL2DoubleMu0_Open_v6, fragment.HLT_PPRefL2SingleMu7_v6, fragment.HLT_PPRefL2SingleMu12_v6, fragment.HLT_PPRefL2SingleMu15_v6, fragment.HLT_PPRefL2SingleMu20_v6, fragment.HLT_PPRefL3DoubleMu0_v8, fragment.HLT_PPRefL3DoubleMu0_Open_v8, fragment.HLT_PPRefL3SingleMu3_v8, fragment.HLT_PPRefL3SingleMu5_v8, fragment.HLT_PPRefL3SingleMu7_v8, fragment.HLT_PPRefL3SingleMu12_v8, fragment.HLT_PPRefL3SingleMu15_v8, fragment.HLT_PPRefL3SingleMu20_v8, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, fragment.HLT_PPRefCscCluster_Loose_v6, fragment.HLT_PPRefCscCluster_Medium_v6, fragment.HLT_PPRefCscCluster_Tight_v6, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, fragment.HLT_PPRefUPC_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_ZDC1nOR_v1, fragment.HLT_PPRefZeroBias_FirstCollisionInTrain_v1, fragment.MC_ReducedIterativeTracking_v22, fragment.MC_AK4CaloJets_v19, fragment.MC_AK4CaloJetsFromPV_v18, fragment.MC_CaloHT_v18, fragment.MC_AK8CaloHT_v18, fragment.MC_CaloMHT_v18, fragment.MC_AK4PFJets_v29, fragment.MC_PFHT_v28, fragment.MC_AK8PFJets_v29, fragment.MC_AK8PFHT_v28, fragment.MC_CaloMET_v18, fragment.MC_CaloMET_JetIdCleaned_v19, fragment.MC_PFMET_v29, fragment.MC_PFMHT_v28, fragment.MC_AK4PFJetPNet_v5, fragment.MC_AK8PFJetPNet_v5, fragment.MC_Egamma_Open_v8, fragment.MC_Egamma_Open_Unseeded_v8, fragment.MC_Ele5_WPTight_Gsf_v18, fragment.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, fragment.MC_DoubleEle5_CaloIdL_MW_v26, fragment.MC_IsoMu_v27, fragment.MC_DoubleMu_TrkIsoVVL_DZ_v23, fragment.MC_DoubleMuNoFiltersNoVtx_v17, fragment.MC_PFScouting_v6, fragment.HLT_SpecialHLTPhysics_v7, fragment.AlCa_LumiPixelsCounts_RandomHighRate_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, fragment.HLT_L1AXOVTight_v4, fragment.HLT_L1SingleMuOpen_v6, fragment.HLT_L1SingleMuOpen_DT_v6, fragment.HLT_L1SingleMu3_v5, fragment.HLT_L1SingleMu5_v5, fragment.HLT_L1SingleMu7_v5, fragment.HLT_L1DoubleMu0_v5, fragment.HLT_L1SingleJet8erHE_v5, fragment.HLT_L1SingleJet10erHE_v5, fragment.HLT_L1SingleJet12erHE_v5, fragment.HLT_L1SingleJet35_v5, fragment.HLT_L1SingleJet200_v5, fragment.HLT_L1SingleEG8er2p5_v4, fragment.HLT_L1SingleEG10er2p5_v4, fragment.HLT_L1SingleEG15er2p5_v4, fragment.HLT_L1SingleEG26er2p5_v4, fragment.HLT_L1SingleEG28er2p5_v4, fragment.HLT_L1SingleEG28er2p1_v4, fragment.HLT_L1SingleEG28er1p5_v4, fragment.HLT_L1SingleEG34er2p5_v4, fragment.HLT_L1SingleEG36er2p5_v4, fragment.HLT_L1SingleEG38er2p5_v4, fragment.HLT_L1SingleEG40er2p5_v4, fragment.HLT_L1SingleEG42er2p5_v4, fragment.HLT_L1SingleEG45er2p5_v4, fragment.HLT_L1SingleEG50_v4, fragment.HLT_L1SingleJet60_v4, fragment.HLT_L1SingleJet90_v4, fragment.HLT_L1SingleJet120_v4, fragment.HLT_L1SingleJet180_v4, fragment.HLT_L1HTT120er_v4, fragment.HLT_L1HTT160er_v4, fragment.HLT_L1HTT200er_v4, fragment.HLT_L1HTT255er_v4, fragment.HLT_L1HTT280er_v4, fragment.HLT_L1HTT320er_v4, fragment.HLT_L1HTT360er_v4, fragment.HLT_L1HTT400er_v4, fragment.HLT_L1HTT450er_v4, fragment.HLT_L1ETM120_v4, fragment.HLT_L1ETM150_v4, fragment.HLT_L1EXT_HCAL_LaserMon1_v5, fragment.HLT_L1EXT_HCAL_LaserMon4_v5, fragment.HLT_CscCluster_Cosmic_v4, fragment.HLT_HT60_Beamspot_v22, fragment.HLT_HT300_Beamspot_PixelClusters_WP2_v7, fragment.HLT_PixelClusters_WP2_v4, fragment.HLT_PixelClusters_WP1_v4, fragment.HLT_BptxOR_v6, fragment.HLT_L1SingleMuCosmics_EMTF_v4, fragment.HLT_L1SingleMuCosmics_CosmicTracking_v1, fragment.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, fragment.HLT_L1FatEvents_v5, fragment.HLT_Random_HighRate_v1, fragment.HLT_ZeroBias_HighRate_v4, fragment.HLT_ZeroBias_Gated_v4, fragment.HLT_SpecialZeroBias_v6, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLowPtJet, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate0, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate1, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate2, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate3, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate4, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate5, fragment.Dataset_AlCaLumiPixelsCountsGated, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPPSExpress, fragment.Dataset_AlCaPPSPrompt, fragment.Dataset_AlCaPhiSym, fragment.Dataset_BTagMu, fragment.Dataset_Commissioning, fragment.Dataset_Cosmics, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_DQMPPSRandom, fragment.Dataset_DisplacedJet, fragment.Dataset_EGamma0, fragment.Dataset_EGamma1, fragment.Dataset_EcalLaser, fragment.Dataset_EmptyBX, fragment.Dataset_EphemeralHLTPhysics0, fragment.Dataset_EphemeralHLTPhysics1, fragment.Dataset_EphemeralHLTPhysics2, fragment.Dataset_EphemeralHLTPhysics3, fragment.Dataset_EphemeralHLTPhysics4, fragment.Dataset_EphemeralHLTPhysics5, fragment.Dataset_EphemeralHLTPhysics6, fragment.Dataset_EphemeralHLTPhysics7, fragment.Dataset_EphemeralZeroBias0, fragment.Dataset_EphemeralZeroBias1, fragment.Dataset_EphemeralZeroBias2, fragment.Dataset_EphemeralZeroBias3, fragment.Dataset_EphemeralZeroBias4, fragment.Dataset_EphemeralZeroBias5, fragment.Dataset_EphemeralZeroBias6, fragment.Dataset_EphemeralZeroBias7, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressCosmics, fragment.Dataset_ExpressPhysics, fragment.Dataset_HIDQMGPUvsCPU, fragment.Dataset_HIDQMOnlineBeamspot, fragment.Dataset_HIEmptyBX, fragment.Dataset_HIEphemeralHLTPhysics, fragment.Dataset_HIEphemeralZeroBias0, fragment.Dataset_HIEphemeralZeroBias1, fragment.Dataset_HIEventDisplay, fragment.Dataset_HIExpressAlignment, fragment.Dataset_HIExpressPhysics, fragment.Dataset_HIExpressPhysicsRawPrime, fragment.Dataset_HIForward0, fragment.Dataset_HIForward1, fragment.Dataset_HIForward2, fragment.Dataset_HIForward3, fragment.Dataset_HIForward4, fragment.Dataset_HIForward5, fragment.Dataset_HIForward6, fragment.Dataset_HIForward7, fragment.Dataset_HIForward8, fragment.Dataset_HIForward9, fragment.Dataset_HIForward10, fragment.Dataset_HIForward11, fragment.Dataset_HIForward12, fragment.Dataset_HIForward13, fragment.Dataset_HIForward14, fragment.Dataset_HIForward15, fragment.Dataset_HIForward16, fragment.Dataset_HIForward17, fragment.Dataset_HIForward18, fragment.Dataset_HIForward19, fragment.Dataset_HIHLTPhysics, fragment.Dataset_HIHcalNZS, fragment.Dataset_HIOnlineMonitor, fragment.Dataset_HIMinimumBias0, fragment.Dataset_HIMinimumBias1, fragment.Dataset_HIMinimumBias2, fragment.Dataset_HIMinimumBias3, fragment.Dataset_HIPhysicsRawPrime0, fragment.Dataset_HITrackerNZS, fragment.Dataset_HIZeroBias0, fragment.Dataset_HIZeroBias1, fragment.Dataset_HIZeroBias2, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_JetMET0, fragment.Dataset_JetMET1, fragment.Dataset_L1Accept, fragment.Dataset_MinimumBias, fragment.Dataset_MonteCarlo, fragment.Dataset_Muon0, fragment.Dataset_Muon1, fragment.Dataset_MuonEG, fragment.Dataset_MuonShower, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_PPRefDoubleMuon0, fragment.Dataset_PPRefDoubleMuon1, fragment.Dataset_PPRefDoubleMuon2, fragment.Dataset_PPRefDoubleMuon3, fragment.Dataset_PPRefHardProbes0, fragment.Dataset_PPRefSingleMuon0, fragment.Dataset_PPRefZeroBiasPlusForward0, fragment.Dataset_ParkingDoubleMuonLowMass0, fragment.Dataset_ParkingDoubleMuonLowMass1, fragment.Dataset_ParkingDoubleMuonLowMass2, fragment.Dataset_ParkingDoubleMuonLowMass3, fragment.Dataset_ParkingDoubleMuonLowMass4, fragment.Dataset_ParkingDoubleMuonLowMass5, fragment.Dataset_ParkingDoubleMuonLowMass6, fragment.Dataset_ParkingDoubleMuonLowMass7, fragment.Dataset_ParkingHH, fragment.Dataset_ParkingLLP, fragment.Dataset_ParkingSingleMuon0, fragment.Dataset_ParkingVBF0, fragment.Dataset_ParkingVBF1, fragment.Dataset_ParkingVBF2, fragment.Dataset_ParkingVBF3, fragment.Dataset_ParkingVBF4, fragment.Dataset_ParkingVBF5, fragment.Dataset_ParkingVBF6, fragment.Dataset_ParkingVBF7, fragment.Dataset_RPCMonitor, fragment.Dataset_ScoutingPFMonitor, fragment.Dataset_ScoutingPFRun3, fragment.Dataset_Tau, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_VRRandom0, fragment.Dataset_VRRandom1, fragment.Dataset_VRRandom2, fragment.Dataset_VRRandom3, fragment.Dataset_VRRandom4, fragment.Dataset_VRRandom5, fragment.Dataset_VRRandom6, fragment.Dataset_VRRandom7, fragment.Dataset_VRRandom8, fragment.Dataset_VRRandom9, fragment.Dataset_VRRandom10, fragment.Dataset_VRRandom11, fragment.Dataset_VRRandom12, fragment.Dataset_VRRandom13, fragment.Dataset_VRRandom14, fragment.Dataset_VRRandom15, fragment.Dataset_ZeroBias, fragment.ScoutingPFOutput, fragment.Dataset_SpecialRandom0, fragment.Dataset_SpecialRandom1, fragment.Dataset_SpecialRandom2, fragment.Dataset_SpecialRandom3, fragment.Dataset_SpecialRandom4, fragment.Dataset_SpecialRandom5, fragment.Dataset_SpecialRandom6, fragment.Dataset_SpecialRandom7, fragment.Dataset_SpecialRandom8, fragment.Dataset_SpecialRandom9, fragment.Dataset_SpecialRandom10, fragment.Dataset_SpecialRandom11, fragment.Dataset_SpecialRandom12, fragment.Dataset_SpecialRandom13, fragment.Dataset_SpecialRandom14, fragment.Dataset_SpecialRandom15, fragment.Dataset_SpecialRandom16, fragment.Dataset_SpecialRandom17, fragment.Dataset_SpecialRandom18, fragment.Dataset_SpecialRandom19, fragment.Dataset_SpecialZeroBias0, fragment.Dataset_SpecialZeroBias1, fragment.Dataset_SpecialZeroBias2, fragment.Dataset_SpecialZeroBias3, fragment.Dataset_SpecialZeroBias4, fragment.Dataset_SpecialZeroBias5, fragment.Dataset_SpecialZeroBias6, fragment.Dataset_SpecialZeroBias7, fragment.Dataset_SpecialZeroBias8, fragment.Dataset_SpecialZeroBias9, fragment.Dataset_SpecialZeroBias10, fragment.Dataset_SpecialZeroBias11, fragment.Dataset_SpecialZeroBias12, fragment.Dataset_SpecialZeroBias13, fragment.Dataset_SpecialZeroBias14, fragment.Dataset_SpecialZeroBias15, fragment.Dataset_SpecialZeroBias16, fragment.Dataset_SpecialZeroBias17, fragment.Dataset_SpecialZeroBias18, fragment.Dataset_SpecialZeroBias19, fragment.Dataset_SpecialZeroBias20, fragment.Dataset_SpecialZeroBias21, fragment.Dataset_SpecialZeroBias22, fragment.Dataset_SpecialZeroBias23, fragment.Dataset_SpecialZeroBias24, fragment.Dataset_SpecialZeroBias25, fragment.Dataset_SpecialZeroBias26, fragment.Dataset_SpecialZeroBias27, fragment.Dataset_SpecialZeroBias28, fragment.Dataset_SpecialZeroBias29, fragment.Dataset_SpecialZeroBias30, fragment.Dataset_SpecialZeroBias31, fragment.Dataset_SpecialHLTPhysics0, fragment.Dataset_SpecialHLTPhysics1, fragment.Dataset_SpecialHLTPhysics2, fragment.Dataset_SpecialHLTPhysics3, fragment.Dataset_SpecialHLTPhysics4, fragment.Dataset_SpecialHLTPhysics5, fragment.Dataset_SpecialHLTPhysics6, fragment.Dataset_SpecialHLTPhysics7, fragment.Dataset_SpecialHLTPhysics8, fragment.Dataset_SpecialHLTPhysics9, fragment.Dataset_SpecialHLTPhysics10, fragment.Dataset_SpecialHLTPhysics11, fragment.Dataset_SpecialHLTPhysics12, fragment.Dataset_SpecialHLTPhysics13, fragment.Dataset_SpecialHLTPhysics14, fragment.Dataset_SpecialHLTPhysics15, fragment.Dataset_SpecialHLTPhysics16, fragment.Dataset_SpecialHLTPhysics17, fragment.Dataset_SpecialHLTPhysics18, fragment.Dataset_SpecialHLTPhysics19, fragment.Dataset_ParkingSingleMuon1, fragment.Dataset_ParkingSingleMuon2, fragment.Dataset_ParkingSingleMuon3, fragment.Dataset_ParkingSingleMuon4, fragment.Dataset_ParkingSingleMuon5, fragment.Dataset_ParkingSingleMuon6, fragment.Dataset_ParkingSingleMuon7, fragment.Dataset_ParkingSingleMuon8, fragment.Dataset_ParkingSingleMuon9, fragment.Dataset_ParkingSingleMuon10, fragment.Dataset_ParkingSingleMuon11, fragment.Dataset_PPRefZeroBiasPlusForward1, fragment.Dataset_PPRefZeroBiasPlusForward2, fragment.Dataset_PPRefZeroBiasPlusForward3, fragment.Dataset_PPRefZeroBiasPlusForward4, fragment.Dataset_PPRefZeroBiasPlusForward5, fragment.Dataset_PPRefZeroBiasPlusForward6, fragment.Dataset_PPRefZeroBiasPlusForward7, fragment.Dataset_PPRefZeroBiasPlusForward8, fragment.Dataset_PPRefZeroBiasPlusForward9, fragment.Dataset_PPRefZeroBiasPlusForward10, fragment.Dataset_PPRefZeroBiasPlusForward11, fragment.Dataset_PPRefZeroBiasPlusForward12, fragment.Dataset_PPRefZeroBiasPlusForward13, fragment.Dataset_PPRefZeroBiasPlusForward14, fragment.Dataset_PPRefZeroBiasPlusForward15, fragment.Dataset_PPRefZeroBiasPlusForward16, fragment.Dataset_PPRefZeroBiasPlusForward17, fragment.Dataset_PPRefZeroBiasPlusForward18, fragment.Dataset_PPRefZeroBiasPlusForward19, fragment.Dataset_PPRefZeroBiasPlusForward20, fragment.Dataset_PPRefZeroBiasPlusForward21, fragment.Dataset_PPRefZeroBiasPlusForward22, fragment.Dataset_PPRefZeroBiasPlusForward23, fragment.Dataset_PPRefZeroBiasPlusForward24, fragment.Dataset_PPRefSingleMuon1, fragment.Dataset_PPRefSingleMuon2, fragment.Dataset_PPRefSingleMuon3, fragment.Dataset_PPRefHardProbes1, fragment.Dataset_PPRefHardProbes2, fragment.Dataset_PPRefHardProbes3, fragment.Dataset_PPRefHardProbes4, fragment.Dataset_HIPhysicsRawPrime1, fragment.Dataset_HIPhysicsRawPrime2, fragment.Dataset_HIPhysicsRawPrime3, fragment.Dataset_HIPhysicsRawPrime4, fragment.Dataset_HIPhysicsRawPrime5, fragment.Dataset_HIPhysicsRawPrime6, fragment.Dataset_HIPhysicsRawPrime7, fragment.Dataset_HIPhysicsRawPrime8, fragment.Dataset_HIPhysicsRawPrime9, fragment.Dataset_HIPhysicsRawPrime10, fragment.Dataset_HIPhysicsRawPrime11, fragment.Dataset_HIPhysicsRawPrime12, fragment.Dataset_HIPhysicsRawPrime13, fragment.Dataset_HIPhysicsRawPrime14, fragment.Dataset_HIPhysicsRawPrime15, fragment.Dataset_HIPhysicsRawPrime16, fragment.Dataset_HIPhysicsRawPrime17, fragment.Dataset_HIPhysicsRawPrime18, fragment.Dataset_HIPhysicsRawPrime19, fragment.Dataset_HIPhysicsRawPrime20, fragment.Dataset_HIPhysicsRawPrime21, fragment.Dataset_HIPhysicsRawPrime22, fragment.Dataset_HIPhysicsRawPrime23, fragment.Dataset_HIPhysicsRawPrime24, fragment.Dataset_HIPhysicsRawPrime25, fragment.Dataset_HIPhysicsRawPrime26, fragment.Dataset_HIPhysicsRawPrime27, fragment.Dataset_HIPhysicsRawPrime28, fragment.Dataset_HIPhysicsRawPrime29, fragment.Dataset_HIPhysicsRawPrime30, fragment.Dataset_HIPhysicsRawPrime31, fragment.Dataset_HIPhysicsRawPrime32, fragment.Dataset_HIPhysicsRawPrime33, fragment.Dataset_HIPhysicsRawPrime34, fragment.Dataset_HIPhysicsRawPrime35, fragment.Dataset_HIPhysicsRawPrime36, fragment.Dataset_HIPhysicsRawPrime37, fragment.Dataset_HIPhysicsRawPrime38, fragment.Dataset_HIPhysicsRawPrime39, fragment.Dataset_HIPhysicsRawPrime40, fragment.Dataset_HIPhysicsRawPrime41, fragment.Dataset_HIPhysicsRawPrime42, fragment.Dataset_HIPhysicsRawPrime43, fragment.Dataset_HIPhysicsRawPrime44, fragment.Dataset_HIPhysicsRawPrime45, fragment.Dataset_HIPhysicsRawPrime46, fragment.Dataset_HIPhysicsRawPrime47, fragment.Dataset_HIPhysicsRawPrime48, fragment.Dataset_HIPhysicsRawPrime49, fragment.Dataset_HIPhysicsRawPrime50, fragment.Dataset_HIPhysicsRawPrime51, fragment.Dataset_HIPhysicsRawPrime52, fragment.Dataset_HIPhysicsRawPrime53, fragment.Dataset_HIPhysicsRawPrime54, fragment.Dataset_HIPhysicsRawPrime55, fragment.Dataset_HIPhysicsRawPrime56, fragment.Dataset_HIPhysicsRawPrime57, fragment.Dataset_HIPhysicsRawPrime58, fragment.Dataset_HIPhysicsRawPrime59, )) # dummify hltGetConditions in cff's diff --git a/HLTrigger/Configuration/python/HLT_Fake1_cff.py b/HLTrigger/Configuration/python/HLT_Fake1_cff.py index 21c2608b33363..b497aa00b97c8 100644 --- a/HLTrigger/Configuration/python/HLT_Fake1_cff.py +++ b/HLTrigger/Configuration/python/HLT_Fake1_cff.py @@ -1,13 +1,13 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Fake1 --cff --data --type Fake1 +# hltGetConfiguration /dev/CMSSW_14_2_0/Fake1 --cff --data --type Fake1 -# /dev/CMSSW_14_1_0/Fake1/V12 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Fake1/V5 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms fragment = cms.ProcessFragment( "HLT" ) fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Fake1/V12") + tableName = cms.string("/dev/CMSSW_14_2_0/Fake1/V5") ) fragment.streams = cms.PSet( A = cms.vstring( 'InitialPD' ) ) diff --git a/HLTrigger/Configuration/python/HLT_Fake2_cff.py b/HLTrigger/Configuration/python/HLT_Fake2_cff.py index 9a03544e0d111..9d69ca9df0965 100644 --- a/HLTrigger/Configuration/python/HLT_Fake2_cff.py +++ b/HLTrigger/Configuration/python/HLT_Fake2_cff.py @@ -1,13 +1,13 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Fake2 --cff --data --type Fake2 +# hltGetConfiguration /dev/CMSSW_14_2_0/Fake2 --cff --data --type Fake2 -# /dev/CMSSW_14_1_0/Fake2/V12 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Fake2/V5 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms fragment = cms.ProcessFragment( "HLT" ) fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Fake2/V12") + tableName = cms.string("/dev/CMSSW_14_2_0/Fake2/V5") ) fragment.streams = cms.PSet( A = cms.vstring( 'InitialPD' ) ) diff --git a/HLTrigger/Configuration/python/HLT_Fake_cff.py b/HLTrigger/Configuration/python/HLT_Fake_cff.py index cc7f2ba430995..e73694ea54213 100644 --- a/HLTrigger/Configuration/python/HLT_Fake_cff.py +++ b/HLTrigger/Configuration/python/HLT_Fake_cff.py @@ -1,13 +1,13 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Fake --cff --data --type Fake +# hltGetConfiguration /dev/CMSSW_14_2_0/Fake --cff --data --type Fake -# /dev/CMSSW_14_1_0/Fake/V12 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Fake/V5 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms fragment = cms.ProcessFragment( "HLT" ) fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Fake/V12") + tableName = cms.string("/dev/CMSSW_14_2_0/Fake/V5") ) fragment.streams = cms.PSet( A = cms.vstring( 'InitialPD' ) ) diff --git a/HLTrigger/Configuration/python/HLT_GRun_cff.py b/HLTrigger/Configuration/python/HLT_GRun_cff.py index e451153bc301d..f3db965b49b66 100644 --- a/HLTrigger/Configuration/python/HLT_GRun_cff.py +++ b/HLTrigger/Configuration/python/HLT_GRun_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/GRun --cff --data --type GRun +# hltGetConfiguration /dev/CMSSW_14_2_0/GRun --cff --data --type GRun -# /dev/CMSSW_14_1_0/GRun/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/GRun/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/GRun/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/GRun/V10") ) fragment.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1859,9 +1859,12 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -6406,8 +6409,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -8472,6 +8475,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -9050,6 +9054,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -9851,6 +9856,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -11160,8 +11166,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -11883,6 +11889,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -12418,6 +12425,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -13219,6 +13227,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -16792,7 +16801,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombinedUnseeded = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeedsUnseeded = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedUnseeded" ), @@ -20698,7 +20708,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -31286,6 +31297,10 @@ DepTag = cms.VInputTag( 'hltMuonTkRelIsolationCut0p14Map' ), IsolatorPSet = cms.PSet( ) ) +fragment.hltPreIsoMu24HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreIsoMu24eta2p1 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -33094,6 +33109,10 @@ MinPixHitsForDZ = cms.int32( 0 ), checkSC = cms.bool( False ) ) +fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -33275,6 +33294,10 @@ propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) ) +fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -70709,6 +70732,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PixelLessHitDoubletsForGlbDisplacedMuons = cms.EDProducer( "HitPairEDProducer", @@ -70950,6 +70974,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PixelLessHitDoubletsForDisplacedTkMuons = cms.EDProducer( "HitPairEDProducer", @@ -72364,6 +72389,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PFlowPixelLessHitDoubletsForTau = cms.EDProducer( "HitPairEDProducer", @@ -75418,6 +75444,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter1PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -75718,6 +75745,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter2PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -76637,6 +76665,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDisplacedhltIter4PFlowPixelLessHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -86104,9 +86133,12 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -88184,6 +88216,7 @@ fragment.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleAndDoubleEGor + fragment.hltPreEle32WPTightGsfL1DoubleEG + fragment.HLTEle32L1DoubleEGWPTightGsfSequence + fragment.HLTEndSequence ) fragment.HLT_IsoMu20_v27 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu18 + fragment.hltPreIsoMu20 + fragment.hltL1fL1sMu18L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sMu18L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu18L1Filtered0) + fragment.hltL3fL1sMu18L1f0L2f10QL3Filtered20Q + fragment.HLTMu20IsolationSequence + fragment.hltL3crIsoL1sMu18L1f0L2f10QL3f20QL3trkIsoFiltered + fragment.HLTEndSequence ) fragment.HLT_IsoMu24_v25 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22 + fragment.hltPreIsoMu24 + fragment.hltL1fL1sMu22L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22L1Filtered0) + fragment.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + fragment.HLTMu24IsolationSequence + fragment.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + fragment.HLTEndSequence ) +fragment.HLT_IsoMu24_HLTTracking_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22 + fragment.hltPreIsoMu24HLTTracking + fragment.hltL1fL1sMu22L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22L1Filtered0) + fragment.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + fragment.HLTMu24IsolationSequence + fragment.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.HLT_IsoMu24_eta2p1_v27 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22 + fragment.hltPreIsoMu24eta2p1 + fragment.hltL1fL1sMu22erL1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sSingleMu22erL1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22erL1Filtered0) + fragment.hltL3fL1sSingleMu22erL1f0L2f10QL3Filtered24Q + fragment.HLTMu24Eta2p1IsolationSequence + fragment.hltL3crIsoL1sSingleMu22erL1f0L2f10QL3f24QL3trkIsoFiltered + fragment.HLTEndSequence ) fragment.HLT_IsoMu27_v28 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sSingleMu22or25 + fragment.hltPreIsoMu27 + fragment.hltL1fL1sMu22or25L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2fL1sMu22or25L1f0L2Filtered10Q) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sMu22or25L1Filtered0) + fragment.hltL3fL1sMu22Or25L1f0L2f10QL3Filtered27Q + fragment.HLTMu27IsolationSequence + fragment.hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered + fragment.HLTEndSequence ) fragment.HLT_UncorrectedJetE30_NoBPTX_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sV0SingleJetC20NotBptxOR + fragment.hltPreUncorrectedJetE30NoBPTX + fragment.HLTStoppedHSCPLocalHcalReco + fragment.HLTStoppedHSCPJetSequence + fragment.hltStoppedHSCP1CaloJetEnergy30 + fragment.HLTEndSequence ) @@ -88209,11 +88242,13 @@ fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVL + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.HLTEndSequence ) fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVL + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered9 + fragment.hltL3fL1DoubleMu155fFiltered19 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon199RelTrkIsoVVLFiltered + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZ + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.HLTEndSequence ) +fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered9 + fragment.hltL3fL1DoubleMu155fFiltered19 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon199RelTrkIsoVVLFiltered + fragment.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8PFJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK4CaloJetsSequence + fragment.hltSingleCaloJet10 + fragment.HLTAK4PFJetsSequence + fragment.hltPFJetsCorrectedMatchedToCaloJets10 + fragment.hltSinglePFJet30 + fragment.HLTEndSequence ) fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZMass8 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered9 + fragment.hltL3fL1DoubleMu155fFiltered19 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon199RelTrkIsoVVLFiltered + fragment.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon199Mass8Filtered + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass3p8Filtered + fragment.HLTEndSequence ) +fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass3p8Filtered + fragment.HLTIterativeTrackingIter02 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK4CaloJetsSequence + fragment.hltSingleCaloJet30 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8PFJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK8CaloJetsSequence + fragment.hltSingleCaloJet10AK8 + fragment.HLTAK8PFJetsSequence + fragment.hltPFJetsCorrectedMatchedToCaloJets10AK8 + fragment.hltSinglePFJet30AK8 + fragment.HLTEndSequence ) fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleMu125to157 + fragment.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8CaloJet30 + fragment.hltL1fL1sDoubleMu155L1Filtered0 + fragment.HLTL2muonrecoSequence + cms.ignore(fragment.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(fragment.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + fragment.HLTL3muonrecoSequence + cms.ignore(fragment.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + fragment.hltL3fL1DoubleMu155fPreFiltered8 + fragment.hltL3fL1DoubleMu155fFiltered17 + fragment.HLTL3muontrkisovvlSequence + fragment.hltDiMuon178RelTrkIsoVVLFiltered + fragment.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + fragment.hltDiMuon178Mass8Filtered + fragment.HLTAK8CaloJetsSequence + fragment.hltSingleCaloJet30AK8 + fragment.HLTEndSequence ) @@ -88928,7 +88963,7 @@ fragment.Dataset_ParkingSingleMuon11 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetParkingSingleMuon + fragment.hltPreDatasetParkingSingleMuon11 ) -fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_EcalEtaEBonly_v25, fragment.AlCa_EcalEtaEEonly_v25, fragment.AlCa_EcalPi0EBonly_v25, fragment.AlCa_EcalPi0EEonly_v25, fragment.AlCa_RPCMuonNormalisation_v23, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.AlCa_PFJet40_v32, fragment.AlCa_PFJet40_CPUOnly_v11, fragment.AlCa_AK8PFJet40_v27, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DST_ZeroBias_v11, fragment.DST_Physics_v16, fragment.DST_PFScouting_DoubleMuon_v6, fragment.DST_PFScouting_DoubleEG_v6, fragment.DST_PFScouting_JetHT_v6, fragment.DST_PFScouting_AXOVLoose_v4, fragment.DST_PFScouting_AXOLoose_v4, fragment.DST_PFScouting_AXONominal_v6, fragment.DST_PFScouting_AXOTight_v6, fragment.DST_PFScouting_AXOVTight_v4, fragment.DST_PFScouting_CICADAVLoose_v2, fragment.DST_PFScouting_CICADALoose_v2, fragment.DST_PFScouting_CICADAMedium_v2, fragment.DST_PFScouting_CICADATight_v2, fragment.DST_PFScouting_CICADAVTight_v2, fragment.DST_PFScouting_SingleMuon_v6, fragment.DST_PFScouting_SinglePhotonEB_v3, fragment.DST_PFScouting_ZeroBias_v4, fragment.HLT_EphemeralPhysics_v9, fragment.HLT_EphemeralZeroBias_v9, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Alignment_v8, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_IsolatedBunches_v12, fragment.HLT_ZeroBias_FirstBXAfterTrain_v10, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_ZeroBias_FirstCollisionInTrain_v11, fragment.HLT_ZeroBias_LastCollisionInTrain_v10, fragment.HLT_HT300_Beamspot_v23, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_PFJet40_GPUvsCPU_v7, fragment.HLT_AK8PFJet380_SoftDropMass30_v6, fragment.HLT_AK8PFJet400_SoftDropMass30_v6, fragment.HLT_AK8PFJet425_SoftDropMass30_v6, fragment.HLT_AK8PFJet450_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, fragment.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, fragment.HLT_CaloJet500_NoJetID_v22, fragment.HLT_CaloJet550_NoJetID_v17, fragment.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, fragment.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, fragment.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, fragment.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, fragment.HLT_DoubleEle25_CaloIdL_MW_v15, fragment.HLT_DoubleEle27_CaloIdL_MW_v15, fragment.HLT_DoubleEle33_CaloIdL_MW_v28, fragment.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, fragment.HLT_Mu27_Ele37_CaloIdL_MW_v17, fragment.HLT_Mu37_Ele27_CaloIdL_MW_v17, fragment.HLT_Mu37_TkMu27_v17, fragment.HLT_DoubleMu4_3_Bs_v27, fragment.HLT_DoubleMu4_3_Jpsi_v27, fragment.HLT_DoubleMu4_3_LowMass_v13, fragment.HLT_DoubleMu4_LowMass_Displaced_v13, fragment.HLT_Mu0_L1DoubleMu_v13, fragment.HLT_Mu4_L1DoubleMu_v13, fragment.HLT_DoubleMu2_Jpsi_LowPt_v6, fragment.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu3_Trk_Tau3mu_v24, fragment.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, fragment.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, fragment.HLT_DoubleMu4_MuMuTrk_Displaced_v27, fragment.HLT_Mu3_PFJet40_v28, fragment.HLT_Mu7p5_L2Mu2_Jpsi_v22, fragment.HLT_Mu7p5_L2Mu2_Upsilon_v22, fragment.HLT_Mu3_L1SingleMu5orSingleMu7_v13, fragment.HLT_Mu0_Barrel_v6, fragment.HLT_Mu0_Barrel_L1HP6_v3, fragment.HLT_Mu0_Barrel_L1HP7_v3, fragment.HLT_Mu0_Barrel_L1HP8_v4, fragment.HLT_Mu0_Barrel_L1HP9_v4, fragment.HLT_Mu0_Barrel_L1HP10_v6, fragment.HLT_Mu0_Barrel_L1HP11_v6, fragment.HLT_Mu0_Barrel_L1HP6_IP6_v3, fragment.HLT_Mu6_Barrel_L1HP7_IP6_v3, fragment.HLT_Mu7_Barrel_L1HP8_IP6_v4, fragment.HLT_Mu8_Barrel_L1HP9_IP6_v4, fragment.HLT_Mu9_Barrel_L1HP10_IP6_v6, fragment.HLT_Mu10_Barrel_L1HP11_IP6_v6, fragment.HLT_DoublePhoton33_CaloIdL_v17, fragment.HLT_DoublePhoton70_v17, fragment.HLT_DoublePhoton85_v25, fragment.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, fragment.HLT_Ele30_WPTight_Gsf_v11, fragment.HLT_Ele32_WPTight_Gsf_v25, fragment.HLT_Ele35_WPTight_Gsf_v19, fragment.HLT_Ele38_WPTight_Gsf_v19, fragment.HLT_Ele40_WPTight_Gsf_v19, fragment.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, fragment.HLT_IsoMu20_v27, fragment.HLT_IsoMu24_v25, fragment.HLT_IsoMu24_eta2p1_v27, fragment.HLT_IsoMu27_v28, fragment.HLT_UncorrectedJetE30_NoBPTX_v14, fragment.HLT_UncorrectedJetE30_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE60_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE70_NoBPTX3BX_v14, fragment.HLT_L1SingleMuCosmics_v8, fragment.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, fragment.HLT_L2Mu10_NoVertex_NoBPTX_v15, fragment.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, fragment.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, fragment.HLT_L2Mu23NoVtx_2Cha_v10, fragment.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, fragment.HLT_DoubleL2Mu50_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, fragment.HLT_Mu30_TkMu0_Psi_v13, fragment.HLT_Mu30_TkMu0_Upsilon_v13, fragment.HLT_Mu25_TkMu0_Phi_v20, fragment.HLT_Mu15_v15, fragment.HLT_Mu20_v24, fragment.HLT_Mu27_v25, fragment.HLT_Mu50_v25, fragment.HLT_Mu55_v15, fragment.HLT_CascadeMu100_v13, fragment.HLT_HighPtTkMu100_v12, fragment.HLT_DiPFJetAve40_v26, fragment.HLT_DiPFJetAve60_v26, fragment.HLT_DiPFJetAve80_v26, fragment.HLT_DiPFJetAve140_v25, fragment.HLT_DiPFJetAve200_v25, fragment.HLT_DiPFJetAve260_v26, fragment.HLT_DiPFJetAve320_v26, fragment.HLT_DiPFJetAve400_v26, fragment.HLT_DiPFJetAve500_v26, fragment.HLT_DiPFJetAve60_HFJEC_v27, fragment.HLT_DiPFJetAve80_HFJEC_v29, fragment.HLT_DiPFJetAve100_HFJEC_v29, fragment.HLT_DiPFJetAve160_HFJEC_v28, fragment.HLT_DiPFJetAve220_HFJEC_v28, fragment.HLT_DiPFJetAve260_HFJEC_v11, fragment.HLT_DiPFJetAve300_HFJEC_v28, fragment.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, fragment.HLT_AK8PFJet40_v28, fragment.HLT_AK8PFJet60_v27, fragment.HLT_AK8PFJet80_v28, fragment.HLT_AK8PFJet140_v27, fragment.HLT_AK8PFJet200_v27, fragment.HLT_AK8PFJet260_v28, fragment.HLT_AK8PFJet320_v28, fragment.HLT_AK8PFJet400_v28, fragment.HLT_AK8PFJet450_v28, fragment.HLT_AK8PFJet500_v28, fragment.HLT_AK8PFJet550_v23, fragment.HLT_PFJet40_v33, fragment.HLT_PFJet60_v33, fragment.HLT_PFJet80_v33, fragment.HLT_PFJet110_v12, fragment.HLT_PFJet140_v31, fragment.HLT_PFJet200_v31, fragment.HLT_PFJet260_v32, fragment.HLT_PFJet320_v32, fragment.HLT_PFJet400_v32, fragment.HLT_PFJet450_v33, fragment.HLT_PFJet500_v33, fragment.HLT_PFJet550_v23, fragment.HLT_PFJetFwd40_v31, fragment.HLT_PFJetFwd60_v31, fragment.HLT_PFJetFwd80_v30, fragment.HLT_PFJetFwd140_v30, fragment.HLT_PFJetFwd200_v30, fragment.HLT_PFJetFwd260_v31, fragment.HLT_PFJetFwd320_v31, fragment.HLT_PFJetFwd400_v31, fragment.HLT_PFJetFwd450_v31, fragment.HLT_PFJetFwd500_v31, fragment.HLT_AK8PFJetFwd40_v27, fragment.HLT_AK8PFJetFwd60_v26, fragment.HLT_AK8PFJetFwd80_v26, fragment.HLT_AK8PFJetFwd140_v26, fragment.HLT_AK8PFJetFwd200_v26, fragment.HLT_AK8PFJetFwd260_v27, fragment.HLT_AK8PFJetFwd320_v27, fragment.HLT_AK8PFJetFwd400_v27, fragment.HLT_AK8PFJetFwd450_v27, fragment.HLT_AK8PFJetFwd500_v27, fragment.HLT_PFHT180_v29, fragment.HLT_PFHT250_v29, fragment.HLT_PFHT370_v29, fragment.HLT_PFHT430_v29, fragment.HLT_PFHT510_v29, fragment.HLT_PFHT590_v29, fragment.HLT_PFHT680_v29, fragment.HLT_PFHT780_v29, fragment.HLT_PFHT890_v29, fragment.HLT_PFHT1050_v30, fragment.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, fragment.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, fragment.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, fragment.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, fragment.HLT_PFMET120_PFMHT120_IDTight_v32, fragment.HLT_PFMET130_PFMHT130_IDTight_v32, fragment.HLT_PFMET140_PFMHT140_IDTight_v32, fragment.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, fragment.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, fragment.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, fragment.HLT_L1ETMHadSeeds_v10, fragment.HLT_CaloMHT90_v14, fragment.HLT_CaloMET90_NotCleaned_v14, fragment.HLT_CaloMET350_NotCleaned_v14, fragment.HLT_PFMET200_NotCleaned_v21, fragment.HLT_PFMET250_NotCleaned_v21, fragment.HLT_PFMET300_NotCleaned_v21, fragment.HLT_PFMET200_BeamHaloCleaned_v21, fragment.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, fragment.HLT_MET105_IsoTrk50_v19, fragment.HLT_MET120_IsoTrk50_v19, fragment.HLT_Mu12eta2p3_v13, fragment.HLT_Mu12eta2p3_PFJet40_v13, fragment.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Photon300_NoHE_v23, fragment.HLT_Mu8_TrkIsoVVL_v24, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, fragment.HLT_Mu17_TrkIsoVVL_v25, fragment.HLT_Mu19_TrkIsoVVL_v16, fragment.HLT_BTagMu_AK4DiJet20_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet40_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet70_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet110_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet170_Mu5_v24, fragment.HLT_BTagMu_AK4Jet300_Mu5_v24, fragment.HLT_BTagMu_AK8DiJet170_Mu5_v21, fragment.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, fragment.HLT_BTagMu_AK8Jet300_Mu5_v24, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, fragment.HLT_Photon33_v15, fragment.HLT_Photon50_v23, fragment.HLT_Photon75_v23, fragment.HLT_Photon90_v23, fragment.HLT_Photon120_v23, fragment.HLT_Photon150_v17, fragment.HLT_Photon175_v25, fragment.HLT_Photon200_v24, fragment.HLT_Photon45EB_v3, fragment.HLT_Photon40EB_v3, fragment.HLT_Photon50EB_v4, fragment.HLT_Photon30EB_TightID_TightIso_v12, fragment.HLT_Photon40EB_TightID_TightIso_v3, fragment.HLT_Photon45EB_TightID_TightIso_v3, fragment.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_v8, fragment.HLT_Photon55EB_TightID_TightIso_v4, fragment.HLT_Photon75EB_TightID_TightIso_v8, fragment.HLT_Photon90EB_TightID_TightIso_v8, fragment.HLT_Photon110EB_TightID_TightIso_v12, fragment.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon100EBHE10_v12, fragment.HLT_Photon50_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon75_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon90_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon120_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon165_R9Id90_HE10_IsoM_v25, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, fragment.HLT_DiphotonMVA14p25_Mass90_v3, fragment.HLT_DiphotonMVA14p25_Tight_Mass90_v3, fragment.HLT_Photon35_TwoProngs35_v13, fragment.HLT_IsoMu24_TwoProngs35_v13, fragment.HLT_Dimuon0_Jpsi_L1_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_v20, fragment.HLT_Dimuon0_Jpsi_NoVertexing_v20, fragment.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi3p5_Muon2_v17, fragment.HLT_Dimuon0_Upsilon_L1_4p5_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, fragment.HLT_Dimuon0_Upsilon_NoVertexing_v19, fragment.HLT_Dimuon0_LowMass_L1_0er1p5_v20, fragment.HLT_Dimuon0_LowMass_v20, fragment.HLT_Dimuon0_LowMass_L1_4_v20, fragment.HLT_Dimuon0_LowMass_L1_TM530_v18, fragment.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, fragment.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, fragment.HLT_TripleMu_10_5_5_DZ_v22, fragment.HLT_TripleMu_12_10_5_v22, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, fragment.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, fragment.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, fragment.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, fragment.HLT_DoubleMu4_3_LowMass_SS_v6, fragment.HLT_DoubleMu4_Jpsi_Displaced_v19, fragment.HLT_DoubleMu4_Jpsi_NoVertexing_v19, fragment.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, fragment.HLT_DoubleMu4_JpsiTrk_Bc_v12, fragment.HLT_DoubleMu43NoFiltersNoVtx_v14, fragment.HLT_DoubleMu48NoFiltersNoVtx_v14, fragment.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, fragment.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, fragment.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, fragment.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, fragment.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, fragment.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, fragment.HLT_Ele28_HighEta_SC20_Mass55_v23, fragment.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, fragment.HLT_Ele15_IsoVVVL_PFHT450_v28, fragment.HLT_Ele50_IsoVVVL_PFHT450_v28, fragment.HLT_Ele15_IsoVVVL_PFHT600_v32, fragment.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, fragment.HLT_Mu15_IsoVVVL_PFHT450_v27, fragment.HLT_Mu50_IsoVVVL_PFHT450_v27, fragment.HLT_Mu15_IsoVVVL_PFHT600_v31, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, fragment.HLT_Dimuon10_Upsilon_y1p4_v13, fragment.HLT_Dimuon12_Upsilon_y1p4_v14, fragment.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, fragment.HLT_Dimuon25_Jpsi_v26, fragment.HLT_Dimuon14_PsiPrime_v25, fragment.HLT_Dimuon14_PsiPrime_noCorrL1_v17, fragment.HLT_Dimuon18_PsiPrime_v26, fragment.HLT_Dimuon18_PsiPrime_noCorrL1_v18, fragment.HLT_Dimuon24_Upsilon_noCorrL1_v18, fragment.HLT_Dimuon24_Phi_noCorrL1_v18, fragment.HLT_Dimuon25_Jpsi_noCorrL1_v18, fragment.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, fragment.HLT_DoubleIsoMu20_eta2p1_v19, fragment.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, fragment.HLT_Mu8_v24, fragment.HLT_Mu17_v25, fragment.HLT_Mu19_v16, fragment.HLT_Mu17_Photon30_IsoCaloId_v18, fragment.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, fragment.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, fragment.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, fragment.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, fragment.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, fragment.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, fragment.HLT_PFHT400_SixPFJet32_v21, fragment.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, fragment.HLT_PFHT450_SixPFJet36_v20, fragment.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, fragment.HLT_PFHT350_v31, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, fragment.HLT_ECALHT800_v20, fragment.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, fragment.HLT_Photon20_HoverELoose_v20, fragment.HLT_Photon30_HoverELoose_v20, fragment.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, fragment.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, fragment.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, fragment.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, fragment.HLT_Mu18_Mu9_SameSign_v16, fragment.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, fragment.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, fragment.HLT_QuadPFJet103_88_75_15_v17, fragment.HLT_QuadPFJet105_88_76_15_v17, fragment.HLT_QuadPFJet111_90_80_15_v17, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, fragment.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, fragment.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, fragment.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, fragment.HLT_PFHT250_QuadPFJet25_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, fragment.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, fragment.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, fragment.HLT_QuadPFJet100_88_70_30_v10, fragment.HLT_QuadPFJet105_88_75_30_v9, fragment.HLT_QuadPFJet111_90_80_30_v9, fragment.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, fragment.HLT_AK8PFJet220_SoftDropMass40_v13, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_v13, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_Nch45_v6, fragment.HLT_AK8PFJet275_Nch40_v6, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, fragment.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, fragment.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, fragment.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu10NoVtx_2Cha_v9, fragment.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L3Mu10NoVtx_v10, fragment.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, fragment.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, fragment.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, fragment.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, fragment.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, fragment.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, fragment.HLT_L1Mu6HT240_v9, fragment.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, fragment.HLT_HT350_v7, fragment.HLT_HT425_v19, fragment.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT550_DisplacedDijet60_Inclusive_v23, fragment.HLT_HT650_DisplacedDijet60_Inclusive_v23, fragment.HLT_CaloMET60_DTCluster50_v11, fragment.HLT_CaloMET60_DTClusterNoMB1S50_v11, fragment.HLT_L1MET_DTCluster50_v11, fragment.HLT_L1MET_DTClusterNoMB1S50_v11, fragment.HLT_CscCluster_Loose_v10, fragment.HLT_CscCluster_Medium_v10, fragment.HLT_CscCluster_Tight_v10, fragment.HLT_CscCluster50_Photon20Unseeded_v4, fragment.HLT_CscCluster50_Photon30Unseeded_v4, fragment.HLT_CscCluster100_Ele5_v4, fragment.HLT_CscCluster100_Mu5_v6, fragment.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, fragment.HLT_DoubleCscCluster75_v7, fragment.HLT_IsoTrk200_L1SingleMuShower_v4, fragment.HLT_IsoTrk400_L1SingleMuShower_v4, fragment.HLT_DoubleCscCluster100_v7, fragment.HLT_L1CSCShower_DTCluster50_v10, fragment.HLT_L1CSCShower_DTCluster75_v10, fragment.HLT_PFMET105_IsoTrk50_v13, fragment.HLT_L1SingleLLPJet_v7, fragment.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, fragment.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, fragment.HLT_DiPhoton10Time1ns_v10, fragment.HLT_DiPhoton10Time1p2ns_v10, fragment.HLT_DiPhoton10Time1p4ns_v10, fragment.HLT_DiPhoton10Time1p6ns_v10, fragment.HLT_DiPhoton10Time1p8ns_v10, fragment.HLT_DiPhoton10Time2ns_v10, fragment.HLT_DiPhoton10_CaloIdL_v10, fragment.HLT_DoubleEle6p5_eta1p22_mMax6_v10, fragment.HLT_DoubleEle8_eta1p22_mMax6_v10, fragment.HLT_DoubleEle10_eta1p22_mMax6_v10, fragment.HLT_SingleEle8_v9, fragment.HLT_SingleEle8_SingleEGL1_v9, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Mu50_L1SingleMuShower_v11, fragment.HLT_IsoMu24_OneProng32_v9, fragment.HLT_Photon32_OneProng32_M50To105_v10, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1050_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1200_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_PFJet200_TimeLtNeg2p5ns_v10, fragment.HLT_PFJet200_TimeGt2p5ns_v10, fragment.HLT_Photon50_TimeLtNeg2p5ns_v7, fragment.HLT_Photon50_TimeGt2p5ns_v7, fragment.HLT_PPSMaxTracksPerArm1_v9, fragment.HLT_PPSMaxTracksPerRP4_v9, fragment.HLT_PPSRandom_v1, fragment.MC_ReducedIterativeTracking_v22, fragment.MC_AK4CaloJets_v19, fragment.MC_AK4CaloJetsFromPV_v18, fragment.MC_CaloHT_v18, fragment.MC_AK8CaloHT_v18, fragment.MC_CaloMHT_v18, fragment.MC_AK4PFJets_v29, fragment.MC_PFHT_v28, fragment.MC_AK8PFJets_v29, fragment.MC_AK8PFHT_v28, fragment.MC_CaloMET_v18, fragment.MC_CaloMET_JetIdCleaned_v19, fragment.MC_PFMET_v29, fragment.MC_PFMHT_v28, fragment.MC_AK4PFJetPNet_v5, fragment.MC_AK8PFJetPNet_v5, fragment.MC_Egamma_Open_v8, fragment.MC_Egamma_Open_Unseeded_v8, fragment.MC_Ele5_WPTight_Gsf_v18, fragment.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, fragment.MC_DoubleEle5_CaloIdL_MW_v26, fragment.MC_IsoMu_v27, fragment.MC_DoubleMu_TrkIsoVVL_DZ_v23, fragment.MC_DoubleMuNoFiltersNoVtx_v17, fragment.MC_PFScouting_v6, fragment.HLT_L1AXOVTight_v4, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLowPtJet, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPPSExpress, fragment.Dataset_AlCaPPSPrompt, fragment.Dataset_AlCaPhiSym, fragment.Dataset_BTagMu, fragment.Dataset_Commissioning, fragment.Dataset_Cosmics, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_DQMPPSRandom, fragment.Dataset_DisplacedJet, fragment.Dataset_EGamma0, fragment.Dataset_EGamma1, fragment.Dataset_EcalLaser, fragment.Dataset_EphemeralHLTPhysics0, fragment.Dataset_EphemeralHLTPhysics1, fragment.Dataset_EphemeralHLTPhysics2, fragment.Dataset_EphemeralHLTPhysics3, fragment.Dataset_EphemeralHLTPhysics4, fragment.Dataset_EphemeralHLTPhysics5, fragment.Dataset_EphemeralHLTPhysics6, fragment.Dataset_EphemeralHLTPhysics7, fragment.Dataset_EphemeralZeroBias0, fragment.Dataset_EphemeralZeroBias1, fragment.Dataset_EphemeralZeroBias2, fragment.Dataset_EphemeralZeroBias3, fragment.Dataset_EphemeralZeroBias4, fragment.Dataset_EphemeralZeroBias5, fragment.Dataset_EphemeralZeroBias6, fragment.Dataset_EphemeralZeroBias7, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressPhysics, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_JetMET0, fragment.Dataset_JetMET1, fragment.Dataset_L1Accept, fragment.Dataset_MonteCarlo, fragment.Dataset_Muon0, fragment.Dataset_Muon1, fragment.Dataset_MuonEG, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_ParkingDoubleMuonLowMass0, fragment.Dataset_ParkingDoubleMuonLowMass1, fragment.Dataset_ParkingDoubleMuonLowMass2, fragment.Dataset_ParkingDoubleMuonLowMass3, fragment.Dataset_ParkingDoubleMuonLowMass4, fragment.Dataset_ParkingDoubleMuonLowMass5, fragment.Dataset_ParkingDoubleMuonLowMass6, fragment.Dataset_ParkingDoubleMuonLowMass7, fragment.Dataset_ParkingHH, fragment.Dataset_ParkingLLP, fragment.Dataset_ParkingSingleMuon0, fragment.Dataset_ParkingVBF0, fragment.Dataset_ParkingVBF1, fragment.Dataset_ParkingVBF2, fragment.Dataset_ParkingVBF3, fragment.Dataset_ParkingVBF4, fragment.Dataset_ParkingVBF5, fragment.Dataset_ParkingVBF6, fragment.Dataset_ParkingVBF7, fragment.Dataset_RPCMonitor, fragment.Dataset_ScoutingPFMonitor, fragment.Dataset_ScoutingPFRun3, fragment.Dataset_Tau, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_ZeroBias, fragment.ScoutingPFOutput, fragment.Dataset_ParkingSingleMuon1, fragment.Dataset_ParkingSingleMuon2, fragment.Dataset_ParkingSingleMuon3, fragment.Dataset_ParkingSingleMuon4, fragment.Dataset_ParkingSingleMuon5, fragment.Dataset_ParkingSingleMuon6, fragment.Dataset_ParkingSingleMuon7, fragment.Dataset_ParkingSingleMuon8, fragment.Dataset_ParkingSingleMuon9, fragment.Dataset_ParkingSingleMuon10, fragment.Dataset_ParkingSingleMuon11, )) +fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_EcalEtaEBonly_v25, fragment.AlCa_EcalEtaEEonly_v25, fragment.AlCa_EcalPi0EBonly_v25, fragment.AlCa_EcalPi0EEonly_v25, fragment.AlCa_RPCMuonNormalisation_v23, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.AlCa_PFJet40_v32, fragment.AlCa_PFJet40_CPUOnly_v11, fragment.AlCa_AK8PFJet40_v27, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DST_ZeroBias_v11, fragment.DST_Physics_v16, fragment.DST_PFScouting_DoubleMuon_v6, fragment.DST_PFScouting_DoubleEG_v6, fragment.DST_PFScouting_JetHT_v6, fragment.DST_PFScouting_AXOVLoose_v4, fragment.DST_PFScouting_AXOLoose_v4, fragment.DST_PFScouting_AXONominal_v6, fragment.DST_PFScouting_AXOTight_v6, fragment.DST_PFScouting_AXOVTight_v4, fragment.DST_PFScouting_CICADAVLoose_v2, fragment.DST_PFScouting_CICADALoose_v2, fragment.DST_PFScouting_CICADAMedium_v2, fragment.DST_PFScouting_CICADATight_v2, fragment.DST_PFScouting_CICADAVTight_v2, fragment.DST_PFScouting_SingleMuon_v6, fragment.DST_PFScouting_SinglePhotonEB_v3, fragment.DST_PFScouting_ZeroBias_v4, fragment.HLT_EphemeralPhysics_v9, fragment.HLT_EphemeralZeroBias_v9, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Alignment_v8, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_IsolatedBunches_v12, fragment.HLT_ZeroBias_FirstBXAfterTrain_v10, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_ZeroBias_FirstCollisionInTrain_v11, fragment.HLT_ZeroBias_LastCollisionInTrain_v10, fragment.HLT_HT300_Beamspot_v23, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_PFJet40_GPUvsCPU_v7, fragment.HLT_AK8PFJet380_SoftDropMass30_v6, fragment.HLT_AK8PFJet400_SoftDropMass30_v6, fragment.HLT_AK8PFJet425_SoftDropMass30_v6, fragment.HLT_AK8PFJet450_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, fragment.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, fragment.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, fragment.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, fragment.HLT_CaloJet500_NoJetID_v22, fragment.HLT_CaloJet550_NoJetID_v17, fragment.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, fragment.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, fragment.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, fragment.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, fragment.HLT_DoubleEle25_CaloIdL_MW_v15, fragment.HLT_DoubleEle27_CaloIdL_MW_v15, fragment.HLT_DoubleEle33_CaloIdL_MW_v28, fragment.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, fragment.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, fragment.HLT_Mu27_Ele37_CaloIdL_MW_v17, fragment.HLT_Mu37_Ele27_CaloIdL_MW_v17, fragment.HLT_Mu37_TkMu27_v17, fragment.HLT_DoubleMu4_3_Bs_v27, fragment.HLT_DoubleMu4_3_Jpsi_v27, fragment.HLT_DoubleMu4_3_LowMass_v13, fragment.HLT_DoubleMu4_LowMass_Displaced_v13, fragment.HLT_Mu0_L1DoubleMu_v13, fragment.HLT_Mu4_L1DoubleMu_v13, fragment.HLT_DoubleMu2_Jpsi_LowPt_v6, fragment.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, fragment.HLT_DoubleMu3_Trk_Tau3mu_v24, fragment.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, fragment.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, fragment.HLT_DoubleMu4_MuMuTrk_Displaced_v27, fragment.HLT_Mu3_PFJet40_v28, fragment.HLT_Mu7p5_L2Mu2_Jpsi_v22, fragment.HLT_Mu7p5_L2Mu2_Upsilon_v22, fragment.HLT_Mu3_L1SingleMu5orSingleMu7_v13, fragment.HLT_Mu0_Barrel_v6, fragment.HLT_Mu0_Barrel_L1HP6_v3, fragment.HLT_Mu0_Barrel_L1HP7_v3, fragment.HLT_Mu0_Barrel_L1HP8_v4, fragment.HLT_Mu0_Barrel_L1HP9_v4, fragment.HLT_Mu0_Barrel_L1HP10_v6, fragment.HLT_Mu0_Barrel_L1HP11_v6, fragment.HLT_Mu0_Barrel_L1HP6_IP6_v3, fragment.HLT_Mu6_Barrel_L1HP7_IP6_v3, fragment.HLT_Mu7_Barrel_L1HP8_IP6_v4, fragment.HLT_Mu8_Barrel_L1HP9_IP6_v4, fragment.HLT_Mu9_Barrel_L1HP10_IP6_v6, fragment.HLT_Mu10_Barrel_L1HP11_IP6_v6, fragment.HLT_DoublePhoton33_CaloIdL_v17, fragment.HLT_DoublePhoton70_v17, fragment.HLT_DoublePhoton85_v25, fragment.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, fragment.HLT_Ele30_WPTight_Gsf_v11, fragment.HLT_Ele32_WPTight_Gsf_v25, fragment.HLT_Ele35_WPTight_Gsf_v19, fragment.HLT_Ele38_WPTight_Gsf_v19, fragment.HLT_Ele40_WPTight_Gsf_v19, fragment.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, fragment.HLT_IsoMu20_v27, fragment.HLT_IsoMu24_v25, fragment.HLT_IsoMu24_HLTTracking_v1, fragment.HLT_IsoMu24_eta2p1_v27, fragment.HLT_IsoMu27_v28, fragment.HLT_UncorrectedJetE30_NoBPTX_v14, fragment.HLT_UncorrectedJetE30_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE60_NoBPTX3BX_v14, fragment.HLT_UncorrectedJetE70_NoBPTX3BX_v14, fragment.HLT_L1SingleMuCosmics_v8, fragment.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, fragment.HLT_L2Mu10_NoVertex_NoBPTX_v15, fragment.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, fragment.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, fragment.HLT_L2Mu23NoVtx_2Cha_v10, fragment.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, fragment.HLT_DoubleL2Mu50_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, fragment.HLT_DoubleL2Mu23NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_v11, fragment.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, fragment.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, fragment.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, fragment.HLT_Mu30_TkMu0_Psi_v13, fragment.HLT_Mu30_TkMu0_Upsilon_v13, fragment.HLT_Mu25_TkMu0_Phi_v20, fragment.HLT_Mu15_v15, fragment.HLT_Mu20_v24, fragment.HLT_Mu27_v25, fragment.HLT_Mu50_v25, fragment.HLT_Mu55_v15, fragment.HLT_CascadeMu100_v13, fragment.HLT_HighPtTkMu100_v12, fragment.HLT_DiPFJetAve40_v26, fragment.HLT_DiPFJetAve60_v26, fragment.HLT_DiPFJetAve80_v26, fragment.HLT_DiPFJetAve140_v25, fragment.HLT_DiPFJetAve200_v25, fragment.HLT_DiPFJetAve260_v26, fragment.HLT_DiPFJetAve320_v26, fragment.HLT_DiPFJetAve400_v26, fragment.HLT_DiPFJetAve500_v26, fragment.HLT_DiPFJetAve60_HFJEC_v27, fragment.HLT_DiPFJetAve80_HFJEC_v29, fragment.HLT_DiPFJetAve100_HFJEC_v29, fragment.HLT_DiPFJetAve160_HFJEC_v28, fragment.HLT_DiPFJetAve220_HFJEC_v28, fragment.HLT_DiPFJetAve260_HFJEC_v11, fragment.HLT_DiPFJetAve300_HFJEC_v28, fragment.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, fragment.HLT_AK8PFJet40_v28, fragment.HLT_AK8PFJet60_v27, fragment.HLT_AK8PFJet80_v28, fragment.HLT_AK8PFJet140_v27, fragment.HLT_AK8PFJet200_v27, fragment.HLT_AK8PFJet260_v28, fragment.HLT_AK8PFJet320_v28, fragment.HLT_AK8PFJet400_v28, fragment.HLT_AK8PFJet450_v28, fragment.HLT_AK8PFJet500_v28, fragment.HLT_AK8PFJet550_v23, fragment.HLT_PFJet40_v33, fragment.HLT_PFJet60_v33, fragment.HLT_PFJet80_v33, fragment.HLT_PFJet110_v12, fragment.HLT_PFJet140_v31, fragment.HLT_PFJet200_v31, fragment.HLT_PFJet260_v32, fragment.HLT_PFJet320_v32, fragment.HLT_PFJet400_v32, fragment.HLT_PFJet450_v33, fragment.HLT_PFJet500_v33, fragment.HLT_PFJet550_v23, fragment.HLT_PFJetFwd40_v31, fragment.HLT_PFJetFwd60_v31, fragment.HLT_PFJetFwd80_v30, fragment.HLT_PFJetFwd140_v30, fragment.HLT_PFJetFwd200_v30, fragment.HLT_PFJetFwd260_v31, fragment.HLT_PFJetFwd320_v31, fragment.HLT_PFJetFwd400_v31, fragment.HLT_PFJetFwd450_v31, fragment.HLT_PFJetFwd500_v31, fragment.HLT_AK8PFJetFwd40_v27, fragment.HLT_AK8PFJetFwd60_v26, fragment.HLT_AK8PFJetFwd80_v26, fragment.HLT_AK8PFJetFwd140_v26, fragment.HLT_AK8PFJetFwd200_v26, fragment.HLT_AK8PFJetFwd260_v27, fragment.HLT_AK8PFJetFwd320_v27, fragment.HLT_AK8PFJetFwd400_v27, fragment.HLT_AK8PFJetFwd450_v27, fragment.HLT_AK8PFJetFwd500_v27, fragment.HLT_PFHT180_v29, fragment.HLT_PFHT250_v29, fragment.HLT_PFHT370_v29, fragment.HLT_PFHT430_v29, fragment.HLT_PFHT510_v29, fragment.HLT_PFHT590_v29, fragment.HLT_PFHT680_v29, fragment.HLT_PFHT780_v29, fragment.HLT_PFHT890_v29, fragment.HLT_PFHT1050_v30, fragment.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, fragment.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, fragment.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, fragment.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, fragment.HLT_PFMET120_PFMHT120_IDTight_v32, fragment.HLT_PFMET130_PFMHT130_IDTight_v32, fragment.HLT_PFMET140_PFMHT140_IDTight_v32, fragment.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, fragment.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, fragment.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, fragment.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, fragment.HLT_L1ETMHadSeeds_v10, fragment.HLT_CaloMHT90_v14, fragment.HLT_CaloMET90_NotCleaned_v14, fragment.HLT_CaloMET350_NotCleaned_v14, fragment.HLT_PFMET200_NotCleaned_v21, fragment.HLT_PFMET250_NotCleaned_v21, fragment.HLT_PFMET300_NotCleaned_v21, fragment.HLT_PFMET200_BeamHaloCleaned_v21, fragment.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, fragment.HLT_MET105_IsoTrk50_v19, fragment.HLT_MET120_IsoTrk50_v19, fragment.HLT_Mu12eta2p3_v13, fragment.HLT_Mu12eta2p3_PFJet40_v13, fragment.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets40_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets100_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets200_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets350_PNetBTag_0p11_v6, fragment.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, fragment.HLT_Photon300_NoHE_v23, fragment.HLT_Mu8_TrkIsoVVL_v24, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, fragment.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, fragment.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, fragment.HLT_Mu17_TrkIsoVVL_v25, fragment.HLT_Mu19_TrkIsoVVL_v16, fragment.HLT_BTagMu_AK4DiJet20_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet40_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet70_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet110_Mu5_v25, fragment.HLT_BTagMu_AK4DiJet170_Mu5_v24, fragment.HLT_BTagMu_AK4Jet300_Mu5_v24, fragment.HLT_BTagMu_AK8DiJet170_Mu5_v21, fragment.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, fragment.HLT_BTagMu_AK8Jet300_Mu5_v24, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, fragment.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, fragment.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, fragment.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, fragment.HLT_Photon33_v15, fragment.HLT_Photon50_v23, fragment.HLT_Photon75_v23, fragment.HLT_Photon90_v23, fragment.HLT_Photon120_v23, fragment.HLT_Photon150_v17, fragment.HLT_Photon175_v25, fragment.HLT_Photon200_v24, fragment.HLT_Photon45EB_v3, fragment.HLT_Photon40EB_v3, fragment.HLT_Photon50EB_v4, fragment.HLT_Photon30EB_TightID_TightIso_v12, fragment.HLT_Photon40EB_TightID_TightIso_v3, fragment.HLT_Photon45EB_TightID_TightIso_v3, fragment.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon50EB_TightID_TightIso_v8, fragment.HLT_Photon55EB_TightID_TightIso_v4, fragment.HLT_Photon75EB_TightID_TightIso_v8, fragment.HLT_Photon90EB_TightID_TightIso_v8, fragment.HLT_Photon110EB_TightID_TightIso_v12, fragment.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, fragment.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, fragment.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, fragment.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, fragment.HLT_Photon100EBHE10_v12, fragment.HLT_Photon50_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon75_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon90_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon120_R9Id90_HE10_IsoM_v24, fragment.HLT_Photon165_R9Id90_HE10_IsoM_v25, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, fragment.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, fragment.HLT_DiphotonMVA14p25_Mass90_v3, fragment.HLT_DiphotonMVA14p25_Tight_Mass90_v3, fragment.HLT_Photon35_TwoProngs35_v13, fragment.HLT_IsoMu24_TwoProngs35_v13, fragment.HLT_Dimuon0_Jpsi_L1_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, fragment.HLT_Dimuon0_Jpsi_v20, fragment.HLT_Dimuon0_Jpsi_NoVertexing_v20, fragment.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, fragment.HLT_Dimuon0_Jpsi3p5_Muon2_v17, fragment.HLT_Dimuon0_Upsilon_L1_4p5_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, fragment.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, fragment.HLT_Dimuon0_Upsilon_NoVertexing_v19, fragment.HLT_Dimuon0_LowMass_L1_0er1p5_v20, fragment.HLT_Dimuon0_LowMass_v20, fragment.HLT_Dimuon0_LowMass_L1_4_v20, fragment.HLT_Dimuon0_LowMass_L1_TM530_v18, fragment.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, fragment.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, fragment.HLT_TripleMu_10_5_5_DZ_v22, fragment.HLT_TripleMu_12_10_5_v22, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, fragment.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, fragment.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, fragment.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, fragment.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, fragment.HLT_DoubleMu4_3_LowMass_SS_v6, fragment.HLT_DoubleMu4_Jpsi_Displaced_v19, fragment.HLT_DoubleMu4_Jpsi_NoVertexing_v19, fragment.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, fragment.HLT_DoubleMu4_JpsiTrk_Bc_v12, fragment.HLT_DoubleMu43NoFiltersNoVtx_v14, fragment.HLT_DoubleMu48NoFiltersNoVtx_v14, fragment.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, fragment.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, fragment.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, fragment.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, fragment.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, fragment.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, fragment.HLT_Ele28_HighEta_SC20_Mass55_v23, fragment.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, fragment.HLT_Ele15_IsoVVVL_PFHT450_v28, fragment.HLT_Ele50_IsoVVVL_PFHT450_v28, fragment.HLT_Ele15_IsoVVVL_PFHT600_v32, fragment.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, fragment.HLT_Mu15_IsoVVVL_PFHT450_v27, fragment.HLT_Mu50_IsoVVVL_PFHT450_v27, fragment.HLT_Mu15_IsoVVVL_PFHT600_v31, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, fragment.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, fragment.HLT_Dimuon10_Upsilon_y1p4_v13, fragment.HLT_Dimuon12_Upsilon_y1p4_v14, fragment.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, fragment.HLT_Dimuon25_Jpsi_v26, fragment.HLT_Dimuon14_PsiPrime_v25, fragment.HLT_Dimuon14_PsiPrime_noCorrL1_v17, fragment.HLT_Dimuon18_PsiPrime_v26, fragment.HLT_Dimuon18_PsiPrime_noCorrL1_v18, fragment.HLT_Dimuon24_Upsilon_noCorrL1_v18, fragment.HLT_Dimuon24_Phi_noCorrL1_v18, fragment.HLT_Dimuon25_Jpsi_noCorrL1_v18, fragment.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, fragment.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, fragment.HLT_DoubleIsoMu20_eta2p1_v19, fragment.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, fragment.HLT_Mu8_v24, fragment.HLT_Mu17_v25, fragment.HLT_Mu19_v16, fragment.HLT_Mu17_Photon30_IsoCaloId_v18, fragment.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, fragment.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, fragment.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, fragment.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, fragment.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, fragment.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, fragment.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, fragment.HLT_PFHT400_SixPFJet32_v21, fragment.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, fragment.HLT_PFHT450_SixPFJet36_v20, fragment.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, fragment.HLT_PFHT350_v31, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, fragment.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, fragment.HLT_ECALHT800_v20, fragment.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, fragment.HLT_Photon20_HoverELoose_v20, fragment.HLT_Photon30_HoverELoose_v20, fragment.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, fragment.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, fragment.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, fragment.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, fragment.HLT_Mu18_Mu9_SameSign_v16, fragment.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, fragment.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, fragment.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, fragment.HLT_QuadPFJet103_88_75_15_v17, fragment.HLT_QuadPFJet105_88_76_15_v17, fragment.HLT_QuadPFJet111_90_80_15_v17, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, fragment.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, fragment.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, fragment.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, fragment.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, fragment.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, fragment.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, fragment.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, fragment.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, fragment.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, fragment.HLT_PFHT250_QuadPFJet25_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, fragment.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, fragment.HLT_PFHT280_QuadPFJet30_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, fragment.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, fragment.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, fragment.HLT_QuadPFJet100_88_70_30_v10, fragment.HLT_QuadPFJet105_88_75_30_v9, fragment.HLT_QuadPFJet111_90_80_30_v9, fragment.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, fragment.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, fragment.HLT_AK8PFJet220_SoftDropMass40_v13, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, fragment.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_v13, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, fragment.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, fragment.HLT_AK8PFJet275_Nch45_v6, fragment.HLT_AK8PFJet275_Nch40_v6, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, fragment.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, fragment.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, fragment.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, fragment.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, fragment.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, fragment.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, fragment.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, fragment.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, fragment.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, fragment.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, fragment.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu10NoVtx_2Cha_v9, fragment.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L3Mu10NoVtx_v10, fragment.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, fragment.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, fragment.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, fragment.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, fragment.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, fragment.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, fragment.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, fragment.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, fragment.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, fragment.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, fragment.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, fragment.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, fragment.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, fragment.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, fragment.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, fragment.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, fragment.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, fragment.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, fragment.HLT_L1Mu6HT240_v9, fragment.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, fragment.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, fragment.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, fragment.HLT_HT350_v7, fragment.HLT_HT425_v19, fragment.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, fragment.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, fragment.HLT_HT550_DisplacedDijet60_Inclusive_v23, fragment.HLT_HT650_DisplacedDijet60_Inclusive_v23, fragment.HLT_CaloMET60_DTCluster50_v11, fragment.HLT_CaloMET60_DTClusterNoMB1S50_v11, fragment.HLT_L1MET_DTCluster50_v11, fragment.HLT_L1MET_DTClusterNoMB1S50_v11, fragment.HLT_CscCluster_Loose_v10, fragment.HLT_CscCluster_Medium_v10, fragment.HLT_CscCluster_Tight_v10, fragment.HLT_CscCluster50_Photon20Unseeded_v4, fragment.HLT_CscCluster50_Photon30Unseeded_v4, fragment.HLT_CscCluster100_Ele5_v4, fragment.HLT_CscCluster100_Mu5_v6, fragment.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, fragment.HLT_DoubleCscCluster75_v7, fragment.HLT_IsoTrk200_L1SingleMuShower_v4, fragment.HLT_IsoTrk400_L1SingleMuShower_v4, fragment.HLT_DoubleCscCluster100_v7, fragment.HLT_L1CSCShower_DTCluster50_v10, fragment.HLT_L1CSCShower_DTCluster75_v10, fragment.HLT_PFMET105_IsoTrk50_v13, fragment.HLT_L1SingleLLPJet_v7, fragment.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, fragment.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, fragment.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, fragment.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, fragment.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, fragment.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, fragment.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, fragment.HLT_DiPhoton10Time1ns_v10, fragment.HLT_DiPhoton10Time1p2ns_v10, fragment.HLT_DiPhoton10Time1p4ns_v10, fragment.HLT_DiPhoton10Time1p6ns_v10, fragment.HLT_DiPhoton10Time1p8ns_v10, fragment.HLT_DiPhoton10Time2ns_v10, fragment.HLT_DiPhoton10_CaloIdL_v10, fragment.HLT_DoubleEle6p5_eta1p22_mMax6_v10, fragment.HLT_DoubleEle8_eta1p22_mMax6_v10, fragment.HLT_DoubleEle10_eta1p22_mMax6_v10, fragment.HLT_SingleEle8_v9, fragment.HLT_SingleEle8_SingleEGL1_v9, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, fragment.HLT_Mu50_L1SingleMuShower_v11, fragment.HLT_IsoMu24_OneProng32_v9, fragment.HLT_Photon32_OneProng32_M50To105_v10, fragment.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, fragment.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1050_v8, fragment.HLT_VBF_DiPFJet125_45_Mjj1200_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, fragment.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, fragment.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, fragment.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, fragment.HLT_PFJet200_TimeLtNeg2p5ns_v10, fragment.HLT_PFJet200_TimeGt2p5ns_v10, fragment.HLT_Photon50_TimeLtNeg2p5ns_v7, fragment.HLT_Photon50_TimeGt2p5ns_v7, fragment.HLT_PPSMaxTracksPerArm1_v9, fragment.HLT_PPSMaxTracksPerRP4_v9, fragment.HLT_PPSRandom_v1, fragment.MC_ReducedIterativeTracking_v22, fragment.MC_AK4CaloJets_v19, fragment.MC_AK4CaloJetsFromPV_v18, fragment.MC_CaloHT_v18, fragment.MC_AK8CaloHT_v18, fragment.MC_CaloMHT_v18, fragment.MC_AK4PFJets_v29, fragment.MC_PFHT_v28, fragment.MC_AK8PFJets_v29, fragment.MC_AK8PFHT_v28, fragment.MC_CaloMET_v18, fragment.MC_CaloMET_JetIdCleaned_v19, fragment.MC_PFMET_v29, fragment.MC_PFMHT_v28, fragment.MC_AK4PFJetPNet_v5, fragment.MC_AK8PFJetPNet_v5, fragment.MC_Egamma_Open_v8, fragment.MC_Egamma_Open_Unseeded_v8, fragment.MC_Ele5_WPTight_Gsf_v18, fragment.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, fragment.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, fragment.MC_DoubleEle5_CaloIdL_MW_v26, fragment.MC_IsoMu_v27, fragment.MC_DoubleMu_TrkIsoVVL_DZ_v23, fragment.MC_DoubleMuNoFiltersNoVtx_v17, fragment.MC_PFScouting_v6, fragment.HLT_L1AXOVTight_v4, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLowPtJet, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPPSExpress, fragment.Dataset_AlCaPPSPrompt, fragment.Dataset_AlCaPhiSym, fragment.Dataset_BTagMu, fragment.Dataset_Commissioning, fragment.Dataset_Cosmics, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_DQMPPSRandom, fragment.Dataset_DisplacedJet, fragment.Dataset_EGamma0, fragment.Dataset_EGamma1, fragment.Dataset_EcalLaser, fragment.Dataset_EphemeralHLTPhysics0, fragment.Dataset_EphemeralHLTPhysics1, fragment.Dataset_EphemeralHLTPhysics2, fragment.Dataset_EphemeralHLTPhysics3, fragment.Dataset_EphemeralHLTPhysics4, fragment.Dataset_EphemeralHLTPhysics5, fragment.Dataset_EphemeralHLTPhysics6, fragment.Dataset_EphemeralHLTPhysics7, fragment.Dataset_EphemeralZeroBias0, fragment.Dataset_EphemeralZeroBias1, fragment.Dataset_EphemeralZeroBias2, fragment.Dataset_EphemeralZeroBias3, fragment.Dataset_EphemeralZeroBias4, fragment.Dataset_EphemeralZeroBias5, fragment.Dataset_EphemeralZeroBias6, fragment.Dataset_EphemeralZeroBias7, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressPhysics, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_JetMET0, fragment.Dataset_JetMET1, fragment.Dataset_L1Accept, fragment.Dataset_MonteCarlo, fragment.Dataset_Muon0, fragment.Dataset_Muon1, fragment.Dataset_MuonEG, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_ParkingDoubleMuonLowMass0, fragment.Dataset_ParkingDoubleMuonLowMass1, fragment.Dataset_ParkingDoubleMuonLowMass2, fragment.Dataset_ParkingDoubleMuonLowMass3, fragment.Dataset_ParkingDoubleMuonLowMass4, fragment.Dataset_ParkingDoubleMuonLowMass5, fragment.Dataset_ParkingDoubleMuonLowMass6, fragment.Dataset_ParkingDoubleMuonLowMass7, fragment.Dataset_ParkingHH, fragment.Dataset_ParkingLLP, fragment.Dataset_ParkingSingleMuon0, fragment.Dataset_ParkingVBF0, fragment.Dataset_ParkingVBF1, fragment.Dataset_ParkingVBF2, fragment.Dataset_ParkingVBF3, fragment.Dataset_ParkingVBF4, fragment.Dataset_ParkingVBF5, fragment.Dataset_ParkingVBF6, fragment.Dataset_ParkingVBF7, fragment.Dataset_RPCMonitor, fragment.Dataset_ScoutingPFMonitor, fragment.Dataset_ScoutingPFRun3, fragment.Dataset_Tau, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_ZeroBias, fragment.ScoutingPFOutput, fragment.Dataset_ParkingSingleMuon1, fragment.Dataset_ParkingSingleMuon2, fragment.Dataset_ParkingSingleMuon3, fragment.Dataset_ParkingSingleMuon4, fragment.Dataset_ParkingSingleMuon5, fragment.Dataset_ParkingSingleMuon6, fragment.Dataset_ParkingSingleMuon7, fragment.Dataset_ParkingSingleMuon8, fragment.Dataset_ParkingSingleMuon9, fragment.Dataset_ParkingSingleMuon10, fragment.Dataset_ParkingSingleMuon11, )) # dummify hltGetConditions in cff's diff --git a/HLTrigger/Configuration/python/HLT_HIon_cff.py b/HLTrigger/Configuration/python/HLT_HIon_cff.py index 860e5af17525e..f023180a32cb6 100644 --- a/HLTrigger/Configuration/python/HLT_HIon_cff.py +++ b/HLTrigger/Configuration/python/HLT_HIon_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/HIon --cff --data --type HIon +# hltGetConfiguration /dev/CMSSW_14_2_0/HIon --cff --data --type HIon -# /dev/CMSSW_14_1_0/HIon/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/HIon/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/HIon/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/HIon/V10") ) fragment.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1516,9 +1516,7 @@ HIDQMGPUvsCPU = cms.vstring( 'DQM_HIEcalReconstruction_v10', 'DQM_HIHcalReconstruction_v8', 'DQM_HIPixelReconstruction_v12' ), - HIDQMOnlineBeamspot = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIDQMOnlineBeamspot = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIEmptyBX = cms.vstring( 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1UnpairedBunchBptxMinus_v14', 'HLT_HIL1UnpairedBunchBptxPlus_v14' ), @@ -1535,9 +1533,7 @@ 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', 'HLT_HIMinimumBiasHF1AND_copy_v6' ), - HIExpressAlignment = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIExpressAlignment = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIExpressPhysics = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', @@ -1583,6 +1579,8 @@ HIForward0 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1721,6 +1719,8 @@ HIForward1 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1859,6 +1859,8 @@ HIForward10 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1997,6 +1999,8 @@ HIForward11 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2135,6 +2139,8 @@ HIForward12 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2273,6 +2279,8 @@ HIForward13 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2411,6 +2419,8 @@ HIForward14 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2549,6 +2559,8 @@ HIForward15 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2687,6 +2699,8 @@ HIForward16 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2825,6 +2839,8 @@ HIForward17 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2963,6 +2979,8 @@ HIForward18 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3101,6 +3119,8 @@ HIForward19 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3239,6 +3259,8 @@ HIForward2 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3377,6 +3399,8 @@ HIForward3 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3515,6 +3539,8 @@ HIForward4 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3653,6 +3679,8 @@ HIForward5 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3791,6 +3819,8 @@ HIForward6 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3929,6 +3959,8 @@ HIForward7 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4067,6 +4099,8 @@ HIForward8 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4205,6 +4239,8 @@ HIForward9 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4356,6 +4392,7 @@ 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7', 'HLT_HIMinimumBiasHF1AND_v7' ), HIOnlineMonitor = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIHcalNZS_v14', @@ -12648,7 +12685,7 @@ ) fragment.hltL1sAlCaEcalPhiSymForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_MinimumBiasHF1_AND_BptxAND OR L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -12788,8 +12825,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -12856,7 +12893,7 @@ ) fragment.hltL1sAlCaEcalPi0EtaForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -13531,6 +13568,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoA" ) @@ -13604,6 +13642,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ) @@ -13649,7 +13688,7 @@ fragment.hltPixelTracksSoACompareGPUvsCPUPPOnAA = cms.EDProducer( "SiPixelHIonPhase1CompareTracks", pixelTrackReferenceSoA = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ), pixelTrackTargetSoA = cms.InputTag( "hltPixelTracksPPOnAASoA" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareDeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareGPUvsCPU" ), useQualityCut = cms.bool( True ), minQuality = cms.string( "loose" ), deltaR2cut = cms.double( 4.0E-4 ) @@ -13668,7 +13707,7 @@ pixelVertexReferenceSoA = cms.InputTag( "hltPixelVerticesPPOnAASoASerialSync" ), pixelVertexTargetSoA = cms.InputTag( "hltPixelVerticesPPOnAASoA" ), beamSpotSrc = cms.InputTag( "hltOnlineBeamSpot" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareSoADeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareGPUvsCPU" ), dzCut = cms.double( 1.0 ) ) fragment.hltL1sDQMHIEcalReconstruction = cms.EDFilter( "HLTL1TSeed", @@ -13775,8 +13814,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -14607,7 +14646,79 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -fragment.hltPreHIMinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", +fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_Centrality_50_100_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) @@ -16727,6 +16838,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPreSplittingPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -16880,7 +16992,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) fragment.hltSiPixelClustersCacheAfterSplittingPPOnAA = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), @@ -16980,6 +17097,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -17211,6 +17329,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter1PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -17542,6 +17661,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter2PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -17777,6 +17897,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -18985,73 +19106,6 @@ inputTag = cms.InputTag( "rawDataCollector" ), fedList = cms.vuint32( 1022 ) ) -fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -fragment.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -fragment.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) fragment.hltL1Centrality30to50BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), L1SeedsLogicalExpression = cms.string( "L1_Centrality_30_50_BptxAND" ), @@ -20695,7 +20749,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombinedPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeedsPPOnAA = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedPPOnAA" ), @@ -22848,6 +22903,7 @@ MaxNumberOfPixelClusters = cms.uint32( 10000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( True ) ) fragment.hltPixelTracksHitDoubletsLowPtForUPCPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -22997,7 +23053,7 @@ ) fragment.hltL1sZDC1nOR = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23022,7 +23078,7 @@ ) fragment.hltL1sZDC1nXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23065,7 +23121,7 @@ ) fragment.hltL1sZDC1nXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23090,7 +23146,7 @@ ) fragment.hltL1sZDC1nAsymXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23115,7 +23171,7 @@ ) fragment.hltL1sZDC1nAsymXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23560,6 +23616,27 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +fragment.hltL1sDoubleEG3NotHF2AND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleEG3_NotMinimumBiasHF2_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPreHIUPCDoubleEG3NotMBHF2AND = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -23587,7 +23664,7 @@ ) fragment.hltL1sZDC1nXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23604,7 +23681,7 @@ ) fragment.hltL1sZDC1nXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23621,7 +23698,7 @@ ) fragment.hltL1sZDC1nXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23638,7 +23715,7 @@ ) fragment.hltL1sZDC1nXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23655,7 +23732,7 @@ ) fragment.hltL1sZDC1nXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23672,7 +23749,7 @@ ) fragment.hltL1sZDC1nXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23689,7 +23766,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23706,7 +23783,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23723,7 +23800,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23740,7 +23817,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23757,7 +23834,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23774,7 +23851,7 @@ ) fragment.hltL1sZDC1nAsymXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23931,7 +24008,7 @@ ) fragment.hltL1sZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23948,7 +24025,7 @@ ) fragment.hltL1sZeroBiasZDC1nORZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24548,7 +24625,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24565,7 +24642,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24582,7 +24659,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24599,7 +24676,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24616,7 +24693,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24633,7 +24710,7 @@ ) fragment.hltL1sNotZDC1nORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24803,7 +24880,7 @@ ) fragment.hltL1sNotZDC1nANDDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24820,7 +24897,7 @@ ) fragment.hltL1sNotZDC1nANDDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24837,7 +24914,7 @@ ) fragment.hltL1sNotZDC1nANDDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24854,7 +24931,7 @@ ) fragment.hltL1sNotZDC1nORDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24871,7 +24948,7 @@ ) fragment.hltL1sNotZDC1nORDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24888,7 +24965,7 @@ ) fragment.hltL1sNotZDC1nORDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -27058,6 +27135,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPreSplittingPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -27211,7 +27289,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) fragment.hltSiPixelClustersCacheAfterSplittingPPOnAAForDmeson = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), @@ -27284,6 +27367,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter0PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -27515,6 +27599,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter1PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -27719,6 +27804,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter2PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -27921,6 +28007,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter3PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28118,6 +28205,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter7MixedHitDoubletsAPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28260,7 +28348,8 @@ ) ) fragment.hltFullIter7MixedSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltFullIter7CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -28461,6 +28550,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter8PixelLessHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28674,6 +28764,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltFullIter9TobTecHitDoubletsTriplPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28860,7 +28951,8 @@ ) ) fragment.hltFullIter9TobTecSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltFullIter9CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -29514,9 +29606,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) fragment.hltPreDatasetHIDQMOnlineBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29572,9 +29662,9 @@ throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8 / 0', 'HLT_HIDoubleEle15GsfMass50_v14', - 'HLT_HIDoubleGEDPhoton20_v7 / 65', + 'HLT_HIDoubleGEDPhoton20_v7 / 6', 'HLT_HIL1SingleMu5_SingleEG20Gsf_v7', - 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 25', + 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 6', 'HLT_HIL2DoubleMu0_M1p5to6_Open_v7 / 335', 'HLT_HIL3DoubleMu2_Quarkonia_Open_v7 / 200', 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', @@ -29591,9 +29681,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) fragment.hltPreDatasetHIExpressAlignment = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29618,14 +29706,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) fragment.hltPreDatasetHIExpressPhysics = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29638,8 +29726,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HIEle20Gsf_v14', - 'HLT_HIGEDPhoton40_v14 / 2', + 'HLT_HIEle20Gsf_v14 / 2', + 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1SingleMu0_Cosmic_v7 / 0', 'HLT_HIL1UnpairedBunchBptxMinus_v14 / 2', @@ -29650,14 +29738,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 5', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) fragment.hltPreDatasetHIExpressPhysicsRawPrime = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29672,6 +29760,8 @@ triggerConditions = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -29920,7 +30010,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HIEle20Gsf_v14 / 3', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 / 5', + 'HLT_HIEle20Gsf_v14 / 2', 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIHcalNZS_v14 / 3', 'HLT_HIHcalPhiSym_v14 / 3', @@ -29934,14 +30025,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 10', 'HLT_HIL3SingleMu5_v7 / 0', 'HLT_HIL3SingleMu7_v7 / 0', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 20', - 'HLT_HIMinimumBiasHF1AND_copy_v6 / 20', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 2', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7 / 3', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', - 'HLT_HIZeroBias_v14 / 3' ) + 'HLT_HIZeroBias_v14' ) ) fragment.hltPreDatasetHIOnlineMonitor = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29953,9 +30044,9 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 700', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 700', - 'HLT_HIMinimumBiasHF1AND_v7 / 700' ) + triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 5000', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 5000', + 'HLT_HIMinimumBiasHF1AND_v7 / 5000' ) ) fragment.hltPreDatasetHIMinimumBias0 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -30554,14 +30645,12 @@ fragment.HLT_HIZeroBias_HighRateRAW_v4 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZeroBiasCopy + fragment.hltPreHIZeroBiasHighRateRAW + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1AND_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1AND + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1AND_copy_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDcopy + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HIMinimumBiasHF1AND_Beamspot_v8 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC1nOR + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC2nOR + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC1nORcopy + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC2nORcopy + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) -fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) -fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + fragment.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) fragment.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND + fragment.hltPreHICentrality30100FirstCollisionAfterAbortGap + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) +fragment.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND + fragment.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot + fragment.HLTPuAK4CaloJetsSequence + fragment.HLTCsAK4PFJetsSequence + fragment.hltVerticesPFPPOnAA + fragment.hltVerticesPFSelectorPPOnAA + fragment.hltVerticesPFFilterPPOnAA + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.hltFEDSelectorOnlineMetaData + fragment.hltFEDSelectorTCDS + fragment.HLTEndSequence ) fragment.HLT_HIL1Centrality30_50_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1Centrality30to50BptxAND + fragment.hltPreHIL1Centrality3050 + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIL1_UCC_0_0p5_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sUCC00p5 + fragment.hltPreHIL1UCC00p5 + fragment.HLTDoLocalHcalSequence + fragment.hltTowerMakerForHf + fragment.hltCaloMETProducerForHf + fragment.hltGlobalSumsETHfMaxFilter + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) fragment.HLT_HIL1_UCC_0_1_v7 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sUCC01 + fragment.hltPreHIL1UCC01 + fragment.HLTDoLocalHcalSequence + fragment.hltTowerMakerForHf + fragment.hltCaloMETProducerForHf + fragment.hltGlobalSumsETHfMaxFilter + fragment.HLTDoHIStripZeroSuppressionAndRawPrime + fragment.HLTEndSequence ) @@ -30658,6 +30747,8 @@ fragment.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG2BptxAND + fragment.hltPreHIUPCDoubleEG2BptxANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.hltPixelActivityFilterMaxClusters1e3 + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG2NotHF2AND + fragment.hltPreHIUPCDoubleEG2NotMBHF2ANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG2NotHF2AND + fragment.hltPreHIUPCDoubleEG2NotMBHF2AND + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) +fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG3NotHF2AND + fragment.hltPreHIUPCDoubleEG3NotMBHF2AND + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) +fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG3NotHF2AND + fragment.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG5BptxAND + fragment.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.hltPixelActivityFilterMaxClusters1e3 + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG5NotHF2AND + fragment.hltPreHIUPCDoubleEG5NotMBHF2ANDSinglePixelTrackMaxPixelTrack + fragment.HLTDoSiStripZeroSuppression + fragment.HLTDoLocalPixelPPOnAASequence + fragment.HLTDoLocalStripSequencePPOnAA + fragment.HLTRecopixelvertexingSequencePPOnAAForUPC + fragment.hltPixelCandsForUPCPPOnAA + fragment.hltFilteredPixelTracksForUPC + fragment.HLTDoHIStripZeroSuppressionRepacker + fragment.HLTEndSequence ) fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sDoubleEG5NotHF2AND + fragment.hltPreHIUPCDoubleEG5NotMBHF2AND + fragment.HLTDoHIStripZeroSuppression + fragment.HLTEndSequence ) @@ -30907,7 +30998,7 @@ fragment.Dataset_HIPhysicsRawPrime59 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetHIPhysicsRawPrime + fragment.hltPreDatasetHIPhysicsRawPrime59 ) -fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSymForHI_v12, fragment.AlCa_EcalEtaEBonlyForHI_v13, fragment.AlCa_EcalEtaEEonlyForHI_v13, fragment.AlCa_EcalPi0EBonlyForHI_v13, fragment.AlCa_EcalPi0EEonlyForHI_v13, fragment.AlCa_RPCMuonNormalisationForHI_v11, fragment.DQM_HIPixelReconstruction_v12, fragment.DQM_HIEcalReconstruction_v10, fragment.DQM_HIHcalReconstruction_v8, fragment.DST_Physics_v16, fragment.HLT_HIEphemeralPhysics_v5, fragment.HLT_HIEphemeralZeroBias_v5, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HIL1NotBptxOR_v14, fragment.HLT_HIL1UnpairedBunchBptxPlus_v14, fragment.HLT_HIL1UnpairedBunchBptxMinus_v14, fragment.HLT_HIPhysics_v14, fragment.HLT_HIPhysicsForZS_v14, fragment.HLT_HIRandom_v7, fragment.HLT_HIRandom_HighRate_v3, fragment.HLT_HIHcalNZS_v14, fragment.HLT_HIHcalPhiSym_v14, fragment.HLT_HIZeroBias_v14, fragment.HLT_HIZeroBias_HighRate_v7, fragment.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, fragment.HLT_HIZeroBias_HighRateRAW_v4, fragment.HLT_HIMinimumBiasHF1AND_v7, fragment.HLT_HIMinimumBiasHF1AND_copy_v6, fragment.HLT_HIMinimumBiasHF1AND_Beamspot_v8, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8, fragment.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, fragment.HLT_HIL1Centrality30_50_v7, fragment.HLT_HIL1_UCC_0_0p5_v7, fragment.HLT_HIL1_UCC_0_1_v7, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet80Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet100Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet120Eta2p1_v7, fragment.HLT_HIPuAK4CaloJet120Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet40Fwd_v7, fragment.HLT_HIPuAK4CaloJet60Fwd_v7, fragment.HLT_HIPuAK4CaloJet80Fwd_v7, fragment.HLT_HIPuAK4CaloJet100Fwd_v7, fragment.HLT_HIPuAK4CaloJet120Fwd_v7, fragment.HLT_HIGEDPhoton10_v14, fragment.HLT_HIGEDPhoton10_EB_v14, fragment.HLT_HIGEDPhoton20_v14, fragment.HLT_HIGEDPhoton20_EB_v14, fragment.HLT_HIGEDPhoton30_v14, fragment.HLT_HIGEDPhoton30_EB_v14, fragment.HLT_HIGEDPhoton40_v14, fragment.HLT_HIGEDPhoton40_EB_v14, fragment.HLT_HIGEDPhoton50_v14, fragment.HLT_HIGEDPhoton50_EB_v14, fragment.HLT_HIGEDPhoton60_v14, fragment.HLT_HIGEDPhoton60_EB_v14, fragment.HLT_HIDoubleGEDPhoton20_v7, fragment.HLT_HIEle10Gsf_v14, fragment.HLT_HIEle15Gsf_v14, fragment.HLT_HIEle20Gsf_v14, fragment.HLT_HIEle30Gsf_v14, fragment.HLT_HIEle40Gsf_v14, fragment.HLT_HIEle50Gsf_v14, fragment.HLT_HIEle15Ele10Gsf_v14, fragment.HLT_HIEle15Ele10GsfMass50_v14, fragment.HLT_HIDoubleEle10Gsf_v14, fragment.HLT_HIDoubleEle10GsfMass50_v14, fragment.HLT_HIDoubleEle15Gsf_v14, fragment.HLT_HIDoubleEle15GsfMass50_v14, fragment.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_NotMBHF2_v5, fragment.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, fragment.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, fragment.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, fragment.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_Random_HighRate_v1, fragment.HLT_HIUPC_HFafterglowCombined_v1, fragment.HLT_HIL1SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality40to100_v1, fragment.HLT_HIL1SingleMu0_v7, fragment.HLT_HIL1SingleMu0_Open_v7, fragment.HLT_HIL1SingleMu0_Cosmic_v7, fragment.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, fragment.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, fragment.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, fragment.HLT_HIL2DoubleMuOpen_SS_v1, fragment.HLT_HIL2DoubleMuOpen_OS_v1, fragment.HLT_HIL1DoubleMu0_v7, fragment.HLT_HIL2DoubleMu0_SQ_v1, fragment.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, fragment.HLT_HIL1DoubleMu0_SQ_v7, fragment.HLT_HIL2SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality40to100_v1, fragment.HLT_HIL2SingleMu3_Open_v7, fragment.HLT_HIL2SingleMu5_v7, fragment.HLT_HIL2SingleMu7_v7, fragment.HLT_HIL2SingleMu12_v1, fragment.HLT_HIL2DoubleMu0_Open_v7, fragment.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu3_M7to15_Open_v7, fragment.HLT_HIL3SingleMu3_Open_v7, fragment.HLT_HIL3SingleMu5_v7, fragment.HLT_HIL3SingleMu7_v7, fragment.HLT_HIL3SingleMu12_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3DoubleMu0_M0toInf_Open_v7, fragment.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, fragment.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu2_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, fragment.HLT_HICscCluster_Loose_v7, fragment.HLT_HICscCluster_Medium_v7, fragment.HLT_HICscCluster_Tight_v7, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPhiSym, fragment.Dataset_EcalLaser, fragment.Dataset_HIDQMGPUvsCPU, fragment.Dataset_HIDQMOnlineBeamspot, fragment.Dataset_HIEmptyBX, fragment.Dataset_HIEphemeralHLTPhysics, fragment.Dataset_HIEphemeralZeroBias0, fragment.Dataset_HIEphemeralZeroBias1, fragment.Dataset_HIEventDisplay, fragment.Dataset_HIExpressAlignment, fragment.Dataset_HIExpressPhysics, fragment.Dataset_HIExpressPhysicsRawPrime, fragment.Dataset_HIForward0, fragment.Dataset_HIForward1, fragment.Dataset_HIForward2, fragment.Dataset_HIForward3, fragment.Dataset_HIForward4, fragment.Dataset_HIForward5, fragment.Dataset_HIForward6, fragment.Dataset_HIForward7, fragment.Dataset_HIForward8, fragment.Dataset_HIForward9, fragment.Dataset_HIForward10, fragment.Dataset_HIForward11, fragment.Dataset_HIForward12, fragment.Dataset_HIForward13, fragment.Dataset_HIForward14, fragment.Dataset_HIForward15, fragment.Dataset_HIForward16, fragment.Dataset_HIForward17, fragment.Dataset_HIForward18, fragment.Dataset_HIForward19, fragment.Dataset_HIHLTPhysics, fragment.Dataset_HIHcalNZS, fragment.Dataset_HIOnlineMonitor, fragment.Dataset_HIMinimumBias0, fragment.Dataset_HIMinimumBias1, fragment.Dataset_HIMinimumBias2, fragment.Dataset_HIMinimumBias3, fragment.Dataset_HIPhysicsRawPrime0, fragment.Dataset_HITrackerNZS, fragment.Dataset_HIZeroBias0, fragment.Dataset_HIZeroBias1, fragment.Dataset_HIZeroBias2, fragment.Dataset_L1Accept, fragment.Dataset_RPCMonitor, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_HIPhysicsRawPrime1, fragment.Dataset_HIPhysicsRawPrime2, fragment.Dataset_HIPhysicsRawPrime3, fragment.Dataset_HIPhysicsRawPrime4, fragment.Dataset_HIPhysicsRawPrime5, fragment.Dataset_HIPhysicsRawPrime6, fragment.Dataset_HIPhysicsRawPrime7, fragment.Dataset_HIPhysicsRawPrime8, fragment.Dataset_HIPhysicsRawPrime9, fragment.Dataset_HIPhysicsRawPrime10, fragment.Dataset_HIPhysicsRawPrime11, fragment.Dataset_HIPhysicsRawPrime12, fragment.Dataset_HIPhysicsRawPrime13, fragment.Dataset_HIPhysicsRawPrime14, fragment.Dataset_HIPhysicsRawPrime15, fragment.Dataset_HIPhysicsRawPrime16, fragment.Dataset_HIPhysicsRawPrime17, fragment.Dataset_HIPhysicsRawPrime18, fragment.Dataset_HIPhysicsRawPrime19, fragment.Dataset_HIPhysicsRawPrime20, fragment.Dataset_HIPhysicsRawPrime21, fragment.Dataset_HIPhysicsRawPrime22, fragment.Dataset_HIPhysicsRawPrime23, fragment.Dataset_HIPhysicsRawPrime24, fragment.Dataset_HIPhysicsRawPrime25, fragment.Dataset_HIPhysicsRawPrime26, fragment.Dataset_HIPhysicsRawPrime27, fragment.Dataset_HIPhysicsRawPrime28, fragment.Dataset_HIPhysicsRawPrime29, fragment.Dataset_HIPhysicsRawPrime30, fragment.Dataset_HIPhysicsRawPrime31, fragment.Dataset_HIPhysicsRawPrime32, fragment.Dataset_HIPhysicsRawPrime33, fragment.Dataset_HIPhysicsRawPrime34, fragment.Dataset_HIPhysicsRawPrime35, fragment.Dataset_HIPhysicsRawPrime36, fragment.Dataset_HIPhysicsRawPrime37, fragment.Dataset_HIPhysicsRawPrime38, fragment.Dataset_HIPhysicsRawPrime39, fragment.Dataset_HIPhysicsRawPrime40, fragment.Dataset_HIPhysicsRawPrime41, fragment.Dataset_HIPhysicsRawPrime42, fragment.Dataset_HIPhysicsRawPrime43, fragment.Dataset_HIPhysicsRawPrime44, fragment.Dataset_HIPhysicsRawPrime45, fragment.Dataset_HIPhysicsRawPrime46, fragment.Dataset_HIPhysicsRawPrime47, fragment.Dataset_HIPhysicsRawPrime48, fragment.Dataset_HIPhysicsRawPrime49, fragment.Dataset_HIPhysicsRawPrime50, fragment.Dataset_HIPhysicsRawPrime51, fragment.Dataset_HIPhysicsRawPrime52, fragment.Dataset_HIPhysicsRawPrime53, fragment.Dataset_HIPhysicsRawPrime54, fragment.Dataset_HIPhysicsRawPrime55, fragment.Dataset_HIPhysicsRawPrime56, fragment.Dataset_HIPhysicsRawPrime57, fragment.Dataset_HIPhysicsRawPrime58, fragment.Dataset_HIPhysicsRawPrime59, )) +fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSymForHI_v12, fragment.AlCa_EcalEtaEBonlyForHI_v13, fragment.AlCa_EcalEtaEEonlyForHI_v13, fragment.AlCa_EcalPi0EBonlyForHI_v13, fragment.AlCa_EcalPi0EEonlyForHI_v13, fragment.AlCa_RPCMuonNormalisationForHI_v11, fragment.DQM_HIPixelReconstruction_v12, fragment.DQM_HIEcalReconstruction_v10, fragment.DQM_HIHcalReconstruction_v8, fragment.DST_Physics_v16, fragment.HLT_HIEphemeralPhysics_v5, fragment.HLT_HIEphemeralZeroBias_v5, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HIL1NotBptxOR_v14, fragment.HLT_HIL1UnpairedBunchBptxPlus_v14, fragment.HLT_HIL1UnpairedBunchBptxMinus_v14, fragment.HLT_HIPhysics_v14, fragment.HLT_HIPhysicsForZS_v14, fragment.HLT_HIRandom_v7, fragment.HLT_HIRandom_HighRate_v3, fragment.HLT_HIHcalNZS_v14, fragment.HLT_HIHcalPhiSym_v14, fragment.HLT_HIZeroBias_v14, fragment.HLT_HIZeroBias_HighRate_v7, fragment.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, fragment.HLT_HIZeroBias_HighRateRAW_v4, fragment.HLT_HIMinimumBiasHF1AND_v7, fragment.HLT_HIMinimumBiasHF1AND_copy_v6, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, fragment.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, fragment.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, fragment.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, fragment.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1, fragment.HLT_HIL1Centrality30_50_v7, fragment.HLT_HIL1_UCC_0_0p5_v7, fragment.HLT_HIL1_UCC_0_1_v7, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, fragment.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, fragment.HLT_HIPuAK4CaloJet80Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet100Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet120Eta2p1_v7, fragment.HLT_HIPuAK4CaloJet120Eta5p1_v14, fragment.HLT_HIPuAK4CaloJet40Fwd_v7, fragment.HLT_HIPuAK4CaloJet60Fwd_v7, fragment.HLT_HIPuAK4CaloJet80Fwd_v7, fragment.HLT_HIPuAK4CaloJet100Fwd_v7, fragment.HLT_HIPuAK4CaloJet120Fwd_v7, fragment.HLT_HIGEDPhoton10_v14, fragment.HLT_HIGEDPhoton10_EB_v14, fragment.HLT_HIGEDPhoton20_v14, fragment.HLT_HIGEDPhoton20_EB_v14, fragment.HLT_HIGEDPhoton30_v14, fragment.HLT_HIGEDPhoton30_EB_v14, fragment.HLT_HIGEDPhoton40_v14, fragment.HLT_HIGEDPhoton40_EB_v14, fragment.HLT_HIGEDPhoton50_v14, fragment.HLT_HIGEDPhoton50_EB_v14, fragment.HLT_HIGEDPhoton60_v14, fragment.HLT_HIGEDPhoton60_EB_v14, fragment.HLT_HIDoubleGEDPhoton20_v7, fragment.HLT_HIEle10Gsf_v14, fragment.HLT_HIEle15Gsf_v14, fragment.HLT_HIEle20Gsf_v14, fragment.HLT_HIEle30Gsf_v14, fragment.HLT_HIEle40Gsf_v14, fragment.HLT_HIEle50Gsf_v14, fragment.HLT_HIEle15Ele10Gsf_v14, fragment.HLT_HIEle15Ele10GsfMass50_v14, fragment.HLT_HIDoubleEle10Gsf_v14, fragment.HLT_HIDoubleEle10GsfMass50_v14, fragment.HLT_HIDoubleEle15Gsf_v14, fragment.HLT_HIDoubleEle15GsfMass50_v14, fragment.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_NotMBHF2_v5, fragment.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, fragment.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, fragment.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, fragment.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, fragment.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, fragment.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, fragment.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, fragment.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, fragment.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, fragment.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1, fragment.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1, fragment.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, fragment.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, fragment.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, fragment.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, fragment.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, fragment.HLT_HIUPC_Random_HighRate_v1, fragment.HLT_HIUPC_HFafterglowCombined_v1, fragment.HLT_HIL1SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality30to100_v1, fragment.HLT_HIL1SingleMu0_Centrality40to100_v1, fragment.HLT_HIL1SingleMu0_v7, fragment.HLT_HIL1SingleMu0_Open_v7, fragment.HLT_HIL1SingleMu0_Cosmic_v7, fragment.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, fragment.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, fragment.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, fragment.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, fragment.HLT_HIL2DoubleMuOpen_SS_v1, fragment.HLT_HIL2DoubleMuOpen_OS_v1, fragment.HLT_HIL1DoubleMu0_v7, fragment.HLT_HIL2DoubleMu0_SQ_v1, fragment.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, fragment.HLT_HIL1DoubleMu0_SQ_v7, fragment.HLT_HIL2SingleMuOpen_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality30to100_v1, fragment.HLT_HIL2SingleMu0_Centrality40to100_v1, fragment.HLT_HIL2SingleMu3_Open_v7, fragment.HLT_HIL2SingleMu5_v7, fragment.HLT_HIL2SingleMu7_v7, fragment.HLT_HIL2SingleMu12_v1, fragment.HLT_HIL2DoubleMu0_Open_v7, fragment.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, fragment.HLT_HIL2DoubleMu3_M7to15_Open_v7, fragment.HLT_HIL3SingleMu3_Open_v7, fragment.HLT_HIL3SingleMu5_v7, fragment.HLT_HIL3SingleMu7_v7, fragment.HLT_HIL3SingleMu12_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, fragment.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, fragment.HLT_HIL3DoubleMu0_M0toInf_Open_v7, fragment.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu0_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, fragment.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, fragment.HLT_HIL3DoubleMu2_M7to15_Open_v7, fragment.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, fragment.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, fragment.HLT_HICscCluster_Loose_v7, fragment.HLT_HICscCluster_Medium_v7, fragment.HLT_HICscCluster_Tight_v7, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPhiSym, fragment.Dataset_EcalLaser, fragment.Dataset_HIDQMGPUvsCPU, fragment.Dataset_HIDQMOnlineBeamspot, fragment.Dataset_HIEmptyBX, fragment.Dataset_HIEphemeralHLTPhysics, fragment.Dataset_HIEphemeralZeroBias0, fragment.Dataset_HIEphemeralZeroBias1, fragment.Dataset_HIEventDisplay, fragment.Dataset_HIExpressAlignment, fragment.Dataset_HIExpressPhysics, fragment.Dataset_HIExpressPhysicsRawPrime, fragment.Dataset_HIForward0, fragment.Dataset_HIForward1, fragment.Dataset_HIForward2, fragment.Dataset_HIForward3, fragment.Dataset_HIForward4, fragment.Dataset_HIForward5, fragment.Dataset_HIForward6, fragment.Dataset_HIForward7, fragment.Dataset_HIForward8, fragment.Dataset_HIForward9, fragment.Dataset_HIForward10, fragment.Dataset_HIForward11, fragment.Dataset_HIForward12, fragment.Dataset_HIForward13, fragment.Dataset_HIForward14, fragment.Dataset_HIForward15, fragment.Dataset_HIForward16, fragment.Dataset_HIForward17, fragment.Dataset_HIForward18, fragment.Dataset_HIForward19, fragment.Dataset_HIHLTPhysics, fragment.Dataset_HIHcalNZS, fragment.Dataset_HIOnlineMonitor, fragment.Dataset_HIMinimumBias0, fragment.Dataset_HIMinimumBias1, fragment.Dataset_HIMinimumBias2, fragment.Dataset_HIMinimumBias3, fragment.Dataset_HIPhysicsRawPrime0, fragment.Dataset_HITrackerNZS, fragment.Dataset_HIZeroBias0, fragment.Dataset_HIZeroBias1, fragment.Dataset_HIZeroBias2, fragment.Dataset_L1Accept, fragment.Dataset_RPCMonitor, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_HIPhysicsRawPrime1, fragment.Dataset_HIPhysicsRawPrime2, fragment.Dataset_HIPhysicsRawPrime3, fragment.Dataset_HIPhysicsRawPrime4, fragment.Dataset_HIPhysicsRawPrime5, fragment.Dataset_HIPhysicsRawPrime6, fragment.Dataset_HIPhysicsRawPrime7, fragment.Dataset_HIPhysicsRawPrime8, fragment.Dataset_HIPhysicsRawPrime9, fragment.Dataset_HIPhysicsRawPrime10, fragment.Dataset_HIPhysicsRawPrime11, fragment.Dataset_HIPhysicsRawPrime12, fragment.Dataset_HIPhysicsRawPrime13, fragment.Dataset_HIPhysicsRawPrime14, fragment.Dataset_HIPhysicsRawPrime15, fragment.Dataset_HIPhysicsRawPrime16, fragment.Dataset_HIPhysicsRawPrime17, fragment.Dataset_HIPhysicsRawPrime18, fragment.Dataset_HIPhysicsRawPrime19, fragment.Dataset_HIPhysicsRawPrime20, fragment.Dataset_HIPhysicsRawPrime21, fragment.Dataset_HIPhysicsRawPrime22, fragment.Dataset_HIPhysicsRawPrime23, fragment.Dataset_HIPhysicsRawPrime24, fragment.Dataset_HIPhysicsRawPrime25, fragment.Dataset_HIPhysicsRawPrime26, fragment.Dataset_HIPhysicsRawPrime27, fragment.Dataset_HIPhysicsRawPrime28, fragment.Dataset_HIPhysicsRawPrime29, fragment.Dataset_HIPhysicsRawPrime30, fragment.Dataset_HIPhysicsRawPrime31, fragment.Dataset_HIPhysicsRawPrime32, fragment.Dataset_HIPhysicsRawPrime33, fragment.Dataset_HIPhysicsRawPrime34, fragment.Dataset_HIPhysicsRawPrime35, fragment.Dataset_HIPhysicsRawPrime36, fragment.Dataset_HIPhysicsRawPrime37, fragment.Dataset_HIPhysicsRawPrime38, fragment.Dataset_HIPhysicsRawPrime39, fragment.Dataset_HIPhysicsRawPrime40, fragment.Dataset_HIPhysicsRawPrime41, fragment.Dataset_HIPhysicsRawPrime42, fragment.Dataset_HIPhysicsRawPrime43, fragment.Dataset_HIPhysicsRawPrime44, fragment.Dataset_HIPhysicsRawPrime45, fragment.Dataset_HIPhysicsRawPrime46, fragment.Dataset_HIPhysicsRawPrime47, fragment.Dataset_HIPhysicsRawPrime48, fragment.Dataset_HIPhysicsRawPrime49, fragment.Dataset_HIPhysicsRawPrime50, fragment.Dataset_HIPhysicsRawPrime51, fragment.Dataset_HIPhysicsRawPrime52, fragment.Dataset_HIPhysicsRawPrime53, fragment.Dataset_HIPhysicsRawPrime54, fragment.Dataset_HIPhysicsRawPrime55, fragment.Dataset_HIPhysicsRawPrime56, fragment.Dataset_HIPhysicsRawPrime57, fragment.Dataset_HIPhysicsRawPrime58, fragment.Dataset_HIPhysicsRawPrime59, )) # dummify hltGetConditions in cff's diff --git a/HLTrigger/Configuration/python/HLT_PIon_cff.py b/HLTrigger/Configuration/python/HLT_PIon_cff.py index 7387cd98a6529..e91f92f80f5d6 100644 --- a/HLTrigger/Configuration/python/HLT_PIon_cff.py +++ b/HLTrigger/Configuration/python/HLT_PIon_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/PIon --cff --data --type PIon +# hltGetConfiguration /dev/CMSSW_14_2_0/PIon --cff --data --type PIon -# /dev/CMSSW_14_1_0/PIon/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/PIon/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/PIon/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/PIon/V10") ) fragment.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( diff --git a/HLTrigger/Configuration/python/HLT_PRef_cff.py b/HLTrigger/Configuration/python/HLT_PRef_cff.py index f05560f955442..26371b675e92a 100644 --- a/HLTrigger/Configuration/python/HLT_PRef_cff.py +++ b/HLTrigger/Configuration/python/HLT_PRef_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/PRef --cff --data --type PRef +# hltGetConfiguration /dev/CMSSW_14_2_0/PRef --cff --data --type PRef -# /dev/CMSSW_14_1_0/PRef/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/PRef/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/PRef/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/PRef/V10") ) fragment.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1932,6 +1932,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward1 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1947,6 +1948,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward10 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1962,6 +1964,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward11 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1977,6 +1980,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward12 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1992,6 +1996,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward13 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2007,6 +2012,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward14 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2022,6 +2028,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward15 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2037,6 +2044,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward16 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2052,6 +2060,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward17 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2067,6 +2076,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward18 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2082,6 +2092,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward19 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2097,6 +2108,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward2 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2112,6 +2124,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward20 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2127,6 +2140,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward21 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2142,6 +2156,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward22 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2157,6 +2172,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward23 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2172,6 +2188,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward24 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2187,6 +2204,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward3 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2202,6 +2220,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward4 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2217,6 +2236,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward5 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2232,6 +2252,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward6 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2247,6 +2268,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward7 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2262,6 +2284,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward8 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2277,6 +2300,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward9 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2292,6 +2316,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), RPCMonitor = cms.vstring( 'AlCa_HIRPCMuonNormalisation_v11' ), SpecialRandom0 = cms.vstring( 'HLT_Random_HighRate_v1' ), @@ -4661,8 +4686,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -5433,6 +5458,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -5507,6 +5533,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -5678,8 +5705,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -7868,6 +7895,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -8669,6 +8697,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -11861,7 +11890,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) fragment.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -15898,6 +15928,23 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +fragment.hltL1sL1ZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInTrain" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +fragment.hltPrePPRefZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltPreRandomHighRate = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -16016,7 +16063,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_ZeroBias_Beamspot_v16' ) ) fragment.hltPreDatasetDQMOnlineBeamspot = cms.EDFilter( "HLTPrescaler", @@ -16055,9 +16102,9 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 80', - 'HLT_PPRefGEDPhoton30_v6', - 'HLT_PPRefL3SingleMu7_v8 / 80', + triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 40', + 'HLT_PPRefGEDPhoton30_v6 / 50', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Physics_v14 / 10' ) ) fragment.hltPreDatasetEventDisplay = cms.EDFilter( "HLTPrescaler", @@ -16070,7 +16117,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_ZeroBias_Beamspot_v16' ) ) fragment.hltPreDatasetExpressAlignment = cms.EDFilter( "HLTPrescaler", @@ -16084,7 +16131,7 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 80', - 'HLT_PPRefEle15Ele10GsfMass50_v6', + 'HLT_PPRefEle15Ele10GsfMass50_v6 / 12', 'HLT_PPRefL3SingleMu7_v8 / 80', 'HLT_PPRefUPC_ZDC1nOR_v1 / 8500', 'HLT_Physics_v14 / 2', @@ -16102,7 +16149,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 8', + triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 20', 'HLT_PPRefEle15Ele10GsfMass50_v6', 'HLT_PPRefEle50Gsf_v6' ) ) @@ -16166,8 +16213,8 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8', - 'HLT_AK4PFJetFwd80_v8', + triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 10', + 'HLT_AK4PFJetFwd80_v8 / 2', 'HLT_CDC_L2cosmic_10_er1p0_v10', 'HLT_CDC_L2cosmic_5p5_er1p0_v10', 'HLT_HIL1NotBptxORForPPRef_v9', @@ -16177,13 +16224,13 @@ 'HLT_HcalPhiSym_v23', 'HLT_IsoTrackHB_v14', 'HLT_IsoTrackHE_v14', - 'HLT_PPRefDoubleEle10Gsf_v6', - 'HLT_PPRefEle30Gsf_v7', - 'HLT_PPRefGEDPhoton30_EB_v6', - 'HLT_PPRefGEDPhoton40_v6', - 'HLT_PPRefL3DoubleMu0_Open_v8', - 'HLT_PPRefL3DoubleMu0_v8', - 'HLT_PPRefL3SingleMu7_v8', + 'HLT_PPRefDoubleEle10Gsf_v6 / 50', + 'HLT_PPRefEle30Gsf_v7 / 5', + 'HLT_PPRefGEDPhoton30_EB_v6 / 20', + 'HLT_PPRefGEDPhoton40_v6 / 10', + 'HLT_PPRefL3DoubleMu0_Open_v8 / 0', + 'HLT_PPRefL3DoubleMu0_v8 / 200', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Physics_v14', 'HLT_Random_v3', 'HLT_ZeroBias_FirstCollisionAfterAbortGap_v12', @@ -16340,6 +16387,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) ) fragment.hltPreDatasetPPRefZeroBiasPlusForward0 = cms.EDFilter( "HLTPrescaler", @@ -16831,6 +16879,7 @@ fragment.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORSingleJet28 + fragment.hltPrePPRefUPCSingleJet28ZDC1nOR + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_ZDC1nAsymXOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nAsymXOR + fragment.hltPrePPRefUPCZDC1nAsymXOR + fragment.HLTEndSequence ) fragment.HLT_PPRefUPC_ZDC1nOR_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sZDC1nORPRef + fragment.hltPrePPRefUPCZDC1nOR + fragment.HLTEndSequence ) +fragment.HLT_PPRefZeroBias_FirstCollisionInTrain_v1 = cms.Path( fragment.HLTBeginSequence + fragment.hltL1sL1ZeroBiasFirstCollisionInTrain + fragment.hltPrePPRefZeroBiasFirstCollisionInTrain + fragment.HLTEndSequence ) fragment.HLT_Random_HighRate_v1 = cms.Path( fragment.HLTBeginSequenceRandom + fragment.hltPreRandomHighRate + fragment.HLTEndSequence ) fragment.HLTriggerFinalPath = cms.Path( fragment.hltGtStage2Digis + fragment.hltTriggerSummaryAOD + fragment.hltTriggerSummaryRAW + fragment.hltBoolFalse ) fragment.HLTAnalyzerEndpath = cms.EndPath( fragment.hltGtStage2Digis + fragment.hltL1TGlobalSummary + fragment.hltTrigReport ) @@ -16916,7 +16965,7 @@ fragment.Dataset_PPRefHardProbes4 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetPPRefHardProbes + fragment.hltPreDatasetPPRefHardProbes4 ) -fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_HIEcalEtaEBonly_v12, fragment.AlCa_HIEcalEtaEEonly_v12, fragment.AlCa_HIEcalPi0EBonly_v12, fragment.AlCa_HIEcalPi0EEonly_v12, fragment.AlCa_HIRPCMuonNormalisation_v11, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DST_Physics_v16, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, fragment.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, fragment.HLT_HIL1NotBptxORForPPRef_v9, fragment.HLT_HIHT80_Beamspot_ppRef5TeV_v15, fragment.HLT_PPRefZeroBias_v6, fragment.HLT_AK4CaloJet40_v6, fragment.HLT_AK4CaloJet60_v6, fragment.HLT_AK4CaloJet70_v6, fragment.HLT_AK4CaloJet80_v6, fragment.HLT_AK4CaloJet100_v6, fragment.HLT_AK4CaloJet120_v6, fragment.HLT_AK4CaloJetFwd40_v6, fragment.HLT_AK4CaloJetFwd60_v6, fragment.HLT_AK4CaloJetFwd70_v6, fragment.HLT_AK4CaloJetFwd80_v6, fragment.HLT_AK4CaloJetFwd100_v6, fragment.HLT_AK4CaloJetFwd120_v6, fragment.HLT_AK4PFJet40_v8, fragment.HLT_AK4PFJet60_v8, fragment.HLT_AK4PFJet80_v8, fragment.HLT_AK4PFJet100_v8, fragment.HLT_AK4PFJet120_v8, fragment.HLT_AK4PFJetFwd40_v8, fragment.HLT_AK4PFJetFwd60_v8, fragment.HLT_AK4PFJetFwd80_v8, fragment.HLT_AK4PFJetFwd100_v8, fragment.HLT_AK4PFJetFwd120_v8, fragment.HLT_PPRefDoubleEle10Gsf_v6, fragment.HLT_PPRefDoubleEle10GsfMass50_v6, fragment.HLT_PPRefDoubleEle15Gsf_v6, fragment.HLT_PPRefDoubleEle15GsfMass50_v6, fragment.HLT_PPRefEle15Ele10Gsf_v6, fragment.HLT_PPRefEle15Ele10GsfMass50_v6, fragment.HLT_PPRefEle10Gsf_v6, fragment.HLT_PPRefEle15Gsf_v6, fragment.HLT_PPRefEle20Gsf_v7, fragment.HLT_PPRefEle30Gsf_v7, fragment.HLT_PPRefEle40Gsf_v6, fragment.HLT_PPRefEle50Gsf_v6, fragment.HLT_PPRefGEDPhoton10_v6, fragment.HLT_PPRefGEDPhoton10_EB_v6, fragment.HLT_PPRefGEDPhoton20_v6, fragment.HLT_PPRefGEDPhoton20_EB_v6, fragment.HLT_PPRefGEDPhoton30_v6, fragment.HLT_PPRefGEDPhoton30_EB_v6, fragment.HLT_PPRefGEDPhoton40_v6, fragment.HLT_PPRefGEDPhoton40_EB_v6, fragment.HLT_PPRefGEDPhoton50_v6, fragment.HLT_PPRefGEDPhoton50_EB_v6, fragment.HLT_PPRefGEDPhoton60_v6, fragment.HLT_PPRefGEDPhoton60_EB_v6, fragment.HLT_PPRefDoubleGEDPhoton20_v1, fragment.HLT_PPRefL1DoubleMu0_v6, fragment.HLT_PPRefL1DoubleMu0_SQ_v1, fragment.HLT_PPRefL1DoubleMu0_Open_v6, fragment.HLT_PPRefL1DoubleMu2_v1, fragment.HLT_PPRefL1DoubleMu2_SQ_v1, fragment.HLT_PPRefL1SingleMu0_Cosmics_v6, fragment.HLT_PPRefL1SingleMu7_v6, fragment.HLT_PPRefL1SingleMu12_v6, fragment.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, fragment.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, fragment.HLT_PPRefL2DoubleMu0_v6, fragment.HLT_PPRefL2DoubleMu0_Open_v6, fragment.HLT_PPRefL2SingleMu7_v6, fragment.HLT_PPRefL2SingleMu12_v6, fragment.HLT_PPRefL2SingleMu15_v6, fragment.HLT_PPRefL2SingleMu20_v6, fragment.HLT_PPRefL3DoubleMu0_v8, fragment.HLT_PPRefL3DoubleMu0_Open_v8, fragment.HLT_PPRefL3SingleMu3_v8, fragment.HLT_PPRefL3SingleMu5_v8, fragment.HLT_PPRefL3SingleMu7_v8, fragment.HLT_PPRefL3SingleMu12_v8, fragment.HLT_PPRefL3SingleMu15_v8, fragment.HLT_PPRefL3SingleMu20_v8, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, fragment.HLT_PPRefCscCluster_Loose_v6, fragment.HLT_PPRefCscCluster_Medium_v6, fragment.HLT_PPRefCscCluster_Tight_v6, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, fragment.HLT_PPRefUPC_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_ZDC1nOR_v1, fragment.HLT_Random_HighRate_v1, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPhiSym, fragment.Dataset_Commissioning, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_EcalLaser, fragment.Dataset_EmptyBX, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressPhysics, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_L1Accept, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_PPRefDoubleMuon0, fragment.Dataset_PPRefDoubleMuon1, fragment.Dataset_PPRefDoubleMuon2, fragment.Dataset_PPRefDoubleMuon3, fragment.Dataset_PPRefHardProbes0, fragment.Dataset_PPRefSingleMuon0, fragment.Dataset_PPRefZeroBiasPlusForward0, fragment.Dataset_RPCMonitor, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_ZeroBias, fragment.Dataset_SpecialRandom0, fragment.Dataset_SpecialRandom1, fragment.Dataset_SpecialRandom2, fragment.Dataset_SpecialRandom3, fragment.Dataset_SpecialRandom4, fragment.Dataset_SpecialRandom5, fragment.Dataset_SpecialRandom6, fragment.Dataset_SpecialRandom7, fragment.Dataset_SpecialRandom8, fragment.Dataset_SpecialRandom9, fragment.Dataset_SpecialRandom10, fragment.Dataset_SpecialRandom11, fragment.Dataset_SpecialRandom12, fragment.Dataset_SpecialRandom13, fragment.Dataset_SpecialRandom14, fragment.Dataset_SpecialRandom15, fragment.Dataset_SpecialRandom16, fragment.Dataset_SpecialRandom17, fragment.Dataset_SpecialRandom18, fragment.Dataset_SpecialRandom19, fragment.Dataset_PPRefZeroBiasPlusForward1, fragment.Dataset_PPRefZeroBiasPlusForward2, fragment.Dataset_PPRefZeroBiasPlusForward3, fragment.Dataset_PPRefZeroBiasPlusForward4, fragment.Dataset_PPRefZeroBiasPlusForward5, fragment.Dataset_PPRefZeroBiasPlusForward6, fragment.Dataset_PPRefZeroBiasPlusForward7, fragment.Dataset_PPRefZeroBiasPlusForward8, fragment.Dataset_PPRefZeroBiasPlusForward9, fragment.Dataset_PPRefZeroBiasPlusForward10, fragment.Dataset_PPRefZeroBiasPlusForward11, fragment.Dataset_PPRefZeroBiasPlusForward12, fragment.Dataset_PPRefZeroBiasPlusForward13, fragment.Dataset_PPRefZeroBiasPlusForward14, fragment.Dataset_PPRefZeroBiasPlusForward15, fragment.Dataset_PPRefZeroBiasPlusForward16, fragment.Dataset_PPRefZeroBiasPlusForward17, fragment.Dataset_PPRefZeroBiasPlusForward18, fragment.Dataset_PPRefZeroBiasPlusForward19, fragment.Dataset_PPRefZeroBiasPlusForward20, fragment.Dataset_PPRefZeroBiasPlusForward21, fragment.Dataset_PPRefZeroBiasPlusForward22, fragment.Dataset_PPRefZeroBiasPlusForward23, fragment.Dataset_PPRefZeroBiasPlusForward24, fragment.Dataset_PPRefSingleMuon1, fragment.Dataset_PPRefSingleMuon2, fragment.Dataset_PPRefSingleMuon3, fragment.Dataset_PPRefHardProbes1, fragment.Dataset_PPRefHardProbes2, fragment.Dataset_PPRefHardProbes3, fragment.Dataset_PPRefHardProbes4, )) +fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_HIEcalEtaEBonly_v12, fragment.AlCa_HIEcalEtaEEonly_v12, fragment.AlCa_HIEcalPi0EBonly_v12, fragment.AlCa_HIEcalPi0EEonly_v12, fragment.AlCa_HIRPCMuonNormalisation_v11, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DST_Physics_v16, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, fragment.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, fragment.HLT_HIL1NotBptxORForPPRef_v9, fragment.HLT_HIHT80_Beamspot_ppRef5TeV_v15, fragment.HLT_PPRefZeroBias_v6, fragment.HLT_AK4CaloJet40_v6, fragment.HLT_AK4CaloJet60_v6, fragment.HLT_AK4CaloJet70_v6, fragment.HLT_AK4CaloJet80_v6, fragment.HLT_AK4CaloJet100_v6, fragment.HLT_AK4CaloJet120_v6, fragment.HLT_AK4CaloJetFwd40_v6, fragment.HLT_AK4CaloJetFwd60_v6, fragment.HLT_AK4CaloJetFwd70_v6, fragment.HLT_AK4CaloJetFwd80_v6, fragment.HLT_AK4CaloJetFwd100_v6, fragment.HLT_AK4CaloJetFwd120_v6, fragment.HLT_AK4PFJet40_v8, fragment.HLT_AK4PFJet60_v8, fragment.HLT_AK4PFJet80_v8, fragment.HLT_AK4PFJet100_v8, fragment.HLT_AK4PFJet120_v8, fragment.HLT_AK4PFJetFwd40_v8, fragment.HLT_AK4PFJetFwd60_v8, fragment.HLT_AK4PFJetFwd80_v8, fragment.HLT_AK4PFJetFwd100_v8, fragment.HLT_AK4PFJetFwd120_v8, fragment.HLT_PPRefDoubleEle10Gsf_v6, fragment.HLT_PPRefDoubleEle10GsfMass50_v6, fragment.HLT_PPRefDoubleEle15Gsf_v6, fragment.HLT_PPRefDoubleEle15GsfMass50_v6, fragment.HLT_PPRefEle15Ele10Gsf_v6, fragment.HLT_PPRefEle15Ele10GsfMass50_v6, fragment.HLT_PPRefEle10Gsf_v6, fragment.HLT_PPRefEle15Gsf_v6, fragment.HLT_PPRefEle20Gsf_v7, fragment.HLT_PPRefEle30Gsf_v7, fragment.HLT_PPRefEle40Gsf_v6, fragment.HLT_PPRefEle50Gsf_v6, fragment.HLT_PPRefGEDPhoton10_v6, fragment.HLT_PPRefGEDPhoton10_EB_v6, fragment.HLT_PPRefGEDPhoton20_v6, fragment.HLT_PPRefGEDPhoton20_EB_v6, fragment.HLT_PPRefGEDPhoton30_v6, fragment.HLT_PPRefGEDPhoton30_EB_v6, fragment.HLT_PPRefGEDPhoton40_v6, fragment.HLT_PPRefGEDPhoton40_EB_v6, fragment.HLT_PPRefGEDPhoton50_v6, fragment.HLT_PPRefGEDPhoton50_EB_v6, fragment.HLT_PPRefGEDPhoton60_v6, fragment.HLT_PPRefGEDPhoton60_EB_v6, fragment.HLT_PPRefDoubleGEDPhoton20_v1, fragment.HLT_PPRefL1DoubleMu0_v6, fragment.HLT_PPRefL1DoubleMu0_SQ_v1, fragment.HLT_PPRefL1DoubleMu0_Open_v6, fragment.HLT_PPRefL1DoubleMu2_v1, fragment.HLT_PPRefL1DoubleMu2_SQ_v1, fragment.HLT_PPRefL1SingleMu0_Cosmics_v6, fragment.HLT_PPRefL1SingleMu7_v6, fragment.HLT_PPRefL1SingleMu12_v6, fragment.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, fragment.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, fragment.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, fragment.HLT_PPRefL2DoubleMu0_v6, fragment.HLT_PPRefL2DoubleMu0_Open_v6, fragment.HLT_PPRefL2SingleMu7_v6, fragment.HLT_PPRefL2SingleMu12_v6, fragment.HLT_PPRefL2SingleMu15_v6, fragment.HLT_PPRefL2SingleMu20_v6, fragment.HLT_PPRefL3DoubleMu0_v8, fragment.HLT_PPRefL3DoubleMu0_Open_v8, fragment.HLT_PPRefL3SingleMu3_v8, fragment.HLT_PPRefL3SingleMu5_v8, fragment.HLT_PPRefL3SingleMu7_v8, fragment.HLT_PPRefL3SingleMu12_v8, fragment.HLT_PPRefL3SingleMu15_v8, fragment.HLT_PPRefL3SingleMu20_v8, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, fragment.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, fragment.HLT_PPRefCscCluster_Loose_v6, fragment.HLT_PPRefCscCluster_Medium_v6, fragment.HLT_PPRefCscCluster_Tight_v6, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, fragment.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, fragment.HLT_PPRefUPC_ZDC1nAsymXOR_v1, fragment.HLT_PPRefUPC_ZDC1nOR_v1, fragment.HLT_PPRefZeroBias_FirstCollisionInTrain_v1, fragment.HLT_Random_HighRate_v1, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPhiSym, fragment.Dataset_Commissioning, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_EcalLaser, fragment.Dataset_EmptyBX, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressPhysics, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_L1Accept, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_PPRefDoubleMuon0, fragment.Dataset_PPRefDoubleMuon1, fragment.Dataset_PPRefDoubleMuon2, fragment.Dataset_PPRefDoubleMuon3, fragment.Dataset_PPRefHardProbes0, fragment.Dataset_PPRefSingleMuon0, fragment.Dataset_PPRefZeroBiasPlusForward0, fragment.Dataset_RPCMonitor, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_ZeroBias, fragment.Dataset_SpecialRandom0, fragment.Dataset_SpecialRandom1, fragment.Dataset_SpecialRandom2, fragment.Dataset_SpecialRandom3, fragment.Dataset_SpecialRandom4, fragment.Dataset_SpecialRandom5, fragment.Dataset_SpecialRandom6, fragment.Dataset_SpecialRandom7, fragment.Dataset_SpecialRandom8, fragment.Dataset_SpecialRandom9, fragment.Dataset_SpecialRandom10, fragment.Dataset_SpecialRandom11, fragment.Dataset_SpecialRandom12, fragment.Dataset_SpecialRandom13, fragment.Dataset_SpecialRandom14, fragment.Dataset_SpecialRandom15, fragment.Dataset_SpecialRandom16, fragment.Dataset_SpecialRandom17, fragment.Dataset_SpecialRandom18, fragment.Dataset_SpecialRandom19, fragment.Dataset_PPRefZeroBiasPlusForward1, fragment.Dataset_PPRefZeroBiasPlusForward2, fragment.Dataset_PPRefZeroBiasPlusForward3, fragment.Dataset_PPRefZeroBiasPlusForward4, fragment.Dataset_PPRefZeroBiasPlusForward5, fragment.Dataset_PPRefZeroBiasPlusForward6, fragment.Dataset_PPRefZeroBiasPlusForward7, fragment.Dataset_PPRefZeroBiasPlusForward8, fragment.Dataset_PPRefZeroBiasPlusForward9, fragment.Dataset_PPRefZeroBiasPlusForward10, fragment.Dataset_PPRefZeroBiasPlusForward11, fragment.Dataset_PPRefZeroBiasPlusForward12, fragment.Dataset_PPRefZeroBiasPlusForward13, fragment.Dataset_PPRefZeroBiasPlusForward14, fragment.Dataset_PPRefZeroBiasPlusForward15, fragment.Dataset_PPRefZeroBiasPlusForward16, fragment.Dataset_PPRefZeroBiasPlusForward17, fragment.Dataset_PPRefZeroBiasPlusForward18, fragment.Dataset_PPRefZeroBiasPlusForward19, fragment.Dataset_PPRefZeroBiasPlusForward20, fragment.Dataset_PPRefZeroBiasPlusForward21, fragment.Dataset_PPRefZeroBiasPlusForward22, fragment.Dataset_PPRefZeroBiasPlusForward23, fragment.Dataset_PPRefZeroBiasPlusForward24, fragment.Dataset_PPRefSingleMuon1, fragment.Dataset_PPRefSingleMuon2, fragment.Dataset_PPRefSingleMuon3, fragment.Dataset_PPRefHardProbes1, fragment.Dataset_PPRefHardProbes2, fragment.Dataset_PPRefHardProbes3, fragment.Dataset_PPRefHardProbes4, )) # dummify hltGetConditions in cff's diff --git a/HLTrigger/Configuration/python/HLT_Special_cff.py b/HLTrigger/Configuration/python/HLT_Special_cff.py index 6a1b763592904..d02a0b3d2b28a 100644 --- a/HLTrigger/Configuration/python/HLT_Special_cff.py +++ b/HLTrigger/Configuration/python/HLT_Special_cff.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Special --cff --data --type Special +# hltGetConfiguration /dev/CMSSW_14_2_0/Special --cff --data --type Special -# /dev/CMSSW_14_1_0/Special/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Special/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ fragment.load("Configuration.StandardSequences.Accelerators_cff") fragment.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Special/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/Special/V10") ) fragment.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1503,6 +1503,22 @@ 'SpecialZeroBias17' ), PhysicsSpecialZeroBias9 = cms.vstring( 'SpecialZeroBias18', 'SpecialZeroBias19' ), + PhysicsVRRandom0 = cms.vstring( 'VRRandom0', + 'VRRandom1' ), + PhysicsVRRandom1 = cms.vstring( 'VRRandom2', + 'VRRandom3' ), + PhysicsVRRandom2 = cms.vstring( 'VRRandom4', + 'VRRandom5' ), + PhysicsVRRandom3 = cms.vstring( 'VRRandom6', + 'VRRandom7' ), + PhysicsVRRandom4 = cms.vstring( 'VRRandom8', + 'VRRandom9' ), + PhysicsVRRandom5 = cms.vstring( 'VRRandom10', + 'VRRandom11' ), + PhysicsVRRandom6 = cms.vstring( 'VRRandom12', + 'VRRandom13' ), + PhysicsVRRandom7 = cms.vstring( 'VRRandom14', + 'VRRandom15' ), RPCMON = cms.vstring( 'RPCMonitor' ) ) fragment.datasets = cms.PSet( @@ -1865,6 +1881,22 @@ 'HLT_HcalCalibration_v6' ), TestEnablesEcalHcalDQM = cms.vstring( 'HLT_EcalCalibration_v4', 'HLT_HcalCalibration_v6' ), + VRRandom0 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom1 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom10 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom11 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom12 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom13 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom14 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom15 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom2 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom3 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom4 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom5 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom6 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom7 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom8 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom9 = cms.vstring( 'HLT_Random_HighRate_v1' ), ZeroBias = cms.vstring( 'HLT_Random_v3', 'HLT_ZeroBias_Alignment_v8', 'HLT_ZeroBias_FirstBXAfterTrain_v10', @@ -4213,8 +4245,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -4985,6 +5017,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -5059,6 +5092,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -5230,8 +5264,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -7436,6 +7470,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -8237,6 +8272,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) fragment.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -10739,6 +10775,22 @@ fragment.hltCombinatorialcosmicseedfinderP5 = cms.EDProducer( "CtfSpecialSeedGenerator", SeedMomentum = cms.double( 5.0 ), ErrorRescaling = cms.double( 50.0 ), + UseScintillatorsConstraint = cms.bool( False ), + TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), + SeedsFromPositiveY = cms.bool( True ), + SeedsFromNegativeY = cms.bool( False ), + CheckHitsAreOnDifferentLayers = cms.bool( False ), + SetMomentum = cms.bool( True ), + requireBOFF = cms.bool( True ), + maxSeeds = cms.int32( 10000 ), + doClusterCheck = cms.bool( True ), + MaxNumberOfStripClusters = cms.uint32( 300 ), + ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), + MaxNumberOfPixelClusters = cms.uint32( 1000 ), + PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), + cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 20 ), + Charges = cms.vint32( -1 ), RegionFactoryPSet = cms.PSet( RegionPSet = cms.PSet( ptMin = cms.double( 0.9 ), @@ -10752,7 +10804,20 @@ ), ComponentName = cms.string( "GlobalRegionProducer" ) ), - Charges = cms.vint32( -1 ), + UpperScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( 300.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), + LowerScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( -100.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), OrderedHitsFactoryPSets = cms.VPSet( cms.PSet( LayerSrc = cms.InputTag( "hltCombinatorialcosmicseedingtripletsP5" ), NavigationDirection = cms.string( "outsideIn" ), @@ -10784,40 +10849,11 @@ PropagationDirection = cms.string( "alongMomentum" ), ComponentName = cms.string( "GenericPairGenerator" ) ) - ), - UseScintillatorsConstraint = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - SeedsFromPositiveY = cms.bool( True ), - SeedsFromNegativeY = cms.bool( False ), - doClusterCheck = cms.bool( True ), - ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), - MaxNumberOfStripClusters = cms.uint32( 300 ), - MaxNumberOfPixelClusters = cms.uint32( 1000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), - CheckHitsAreOnDifferentLayers = cms.bool( False ), - SetMomentum = cms.bool( True ), - requireBOFF = cms.bool( True ), - maxSeeds = cms.int32( 10000 ), - DontCountDetsAboveNClusters = cms.untracked.uint32( 20 ), - UpperScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( 300.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) - ), - LowerScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( -100.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) ) ) fragment.hltCombinedP5SeedsForCTF = cms.EDProducer( "SeedCombiner", seedCollections = cms.VInputTag( 'hltCombinatorialcosmicseedfinderP5','hltSimpleCosmicBONSeeds' ), - PairCollection = cms.untracked.InputTag( "hltCombinatorialcosmicseedfinderP5" ), - TripletCollection = cms.untracked.InputTag( "hltSimpleCosmicBONSeeds" ) + clusterRemovalInfos = cms.VInputTag( ) ) fragment.hltCkfTrackCandidatesP5 = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -11512,6 +11548,78 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +fragment.hltDatasetVRRandom = cms.EDFilter( "TriggerResultsFilter", + usePathStatus = cms.bool( True ), + hltResults = cms.InputTag( "" ), + l1tResults = cms.InputTag( "" ), + l1tIgnoreMaskAndPrescale = cms.bool( False ), + throw = cms.bool( True ), + triggerConditions = cms.vstring( 'HLT_Random_HighRate_v1' ) +) +fragment.hltPreDatasetVRRandom0 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom1 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 1 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom2 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 2 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom3 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 3 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom4 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 4 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom5 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 5 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom6 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 6 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom7 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 7 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom8 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 8 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom9 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 9 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom10 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 10 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom11 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 11 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom12 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 12 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom13 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 13 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom14 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 14 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +fragment.hltPreDatasetVRRandom15 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 15 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) fragment.hltDatasetZeroBias = cms.EDFilter( "TriggerResultsFilter", usePathStatus = cms.bool( True ), hltResults = cms.InputTag( "" ), @@ -12047,6 +12155,22 @@ fragment.Dataset_RPCMonitor = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetRPCMonitor + fragment.hltPreDatasetRPCMonitor ) fragment.Dataset_TestEnablesEcalHcal = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetTestEnablesEcalHcal + fragment.hltPreDatasetTestEnablesEcalHcal ) fragment.Dataset_TestEnablesEcalHcalDQM = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetTestEnablesEcalHcalDQM + fragment.hltPreDatasetTestEnablesEcalHcalDQM ) +fragment.Dataset_VRRandom0 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom0 ) +fragment.Dataset_VRRandom1 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom1 ) +fragment.Dataset_VRRandom2 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom2 ) +fragment.Dataset_VRRandom3 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom3 ) +fragment.Dataset_VRRandom4 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom4 ) +fragment.Dataset_VRRandom5 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom5 ) +fragment.Dataset_VRRandom6 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom6 ) +fragment.Dataset_VRRandom7 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom7 ) +fragment.Dataset_VRRandom8 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom8 ) +fragment.Dataset_VRRandom9 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom9 ) +fragment.Dataset_VRRandom10 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom10 ) +fragment.Dataset_VRRandom11 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom11 ) +fragment.Dataset_VRRandom12 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom12 ) +fragment.Dataset_VRRandom13 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom13 ) +fragment.Dataset_VRRandom14 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom14 ) +fragment.Dataset_VRRandom15 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetVRRandom + fragment.hltPreDatasetVRRandom15 ) fragment.Dataset_ZeroBias = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetZeroBias + fragment.hltPreDatasetZeroBias ) fragment.Dataset_SpecialRandom0 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetSpecialRandom + fragment.hltPreDatasetSpecialRandom0 ) fragment.Dataset_SpecialRandom1 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetSpecialRandom + fragment.hltPreDatasetSpecialRandom1 ) @@ -12122,7 +12246,7 @@ fragment.Dataset_SpecialHLTPhysics19 = cms.Path( fragment.HLTDatasetPathBeginSequence + fragment.hltDatasetSpecialHLTPhysics + fragment.hltPreDatasetSpecialHLTPhysics19 ) -fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_EcalEtaEBonly_v25, fragment.AlCa_EcalEtaEEonly_v25, fragment.AlCa_EcalPi0EBonly_v25, fragment.AlCa_EcalPi0EEonly_v25, fragment.AlCa_RPCMuonNormalisation_v23, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DQM_Random_v1, fragment.DQM_ZeroBias_v3, fragment.DST_ZeroBias_v11, fragment.DST_Physics_v16, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Alignment_v8, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_IsolatedBunches_v12, fragment.HLT_ZeroBias_FirstBXAfterTrain_v10, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_ZeroBias_FirstCollisionInTrain_v11, fragment.HLT_ZeroBias_LastCollisionInTrain_v10, fragment.HLT_HT300_Beamspot_v23, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_L1SingleMuCosmics_v8, fragment.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, fragment.HLT_L2Mu10_NoVertex_NoBPTX_v15, fragment.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, fragment.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_PPSMaxTracksPerArm1_v9, fragment.HLT_PPSMaxTracksPerRP4_v9, fragment.HLT_PPSRandom_v1, fragment.HLT_SpecialHLTPhysics_v7, fragment.AlCa_LumiPixelsCounts_RandomHighRate_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, fragment.HLT_L1SingleMuOpen_v6, fragment.HLT_L1SingleMuOpen_DT_v6, fragment.HLT_L1SingleMu3_v5, fragment.HLT_L1SingleMu5_v5, fragment.HLT_L1SingleMu7_v5, fragment.HLT_L1DoubleMu0_v5, fragment.HLT_L1SingleJet8erHE_v5, fragment.HLT_L1SingleJet10erHE_v5, fragment.HLT_L1SingleJet12erHE_v5, fragment.HLT_L1SingleJet35_v5, fragment.HLT_L1SingleJet200_v5, fragment.HLT_L1SingleEG8er2p5_v4, fragment.HLT_L1SingleEG10er2p5_v4, fragment.HLT_L1SingleEG15er2p5_v4, fragment.HLT_L1SingleEG26er2p5_v4, fragment.HLT_L1SingleEG28er2p5_v4, fragment.HLT_L1SingleEG28er2p1_v4, fragment.HLT_L1SingleEG28er1p5_v4, fragment.HLT_L1SingleEG34er2p5_v4, fragment.HLT_L1SingleEG36er2p5_v4, fragment.HLT_L1SingleEG38er2p5_v4, fragment.HLT_L1SingleEG40er2p5_v4, fragment.HLT_L1SingleEG42er2p5_v4, fragment.HLT_L1SingleEG45er2p5_v4, fragment.HLT_L1SingleEG50_v4, fragment.HLT_L1SingleJet60_v4, fragment.HLT_L1SingleJet90_v4, fragment.HLT_L1SingleJet120_v4, fragment.HLT_L1SingleJet180_v4, fragment.HLT_L1HTT120er_v4, fragment.HLT_L1HTT160er_v4, fragment.HLT_L1HTT200er_v4, fragment.HLT_L1HTT255er_v4, fragment.HLT_L1HTT280er_v4, fragment.HLT_L1HTT320er_v4, fragment.HLT_L1HTT360er_v4, fragment.HLT_L1HTT400er_v4, fragment.HLT_L1HTT450er_v4, fragment.HLT_L1ETM120_v4, fragment.HLT_L1ETM150_v4, fragment.HLT_L1EXT_HCAL_LaserMon1_v5, fragment.HLT_L1EXT_HCAL_LaserMon4_v5, fragment.HLT_CscCluster_Cosmic_v4, fragment.HLT_HT60_Beamspot_v22, fragment.HLT_HT300_Beamspot_PixelClusters_WP2_v7, fragment.HLT_PixelClusters_WP2_v4, fragment.HLT_PixelClusters_WP1_v4, fragment.HLT_BptxOR_v6, fragment.HLT_L1SingleMuCosmics_EMTF_v4, fragment.HLT_L1SingleMuCosmics_CosmicTracking_v1, fragment.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, fragment.HLT_L1FatEvents_v5, fragment.HLT_Random_HighRate_v1, fragment.HLT_ZeroBias_HighRate_v4, fragment.HLT_ZeroBias_Gated_v4, fragment.HLT_SpecialZeroBias_v6, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate0, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate1, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate2, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate3, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate4, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate5, fragment.Dataset_AlCaLumiPixelsCountsGated, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPPSExpress, fragment.Dataset_AlCaPPSPrompt, fragment.Dataset_AlCaPhiSym, fragment.Dataset_Commissioning, fragment.Dataset_Cosmics, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_DQMPPSRandom, fragment.Dataset_EcalLaser, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressCosmics, fragment.Dataset_ExpressPhysics, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_L1Accept, fragment.Dataset_MinimumBias, fragment.Dataset_MuonShower, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_RPCMonitor, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_ZeroBias, fragment.Dataset_SpecialRandom0, fragment.Dataset_SpecialRandom1, fragment.Dataset_SpecialRandom2, fragment.Dataset_SpecialRandom3, fragment.Dataset_SpecialRandom4, fragment.Dataset_SpecialRandom5, fragment.Dataset_SpecialRandom6, fragment.Dataset_SpecialRandom7, fragment.Dataset_SpecialRandom8, fragment.Dataset_SpecialRandom9, fragment.Dataset_SpecialRandom10, fragment.Dataset_SpecialRandom11, fragment.Dataset_SpecialRandom12, fragment.Dataset_SpecialRandom13, fragment.Dataset_SpecialRandom14, fragment.Dataset_SpecialRandom15, fragment.Dataset_SpecialRandom16, fragment.Dataset_SpecialRandom17, fragment.Dataset_SpecialRandom18, fragment.Dataset_SpecialRandom19, fragment.Dataset_SpecialZeroBias0, fragment.Dataset_SpecialZeroBias1, fragment.Dataset_SpecialZeroBias2, fragment.Dataset_SpecialZeroBias3, fragment.Dataset_SpecialZeroBias4, fragment.Dataset_SpecialZeroBias5, fragment.Dataset_SpecialZeroBias6, fragment.Dataset_SpecialZeroBias7, fragment.Dataset_SpecialZeroBias8, fragment.Dataset_SpecialZeroBias9, fragment.Dataset_SpecialZeroBias10, fragment.Dataset_SpecialZeroBias11, fragment.Dataset_SpecialZeroBias12, fragment.Dataset_SpecialZeroBias13, fragment.Dataset_SpecialZeroBias14, fragment.Dataset_SpecialZeroBias15, fragment.Dataset_SpecialZeroBias16, fragment.Dataset_SpecialZeroBias17, fragment.Dataset_SpecialZeroBias18, fragment.Dataset_SpecialZeroBias19, fragment.Dataset_SpecialZeroBias20, fragment.Dataset_SpecialZeroBias21, fragment.Dataset_SpecialZeroBias22, fragment.Dataset_SpecialZeroBias23, fragment.Dataset_SpecialZeroBias24, fragment.Dataset_SpecialZeroBias25, fragment.Dataset_SpecialZeroBias26, fragment.Dataset_SpecialZeroBias27, fragment.Dataset_SpecialZeroBias28, fragment.Dataset_SpecialZeroBias29, fragment.Dataset_SpecialZeroBias30, fragment.Dataset_SpecialZeroBias31, fragment.Dataset_SpecialHLTPhysics0, fragment.Dataset_SpecialHLTPhysics1, fragment.Dataset_SpecialHLTPhysics2, fragment.Dataset_SpecialHLTPhysics3, fragment.Dataset_SpecialHLTPhysics4, fragment.Dataset_SpecialHLTPhysics5, fragment.Dataset_SpecialHLTPhysics6, fragment.Dataset_SpecialHLTPhysics7, fragment.Dataset_SpecialHLTPhysics8, fragment.Dataset_SpecialHLTPhysics9, fragment.Dataset_SpecialHLTPhysics10, fragment.Dataset_SpecialHLTPhysics11, fragment.Dataset_SpecialHLTPhysics12, fragment.Dataset_SpecialHLTPhysics13, fragment.Dataset_SpecialHLTPhysics14, fragment.Dataset_SpecialHLTPhysics15, fragment.Dataset_SpecialHLTPhysics16, fragment.Dataset_SpecialHLTPhysics17, fragment.Dataset_SpecialHLTPhysics18, fragment.Dataset_SpecialHLTPhysics19, )) +fragment.schedule = cms.Schedule( *(fragment.HLTriggerFirstPath, fragment.Status_OnCPU, fragment.Status_OnGPU, fragment.AlCa_EcalPhiSym_v20, fragment.AlCa_EcalEtaEBonly_v25, fragment.AlCa_EcalEtaEEonly_v25, fragment.AlCa_EcalPi0EBonly_v25, fragment.AlCa_EcalPi0EEonly_v25, fragment.AlCa_RPCMuonNormalisation_v23, fragment.AlCa_LumiPixelsCounts_Random_v10, fragment.AlCa_LumiPixelsCounts_ZeroBias_v12, fragment.DQM_PixelReconstruction_v12, fragment.DQM_EcalReconstruction_v12, fragment.DQM_HcalReconstruction_v10, fragment.DQM_Random_v1, fragment.DQM_ZeroBias_v3, fragment.DST_ZeroBias_v11, fragment.DST_Physics_v16, fragment.HLT_EcalCalibration_v4, fragment.HLT_HcalCalibration_v6, fragment.HLT_HcalNZS_v21, fragment.HLT_HcalPhiSym_v23, fragment.HLT_Random_v3, fragment.HLT_Physics_v14, fragment.HLT_ZeroBias_v13, fragment.HLT_ZeroBias_Alignment_v8, fragment.HLT_ZeroBias_Beamspot_v16, fragment.HLT_ZeroBias_IsolatedBunches_v12, fragment.HLT_ZeroBias_FirstBXAfterTrain_v10, fragment.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, fragment.HLT_ZeroBias_FirstCollisionInTrain_v11, fragment.HLT_ZeroBias_LastCollisionInTrain_v10, fragment.HLT_HT300_Beamspot_v23, fragment.HLT_IsoTrackHB_v14, fragment.HLT_IsoTrackHE_v14, fragment.HLT_L1SingleMuCosmics_v8, fragment.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, fragment.HLT_L2Mu10_NoVertex_NoBPTX_v15, fragment.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, fragment.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, fragment.HLT_CDC_L2cosmic_10_er1p0_v10, fragment.HLT_CDC_L2cosmic_5p5_er1p0_v10, fragment.HLT_PPSMaxTracksPerArm1_v9, fragment.HLT_PPSMaxTracksPerRP4_v9, fragment.HLT_PPSRandom_v1, fragment.HLT_SpecialHLTPhysics_v7, fragment.AlCa_LumiPixelsCounts_RandomHighRate_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, fragment.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, fragment.HLT_L1SingleMuOpen_v6, fragment.HLT_L1SingleMuOpen_DT_v6, fragment.HLT_L1SingleMu3_v5, fragment.HLT_L1SingleMu5_v5, fragment.HLT_L1SingleMu7_v5, fragment.HLT_L1DoubleMu0_v5, fragment.HLT_L1SingleJet8erHE_v5, fragment.HLT_L1SingleJet10erHE_v5, fragment.HLT_L1SingleJet12erHE_v5, fragment.HLT_L1SingleJet35_v5, fragment.HLT_L1SingleJet200_v5, fragment.HLT_L1SingleEG8er2p5_v4, fragment.HLT_L1SingleEG10er2p5_v4, fragment.HLT_L1SingleEG15er2p5_v4, fragment.HLT_L1SingleEG26er2p5_v4, fragment.HLT_L1SingleEG28er2p5_v4, fragment.HLT_L1SingleEG28er2p1_v4, fragment.HLT_L1SingleEG28er1p5_v4, fragment.HLT_L1SingleEG34er2p5_v4, fragment.HLT_L1SingleEG36er2p5_v4, fragment.HLT_L1SingleEG38er2p5_v4, fragment.HLT_L1SingleEG40er2p5_v4, fragment.HLT_L1SingleEG42er2p5_v4, fragment.HLT_L1SingleEG45er2p5_v4, fragment.HLT_L1SingleEG50_v4, fragment.HLT_L1SingleJet60_v4, fragment.HLT_L1SingleJet90_v4, fragment.HLT_L1SingleJet120_v4, fragment.HLT_L1SingleJet180_v4, fragment.HLT_L1HTT120er_v4, fragment.HLT_L1HTT160er_v4, fragment.HLT_L1HTT200er_v4, fragment.HLT_L1HTT255er_v4, fragment.HLT_L1HTT280er_v4, fragment.HLT_L1HTT320er_v4, fragment.HLT_L1HTT360er_v4, fragment.HLT_L1HTT400er_v4, fragment.HLT_L1HTT450er_v4, fragment.HLT_L1ETM120_v4, fragment.HLT_L1ETM150_v4, fragment.HLT_L1EXT_HCAL_LaserMon1_v5, fragment.HLT_L1EXT_HCAL_LaserMon4_v5, fragment.HLT_CscCluster_Cosmic_v4, fragment.HLT_HT60_Beamspot_v22, fragment.HLT_HT300_Beamspot_PixelClusters_WP2_v7, fragment.HLT_PixelClusters_WP2_v4, fragment.HLT_PixelClusters_WP1_v4, fragment.HLT_BptxOR_v6, fragment.HLT_L1SingleMuCosmics_EMTF_v4, fragment.HLT_L1SingleMuCosmics_CosmicTracking_v1, fragment.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, fragment.HLT_L1FatEvents_v5, fragment.HLT_Random_HighRate_v1, fragment.HLT_ZeroBias_HighRate_v4, fragment.HLT_ZeroBias_Gated_v4, fragment.HLT_SpecialZeroBias_v6, fragment.HLTriggerFinalPath, fragment.HLTAnalyzerEndpath, fragment.Dataset_AlCaLumiPixelsCountsExpress, fragment.Dataset_AlCaLumiPixelsCountsPrompt, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate0, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate1, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate2, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate3, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate4, fragment.Dataset_AlCaLumiPixelsCountsPromptHighRate5, fragment.Dataset_AlCaLumiPixelsCountsGated, fragment.Dataset_AlCaP0, fragment.Dataset_AlCaPPSExpress, fragment.Dataset_AlCaPPSPrompt, fragment.Dataset_AlCaPhiSym, fragment.Dataset_Commissioning, fragment.Dataset_Cosmics, fragment.Dataset_DQMGPUvsCPU, fragment.Dataset_DQMOnlineBeamspot, fragment.Dataset_DQMPPSRandom, fragment.Dataset_EcalLaser, fragment.Dataset_EventDisplay, fragment.Dataset_ExpressAlignment, fragment.Dataset_ExpressCosmics, fragment.Dataset_ExpressPhysics, fragment.Dataset_HLTMonitor, fragment.Dataset_HLTPhysics, fragment.Dataset_HcalNZS, fragment.Dataset_L1Accept, fragment.Dataset_MinimumBias, fragment.Dataset_MuonShower, fragment.Dataset_NoBPTX, fragment.Dataset_OnlineMonitor, fragment.Dataset_RPCMonitor, fragment.Dataset_TestEnablesEcalHcal, fragment.Dataset_TestEnablesEcalHcalDQM, fragment.Dataset_VRRandom0, fragment.Dataset_VRRandom1, fragment.Dataset_VRRandom2, fragment.Dataset_VRRandom3, fragment.Dataset_VRRandom4, fragment.Dataset_VRRandom5, fragment.Dataset_VRRandom6, fragment.Dataset_VRRandom7, fragment.Dataset_VRRandom8, fragment.Dataset_VRRandom9, fragment.Dataset_VRRandom10, fragment.Dataset_VRRandom11, fragment.Dataset_VRRandom12, fragment.Dataset_VRRandom13, fragment.Dataset_VRRandom14, fragment.Dataset_VRRandom15, fragment.Dataset_ZeroBias, fragment.Dataset_SpecialRandom0, fragment.Dataset_SpecialRandom1, fragment.Dataset_SpecialRandom2, fragment.Dataset_SpecialRandom3, fragment.Dataset_SpecialRandom4, fragment.Dataset_SpecialRandom5, fragment.Dataset_SpecialRandom6, fragment.Dataset_SpecialRandom7, fragment.Dataset_SpecialRandom8, fragment.Dataset_SpecialRandom9, fragment.Dataset_SpecialRandom10, fragment.Dataset_SpecialRandom11, fragment.Dataset_SpecialRandom12, fragment.Dataset_SpecialRandom13, fragment.Dataset_SpecialRandom14, fragment.Dataset_SpecialRandom15, fragment.Dataset_SpecialRandom16, fragment.Dataset_SpecialRandom17, fragment.Dataset_SpecialRandom18, fragment.Dataset_SpecialRandom19, fragment.Dataset_SpecialZeroBias0, fragment.Dataset_SpecialZeroBias1, fragment.Dataset_SpecialZeroBias2, fragment.Dataset_SpecialZeroBias3, fragment.Dataset_SpecialZeroBias4, fragment.Dataset_SpecialZeroBias5, fragment.Dataset_SpecialZeroBias6, fragment.Dataset_SpecialZeroBias7, fragment.Dataset_SpecialZeroBias8, fragment.Dataset_SpecialZeroBias9, fragment.Dataset_SpecialZeroBias10, fragment.Dataset_SpecialZeroBias11, fragment.Dataset_SpecialZeroBias12, fragment.Dataset_SpecialZeroBias13, fragment.Dataset_SpecialZeroBias14, fragment.Dataset_SpecialZeroBias15, fragment.Dataset_SpecialZeroBias16, fragment.Dataset_SpecialZeroBias17, fragment.Dataset_SpecialZeroBias18, fragment.Dataset_SpecialZeroBias19, fragment.Dataset_SpecialZeroBias20, fragment.Dataset_SpecialZeroBias21, fragment.Dataset_SpecialZeroBias22, fragment.Dataset_SpecialZeroBias23, fragment.Dataset_SpecialZeroBias24, fragment.Dataset_SpecialZeroBias25, fragment.Dataset_SpecialZeroBias26, fragment.Dataset_SpecialZeroBias27, fragment.Dataset_SpecialZeroBias28, fragment.Dataset_SpecialZeroBias29, fragment.Dataset_SpecialZeroBias30, fragment.Dataset_SpecialZeroBias31, fragment.Dataset_SpecialHLTPhysics0, fragment.Dataset_SpecialHLTPhysics1, fragment.Dataset_SpecialHLTPhysics2, fragment.Dataset_SpecialHLTPhysics3, fragment.Dataset_SpecialHLTPhysics4, fragment.Dataset_SpecialHLTPhysics5, fragment.Dataset_SpecialHLTPhysics6, fragment.Dataset_SpecialHLTPhysics7, fragment.Dataset_SpecialHLTPhysics8, fragment.Dataset_SpecialHLTPhysics9, fragment.Dataset_SpecialHLTPhysics10, fragment.Dataset_SpecialHLTPhysics11, fragment.Dataset_SpecialHLTPhysics12, fragment.Dataset_SpecialHLTPhysics13, fragment.Dataset_SpecialHLTPhysics14, fragment.Dataset_SpecialHLTPhysics15, fragment.Dataset_SpecialHLTPhysics16, fragment.Dataset_SpecialHLTPhysics17, fragment.Dataset_SpecialHLTPhysics18, fragment.Dataset_SpecialHLTPhysics19, )) # dummify hltGetConditions in cff's diff --git a/HLTrigger/Configuration/python/HLTrigger_Datasets_GRun_cff.py b/HLTrigger/Configuration/python/HLTrigger_Datasets_GRun_cff.py index f07b2bd890f87..689ea7b89f7e9 100644 --- a/HLTrigger/Configuration/python/HLTrigger_Datasets_GRun_cff.py +++ b/HLTrigger/Configuration/python/HLTrigger_Datasets_GRun_cff.py @@ -1,4 +1,4 @@ -# /dev/CMSSW_14_1_0/GRun +# /dev/CMSSW_14_2_0/GRun import FWCore.ParameterSet.Config as cms diff --git a/HLTrigger/Configuration/python/HLTrigger_Datasets_HIon_cff.py b/HLTrigger/Configuration/python/HLTrigger_Datasets_HIon_cff.py index 2c5c5002a5b49..b2dae0df106cf 100644 --- a/HLTrigger/Configuration/python/HLTrigger_Datasets_HIon_cff.py +++ b/HLTrigger/Configuration/python/HLTrigger_Datasets_HIon_cff.py @@ -1,4 +1,4 @@ -# /dev/CMSSW_14_1_0/HIon +# /dev/CMSSW_14_2_0/HIon import FWCore.ParameterSet.Config as cms @@ -41,6 +41,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -189,6 +191,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -337,6 +341,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -485,6 +491,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -633,6 +641,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -781,6 +791,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -929,6 +941,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1077,6 +1091,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1225,6 +1241,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1373,6 +1391,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1521,6 +1541,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1669,6 +1691,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1817,6 +1841,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1965,6 +1991,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2113,6 +2141,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2261,6 +2291,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2409,6 +2441,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2557,6 +2591,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2705,6 +2741,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2853,6 +2891,8 @@ 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', diff --git a/HLTrigger/Configuration/python/HLTrigger_Datasets_PIon_cff.py b/HLTrigger/Configuration/python/HLTrigger_Datasets_PIon_cff.py index 09634d1bf4163..22a5933d9f48c 100644 --- a/HLTrigger/Configuration/python/HLTrigger_Datasets_PIon_cff.py +++ b/HLTrigger/Configuration/python/HLTrigger_Datasets_PIon_cff.py @@ -1,4 +1,4 @@ -# /dev/CMSSW_14_1_0/PIon +# /dev/CMSSW_14_2_0/PIon import FWCore.ParameterSet.Config as cms diff --git a/HLTrigger/Configuration/python/HLTrigger_Datasets_PRef_cff.py b/HLTrigger/Configuration/python/HLTrigger_Datasets_PRef_cff.py index 3c33eb8291a63..288411affbe6d 100644 --- a/HLTrigger/Configuration/python/HLTrigger_Datasets_PRef_cff.py +++ b/HLTrigger/Configuration/python/HLTrigger_Datasets_PRef_cff.py @@ -1,4 +1,4 @@ -# /dev/CMSSW_14_1_0/PRef +# /dev/CMSSW_14_2_0/PRef import FWCore.ParameterSet.Config as cms @@ -585,6 +585,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -610,6 +611,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -635,6 +637,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -660,6 +663,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -685,6 +689,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -710,6 +715,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -735,6 +741,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -760,6 +767,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -785,6 +793,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -810,6 +819,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -835,6 +845,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -860,6 +871,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -885,6 +897,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -910,6 +923,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -935,6 +949,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -960,6 +975,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -985,6 +1001,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1010,6 +1027,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1035,6 +1053,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1060,6 +1079,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1085,6 +1105,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1110,6 +1131,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1135,6 +1157,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1160,6 +1183,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) @@ -1185,6 +1209,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) diff --git a/HLTrigger/Configuration/python/HLTrigger_Datasets_Special_cff.py b/HLTrigger/Configuration/python/HLTrigger_Datasets_Special_cff.py index 3d69276f0b038..46ed042611334 100644 --- a/HLTrigger/Configuration/python/HLTrigger_Datasets_Special_cff.py +++ b/HLTrigger/Configuration/python/HLTrigger_Datasets_Special_cff.py @@ -1,4 +1,4 @@ -# /dev/CMSSW_14_1_0/Special +# /dev/CMSSW_14_2_0/Special import FWCore.ParameterSet.Config as cms @@ -819,3 +819,123 @@ 'HLT_ZeroBias_HighRate_v4' ) + +# stream PhysicsVRRandom0 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom0_datasetVRRandom0_selector +streamPhysicsVRRandom0_datasetVRRandom0_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom0_datasetVRRandom0_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom0_datasetVRRandom0_selector.throw = cms.bool(False) +streamPhysicsVRRandom0_datasetVRRandom0_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom0_datasetVRRandom1_selector +streamPhysicsVRRandom0_datasetVRRandom1_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom0_datasetVRRandom1_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom0_datasetVRRandom1_selector.throw = cms.bool(False) +streamPhysicsVRRandom0_datasetVRRandom1_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom1 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom1_datasetVRRandom2_selector +streamPhysicsVRRandom1_datasetVRRandom2_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom1_datasetVRRandom2_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom1_datasetVRRandom2_selector.throw = cms.bool(False) +streamPhysicsVRRandom1_datasetVRRandom2_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom1_datasetVRRandom3_selector +streamPhysicsVRRandom1_datasetVRRandom3_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom1_datasetVRRandom3_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom1_datasetVRRandom3_selector.throw = cms.bool(False) +streamPhysicsVRRandom1_datasetVRRandom3_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom2 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom2_datasetVRRandom4_selector +streamPhysicsVRRandom2_datasetVRRandom4_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom2_datasetVRRandom4_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom2_datasetVRRandom4_selector.throw = cms.bool(False) +streamPhysicsVRRandom2_datasetVRRandom4_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom2_datasetVRRandom5_selector +streamPhysicsVRRandom2_datasetVRRandom5_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom2_datasetVRRandom5_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom2_datasetVRRandom5_selector.throw = cms.bool(False) +streamPhysicsVRRandom2_datasetVRRandom5_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom3 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom3_datasetVRRandom6_selector +streamPhysicsVRRandom3_datasetVRRandom6_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom3_datasetVRRandom6_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom3_datasetVRRandom6_selector.throw = cms.bool(False) +streamPhysicsVRRandom3_datasetVRRandom6_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom3_datasetVRRandom7_selector +streamPhysicsVRRandom3_datasetVRRandom7_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom3_datasetVRRandom7_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom3_datasetVRRandom7_selector.throw = cms.bool(False) +streamPhysicsVRRandom3_datasetVRRandom7_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom4 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom4_datasetVRRandom8_selector +streamPhysicsVRRandom4_datasetVRRandom8_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom4_datasetVRRandom8_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom4_datasetVRRandom8_selector.throw = cms.bool(False) +streamPhysicsVRRandom4_datasetVRRandom8_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom4_datasetVRRandom9_selector +streamPhysicsVRRandom4_datasetVRRandom9_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom4_datasetVRRandom9_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom4_datasetVRRandom9_selector.throw = cms.bool(False) +streamPhysicsVRRandom4_datasetVRRandom9_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom5 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom5_datasetVRRandom10_selector +streamPhysicsVRRandom5_datasetVRRandom10_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom5_datasetVRRandom10_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom5_datasetVRRandom10_selector.throw = cms.bool(False) +streamPhysicsVRRandom5_datasetVRRandom10_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom5_datasetVRRandom11_selector +streamPhysicsVRRandom5_datasetVRRandom11_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom5_datasetVRRandom11_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom5_datasetVRRandom11_selector.throw = cms.bool(False) +streamPhysicsVRRandom5_datasetVRRandom11_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom6 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom6_datasetVRRandom12_selector +streamPhysicsVRRandom6_datasetVRRandom12_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom6_datasetVRRandom12_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom6_datasetVRRandom12_selector.throw = cms.bool(False) +streamPhysicsVRRandom6_datasetVRRandom12_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom6_datasetVRRandom13_selector +streamPhysicsVRRandom6_datasetVRRandom13_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom6_datasetVRRandom13_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom6_datasetVRRandom13_selector.throw = cms.bool(False) +streamPhysicsVRRandom6_datasetVRRandom13_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + + +# stream PhysicsVRRandom7 + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom7_datasetVRRandom14_selector +streamPhysicsVRRandom7_datasetVRRandom14_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom7_datasetVRRandom14_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom7_datasetVRRandom14_selector.throw = cms.bool(False) +streamPhysicsVRRandom7_datasetVRRandom14_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + +from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter as streamPhysicsVRRandom7_datasetVRRandom15_selector +streamPhysicsVRRandom7_datasetVRRandom15_selector.hltResults = cms.InputTag('TriggerResults', '', 'HLT') +streamPhysicsVRRandom7_datasetVRRandom15_selector.l1tResults = cms.InputTag('') +streamPhysicsVRRandom7_datasetVRRandom15_selector.throw = cms.bool(False) +streamPhysicsVRRandom7_datasetVRRandom15_selector.triggerConditions = cms.vstring('HLT_Random_HighRate_v1') + diff --git a/HLTrigger/Configuration/python/Tools/confdb.py b/HLTrigger/Configuration/python/Tools/confdb.py index 5baca70ccf561..af5dd84e5c611 100644 --- a/HLTrigger/Configuration/python/Tools/confdb.py +++ b/HLTrigger/Configuration/python/Tools/confdb.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import absolute_import import sys import re import os diff --git a/HLTrigger/Configuration/python/customizeHLTforCMSSW.py b/HLTrigger/Configuration/python/customizeHLTforCMSSW.py index 1d87fe0c1011d..044f25fb963ef 100644 --- a/HLTrigger/Configuration/python/customizeHLTforCMSSW.py +++ b/HLTrigger/Configuration/python/customizeHLTforCMSSW.py @@ -48,19 +48,39 @@ def customiseForOffline(process): return process -def customiseHLTFor46647(process): - for prod in producers_by_type(process, 'CtfSpecialSeedGenerator'): - if hasattr(prod, "DontCountDetsAboveNClusters"): - value = prod.DontCountDetsAboveNClusters.value() - delattr(prod, "DontCountDetsAboveNClusters") - # Replace it with cms.uint32 - prod.DontCountDetsAboveNClusters = cms.uint32(value) - - for prod in producers_by_type(process, 'SeedCombiner'): - if hasattr(prod, "PairCollection"): - delattr(prod, "PairCollection") - if hasattr(prod, "TripletCollection"): - delattr(prod, "TripletCollection") +def customizeHLTfor46935(process): + """Changes parameter names of EcalUncalibRecHitSoAToLegacy producer""" + for prod in producers_by_type(process, 'EcalUncalibRecHitSoAToLegacy'): + if hasattr(prod, 'uncalibRecHitsPortableEB'): + prod.inputCollectionEB = prod.uncalibRecHitsPortableEB + delattr(prod, 'uncalibRecHitsPortableEB') + if hasattr(prod, 'uncalibRecHitsPortableEE'): + prod.inputCollectionEE = prod.uncalibRecHitsPortableEE + delattr(prod, 'uncalibRecHitsPortableEE') + if hasattr(prod, 'recHitsLabelCPUEB'): + prod.outputLabelEB = prod.recHitsLabelCPUEB + delattr(prod, 'recHitsLabelCPUEB') + if hasattr(prod, 'recHitsLabelCPUEE'): + prod.outputLabelEE = prod.recHitsLabelCPUEE + delattr(prod, 'recHitsLabelCPUEE') + return process + + +def customizeHLTfor47017(process): + """Remove unneeded parameters from the HLT menu""" + for prod in producers_by_type(process, 'MaskedMeasurementTrackerEventProducer'): + if hasattr(prod, 'OnDemand'): + delattr(prod, 'OnDemand') + + for prod in producers_by_type(process, 'HcalHaloDataProducer'): + if hasattr(prod, 'HcalMaxMatchingRadiusParam'): + delattr(prod, 'HcalMaxMatchingRadiusParam') + if hasattr(prod, 'HcalMinMatchingRadiusParam'): + delattr(prod, 'HcalMinMatchingRadiusParam') + + for prod in producers_by_type(process, 'SiPixelRecHitConverter'): + if hasattr(prod, 'VerboseLevel'): + delattr(prod, 'VerboseLevel') return process @@ -72,6 +92,8 @@ def customizeHLTforCMSSW(process, menuType="GRun"): # add call to action function in proper order: newest last! # process = customiseFor12718(process) - process = customiseHLTFor46647(process) + process = customizeHLTfor46935(process) + process = customizeHLTfor47017(process) return process + diff --git a/HLTrigger/Configuration/scripts/edmPluginCoverage b/HLTrigger/Configuration/scripts/edmPluginCoverage index 25bfd38712ae2..8cde1172c0cec 100755 --- a/HLTrigger/Configuration/scripts/edmPluginCoverage +++ b/HLTrigger/Configuration/scripts/edmPluginCoverage @@ -3,7 +3,6 @@ # Author: Andrea 'fwyzard' Bocci , Università di Pisa -from __future__ import print_function import os, sys import re diff --git a/HLTrigger/Configuration/scripts/utils/hltPathOwners.json b/HLTrigger/Configuration/scripts/utils/hltPathOwners.json index dcce569263929..24abfefd6e455 100644 --- a/HLTrigger/Configuration/scripts/utils/hltPathOwners.json +++ b/HLTrigger/Configuration/scripts/utils/hltPathOwners.json @@ -5402,7 +5402,8 @@ "HLT_Mu10_Barrel_L1HP11_IP6_v": { "online?": true, "owners": [ - "BPH" + "BPH", + "EXO" ] }, "HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v": { diff --git a/HLTrigger/Configuration/scripts/utils/readme.md b/HLTrigger/Configuration/scripts/utils/readme.md index cec01022881ad..93e39b3528955 100644 --- a/HLTrigger/Configuration/scripts/utils/readme.md +++ b/HLTrigger/Configuration/scripts/utils/readme.md @@ -22,7 +22,7 @@ Instructions for creating a spreadsheet for the release of a HLT menu. 1. Check if there are Paths without owners in the target configuration. ``` - ./hltListPathsWithoutOwners /dev/CMSSW_14_1_0/GRun --meta hltPathOwners.json + ./hltListPathsWithoutOwners /dev/CMSSW_14_2_0/GRun --meta hltPathOwners.json ``` 2. If there are Paths without owners, update the JSON file accordingly. @@ -39,7 +39,7 @@ Instructions for creating a spreadsheet for the release of a HLT menu. 3. Create the `.csv` files summarising the content of the HLT menu. ```bash - ./hltMenuContentToCSVs /dev/CMSSW_14_1_0/GRun --meta hltPathOwners.json --prescale 2p0E34 + ./hltMenuContentToCSVs /dev/CMSSW_14_2_0/GRun --meta hltPathOwners.json --prescale 2p0E34 ``` In the command above, provide as argument to `--prescale` the name of the PS column to be considered as the main/default PS column for that HLT menu. diff --git a/HLTrigger/Configuration/tables/GRun.txt b/HLTrigger/Configuration/tables/GRun.txt index 8f2f37cedbf5d..a581012b75efc 100644 --- a/HLTrigger/Configuration/tables/GRun.txt +++ b/HLTrigger/Configuration/tables/GRun.txt @@ -53,6 +53,7 @@ HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v* # CMSHLT-2633 HLT_IsoMu20_v* # CMSHLT-1250 HLT_IsoMu24_eta2p1_v* # CMSHLT-1250 HLT_IsoMu24_v* # CMSHLT-1250 +HLT_IsoMu24_HLTTracking_v* # CMSHLT-3403 HLT_IsoMu27_v* # CMSHLT-1250 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v* # CMSHLT-3042 HLT_Mu17_TrkIsoVVL_v* # CMSHLT-1250 @@ -232,6 +233,7 @@ HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v* # CMSHLT-1311 HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v* # CMSHLT-1311 HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v* # CMSHLT-1311 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v* # CMSHLT-1311 +HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v* # CMSHLT-3403 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v* # CMSHLT-1311 HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v* # CMSHLT-1311 HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v* # CMSHLT-1311 @@ -240,6 +242,7 @@ HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v* # CMSHLT-1311 HLT_TripleMu_10_5_5_DZ_v* # CMSHLT-1311 HLT_TripleMu_12_10_5_v* # CMSHLT-1311 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v* # CMSHLT-1311, CMSHLT-1436 +HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v* # CMSHLT-3403 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v* # CMSHLT-1311, CMSHLT-1436 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v* # CMSHLT-3120 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v* # CMSHLT-3120 diff --git a/HLTrigger/Configuration/tables/HIon.txt b/HLTrigger/Configuration/tables/HIon.txt index 1cb4882b70695..f1e93983bf61e 100644 --- a/HLTrigger/Configuration/tables/HIon.txt +++ b/HLTrigger/Configuration/tables/HIon.txt @@ -20,6 +20,7 @@ AlCa_EcalPi0EEonlyForHI_v* AlCa_EcalEtaEBonlyForHI_v* AlCa_EcalEtaEEonlyForHI_v* HLT_HICentrality30100_FirstCollisionAfterAbortGap_v* +HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v* # CMSHLT-3388 HLT_HIZeroBias_v* HLT_HIZeroBias_HighRate_v* # CMSHLT-2944 HLT_HIZeroBias_FirstCollisionAfterAbortGap_v* @@ -64,6 +65,8 @@ HLT_HIL1UnpairedBunchBptxPlus_v* HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG2_NotMBHF2AND_v* # CMSHLT-2471 +HLT_HIUPC_DoubleEG3_NotMBHF2AND_v* # CMSHLT-3393 +HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-3393 HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG5_NotMBHF2AND_v* # CMSHLT-2471 @@ -273,13 +276,10 @@ HLT_HIEphemeralZeroBias_v* # CMSHLT-2915 HLT_HIMinimumBiasHF1AND_v* # CMSHLT-2521, CMSHLT-2914 HLT_HIMinimumBiasHF1AND_copy_v* # CMSHLT-2939 -HLT_HIMinimumBiasHF1AND_Beamspot_v* # CMSHLT-2914 HLT_HIMinimumBiasHF1ANDZDC1nOR_v* # CMSHLT-2956 HLT_HIMinimumBiasHF1ANDZDC2nOR_v* # CMSHLT-2914 HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v* # CMSHLT-2956 HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v* # CMSHLT-2939 -HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v* # CMSHLT-2956 -HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v* # CMSHLT-2914 HLT_HIZeroBias_HighRateRAW_v* # CMSHLT-2963 HLT_HIUPC_Random_HighRate_v* # CMSHLT-2963 diff --git a/HLTrigger/Configuration/tables/PRef.txt b/HLTrigger/Configuration/tables/PRef.txt index aa46e839fdbcb..6e9fd7c343ad3 100644 --- a/HLTrigger/Configuration/tables/PRef.txt +++ b/HLTrigger/Configuration/tables/PRef.txt @@ -37,6 +37,7 @@ HLT_HIL1NotBptxORForPPRef_v* # CMSHLT-1673 HLT_HIHT80_Beamspot_ppRef5TeV_v* # CMSHLT-1676 HLT_PPRefZeroBias_v* # CMSHLT-2883 +HLT_PPRefZeroBias_FirstCollisionInTrain_v* # CMSHLT-3382 HLT_AK4CaloJet40_v* # CMSHLT-2883 HLT_AK4CaloJet60_v* # CMSHLT-2883 diff --git a/HLTrigger/Configuration/tables/Special.txt b/HLTrigger/Configuration/tables/Special.txt index 65e6a05e0543c..f5a38a1d01ae0 100644 --- a/HLTrigger/Configuration/tables/Special.txt +++ b/HLTrigger/Configuration/tables/Special.txt @@ -188,6 +188,16 @@ PhysicsSpecialZeroBias12Output PhysicsSpecialZeroBias13Output PhysicsSpecialZeroBias14Output PhysicsSpecialZeroBias15Output + +PhysicsVRRandom0Output # CMSHLT-3405 +PhysicsVRRandom1Output +PhysicsVRRandom2Output +PhysicsVRRandom3Output +PhysicsVRRandom4Output +PhysicsVRRandom5Output +PhysicsVRRandom6Output +PhysicsVRRandom7Output + RPCMONOutput ######## paths that are different between Special and online_special ################################ diff --git a/HLTrigger/Configuration/tables/makeSubTables b/HLTrigger/Configuration/tables/makeSubTables index a39573b228122..e89c844ad917d 100755 --- a/HLTrigger/Configuration/tables/makeSubTables +++ b/HLTrigger/Configuration/tables/makeSubTables @@ -3,8 +3,8 @@ # generate HLT tables from master table in ConfDB # -MASTER="/dev/CMSSW_14_1_0/HLT" # no version, take the latest one -TARGET="/dev/CMSSW_14_1_0/TABLE" # directory where to store the sub-tables +MASTER="/dev/CMSSW_14_2_0/HLT" # no version, take the latest one +TARGET="/dev/CMSSW_14_2_0/TABLE" # directory where to store the sub-tables PREFIX="" TABLES="GRun HIon PIon PRef Special" # which sub-tables to create diff --git a/HLTrigger/Configuration/tables/online_Special.txt b/HLTrigger/Configuration/tables/online_Special.txt index d8de124faa15a..f426bbaaabece 100644 --- a/HLTrigger/Configuration/tables/online_Special.txt +++ b/HLTrigger/Configuration/tables/online_Special.txt @@ -188,6 +188,16 @@ PhysicsSpecialZeroBias12Output PhysicsSpecialZeroBias13Output PhysicsSpecialZeroBias14Output PhysicsSpecialZeroBias15Output + +PhysicsVRRandom0Output # CMSHLT-3405 +PhysicsVRRandom1Output +PhysicsVRRandom2Output +PhysicsVRRandom3Output +PhysicsVRRandom4Output +PhysicsVRRandom5Output +PhysicsVRRandom6Output +PhysicsVRRandom7Output + RPCMONOutput ######## paths that are different between Special and online_special ################################ diff --git a/HLTrigger/Configuration/tables/online_TrackerVR.txt b/HLTrigger/Configuration/tables/online_TrackerVR.txt index 466f0e2f12a1b..33d2edd1b5b18 100644 --- a/HLTrigger/Configuration/tables/online_TrackerVR.txt +++ b/HLTrigger/Configuration/tables/online_TrackerVR.txt @@ -8,14 +8,14 @@ HLTriggerFinalPath ## EndPaths / FinalPaths ## -PhysicsSpecialRandom0Output -PhysicsSpecialRandom1Output -PhysicsSpecialRandom2Output -PhysicsSpecialRandom3Output -PhysicsSpecialRandom4Output -PhysicsSpecialRandom5Output -PhysicsSpecialRandom6Output -PhysicsSpecialRandom7Output +PhysicsVRRandom0Output # CMSHLT-3405 +PhysicsVRRandom1Output +PhysicsVRRandom2Output +PhysicsVRRandom3Output +PhysicsVRRandom4Output +PhysicsVRRandom5Output +PhysicsVRRandom6Output +PhysicsVRRandom7Output ######## Paths that are different between online and offline ######## diff --git a/HLTrigger/Configuration/tables/online_grun.txt b/HLTrigger/Configuration/tables/online_grun.txt index 2e4f342bb1cf4..274a70d98d545 100644 --- a/HLTrigger/Configuration/tables/online_grun.txt +++ b/HLTrigger/Configuration/tables/online_grun.txt @@ -53,6 +53,7 @@ HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v* # CMSHLT-2633 HLT_IsoMu20_v* # CMSHLT-1250 HLT_IsoMu24_eta2p1_v* # CMSHLT-1250 HLT_IsoMu24_v* # CMSHLT-1250 +HLT_IsoMu24_HLTTracking_v* # CMSHLT-3403 HLT_IsoMu27_v* # CMSHLT-1250 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v* # CMSHLT-3042 HLT_Mu17_TrkIsoVVL_v* # CMSHLT-1250 @@ -232,6 +233,7 @@ HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v* # CMSHLT-1311 HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v* # CMSHLT-1311 HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v* # CMSHLT-1311 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v* # CMSHLT-1311 +HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v* # CMSHLT-3403 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v* # CMSHLT-1311 HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v* # CMSHLT-1311 HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v* # CMSHLT-1311 @@ -240,6 +242,7 @@ HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v* # CMSHLT-1311 HLT_TripleMu_10_5_5_DZ_v* # CMSHLT-1311 HLT_TripleMu_12_10_5_v* # CMSHLT-1311 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v* # CMSHLT-1311, CMSHLT-1436 +HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v* # CMSHLT-3403 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v* # CMSHLT-1311, CMSHLT-1436 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v* # CMSHLT-3120 HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v* # CMSHLT-3120 diff --git a/HLTrigger/Configuration/tables/online_hion.txt b/HLTrigger/Configuration/tables/online_hion.txt index eba9d22349192..7367c4d420991 100644 --- a/HLTrigger/Configuration/tables/online_hion.txt +++ b/HLTrigger/Configuration/tables/online_hion.txt @@ -20,6 +20,7 @@ AlCa_EcalPi0EEonlyForHI_v* AlCa_EcalEtaEBonlyForHI_v* AlCa_EcalEtaEEonlyForHI_v* HLT_HICentrality30100_FirstCollisionAfterAbortGap_v* +HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v* # CMSHLT-3388 HLT_HIZeroBias_v* HLT_HIZeroBias_HighRate_v* # CMSHLT-2944 HLT_HIZeroBias_FirstCollisionAfterAbortGap_v* @@ -64,6 +65,8 @@ HLT_HIL1UnpairedBunchBptxPlus_v* HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG2_NotMBHF2AND_v* # CMSHLT-2471 +HLT_HIUPC_DoubleEG3_NotMBHF2AND_v* # CMSHLT-3393 +HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-3393 HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v* # CMSHLT-2471 HLT_HIUPC_DoubleEG5_NotMBHF2AND_v* # CMSHLT-2471 @@ -273,13 +276,10 @@ HLT_HIEphemeralZeroBias_v* # CMSHLT-2915 HLT_HIMinimumBiasHF1AND_v* # CMSHLT-2521, CMSHLT-2914 HLT_HIMinimumBiasHF1AND_copy_v* # CMSHLT-2939 -HLT_HIMinimumBiasHF1AND_Beamspot_v* # CMSHLT-2914 HLT_HIMinimumBiasHF1ANDZDC1nOR_v* # CMSHLT-2956 HLT_HIMinimumBiasHF1ANDZDC2nOR_v* # CMSHLT-2914 HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v* # CMSHLT-2956 HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v* # CMSHLT-2939 -HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v* # CMSHLT-2956 -HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v* # CMSHLT-2914 HLT_HIZeroBias_HighRateRAW_v* # CMSHLT-2963 HLT_HIUPC_Random_HighRate_v* # CMSHLT-2963 diff --git a/HLTrigger/Configuration/tables/online_pref.txt b/HLTrigger/Configuration/tables/online_pref.txt index e3d9e13d45a5a..447087678b3b4 100644 --- a/HLTrigger/Configuration/tables/online_pref.txt +++ b/HLTrigger/Configuration/tables/online_pref.txt @@ -37,6 +37,7 @@ HLT_HIL1NotBptxORForPPRef_v* # CMSHLT-1673 HLT_HIHT80_Beamspot_ppRef5TeV_v* # CMSHLT-1676 HLT_PPRefZeroBias_v* # CMSHLT-2883 +HLT_PPRefZeroBias_FirstCollisionInTrain_v* # CMSHLT-3382 HLT_AK4CaloJet40_v* # CMSHLT-2883 HLT_AK4CaloJet60_v* # CMSHLT-2883 diff --git a/HLTrigger/Configuration/test/OnLine_HLT_2024v14.py b/HLTrigger/Configuration/test/OnLine_HLT_2024v14.py index 85f353d4da4d9..1a76f567bd27d 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_2024v14.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_2024v14.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT --full --data --type 2024v14 --unprescale --process HLT2024v14 --globaltag auto:run3_hlt_2024v14 --input file:RelVal_Raw_2024v14_DATA.root +# hltGetConfiguration /frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT --full --data --type 2024v14 --unprescale --process HLT2024v14 --globaltag auto:run3_hlt_2024v14 --input file:RelVal_Raw_2024v14_DATA.root -# /frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT/V6 (CMSSW_14_1_1) +# /frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT/V3 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT/V6") + tableName = cms.string("/frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT/V3") ) process.HLTIter4PSetTrajectoryBuilderIT = cms.PSet( @@ -8659,6 +8659,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -9237,6 +9238,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -10038,6 +10040,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -12070,6 +12073,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -12605,6 +12609,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -13406,6 +13411,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -16979,7 +16985,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombinedUnseeded = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeedsUnseeded = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedUnseeded" ), @@ -20898,7 +20905,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -70909,6 +70917,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PixelLessHitDoubletsForGlbDisplacedMuons = cms.EDProducer( "HitPairEDProducer", @@ -71150,6 +71159,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PixelLessHitDoubletsForDisplacedTkMuons = cms.EDProducer( "HitPairEDProducer", @@ -72564,6 +72574,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PFlowPixelLessHitDoubletsForTau = cms.EDProducer( "HitPairEDProducer", @@ -75618,6 +75629,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter1PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -75918,6 +75930,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter2PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -76837,6 +76850,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PFlowPixelLessHitDoublets = cms.EDProducer( "HitPairEDProducer", diff --git a/HLTrigger/Configuration/test/OnLine_HLT_FULL.py b/HLTrigger/Configuration/test/OnLine_HLT_FULL.py index 08c15413450b0..fb00ffe02c507 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_FULL.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_FULL.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/HLT --full --data --type FULL --unprescale --process HLTFULL --globaltag auto:run3_hlt_FULL --input file:RelVal_Raw_FULL_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/HLT --full --data --type FULL --unprescale --process HLTFULL --globaltag auto:run3_hlt_FULL --input file:RelVal_Raw_FULL_DATA.root -# /dev/CMSSW_14_1_0/HLT/V68 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/HLT/V15 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/HLT/V68") + tableName = cms.string("/dev/CMSSW_14_2_0/HLT/V15") ) process.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1694,6 +1694,22 @@ 'SpecialZeroBias17' ), PhysicsSpecialZeroBias9 = cms.vstring( 'SpecialZeroBias18', 'SpecialZeroBias19' ), + PhysicsVRRandom0 = cms.vstring( 'VRRandom0', + 'VRRandom1' ), + PhysicsVRRandom1 = cms.vstring( 'VRRandom2', + 'VRRandom3' ), + PhysicsVRRandom2 = cms.vstring( 'VRRandom4', + 'VRRandom5' ), + PhysicsVRRandom3 = cms.vstring( 'VRRandom6', + 'VRRandom7' ), + PhysicsVRRandom4 = cms.vstring( 'VRRandom8', + 'VRRandom9' ), + PhysicsVRRandom5 = cms.vstring( 'VRRandom10', + 'VRRandom11' ), + PhysicsVRRandom6 = cms.vstring( 'VRRandom12', + 'VRRandom13' ), + PhysicsVRRandom7 = cms.vstring( 'VRRandom14', + 'VRRandom15' ), PhysicsZeroBias0 = cms.vstring( 'EphemeralZeroBias0', 'EphemeralZeroBias1' ), PhysicsZeroBias1 = cms.vstring( 'EphemeralZeroBias2', @@ -2176,18 +2192,14 @@ HIDQMGPUvsCPU = cms.vstring( 'DQM_HIEcalReconstruction_v10', 'DQM_HIHcalReconstruction_v8', 'DQM_HIPixelReconstruction_v12' ), - HIDQMOnlineBeamspot = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIDQMOnlineBeamspot = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIEmptyBX = cms.vstring( 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1UnpairedBunchBptxMinus_v14', 'HLT_HIL1UnpairedBunchBptxPlus_v14' ), HIEphemeralHLTPhysics = cms.vstring( 'HLT_HIEphemeralPhysics_v5' ), HIEphemeralZeroBias0 = cms.vstring( 'HLT_HIEphemeralZeroBias_v5' ), HIEphemeralZeroBias1 = cms.vstring( 'HLT_HIEphemeralZeroBias_v5' ), - HIEventDisplay = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', + HIEventDisplay = cms.vstring( 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', 'HLT_HIDoubleEle15GsfMass50_v14', 'HLT_HIDoubleGEDPhoton20_v7', 'HLT_HIL1SingleMu5_SingleEG20Gsf_v7', @@ -2197,12 +2209,8 @@ 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', 'HLT_HIMinimumBiasHF1AND_copy_v6' ), - HIExpressAlignment = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIExpressAlignment = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIExpressPhysics = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', - 'HLT_HICsAK4PFJet100Eta1p5_v14', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIL1NotBptxOR_v14', @@ -2224,7 +2232,6 @@ 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', 'HLT_HIZeroBias_v14' ), HIExpressPhysicsRawPrime = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', - 'HLT_HICsAK4PFJet100Eta1p5_v14', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIL1NotBptxOR_v14', @@ -2248,6 +2255,8 @@ HIForward0 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2386,6 +2395,8 @@ HIForward1 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2524,6 +2535,8 @@ HIForward10 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2662,6 +2675,8 @@ HIForward11 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2800,6 +2815,8 @@ HIForward12 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2938,6 +2955,8 @@ HIForward13 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3076,6 +3095,8 @@ HIForward14 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3214,6 +3235,8 @@ HIForward15 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3352,6 +3375,8 @@ HIForward16 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3490,6 +3515,8 @@ HIForward17 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3628,6 +3655,8 @@ HIForward18 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3766,6 +3795,8 @@ HIForward19 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3904,6 +3935,8 @@ HIForward2 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4042,6 +4075,8 @@ HIForward3 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4180,6 +4215,8 @@ HIForward4 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4318,6 +4355,8 @@ HIForward5 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4456,6 +4495,8 @@ HIForward6 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4594,6 +4635,8 @@ HIForward7 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4732,6 +4775,8 @@ HIForward8 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4870,6 +4915,8 @@ HIForward9 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -5021,7 +5068,7 @@ 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7', 'HLT_HIMinimumBiasHF1AND_v7' ), HIOnlineMonitor = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', - 'HLT_HICsAK4PFJet100Eta1p5_v14', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIHcalNZS_v14', @@ -5044,15 +5091,7 @@ 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', 'HLT_HIZeroBias_v14' ), - HIPhysicsRawPrime0 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime0 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5153,15 +5192,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime1 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime1 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5262,15 +5293,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime10 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime10 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5371,15 +5394,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime11 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime11 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5480,15 +5495,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime12 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime12 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5589,15 +5596,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime13 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime13 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5698,15 +5697,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime14 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime14 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5807,15 +5798,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime15 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime15 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -5916,15 +5899,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime16 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime16 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6025,15 +6000,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime17 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime17 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6134,15 +6101,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime18 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime18 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6243,15 +6202,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime19 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime19 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6352,15 +6303,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime2 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime2 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6461,15 +6404,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime20 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime20 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6570,15 +6505,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime21 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime21 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6679,15 +6606,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime22 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime22 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6788,15 +6707,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime23 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime23 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -6897,15 +6808,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime24 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime24 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7006,15 +6909,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime25 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime25 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7115,15 +7010,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime26 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime26 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7224,15 +7111,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime27 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime27 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7333,15 +7212,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime28 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime28 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7442,15 +7313,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime29 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime29 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7551,15 +7414,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime3 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime3 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7660,15 +7515,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime30 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime30 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7769,15 +7616,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime31 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime31 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7878,15 +7717,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime32 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime32 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -7987,15 +7818,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime33 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime33 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8096,15 +7919,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime34 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime34 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8205,15 +8020,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime35 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime35 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8314,15 +8121,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime36 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime36 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8423,15 +8222,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime37 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime37 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8532,15 +8323,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime38 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime38 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8641,15 +8424,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime39 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime39 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8750,15 +8525,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime4 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime4 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8859,15 +8626,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime40 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime40 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -8968,15 +8727,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime41 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime41 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9077,15 +8828,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime42 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime42 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9186,15 +8929,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime43 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime43 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9295,15 +9030,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime44 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime44 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9404,15 +9131,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime45 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime45 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9513,15 +9232,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime46 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime46 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9622,15 +9333,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime47 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime47 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9731,15 +9434,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime48 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime48 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9840,15 +9535,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime49 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime49 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -9949,15 +9636,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime5 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime5 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10058,15 +9737,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime50 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime50 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10167,15 +9838,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime51 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime51 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10276,15 +9939,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime52 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime52 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10385,15 +10040,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime53 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime53 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10494,15 +10141,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime54 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime54 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10603,15 +10242,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime55 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime55 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10712,15 +10343,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime56 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime56 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10821,15 +10444,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime57 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime57 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -10930,15 +10545,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime58 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime58 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11039,15 +10646,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime59 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime59 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11148,15 +10747,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime6 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime6 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11257,15 +10848,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime7 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime7 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11366,15 +10949,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime8 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime8 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11475,15 +11050,7 @@ 'HLT_HIRandom_HighRate_v3', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_HighRate_v7' ), - HIPhysicsRawPrime9 = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + HIPhysicsRawPrime9 = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -11596,11 +11163,14 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', 'HLT_L1SingleMuCosmics_CosmicTracking_v1', 'HLT_L1SingleMuCosmics_PointingCosmicTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -12971,10 +12541,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13022,10 +12588,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13073,10 +12635,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13124,10 +12682,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13175,10 +12729,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -13322,6 +12872,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward1 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13337,6 +12888,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward10 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13352,6 +12904,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward11 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13367,6 +12920,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward12 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13382,6 +12936,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward13 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13397,6 +12952,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward14 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13412,6 +12968,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward15 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13427,6 +12984,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward16 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13442,6 +13000,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward17 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13457,6 +13016,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward18 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13472,6 +13032,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward19 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13487,6 +13048,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward2 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13502,6 +13064,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward20 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13517,6 +13080,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward21 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13532,6 +13096,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward22 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13547,6 +13112,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward23 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13562,6 +13128,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward24 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13577,6 +13144,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward3 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13592,6 +13160,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward4 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13607,6 +13176,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward5 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13622,6 +13192,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward6 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13637,6 +13208,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward7 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13652,6 +13224,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward8 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13667,6 +13240,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward9 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -13682,6 +13256,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), ParkingDoubleMuonLowMass0 = cms.vstring( 'HLT_Dimuon0_Jpsi3p5_Muon2_v17', 'HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19', @@ -14796,6 +14371,22 @@ 'HLT_HcalCalibration_v6' ), TestEnablesEcalHcalDQM = cms.vstring( 'HLT_EcalCalibration_v4', 'HLT_HcalCalibration_v6' ), + VRRandom0 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom1 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom10 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom11 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom12 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom13 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom14 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom15 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom2 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom3 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom4 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom5 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom6 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom7 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom8 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom9 = cms.vstring( 'HLT_Random_HighRate_v1' ), ZeroBias = cms.vstring( 'HLT_Random_v3', 'HLT_ZeroBias_Alignment_v8', 'HLT_ZeroBias_FirstBXAfterTrain_v10', @@ -17430,8 +17021,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -17498,7 +17089,7 @@ ) process.hltL1sAlCaEcalPhiSymForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_MinimumBiasHF1_AND_BptxAND OR L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -17967,7 +17558,7 @@ ) process.hltL1sAlCaEcalPi0EtaForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -19627,6 +19218,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -20205,6 +19797,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -21006,6 +20599,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -22315,8 +21909,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -23038,6 +22632,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -23573,6 +23168,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -24374,6 +23970,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -26089,6 +25686,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoA" ) @@ -26162,6 +25760,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ) @@ -26207,7 +25806,7 @@ process.hltPixelTracksSoACompareGPUvsCPUPPOnAA = cms.EDProducer( "SiPixelHIonPhase1CompareTracks", pixelTrackReferenceSoA = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ), pixelTrackTargetSoA = cms.InputTag( "hltPixelTracksPPOnAASoA" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareDeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareGPUvsCPU" ), useQualityCut = cms.bool( True ), minQuality = cms.string( "loose" ), deltaR2cut = cms.double( 4.0E-4 ) @@ -26226,7 +25825,7 @@ pixelVertexReferenceSoA = cms.InputTag( "hltPixelVerticesPPOnAASoASerialSync" ), pixelVertexTargetSoA = cms.InputTag( "hltPixelVerticesPPOnAASoA" ), beamSpotSrc = cms.InputTag( "hltOnlineBeamSpot" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareSoADeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareGPUvsCPU" ), dzCut = cms.double( 1.0 ) ) process.hltL1sDQMHIEcalReconstruction = cms.EDFilter( "HLTL1TSeed", @@ -28287,7 +27886,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombinedUnseeded = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeedsUnseeded = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedUnseeded" ), @@ -32201,7 +31801,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -42789,6 +42390,10 @@ DepTag = cms.VInputTag( 'hltMuonTkRelIsolationCut0p14Map' ), IsolatorPSet = cms.PSet( ) ) +process.hltPreIsoMu24HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreIsoMu24eta2p1 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -44597,6 +44202,10 @@ MinPixHitsForDZ = cms.int32( 0 ), checkSC = cms.bool( False ) ) +process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -44778,6 +44387,10 @@ propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) ) +process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -82212,6 +81825,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PixelLessHitDoubletsForGlbDisplacedMuons = cms.EDProducer( "HitPairEDProducer", @@ -82453,6 +82067,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PixelLessHitDoubletsForDisplacedTkMuons = cms.EDProducer( "HitPairEDProducer", @@ -83867,6 +83482,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PFlowPixelLessHitDoubletsForTau = cms.EDProducer( "HitPairEDProducer", @@ -86921,6 +86537,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter1PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -87221,6 +86838,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter2PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -88140,6 +87758,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PFlowPixelLessHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -95169,7 +94788,79 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -process.hltPreHIMinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", +process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_Centrality_50_100_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) @@ -96639,6 +96330,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPreSplittingPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -96792,7 +96484,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) process.hltSiPixelClustersCacheAfterSplittingPPOnAA = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), @@ -96892,6 +96589,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -97123,6 +96821,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter1PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -97454,6 +97153,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter2PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -97689,6 +97389,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -98572,73 +98273,6 @@ cut = cms.string( "!isFake" ), filter = cms.bool( True ) ) -process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) process.hltL1Centrality30to50BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), L1SeedsLogicalExpression = cms.string( "L1_Centrality_30_50_BptxAND" ), @@ -99039,295 +98673,6 @@ MaxEta = cms.double( 5.1 ), MinN = cms.int32( 1 ) ) -process.hltL1sSingleJet44BptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet44_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHICsAK4PFJet60Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet60Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets60 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet60Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet60Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets60" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet60Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet60Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets60Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet60Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet60Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets60Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 60.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet80Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet70Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 70.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets70 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet70Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet80Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets70" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet80Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet70Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 70.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets70Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet70Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet80Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets70Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet100Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet80Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets80 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet80Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet100Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets80" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 100.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet100Eta1p5Beamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHICsAK4PFJet100Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet80Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 80.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets80Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet80Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet100Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets80Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 100.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet120Eta1p5 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet90Eta1p5 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 90.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets90 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet90Eta1p5" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet120Eta1p5 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets90" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 120.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 1.5 ), - MinN = cms.int32( 1 ) -) -process.hltPreHICsAK4PFJet120Eta2p1 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSinglePuAK4CaloJet90Eta2p1 = cms.EDFilter( "HLT1CaloJet", - saveTags = cms.bool( False ), - inputTag = cms.InputTag( "hltPuAK4CaloJetsCorrectedIDPassed" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 90.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) -process.hltCsPFJetsCorrectedMatchedToPuCaloJets90Eta2p1 = cms.EDProducer( "HLTPFJetsMatchedToFilteredCaloJetsProducer", - src = cms.InputTag( "hltCsAK4PFJetsCorrectedPPOnAA" ), - triggerJetsFilter = cms.InputTag( "hltSinglePuAK4CaloJet90Eta2p1" ), - triggerJetsType = cms.int32( 85 ), - maxDeltaR = cms.double( 0.2 ) -) -process.hltSingleCsPFJet120Eta2p1 = cms.EDFilter( "HLT1PFJet", - saveTags = cms.bool( True ), - inputTag = cms.InputTag( "hltCsPFJetsCorrectedMatchedToPuCaloJets90Eta2p1" ), - triggerType = cms.int32( 85 ), - MinE = cms.double( -1.0 ), - MinPt = cms.double( 120.0 ), - MinMass = cms.double( -1.0 ), - MaxMass = cms.double( -1.0 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( 2.1 ), - MinN = cms.int32( 1 ) -) process.hltL1sL1SingleEG7BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), L1SeedsLogicalExpression = cms.string( "L1_SingleEG7_BptxAND" ), @@ -100571,7 +99916,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombinedPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeedsPPOnAA = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedPPOnAA" ), @@ -102711,6 +102057,7 @@ MaxNumberOfPixelClusters = cms.uint32( 10000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( True ) ) process.hltPixelTracksHitDoubletsLowPtForUPCPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -102860,7 +102207,7 @@ ) process.hltL1sZDC1nOR = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102885,7 +102232,7 @@ ) process.hltL1sZDC1nXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102928,7 +102275,7 @@ ) process.hltL1sZDC1nXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102953,7 +102300,7 @@ ) process.hltL1sZDC1nAsymXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -102978,7 +102325,7 @@ ) process.hltL1sZDC1nAsymXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103423,6 +102770,27 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +process.hltL1sDoubleEG3NotHF2AND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleEG3_NotMinimumBiasHF2_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHIUPCDoubleEG3NotMBHF2AND = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -103450,7 +102818,7 @@ ) process.hltL1sZDC1nXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103467,7 +102835,7 @@ ) process.hltL1sZDC1nXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103484,7 +102852,7 @@ ) process.hltL1sZDC1nXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103501,7 +102869,7 @@ ) process.hltL1sZDC1nXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103518,7 +102886,7 @@ ) process.hltL1sZDC1nXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103535,7 +102903,7 @@ ) process.hltL1sZDC1nXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103552,7 +102920,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103569,7 +102937,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103586,7 +102954,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103603,7 +102971,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103620,7 +102988,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103637,7 +103005,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103794,7 +103162,7 @@ ) process.hltL1sZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -103811,7 +103179,7 @@ ) process.hltL1sZeroBiasZDC1nORZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104411,7 +103779,7 @@ ) process.hltL1sNotZDC1nORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104428,7 +103796,7 @@ ) process.hltL1sNotZDC1nORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104445,7 +103813,7 @@ ) process.hltL1sNotZDC1nORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104462,7 +103830,7 @@ ) process.hltL1sNotZDC1nORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104479,7 +103847,7 @@ ) process.hltL1sNotZDC1nORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104496,7 +103864,7 @@ ) process.hltL1sNotZDC1nORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104666,7 +104034,7 @@ ) process.hltL1sNotZDC1nANDDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104683,7 +104051,7 @@ ) process.hltL1sNotZDC1nANDDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104700,7 +104068,7 @@ ) process.hltL1sNotZDC1nANDDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104717,7 +104085,7 @@ ) process.hltL1sNotZDC1nORDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104734,7 +104102,7 @@ ) process.hltL1sNotZDC1nORDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -104751,7 +104119,7 @@ ) process.hltL1sNotZDC1nORDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -106921,6 +106289,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPreSplittingPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107074,7 +106443,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) process.hltSiPixelClustersCacheAfterSplittingPPOnAAForDmeson = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), @@ -107147,6 +106521,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107378,6 +106753,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter1PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107582,6 +106958,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter2PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -107784,6 +107161,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter3PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -107981,6 +107359,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter7MixedHitDoubletsAPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -108123,7 +107502,8 @@ ) ) process.hltFullIter7MixedSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltFullIter7CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -108324,6 +107704,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter8PixelLessHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -108537,6 +107918,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter9TobTecHitDoubletsTriplPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -108723,7 +108105,8 @@ ) ) process.hltFullIter9TobTecSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltFullIter9CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -113063,3098 +112446,74 @@ CentralBxOnly = cms.bool( True ), SelectQualities = cms.vint32( ) ) -process.hltL2fL1fL1sSingleMu3SingleJet32L2Filtered0PPRef = cms.EDFilter( "HLTMuonL2FromL1TPreFilter", - saveTags = cms.bool( True ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - CandTag = cms.InputTag( "hltL2MuonCandidates" ), - PreviousCandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet32MuFiltered0PPRef" ), - SeedMapTag = cms.InputTag( "hltL2Muons" ), - MinN = cms.int32( 1 ), - MaxEta = cms.double( 2.5 ), - AbsEtaBins = cms.vdouble( 9999.0 ), - MinNstations = cms.vint32( 1 ), - MinNhits = cms.vint32( 0 ), - CutOnChambers = cms.bool( False ), - MinNchambers = cms.vint32( 0 ), - MaxDr = cms.double( 9999.0 ), - MinDr = cms.double( -1.0 ), - MaxDz = cms.double( 9999.0 ), - MinDxySig = cms.double( -1.0 ), - MinPt = cms.double( 0.0 ), - NSigmaPt = cms.double( 0.0 ), - MatchToPreviousCand = cms.bool( True ) -) -process.hltL3fL1fL1sSingleMu3SingleJet32L3Filtered5PPRef = cms.EDFilter( "HLTMuonL3PreFilter", - saveTags = cms.bool( True ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - CandTag = cms.InputTag( "hltIterL3MuonCandidates" ), - PreviousCandTag = cms.InputTag( "hltL2fL1fL1sSingleMu3SingleJet32L2Filtered0PPRef" ), - L1CandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet32MuFiltered0PPRef" ), - inputMuonCollection = cms.InputTag( "hltIterL3Muons" ), - MinN = cms.int32( 1 ), - MaxEta = cms.double( 2.5 ), - MinNhits = cms.int32( 0 ), - MaxDr = cms.double( 999.0 ), - MinDr = cms.double( -1.0 ), - MaxDz = cms.double( 9999.0 ), - MinDxySig = cms.double( -1.0 ), - MinPt = cms.double( 5.0 ), - NSigmaPt = cms.double( 0.0 ), - MaxNormalizedChi2 = cms.double( 9999.0 ), - MaxDXYBeamSpot = cms.double( 9999.0 ), - MinDXYBeamSpot = cms.double( -1.0 ), - MinNmuonHits = cms.int32( 0 ), - MaxPtDifference = cms.double( 9999.0 ), - MinTrackPt = cms.double( 0.0 ), - minMuonStations = cms.int32( -1 ), - minTrkHits = cms.int32( -1 ), - minMuonHits = cms.int32( -1 ), - allowedTypeMask = cms.uint32( 255 ), - requiredTypeMask = cms.uint32( 0 ), - MaxNormalizedChi2_L3FromL1 = cms.double( 9999.0 ), - trkMuonId = cms.uint32( 0 ), - L1MatchingdR = cms.double( 999.0 ), - MatchToPreviousCand = cms.bool( True ), - InputLinks = cms.InputTag( "hltL3MuonsIterL3Links" ), - requireL3MuonTrajectorySeed = cms.bool( False ), - useSimpleGeometry = cms.bool( True ), - useStation2 = cms.bool( True ), - fallbackToME1 = cms.bool( False ), - cosmicPropagationHypothesis = cms.bool( False ), - useMB2InOverlap = cms.bool( False ), - useTrack = cms.string( "tracker" ), - useState = cms.string( "atVertex" ), - propagatorAlong = cms.ESInputTag( "","hltESPSteppingHelixPropagatorAlong" ), - propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), - propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) -) -process.hltL1sSingleMu3SingleJet40MidEta2p7BptxANDPPRef = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleMu3_SingleJet40er2p7" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPrePPRefL3SingleMu5SingleAK4CaloJet60 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltL1fL1sSingleMu3SingleJet40MuFiltered0PPRef = cms.EDFilter( "HLTMuonL1TFilter", - saveTags = cms.bool( True ), - CandTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - PreviousCandTag = cms.InputTag( "hltL1sSingleMu3SingleJet40MidEta2p7BptxANDPPRef" ), - MaxEta = cms.double( 2.5 ), - MinPt = cms.double( 0.0 ), - MaxDeltaR = cms.double( 999.0 ), - MinN = cms.int32( 1 ), - CentralBxOnly = cms.bool( True ), - SelectQualities = cms.vint32( ) -) -process.hltL2fL1fL1sSingleMu3SingleJet40L2Filtered0PPRef = cms.EDFilter( "HLTMuonL2FromL1TPreFilter", - saveTags = cms.bool( True ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - CandTag = cms.InputTag( "hltL2MuonCandidates" ), - PreviousCandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet40MuFiltered0PPRef" ), - SeedMapTag = cms.InputTag( "hltL2Muons" ), - MinN = cms.int32( 1 ), - MaxEta = cms.double( 2.5 ), - AbsEtaBins = cms.vdouble( 9999.0 ), - MinNstations = cms.vint32( 1 ), - MinNhits = cms.vint32( 0 ), - CutOnChambers = cms.bool( False ), - MinNchambers = cms.vint32( 0 ), - MaxDr = cms.double( 9999.0 ), - MinDr = cms.double( -1.0 ), - MaxDz = cms.double( 9999.0 ), - MinDxySig = cms.double( -1.0 ), - MinPt = cms.double( 0.0 ), - NSigmaPt = cms.double( 0.0 ), - MatchToPreviousCand = cms.bool( True ) -) -process.hltL3fL1fL1sSingleMu3SingleJet40L3Filtered5PPRef = cms.EDFilter( "HLTMuonL3PreFilter", - saveTags = cms.bool( True ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - CandTag = cms.InputTag( "hltIterL3MuonCandidates" ), - PreviousCandTag = cms.InputTag( "hltL2fL1fL1sSingleMu3SingleJet40L2Filtered0PPRef" ), - L1CandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet40MuFiltered0PPRef" ), - inputMuonCollection = cms.InputTag( "hltIterL3Muons" ), - MinN = cms.int32( 1 ), - MaxEta = cms.double( 2.5 ), - MinNhits = cms.int32( 0 ), - MaxDr = cms.double( 999.0 ), - MinDr = cms.double( -1.0 ), - MaxDz = cms.double( 9999.0 ), - MinDxySig = cms.double( -1.0 ), - MinPt = cms.double( 5.0 ), - NSigmaPt = cms.double( 0.0 ), - MaxNormalizedChi2 = cms.double( 9999.0 ), - MaxDXYBeamSpot = cms.double( 9999.0 ), - MinDXYBeamSpot = cms.double( -1.0 ), - MinNmuonHits = cms.int32( 0 ), - MaxPtDifference = cms.double( 9999.0 ), - MinTrackPt = cms.double( 0.0 ), - minMuonStations = cms.int32( -1 ), - minTrkHits = cms.int32( -1 ), - minMuonHits = cms.int32( -1 ), - allowedTypeMask = cms.uint32( 255 ), - requiredTypeMask = cms.uint32( 0 ), - MaxNormalizedChi2_L3FromL1 = cms.double( 9999.0 ), - trkMuonId = cms.uint32( 0 ), - L1MatchingdR = cms.double( 999.0 ), - MatchToPreviousCand = cms.bool( True ), - InputLinks = cms.InputTag( "hltL3MuonsIterL3Links" ), - requireL3MuonTrajectorySeed = cms.bool( False ), - useSimpleGeometry = cms.bool( True ), - useStation2 = cms.bool( True ), - fallbackToME1 = cms.bool( False ), - cosmicPropagationHypothesis = cms.bool( False ), - useMB2InOverlap = cms.bool( False ), - useTrack = cms.string( "tracker" ), - useState = cms.string( "atVertex" ), - propagatorAlong = cms.ESInputTag( "","hltESPSteppingHelixPropagatorAlong" ), - propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), - propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) -) -process.hltPrePPRefL3SingleMu5SingleAK4CaloJet80 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPrePPRefCscClusterLoose = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltCscClusterLoosePPRef = cms.EDFilter( "HLTMuonRecHitClusterFilter", - ClusterTag = cms.InputTag( "hltCSCrechitClusters" ), - MinN = cms.int32( 1 ), - MinSize = cms.int32( -1 ), - MinSizeMinusMB1 = cms.int32( -1 ), - MinSizeRegionCutEtas = cms.vdouble( -1.0, -1.0, 1.9, 1.9 ), - MaxSizeRegionCutEtas = cms.vdouble( 1.9, 1.9, -1.0, -1.0 ), - MinSizeRegionCutNstations = cms.vint32( -1, 1, -1, 1 ), - MaxSizeRegionCutNstations = cms.vint32( 1, -1, 1, -1 ), - MinSizeRegionCutClusterSize = cms.vint32( 100, 100, 200, 200 ), - Max_nMB1 = cms.int32( -1 ), - Max_nMB2 = cms.int32( -1 ), - Max_nME11 = cms.int32( 0 ), - Max_nME12 = cms.int32( 0 ), - Max_nME41 = cms.int32( -1 ), - Max_nME42 = cms.int32( -1 ), - MinNstation = cms.int32( 0 ), - MinAvgStation = cms.double( 0.0 ), - MinTime = cms.double( -5.0 ), - MaxTime = cms.double( 12.5 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( -1.0 ), - MaxTimeSpread = cms.double( -1.0 ) -) -process.hltPrePPRefCscClusterMedium = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltCscClusterMediumPPRef = cms.EDFilter( "HLTMuonRecHitClusterFilter", - ClusterTag = cms.InputTag( "hltCSCrechitClusters" ), - MinN = cms.int32( 1 ), - MinSize = cms.int32( -1 ), - MinSizeMinusMB1 = cms.int32( -1 ), - MinSizeRegionCutEtas = cms.vdouble( -1.0, -1.0, 1.9, 1.9 ), - MaxSizeRegionCutEtas = cms.vdouble( 1.9, 1.9, -1.0, -1.0 ), - MinSizeRegionCutNstations = cms.vint32( -1, 1, -1, 1 ), - MaxSizeRegionCutNstations = cms.vint32( 1, -1, 1, -1 ), - MinSizeRegionCutClusterSize = cms.vint32( 130, 100, 230, 230 ), - Max_nMB1 = cms.int32( -1 ), - Max_nMB2 = cms.int32( -1 ), - Max_nME11 = cms.int32( 0 ), - Max_nME12 = cms.int32( 0 ), - Max_nME41 = cms.int32( -1 ), - Max_nME42 = cms.int32( -1 ), - MinNstation = cms.int32( 0 ), - MinAvgStation = cms.double( 0.0 ), - MinTime = cms.double( -5.0 ), - MaxTime = cms.double( 12.5 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( -1.0 ), - MaxTimeSpread = cms.double( -1.0 ) -) -process.hltPrePPRefCscClusterTight = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltCscClusterTightPPRef = cms.EDFilter( "HLTMuonRecHitClusterFilter", - ClusterTag = cms.InputTag( "hltCSCrechitClusters" ), - MinN = cms.int32( 1 ), - MinSize = cms.int32( -1 ), - MinSizeMinusMB1 = cms.int32( -1 ), - MinSizeRegionCutEtas = cms.vdouble( -1.0, -1.0, 1.9, 1.9 ), - MaxSizeRegionCutEtas = cms.vdouble( 1.9, 1.9, -1.0, -1.0 ), - MinSizeRegionCutNstations = cms.vint32( -1, 1, -1, 1 ), - MaxSizeRegionCutNstations = cms.vint32( 1, -1, 1, -1 ), - MinSizeRegionCutClusterSize = cms.vint32( 150, 100, 250, 230 ), - Max_nMB1 = cms.int32( -1 ), - Max_nMB2 = cms.int32( -1 ), - Max_nME11 = cms.int32( 0 ), - Max_nME12 = cms.int32( 0 ), - Max_nME41 = cms.int32( -1 ), - Max_nME42 = cms.int32( -1 ), - MinNstation = cms.int32( 0 ), - MinAvgStation = cms.double( 0.0 ), - MinTime = cms.double( -5.0 ), - MaxTime = cms.double( 12.5 ), - MinEta = cms.double( -1.0 ), - MaxEta = cms.double( -1.0 ), - MaxTimeSpread = cms.double( -1.0 ) -) -process.hltL1sSingleJet24 = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPrePPRefDmesonTrackingGlobalDpt25 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltSiPixelClustersCache = cms.EDProducer( "SiPixelClusterShapeCacheProducer", - src = cms.InputTag( "hltSiPixelClusters" ), - onDemand = cms.bool( False ) -) -process.hltFullIter0PixelQuadrupletsPreSplittingPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHits" ), - hitErrorRZ = cms.double( 0.006 ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHits" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter0PixelTrackingRegionsPreSplittingPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionFromBeamSpotEDProducer", - RegionPSet = cms.PSet( - nSigmaZ = cms.double( 4.0 ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - ptMin = cms.double( 0.5 ), - originHalfLength = cms.double( 0.0 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter0PixelClusterCheckPreSplittingPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltHITrackingSiStripRawToClustersFacilityZeroSuppression" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter0PixelHitDoubletsPreSplittingPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter0PixelQuadrupletsPreSplittingPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter0PixelTrackingRegionsPreSplittingPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter0PixelClusterCheckPreSplittingPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) -) -process.hltFullIter0PixelHitQuadrupletsPreSplittingPPRefForDmeson = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter0PixelHitDoubletsPreSplittingPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0012 ), - CAPhiCut = cms.double( 0.2 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 50.0 ), - value1 = cms.double( 200.0 ), - pt1 = cms.double( 0.7 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCache" ) - ) -) -process.hltFullIter0PixelSeedsPreSplittingPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter0PixelHitQuadrupletsPreSplittingPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCache" ) - ) -) -process.hltFullIter0CkfTrackCandidatesPreSplittingPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltMeasurementTrackerEvent" ), - src = cms.InputTag( "hltFullIter0PixelSeedsPreSplittingPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetInitialStepTrajectoryBuilderPreSplittingForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter0CtfWithMaterialTracksPreSplittingPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter0CkfTrackCandidatesPreSplittingPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "initialStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "" ) -) -process.hltFullIter0PrimaryVerticesPreSplittingPPRefForDmeson = cms.EDProducer( "PrimaryVertexProducer", - vertexCollections = cms.VPSet( - cms.PSet( chi2cutoff = cms.double( 2.5 ), - label = cms.string( "" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ) - ), - verbose = cms.untracked.bool( False ), - TkFilterParameters = cms.PSet( - maxEta = cms.double( 2.4 ), - minPt = cms.double( 0.0 ), - minSiliconLayersWithHits = cms.int32( 5 ), - minPixelLayersWithHits = cms.int32( 2 ), - maxNormalizedChi2 = cms.double( 20.0 ), - trackQuality = cms.string( "any" ), - algorithm = cms.string( "filter" ), - maxD0Significance = cms.double( 5.0 ) - ), - beamSpotLabel = cms.InputTag( "hltOnlineBeamSpot" ), - TrackLabel = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPreSplittingPPRefForDmeson" ), - TrackTimeResosLabel = cms.InputTag( "dummy_default" ), - TrackTimesLabel = cms.InputTag( "dummy_default" ), - trackMTDTimeQualityVMapTag = cms.InputTag( "dummy_default" ), - TkClusParameters = cms.PSet( - algorithm = cms.string( "gap" ), - TkGapClusParameters = cms.PSet( zSeparation = cms.double( 1.0 ) ) - ), - isRecoveryIteration = cms.bool( False ), - recoveryVtxCollection = cms.InputTag( "" ), - useMVACut = cms.bool( False ), - minTrackTimeQuality = cms.double( 0.8 ) -) -process.hltSiPixelClustersAfterSplittingPPRefForDmeson = cms.EDProducer( "JetCoreClusterSplitter", - pixelClusters = cms.InputTag( "hltSiPixelClusters" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPreSplittingPPRefForDmeson" ), - pixelCPE = cms.string( "hltESPPixelCPEGeneric" ), - verbose = cms.bool( False ), - ptMin = cms.double( 200.0 ), - cores = cms.InputTag( "hltJetsForCoreTracking" ), - chargeFractionMin = cms.double( 2.0 ), - deltaRmax = cms.double( 0.05 ), - forceXError = cms.double( 100.0 ), - forceYError = cms.double( 150.0 ), - fractionalWidth = cms.double( 0.4 ), - chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) -) -process.hltSiPixelClustersCacheAfterSplittingPPRefForDmeson = cms.EDProducer( "SiPixelClusterShapeCacheProducer", - src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - onDemand = cms.bool( False ) -) -process.hltSiPixelRecHitsAfterSplittingPPRefForDmeson = cms.EDProducer( "SiPixelRecHitConverter", - src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - CPE = cms.string( "hltESPPixelCPEGeneric" ), - VerboseLevel = cms.untracked.int32( 0 ) -) -process.hltAfterSplittingMeasureTrackerEventForDmeson = cms.EDProducer( "MeasurementTrackerEventProducer", - measurementTracker = cms.string( "hltESPMeasurementTracker" ), - skipClusters = cms.InputTag( "" ), - pixelClusterProducer = cms.string( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusterProducer = cms.string( "hltSiStripRawToClustersFacility" ), - Phase2TrackerCluster1DProducer = cms.string( "" ), - vectorHits = cms.InputTag( "" ), - vectorHitsRej = cms.InputTag( "" ), - inactivePixelDetectorLabels = cms.VInputTag( ), - badPixelFEDChannelCollectionLabels = cms.VInputTag( ), - pixelCablingMapLabel = cms.string( "" ), - inactiveStripDetectorLabels = cms.VInputTag( 'hltSiStripExcludedFEDListProducer' ), - switchOffPixelsIfEmpty = cms.bool( True ) -) -process.hltSiStripMatchedRecHitsFullPPRef = cms.EDProducer( "SiStripRecHitConverter", - ClusterProducer = cms.InputTag( "hltSiStripRawToClustersFacility" ), - rphiRecHits = cms.string( "rphiRecHit" ), - stereoRecHits = cms.string( "stereoRecHit" ), - matchedRecHits = cms.string( "matchedRecHit" ), - useSiStripQuality = cms.bool( False ), - MaskBadAPVFibers = cms.bool( False ), - doMatching = cms.bool( True ), - StripCPE = cms.ESInputTag( "hltESPStripCPEfromTrackAngle","hltESPStripCPEfromTrackAngle" ), - Matcher = cms.ESInputTag( "SiStripRecHitMatcherESProducer","StandardMatcher" ), - siStripQualityLabel = cms.ESInputTag( "","" ) -) -process.hltFullIter0PixelQuadrupletsPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter0PixelTrackingRegionsPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionFromBeamSpotEDProducer", - RegionPSet = cms.PSet( - nSigmaZ = cms.double( 4.0 ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - ptMin = cms.double( 0.5 ), - originHalfLength = cms.double( 0.0 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter0PixelClusterCheckPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter0PixelHitDoubletsPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter0PixelQuadrupletsPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter0PixelTrackingRegionsPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter0PixelClusterCheckPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) -) -process.hltFullIter0PixelHitQuadrupletsPPRefForDmeson = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter0PixelHitDoubletsPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0012 ), - CAPhiCut = cms.double( 0.2 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 50.0 ), - value1 = cms.double( 200.0 ), - pt1 = cms.double( 0.7 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter0PixelSeedsPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter0PixelHitQuadrupletsPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter0CkfTrackCandidatesPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - src = cms.InputTag( "hltFullIter0PixelSeedsPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetInitialStepTrajectoryBuilderForDmesonPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter0CtfWithMaterialTracksPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter0CkfTrackCandidatesPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "initialStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "" ) -) -process.hltFullIter0PrimaryVerticesPPRefForDmeson = cms.EDProducer( "PrimaryVertexProducer", - vertexCollections = cms.VPSet( - cms.PSet( chi2cutoff = cms.double( 2.5 ), - label = cms.string( "" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ) - ), - verbose = cms.untracked.bool( False ), - TkFilterParameters = cms.PSet( - maxEta = cms.double( 2.4 ), - minPt = cms.double( 0.0 ), - minSiliconLayersWithHits = cms.int32( 5 ), - minPixelLayersWithHits = cms.int32( 2 ), - maxNormalizedChi2 = cms.double( 20.0 ), - trackQuality = cms.string( "any" ), - algorithm = cms.string( "filter" ), - maxD0Significance = cms.double( 5.0 ) - ), - beamSpotLabel = cms.InputTag( "hltOnlineBeamSpot" ), - TrackLabel = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPPRefForDmeson" ), - TrackTimeResosLabel = cms.InputTag( "dummy_default" ), - TrackTimesLabel = cms.InputTag( "dummy_default" ), - trackMTDTimeQualityVMapTag = cms.InputTag( "dummy_default" ), - TkClusParameters = cms.PSet( - algorithm = cms.string( "gap" ), - TkGapClusParameters = cms.PSet( zSeparation = cms.double( 1.0 ) ) - ), - isRecoveryIteration = cms.bool( False ), - recoveryVtxCollection = cms.InputTag( "" ), - useMVACut = cms.bool( False ), - minTrackTimeQuality = cms.double( 0.8 ) -) -process.hltFullIter0TrackDNNClassifierPPRefForDmeson = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPPRefForDmeson" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.35, 0.1, 0.28 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter0HighPurityTracksPPRefForDmeson = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter0CtfWithMaterialTracksPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIter0TrackDNNClassifierPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter0TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter1ClustersRefRemovalPPRefForDmeson = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter0HighPurityTracksPPRefForDmeson" ), - trackClassifier = cms.InputTag( 'hltFullIter0TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ) -) -process.hltFullIter1PixelQuadrupletsPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter1PixelTrackingRegionsPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 4.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.15 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter1PixelClusterCheckPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter1PixelHitDoubletsPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter1PixelQuadrupletsPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter1PixelTrackingRegionsPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter1PixelClusterCheckPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) -) -process.hltFullIter1PixelHitQuadrupletsPPRefForDmeson = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter1PixelHitDoubletsPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0017 ), - CAPhiCut = cms.double( 0.3 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 150.0 ), - value1 = cms.double( 1000.0 ), - pt1 = cms.double( 0.7 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter1PixelSeedsPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter1PixelHitQuadrupletsPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -process.hltFullIter1CkfTrackCandidatesPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson" ), - src = cms.InputTag( "hltFullIter1PixelSeedsPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetLowPtQuadStepTrajectoryBuilderForDmesonPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPLowPtQuadStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter1CtfWithMaterialTracksPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter1CkfTrackCandidatesPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "lowPtQuadStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson" ) -) -process.hltFullIter1TrackDNNClassifierPPRefForDmeson = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter1CtfWithMaterialTracksPPRefForDmeson" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.33, 0.13, 0.35 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter1HighPurityTracksPPRefForDmeson = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter1CtfWithMaterialTracksPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIter1TrackDNNClassifierPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter1TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter2ClustersRefRemovalPPRefForDmeson = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter1HighPurityTracksPPRefForDmeson" ), - trackClassifier = cms.InputTag( 'hltFullIter1TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter1ClustersRefRemovalPPRefForDmeson" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ) -) -process.hltFullIter2PixelTripletsPPRefForDmeson = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix1+BPix3+BPix4', - 'BPix1+BPix2+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos', - 'BPix1+BPix2+FPix1_neg', - 'BPix1+BPix3+FPix1_pos', - 'BPix1+BPix3+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos', - 'BPix1+FPix1_neg+FPix2_neg', - 'BPix1+BPix2+FPix2_pos', - 'BPix1+BPix2+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg', - 'BPix1+FPix2_pos+FPix3_pos', - 'BPix1+FPix2_neg+FPix3_neg', - 'BPix1+FPix1_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter2PixelTrackingRegionsPPRefForDmeson = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 4.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.2 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.55 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter2PixelClusterCheckPPRefForDmeson = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter2PixelHitDoubletsPPRefForDmeson = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter2PixelTripletsPPRefForDmeson" ), - trackingRegions = cms.InputTag( "hltFullIter2PixelTrackingRegionsPPRefForDmeson" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter2PixelClusterCheckPPRefForDmeson" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1 ) -) -process.hltFullIter2PixelHitTripletsPPRefForDmeson = cms.EDProducer( "CAHitTripletEDProducer", - doublets = cms.InputTag( "hltFullIter2PixelHitDoubletsPPRefForDmeson" ), - extraHitRPhitolerance = cms.double( 0.032 ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.004 ), - CAPhiCut = cms.double( 0.07 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.3 ), - maxChi2 = cms.PSet( - value2 = cms.double( 6.0 ), - value1 = cms.double( 100.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 8.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter2PixelSeedsPPRefForDmeson = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter2PixelHitTripletsPPRefForDmeson" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -process.hltFullIter2CkfTrackCandidatesPPRefForDmeson = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson" ), - src = cms.InputTag( "hltFullIter2PixelSeedsPPRefForDmeson" ), - clustersToSkip = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetHighPtTripletStepTrajectoryBuilderForDmesonPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter2CtfWithMaterialTracksPPRefForDmeson = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter2CkfTrackCandidatesPPRefForDmeson" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "highPtTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson" ) -) -process.hltFullIter2TrackDNNClassifierPPRefForDmeson = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter2CtfWithMaterialTracksPPRefForDmeson" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( 0.47, 0.55, 0.62 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter2HighPurityTracksPPRefForDmeson = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter2CtfWithMaterialTracksPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIter2TrackDNNClassifierPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter2TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter3ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter2HighPurityTracksPPRefForDmeson" ), - trackClassifier = cms.InputTag( 'hltFullIter2TrackDNNClassifierPPRefForDmeson','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter2ClustersRefRemovalPPRefForDmeson" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter3MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ) -) -process.hltFullIter3PixelTripletsPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix1+BPix3+BPix4', - 'BPix1+BPix2+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos', - 'BPix1+BPix2+FPix1_neg', - 'BPix1+BPix3+FPix1_pos', - 'BPix1+BPix3+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos', - 'BPix1+FPix1_neg+FPix2_neg', - 'BPix1+BPix2+FPix2_pos', - 'BPix1+BPix2+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg', - 'BPix1+FPix2_pos+FPix3_pos', - 'BPix1+FPix2_neg+FPix3_neg', - 'BPix1+FPix1_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter3PixelTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( False ), - nSigmaZ = cms.double( 4.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.2 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.2 ), - originRadius = cms.double( 0.02 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter3PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter3PixelHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter3PixelTripletsPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter3PixelTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter3PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1 ) -) -process.hltFullIter3PixelHitTripletsPPRef = cms.EDProducer( "CAHitTripletEDProducer", - doublets = cms.InputTag( "hltFullIter3PixelHitDoubletsPPRef" ), - extraHitRPhitolerance = cms.double( 0.032 ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.002 ), - CAPhiCut = cms.double( 0.05 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.3 ), - maxChi2 = cms.PSet( - value2 = cms.double( 8.0 ), - value1 = cms.double( 70.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter3PixelSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter3PixelHitTripletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -process.hltFullIter3CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter3MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter3PixelSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetLowPtTripletStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPLowPtTripletStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter3CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter3CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "lowPtTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter3MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter3TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter3CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.23, 0.15, 0.41 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter3HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter3CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter3TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter3TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter4ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter3HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter3TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter3ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter4MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ) -) -process.hltFullIter4PixelQuadrupletsPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', - 'BPix1+BPix2+BPix3+FPix1_pos', - 'BPix1+BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos+FPix2_pos', - 'BPix1+BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', - 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter4PixelTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 1.0 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 1.5 ), - originRadius = cms.double( 1.0 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter4PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( True ), - MaxNumberOfStripClusters = cms.uint32( 500000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter4PixelHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter4PixelQuadrupletsPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter4PixelTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter4PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1, 2 ) -) -process.hltFullIter4PixelHitQuadrupletsPPRef = cms.EDProducer( "CAHitQuadrupletEDProducer", - doublets = cms.InputTag( "hltFullIter4PixelHitDoubletsPPRef" ), - extraHitRPhitolerance = cms.double( 0.032 ), - fitFastCircle = cms.bool( True ), - fitFastCircleChi2Cut = cms.bool( True ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.0011 ), - CAPhiCut = cms.double( 0.0 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.0 ), - maxChi2 = cms.PSet( - value2 = cms.double( 100.0 ), - value1 = cms.double( 500.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( - clusterShapeHitFilter = cms.string( "ClusterShapeHitFilter" ), - ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), - clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter4PixelSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter4PixelHitQuadrupletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter4CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter4MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter4PixelSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetDetachedQuadStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPDetachedQuadStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter4CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter4CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "detachedQuadStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter4MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter4TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter4CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.66, -0.15, 0.46 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter4HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter4CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter4TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter4TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter5ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter4HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter4TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter4ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter5MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ) -) -process.hltFullIter5PixelTripletsPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter5PixelTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 0.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.25 ), - originRadius = cms.double( 1.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ) - ) -) -process.hltFullIter5PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( True ), - MaxNumberOfStripClusters = cms.uint32( 500000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter5PixelHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter5PixelTripletsPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter5PixelTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter5PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0, 1 ) -) -process.hltFullIter5PixelHitTripletsPPRef = cms.EDProducer( "CAHitTripletEDProducer", - doublets = cms.InputTag( "hltFullIter5PixelHitDoubletsPPRef" ), - extraHitRPhitolerance = cms.double( 0.032 ), - useBendingCorrection = cms.bool( True ), - CAThetaCut = cms.double( 0.001 ), - CAPhiCut = cms.double( 0.0 ), - CAThetaCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAPhiCut_byTriplets = cms.VPSet( - cms.PSet( seedingLayers = cms.string( "" ), - cut = cms.double( -1.0 ) - ) - ), - CAHardPtCut = cms.double( 0.2 ), - maxChi2 = cms.PSet( - value2 = cms.double( 10.0 ), - value1 = cms.double( 300.0 ), - pt1 = cms.double( 0.8 ), - enabled = cms.bool( True ), - pt2 = cms.double( 2.0 ) - ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) -) -process.hltFullIter5PixelSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter5PixelHitTripletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( False ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter5CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter5MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter5PixelSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetDetachedTripletStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPDetachedTripletStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter5CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter5CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "detachedTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter5MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter5TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter5CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.42, 0.16, 0.78 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter5HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter5CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter5TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter5TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter6ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter5HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter5TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter5ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "tight" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter6MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ) -) -process.hltFullIter6PixelClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( True ), - MaxNumberOfStripClusters = cms.uint32( 500000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter6PixelTrackingRegionSeedLayersBPPRef = cms.EDProducer( "PixelInactiveAreaTrackingRegionsSeedingLayersProducer", - RegionPSet = cms.PSet( - deltaEta_Cand = cms.double( -1.0 ), - vertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - zErrorBeamSpot = cms.double( 24.2 ), - extraPhi = cms.double( 0.0 ), - extraEta = cms.double( 0.0 ), - seedingMode = cms.string( "Global" ), - maxNVertices = cms.int32( 5 ), - nSigmaZVertex = cms.double( 3.0 ), - nSigmaZBeamSpot = cms.double( 4.0 ), - ptMin = cms.double( 5.0 ), - input = cms.InputTag( "" ), - operationMode = cms.string( "VerticesFixed" ), - searchOpt = cms.bool( False ), - whereToUseMeasurementTracker = cms.string( "Never" ), - deltaPhi_Cand = cms.double( -1.0 ), - originRadius = cms.double( 0.015 ), - measurementTrackerName = cms.InputTag( "" ), - precise = cms.bool( True ), - zErrorVertex = cms.double( 0.3 ) - ), - inactivePixelDetectorLabels = cms.VInputTag( 'hltSiPixelDigiErrors' ), - badPixelFEDChannelCollectionLabels = cms.VInputTag( 'hltSiPixelDigiErrors' ), - ignoreSingleFPixPanelModules = cms.bool( True ), - debug = cms.untracked.bool( False ), - createPlottingFiles = cms.untracked.bool( False ), - layerList = cms.vstring( 'BPix1+BPix2', - 'BPix1+BPix3', - 'BPix1+BPix4', - 'BPix2+BPix3', - 'BPix2+BPix4', - 'BPix3+BPix4', - 'BPix1+FPix1_pos', - 'BPix1+FPix1_neg', - 'BPix1+FPix2_pos', - 'BPix1+FPix2_neg', - 'BPix1+FPix3_pos', - 'BPix1+FPix3_neg', - 'BPix2+FPix1_pos', - 'BPix2+FPix1_neg', - 'BPix2+FPix2_pos', - 'BPix2+FPix2_neg', - 'BPix3+FPix1_pos', - 'BPix3+FPix1_neg', - 'FPix1_pos+FPix2_pos', - 'FPix1_neg+FPix2_neg', - 'FPix1_pos+FPix3_pos', - 'FPix1_neg+FPix3_neg', - 'FPix2_pos+FPix3_pos', - 'FPix2_neg+FPix3_neg' ), - BPix = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter6PixelHitDoubletsBPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "" ), - trackingRegions = cms.InputTag( "" ), - trackingRegionsSeedingLayers = cms.InputTag( "hltFullIter6PixelTrackingRegionSeedLayersBPPRef" ), - clusterCheck = cms.InputTag( "hltFullIter6PixelClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( False ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -process.hltFullIter6PixelSeedsBPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter6PixelHitDoubletsBPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( False ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( True ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter6CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter6MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter6PixelSeedsBPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetPixelPairStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter6CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter6CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "pixelPairStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter6MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter6TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter6CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.31, -0.13, 0.13 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter6HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter6CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter6TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter6TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter7ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter6HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter6TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter6ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter7MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ) -) -process.hltFullIter7MixedLayersAPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 1 ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 1 ) - ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter7MixedTrackingRegionsAPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 3.75 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.4 ), - originRadius = cms.double( 1.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( True ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter7MixedClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter7MixedHitDoubletsAPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter7MixedLayersAPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter7MixedTrackingRegionsAPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter7MixedClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -process.hltFullIter7MixedHitTripletsAPPRef = cms.EDProducer( "PixelTripletLargeTipEDProducer", - doublets = cms.InputTag( "hltFullIter7MixedHitDoubletsAPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitTriplets = cms.bool( False ), - maxElement = cms.uint32( 1000000 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - useMultScattering = cms.bool( True ), - useBending = cms.bool( True ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ) -) -process.hltFullIter7MixedSeedsAPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter7MixedHitTripletsAPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPMixedStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter7MixedLayersBPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix3+BPix4+TIB1' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter7MixedTrackingRegionsBPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 2.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.6 ), - originRadius = cms.double( 1.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( True ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter7MixedHitDoubletsBPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter7MixedLayersBPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter7MixedTrackingRegionsBPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter7MixedClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -process.hltFullIter7MixedHitTripletsBPPRef = cms.EDProducer( "PixelTripletLargeTipEDProducer", - doublets = cms.InputTag( "hltFullIter7MixedHitDoubletsBPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitTriplets = cms.bool( False ), - maxElement = cms.uint32( 1000000 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - useMultScattering = cms.bool( True ), - useBending = cms.bool( True ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ) -) -process.hltFullIter7MixedSeedsBPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter7MixedHitTripletsBPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPMixedStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter7MixedSeedsPPRef = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPRef','hltFullIter7MixedSeedsBPPRef' ) -) -process.hltFullIter7CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( False ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter7MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter7MixedSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetMixedTripletStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPMixedTripletStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter7CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter7CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "mixedTripletStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter7MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter7TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter7CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.86, -0.68, -0.43 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter7HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter7CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter7TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter7TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter8ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter7HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter7TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter7ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter8MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ) -) -process.hltFullIter8PixelLessLayersPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'TIB1+TIB2+MTIB3', - 'TIB1+TIB2+MTIB4', - 'TIB1+TIB2+MTID1_pos', - 'TIB1+TIB2+MTID1_neg', - 'TID1_pos+TID2_pos+TID3_pos', - 'TID1_neg+TID2_neg+TID3_neg', - 'TID1_pos+TID2_pos+MTID3_pos', - 'TID1_neg+TID2_neg+MTID3_neg', - 'TID1_pos+TID2_pos+MTEC1_pos', - 'TID1_neg+TID2_neg+MTEC1_neg', - 'TID2_pos+TID3_pos+TEC1_pos', - 'TID2_neg+TID3_neg+TEC1_neg', - 'TID2_pos+TID3_pos+MTEC1_pos', - 'TID2_neg+TID3_neg+MTEC1_neg', - 'TEC1_pos+TEC2_pos+TEC3_pos', - 'TEC1_neg+TEC2_neg+TEC3_neg', - 'TEC1_pos+TEC2_pos+MTEC3_pos', - 'TEC1_neg+TEC2_neg+MTEC3_neg', - 'TEC1_pos+TEC2_pos+TEC4_pos', - 'TEC1_neg+TEC2_neg+TEC4_neg', - 'TEC1_pos+TEC2_pos+MTEC4_pos', - 'TEC1_neg+TEC2_neg+MTEC4_neg', - 'TEC2_pos+TEC3_pos+TEC4_pos', - 'TEC2_neg+TEC3_neg+TEC4_neg', - 'TEC2_pos+TEC3_pos+MTEC4_pos', - 'TEC2_neg+TEC3_neg+MTEC4_neg', - 'TEC2_pos+TEC3_pos+TEC5_pos', - 'TEC2_neg+TEC3_neg+TEC5_neg', - 'TEC2_pos+TEC3_pos+TEC6_pos', - 'TEC2_neg+TEC3_neg+TEC6_neg', - 'TEC3_pos+TEC4_pos+TEC5_pos', - 'TEC3_neg+TEC4_neg+TEC5_neg', - 'TEC3_pos+TEC4_pos+MTEC5_pos', - 'TEC3_neg+TEC4_neg+MTEC5_neg', - 'TEC3_pos+TEC5_pos+TEC6_pos', - 'TEC3_neg+TEC5_neg+TEC6_neg', - 'TEC4_pos+TEC5_pos+TEC6_pos', - 'TEC4_neg+TEC5_neg+TEC6_neg' ), - BPix = cms.PSet( ), - FPix = cms.PSet( ), - TIB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TID = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 3 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 3 ) - ), - TOB = cms.PSet( ), - TEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 1 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 2 ) - ), - MTIB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ), - MTID = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 3 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 3 ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 3 ), - skipClusters = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 3 ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ) -) -process.hltFullIter8PixelLessTrackingRegionsPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 3.0 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.4 ), - originRadius = cms.double( 1.0 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( False ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter8PixelLessClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter8PixelLessHitDoubletsPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter8PixelLessLayersPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter8PixelLessTrackingRegionsPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter8PixelLessClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -process.hltFullIter8PixelLessHitTripletsPPRef = cms.EDProducer( "MultiHitFromChi2EDProducer", - doublets = cms.InputTag( "hltFullIter8PixelLessHitDoubletsPPRef" ), - maxElement = cms.uint32( 1000000 ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - extraZKDBox = cms.double( 0.2 ), - extraRKDBox = cms.double( 0.2 ), - extraPhiKDBox = cms.double( 0.005 ), - fnSigmaRZ = cms.double( 2.0 ), - refitHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - maxChi2 = cms.double( 5.0 ), - chi2VsPtCut = cms.bool( True ), - pt_interv = cms.vdouble( 0.4, 0.7, 1.0, 2.0 ), - chi2_cuts = cms.vdouble( 3.0, 4.0, 5.0, 5.0 ), - detIdsToDebug = cms.vint32( 0, 0, 0 ) -) -process.hltFullIter8PixelLessSeedsPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter8PixelLessHitTripletsPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - mode = cms.string( "and" ), - comparitors = cms.VPSet( - cms.PSet( FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPPixelLessStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ), - cms.PSet( subclusterCutSN = cms.double( 12.0 ), - trimMaxADC = cms.double( 30.0 ), - seedCutMIPs = cms.double( 0.35 ), - subclusterCutMIPs = cms.double( 0.45 ), - subclusterWindow = cms.double( 0.7 ), - maxNSat = cms.uint32( 3 ), - trimMaxFracNeigh = cms.double( 0.25 ), - FilterAtHelixStage = cms.bool( False ), - maxTrimmedSizeDiffNeg = cms.double( 1.0 ), - seedCutSN = cms.double( 7.0 ), - ComponentName = cms.string( "StripSubClusterShapeSeedFilter" ), - maxTrimmedSizeDiffPos = cms.double( 0.7 ), - trimMaxFracTotal = cms.double( 0.15 ), - layerMask = cms.PSet( ) - ) - ), - ComponentName = cms.string( "CombinedSeedComparitor" ) - ) -) -process.hltFullIter8CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( False ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter8MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter8PixelLessSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetPixelLessStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPPixelLessStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter8CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter8CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( True ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "pixelLessStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter8MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter8TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter8CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.82, -0.61, -0.16 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter8HighPurityTracksPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIter8CtfWithMaterialTracksPPRef" ), - originalMVAVals = cms.InputTag( 'hltFullIter8TrackDNNClassifierPPRef','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIter8TrackDNNClassifierPPRef','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullIter9ClustersRefRemovalPPRef = cms.EDProducer( "TrackClusterRemover", - trajectories = cms.InputTag( "hltFullIter8HighPurityTracksPPRef" ), - trackClassifier = cms.InputTag( 'hltFullIter8TrackDNNClassifierPPRef','QualityMasks' ), - pixelClusters = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - stripClusters = cms.InputTag( "hltSiStripRawToClustersFacility" ), - oldClusterRemovalInfo = cms.InputTag( "hltFullIter8ClustersRefRemovalPPRef" ), - TrackQuality = cms.string( "highPurity" ), - maxChi2 = cms.double( 9.0 ), - minNumberOfLayersWithMeasBeforeFiltering = cms.int32( 0 ), - overrideTrkQuals = cms.InputTag( "" ) -) -process.hltFullIter9MaskedMeasurementTrackerEventPPRef = cms.EDProducer( "MaskedMeasurementTrackerEventProducer", - src = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - OnDemand = cms.bool( False ), - clustersToSkip = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ) -) -process.hltFullIter9TobTecLayersTriplPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'TOB1+TOB2+MTOB3', - 'TOB1+TOB2+MTOB4', - 'TOB1+TOB2+MTEC1_pos', - 'TOB1+TOB2+MTEC1_neg' ), - BPix = cms.PSet( ), - FPix = cms.PSet( ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ), - MTEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 6 ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 7 ), - rphiRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','rphiRecHit' ) - ) -) -process.hltFullIter9TobTecTrackingRegionsTriplPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 5.0 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.55 ), - originRadius = cms.double( 3.5 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( False ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter9TobTecClusterCheckPPRef = cms.EDProducer( "ClusterCheckerEDProducer", - doClusterCheck = cms.bool( False ), - MaxNumberOfStripClusters = cms.uint32( 50000 ), - ClusterCollectionLabel = cms.InputTag( "hltSiStripRawToClustersFacility" ), - MaxNumberOfPixelClusters = cms.uint32( 10000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - cut = cms.string( "" ), - silentClusterCheck = cms.untracked.bool( False ) -) -process.hltFullIter9TobTecHitDoubletsTriplPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter9TobTecLayersTriplPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter9TobTecTrackingRegionsTriplPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter9TobTecClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( False ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -process.hltFullIter9TobTecHitTripletsTriplPPRef = cms.EDProducer( "MultiHitFromChi2EDProducer", - doublets = cms.InputTag( "hltFullIter9TobTecHitDoubletsTriplPPRef" ), - maxElement = cms.uint32( 1000000 ), - useFixedPreFiltering = cms.bool( False ), - phiPreFiltering = cms.double( 0.3 ), - extraHitRPhitolerance = cms.double( 0.0 ), - extraHitRZtolerance = cms.double( 0.0 ), - extraZKDBox = cms.double( 0.2 ), - extraRKDBox = cms.double( 0.2 ), - extraPhiKDBox = cms.double( 0.01 ), - fnSigmaRZ = cms.double( 2.0 ), - refitHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "ClusterShapeHitFilter" ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - maxChi2 = cms.double( 5.0 ), - chi2VsPtCut = cms.bool( True ), - pt_interv = cms.vdouble( 0.4, 0.7, 1.0, 2.0 ), - chi2_cuts = cms.vdouble( 3.0, 4.0, 5.0, 5.0 ), - detIdsToDebug = cms.vint32( 0, 0, 0 ) -) -process.hltFullIter9TobTecSeedsTriplPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter9TobTecHitTripletsTriplPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - mode = cms.string( "and" ), - comparitors = cms.VPSet( - cms.PSet( FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPTobTecStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ), - cms.PSet( subclusterCutSN = cms.double( 12.0 ), - trimMaxADC = cms.double( 30.0 ), - seedCutMIPs = cms.double( 0.35 ), - subclusterCutMIPs = cms.double( 0.45 ), - subclusterWindow = cms.double( 0.7 ), - maxNSat = cms.uint32( 3 ), - trimMaxFracNeigh = cms.double( 0.25 ), - FilterAtHelixStage = cms.bool( False ), - maxTrimmedSizeDiffNeg = cms.double( 1.0 ), - seedCutSN = cms.double( 7.0 ), - ComponentName = cms.string( "StripSubClusterShapeSeedFilter" ), - maxTrimmedSizeDiffPos = cms.double( 0.7 ), - trimMaxFracTotal = cms.double( 0.15 ), - layerMask = cms.PSet( ) - ) - ), - ComponentName = cms.string( "CombinedSeedComparitor" ) - ) -) -process.hltFullIter9TobTecLayersPairPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'TOB1+TEC1_pos', - 'TOB1+TEC1_neg', - 'TEC1_pos+TEC2_pos', - 'TEC1_neg+TEC2_neg', - 'TEC2_pos+TEC3_pos', - 'TEC2_neg+TEC3_neg', - 'TEC3_pos+TEC4_pos', - 'TEC3_neg+TEC4_neg', - 'TEC4_pos+TEC5_pos', - 'TEC4_neg+TEC5_neg', - 'TEC5_pos+TEC6_pos', - 'TEC5_neg+TEC6_neg', - 'TEC6_pos+TEC7_pos', - 'TEC6_neg+TEC7_neg' ), - BPix = cms.PSet( ), - FPix = cms.PSet( ), - TIB = cms.PSet( ), - TID = cms.PSet( ), - TOB = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ) - ), - TEC = cms.PSet( - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - minRing = cms.int32( 5 ), - skipClusters = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - useRingSlector = cms.bool( True ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutTight" ) ), - maxRing = cms.int32( 5 ) - ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter9TobTecTrackingRegionsPairPPRef = cms.EDProducer( "GlobalTrackingRegionWithVerticesEDProducer", - RegionPSet = cms.PSet( - useFixedError = cms.bool( True ), - nSigmaZ = cms.double( 0.0 ), - VertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - useFoundVertices = cms.bool( True ), - fixedError = cms.double( 7.5 ), - maxNVertices = cms.int32( -1 ), - sigmaZVertex = cms.double( 4.0 ), - useFakeVertices = cms.bool( False ), - ptMin = cms.double( 0.6 ), - originRadius = cms.double( 6.0 ), - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - originRScaling4BigEvts = cms.bool( True ), - ptMinScaling4BigEvts = cms.bool( False ), - minOriginR = cms.double( 0.0 ), - maxPtMin = cms.double( 0.7 ), - scalingStartNPix = cms.double( 20000.0 ), - scalingEndNPix = cms.double( 35000.0 ), - pixelClustersForScaling = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ) - ) -) -process.hltFullIter9TobTecHitDoubletsPairPPRef = cms.EDProducer( "HitPairEDProducer", - seedingLayers = cms.InputTag( "hltFullIter9TobTecLayersPairPPRef" ), - trackingRegions = cms.InputTag( "hltFullIter9TobTecTrackingRegionsPairPPRef" ), - trackingRegionsSeedingLayers = cms.InputTag( "" ), - clusterCheck = cms.InputTag( "hltFullIter9TobTecClusterCheckPPRef" ), - produceSeedingHitSets = cms.bool( True ), - produceIntermediateHitDoublets = cms.bool( True ), - maxElement = cms.uint32( 0 ), - maxElementTotal = cms.uint32( 50000000 ), - putEmptyIfMaxElementReached = cms.bool( False ), - layerPairs = cms.vuint32( 0 ) -) -process.hltFullIter9TobTecSeedsPairPPRef = cms.EDProducer( "SeedCreatorFromRegionConsecutiveHitsEDProducer", - seedingHitSets = cms.InputTag( "hltFullIter9TobTecHitDoubletsPairPPRef" ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - MinOneOverPtError = cms.double( 1.0 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - magneticField = cms.string( "ParabolicMf" ), - forceKinematicWithRegionDirection = cms.bool( False ), - SeedComparitorPSet = cms.PSet( - mode = cms.string( "and" ), - comparitors = cms.VPSet( - cms.PSet( FilterStripHits = cms.bool( True ), - FilterPixelHits = cms.bool( True ), - ClusterShapeHitFilterName = cms.string( "hltESPTobTecStepClusterShapeHitFilter" ), - FilterAtHelixStage = cms.bool( False ), - ComponentName = cms.string( "PixelClusterShapeSeedComparitor" ), - ClusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCacheAfterSplittingPPRefForDmeson" ) - ), - cms.PSet( subclusterCutSN = cms.double( 12.0 ), - trimMaxADC = cms.double( 30.0 ), - seedCutMIPs = cms.double( 0.35 ), - subclusterCutMIPs = cms.double( 0.45 ), - subclusterWindow = cms.double( 0.7 ), - maxNSat = cms.uint32( 3 ), - trimMaxFracNeigh = cms.double( 0.25 ), - FilterAtHelixStage = cms.bool( False ), - maxTrimmedSizeDiffNeg = cms.double( 1.0 ), - seedCutSN = cms.double( 7.0 ), - ComponentName = cms.string( "StripSubClusterShapeSeedFilter" ), - maxTrimmedSizeDiffPos = cms.double( 0.7 ), - trimMaxFracTotal = cms.double( 0.15 ), - layerMask = cms.PSet( ) - ) - ), - ComponentName = cms.string( "CombinedSeedComparitor" ) - ) -) -process.hltFullIter9TobTecSeedsPPRef = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPRef','hltFullIter9TobTecSeedsPairPPRef' ) -) -process.hltFullIter9CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( True ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter9MaskedMeasurementTrackerEventPPRef" ), - src = cms.InputTag( "hltFullIter9TobTecSeedsPPRef" ), - clustersToSkip = cms.InputTag( "hltFullIter9ClustersRefRemovalPPRef" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetTobTecStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 50 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTobTecStepTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 500000 ), - maxSeedsBeforeCleaning = cms.uint32( 5000 ) -) -process.hltFullIter9CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter9CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPTobTecStepFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( True ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "tobTecStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "hltFullIter9MaskedMeasurementTrackerEventPPRef" ) -) -process.hltFullIter9TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter9CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.76, -0.65, -0.55 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIter10JetCoreLayersPPRef = cms.EDProducer( "SeedingLayersEDProducer", - layerList = cms.vstring( 'BPix1+BPix2+BPix3', - 'BPix2+BPix3+BPix4', - 'BPix1+BPix3+BPix4', - 'BPix1+BPix2+BPix4', - 'BPix2+BPix3+FPix1_pos', - 'BPix2+BPix3+FPix1_neg', - 'BPix1+BPix2+FPix1_pos', - 'BPix1+BPix2+FPix1_neg', - 'BPix2+FPix1_pos+FPix2_pos', - 'BPix2+FPix1_neg+FPix2_neg', - 'BPix1+FPix1_pos+FPix2_pos', - 'BPix1+FPix1_neg+FPix2_neg', - 'FPix1_pos+FPix2_pos+FPix3_pos', - 'FPix1_neg+FPix2_neg+FPix3_neg', - 'BPix1+BPix2+TIB1', - 'BPix1+BPix3+TIB1', - 'BPix1+BPix4+TIB1', - 'BPix2+BPix3+TIB1', - 'BPix2+BPix4+TIB1', - 'BPix3+BPix4+TIB1' ), - BPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0027 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ), - hitErrorRZ = cms.double( 0.006 ) - ), - FPix = cms.PSet( - hitErrorRPhi = cms.double( 0.0051 ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - useErrorsFromParam = cms.bool( True ), - hitErrorRZ = cms.double( 0.0036 ), - HitProducer = cms.string( "hltSiPixelRecHitsAfterSplittingPPRefForDmeson" ) - ), - TIB = cms.PSet( - matchedRecHits = cms.InputTag( 'hltSiStripMatchedRecHitsFullPPRef','matchedRecHit' ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - clusterChargeCut = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutNone" ) ) - ), - TID = cms.PSet( ), - TOB = cms.PSet( ), - TEC = cms.PSet( ), - MTIB = cms.PSet( ), - MTID = cms.PSet( ), - MTOB = cms.PSet( ), - MTEC = cms.PSet( ) -) -process.hltFullIter10JetCoreRegionSeedsPPRef = cms.EDProducer( "SeedGeneratorFromRegionHitsEDProducer", - OrderedHitsFactoryPSet = cms.PSet( - maxElement = cms.uint32( 0 ), - ComponentName = cms.string( "StandardHitTripletGenerator" ), - SeedingLayers = cms.InputTag( "hltFullIter10JetCoreLayersPPRef" ), - LayerSrc = cms.InputTag( "hltFullIter10JetCoreLayersPPRef" ), - GeneratorPSet = cms.PSet( - maxElement = cms.uint32( 0 ), - useBending = cms.bool( True ), - useFixedPreFiltering = cms.bool( False ), - ComponentName = cms.string( "PixelTripletHLTGenerator" ), - useMultScattering = cms.bool( True ), - phiPreFiltering = cms.double( 0.3 ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ), - extraHitRPhitolerance = cms.double( 0.032 ), - extraHitRZtolerance = cms.double( 0.037 ) - ) - ), - SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ), - RegionFactoryPSet = cms.PSet( - ComponentName = cms.string( "CandidateSeededTrackingRegionsProducer" ), - RegionPSet = cms.PSet( - precise = cms.bool( True ), - useMultipleScattering = cms.bool( False ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - ptMin = cms.double( 10.0 ), - originRadius = cms.double( 0.2 ), - originHalfLength = cms.double( 0.2 ), - deltaPhiRegion = cms.double( 0.2 ), - measurementTrackerName = cms.string( "" ), - zVertex = cms.double( 5.0 ), - deltaEtaRegion = cms.double( 0.2 ), - rVertex = cms.double( 5.0 ), - useFakeVertices = cms.bool( False ), - JetSrc = cms.InputTag( "hltJetsForCoreTracking" ), - vertexSrc = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - howToUseMeasurementTracker = cms.string( "Never" ), - zErrorVetex = cms.double( 0.1 ), - nSigmaZVertex = cms.double( 3.0 ), - nSigmaZBeamSpot = cms.double( -1.0 ), - zErrorBeamSpot = cms.double( 15.0 ), - deltaEta = cms.double( 0.2 ), - deltaPhi = cms.double( 0.2 ), - vertexCollection = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - maxNRegions = cms.int32( 3 ), - searchOpt = cms.bool( False ), - whereToUseMeasurementTracker = cms.string( "Never" ), - input = cms.InputTag( "hltJetsForCoreTracking" ), - maxNVertices = cms.int32( 1 ), - mode = cms.string( "VerticesFixed" ) - ), - CollectionsPSet = cms.PSet( - recoL2MuonsCollection = cms.InputTag( "" ), - recoTrackMuonsCollection = cms.InputTag( "" ), - recoMuonsCollection = cms.InputTag( "" ) - ), - RegionInJetsCheckPSet = cms.PSet( - recoCaloJetsCollection = cms.InputTag( "hltJetsForCoreTracking" ), - deltaRExclusionSize = cms.double( 0.3 ), - jetsPtMin = cms.double( 5.0 ), - doJetsExclusionCheck = cms.bool( True ) - ), - ToolsPSet = cms.PSet( - regionBase = cms.string( "seedOnJets" ), - thePropagatorName = cms.string( "AnalyticalPropagator" ) - ) - ), - SeedCreatorPSet = cms.PSet( - ComponentName = cms.string( "SeedFromConsecutiveHitsCreator" ), - forceKinematicWithRegionDirection = cms.bool( True ), - magneticField = cms.string( "ParabolicMf" ), - SeedMomentumForBOFF = cms.double( 5.0 ), - propagator = cms.string( "PropagatorWithMaterialParabolicMf" ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - MinOneOverPtError = cms.double( 1.0 ), - OriginTransverseErrorMultiplier = cms.double( 1.0 ), - maxseeds = cms.int32( 10000 ) - ), - ClusterCheckPSet = cms.PSet( - MaxNumberOfPixelClusters = cms.uint32( 150000 ), - cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPRefForDmeson" ), - doClusterCheck = cms.bool( True ), - ClusterCollectionLabel = cms.InputTag( "hltMeasurementTrackerEvent" ), - MaxNumberOfStripClusters = cms.uint32( 500000 ) - ) -) -process.hltFullIter10CkfTrackCandidatesPPRef = cms.EDProducer( "CkfTrackCandidateMaker", - cleanTrajectoryAfterInOut = cms.bool( True ), - doSeedingRegionRebuilding = cms.bool( True ), - onlyPixelHitsForSeedCleaner = cms.bool( False ), - reverseTrajectories = cms.bool( False ), - useHitsSplitting = cms.bool( True ), - MeasurementTrackerEvent = cms.InputTag( "hltAfterSplittingMeasureTrackerEventForDmeson" ), - src = cms.InputTag( "hltFullIter10JetCoreRegionSeedsPPRef" ), - clustersToSkip = cms.InputTag( "" ), - phase2clustersToSkip = cms.InputTag( "" ), - TrajectoryBuilderPSet = cms.PSet( refToPSet_ = cms.string( "HLTPSetJetCoreStepTrajectoryBuilderForFullTrackingPPOnAA" ) ), - TransientInitialStateEstimatorParameters = cms.PSet( - propagatorAlongTISE = cms.string( "PropagatorWithMaterialParabolicMf" ), - numberMeasurementsForFit = cms.int32( 4 ), - propagatorOppositeTISE = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ) - ), - numHitsForSeedCleaner = cms.int32( 4 ), - NavigationSchool = cms.string( "SimpleNavigationSchool" ), - RedundantSeedCleaner = cms.string( "CachingSeedCleanerBySharedInput" ), - TrajectoryCleaner = cms.string( "hltESPTrajectoryCleanerBySharedHits" ), - maxNSeeds = cms.uint32( 100000 ), - maxSeedsBeforeCleaning = cms.uint32( 10000 ) -) -process.hltFullIter10CtfWithMaterialTracksPPRef = cms.EDProducer( "TrackProducer", - useSimpleMF = cms.bool( True ), - SimpleMagneticField = cms.string( "ParabolicMf" ), - src = cms.InputTag( "hltFullIter10CkfTrackCandidatesPPRef" ), - clusterRemovalInfo = cms.InputTag( "" ), - beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), - Fitter = cms.string( "hltESPFlexibleKFFittingSmoother" ), - useHitsSplitting = cms.bool( False ), - alias = cms.untracked.string( "ctfWithMaterialTracks" ), - TrajectoryInEvent = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - AlgorithmName = cms.string( "jetCoreRegionalStep" ), - Propagator = cms.string( "hltESPRungeKuttaTrackerPropagator" ), - GeometricInnerState = cms.bool( False ), - NavigationSchool = cms.string( "" ), - MeasurementTracker = cms.string( "" ), - MeasurementTrackerEvent = cms.InputTag( "" ) -) -process.hltFullIter10TrackDNNClassifierPPRef = cms.EDProducer( "TrackTfClassifier", - src = cms.InputTag( "hltFullIter10CtfWithMaterialTracksPPRef" ), - beamspot = cms.InputTag( "hltOnlineBeamSpot" ), - vertices = cms.InputTag( "hltFullIter0PrimaryVerticesPPRefForDmeson" ), - ignoreVertices = cms.bool( False ), - qualityCuts = cms.vdouble( -0.62, -0.49, -0.02 ), - mva = cms.PSet( - tfDnnLabel = cms.string( "hltESPTrackSelectionTfCKF" ), - batchSize = cms.int32( 16 ) - ) -) -process.hltFullIterativeTrackingMergedPPRefForDmeson = cms.EDProducer( "TrackCollectionMerger", - trackProducers = cms.VInputTag( 'hltFullIter0CtfWithMaterialTracksPPRefForDmeson','hltFullIter1CtfWithMaterialTracksPPRefForDmeson','hltFullIter2CtfWithMaterialTracksPPRefForDmeson','hltFullIter3CtfWithMaterialTracksPPRef','hltFullIter4CtfWithMaterialTracksPPRef','hltFullIter5CtfWithMaterialTracksPPRef','hltFullIter6CtfWithMaterialTracksPPRef','hltFullIter7CtfWithMaterialTracksPPRef','hltFullIter8CtfWithMaterialTracksPPRef','hltFullIter9CtfWithMaterialTracksPPRef','hltFullIter10CtfWithMaterialTracksPPRef' ), - inputClassifiers = cms.vstring( 'hltFullIter0TrackDNNClassifierPPRefForDmeson', - 'hltFullIter1TrackDNNClassifierPPRefForDmeson', - 'hltFullIter2TrackDNNClassifierPPRefForDmeson', - 'hltFullIter3TrackDNNClassifierPPRef', - 'hltFullIter4TrackDNNClassifierPPRef', - 'hltFullIter5TrackDNNClassifierPPRef', - 'hltFullIter6TrackDNNClassifierPPRef', - 'hltFullIter7TrackDNNClassifierPPRef', - 'hltFullIter8TrackDNNClassifierPPRef', - 'hltFullIter9TrackDNNClassifierPPRef', - 'hltFullIter10TrackDNNClassifierPPRef' ), - trackAlgoPriorityOrder = cms.string( "hltESPTrackAlgoPriorityOrder" ), - shareFrac = cms.double( 0.19 ), - foundHitBonus = cms.double( 10.0 ), - lostHitPenalty = cms.double( 5.0 ), - minShareHits = cms.uint32( 2 ), - allowFirstHitShare = cms.bool( True ), - enableMerging = cms.bool( True ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullOnlinePrimaryVerticesPPRefForDmeson = cms.EDProducer( "PrimaryVertexProducer", - vertexCollections = cms.VPSet( - cms.PSet( chi2cutoff = cms.double( 3.0 ), - label = cms.string( "" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ), - cms.PSet( chi2cutoff = cms.double( 3.0 ), - label = cms.string( "WithBS" ), - useBeamConstraint = cms.bool( False ), - minNdof = cms.double( 0.0 ), - maxDistanceToBeam = cms.double( 1.0 ), - algorithm = cms.string( "AdaptiveVertexFitter" ) - ) - ), - verbose = cms.untracked.bool( False ), - TkFilterParameters = cms.PSet( - maxEta = cms.double( 2.4 ), - minPt = cms.double( 0.0 ), - minSiliconLayersWithHits = cms.int32( 5 ), - minPixelLayersWithHits = cms.int32( 2 ), - maxNormalizedChi2 = cms.double( 20.0 ), - trackQuality = cms.string( "any" ), - algorithm = cms.string( "filter" ), - maxD0Significance = cms.double( 5.0 ) - ), - beamSpotLabel = cms.InputTag( "hltOnlineBeamSpot" ), - TrackLabel = cms.InputTag( "hltFullIterativeTrackingMergedPPRefForDmeson" ), - TrackTimeResosLabel = cms.InputTag( "dummy_default" ), - TrackTimesLabel = cms.InputTag( "dummy_default" ), - trackMTDTimeQualityVMapTag = cms.InputTag( "dummy_default" ), - TkClusParameters = cms.PSet( - algorithm = cms.string( "gap" ), - TkGapClusParameters = cms.PSet( zSeparation = cms.double( 1.0 ) ) - ), - isRecoveryIteration = cms.bool( False ), - recoveryVtxCollection = cms.InputTag( "" ), - useMVACut = cms.bool( False ), - minTrackTimeQuality = cms.double( 0.8 ) -) -process.hltGoodHighPurityFullTracksForDmesonPPRef = cms.EDProducer( "TrackCollectionFilterCloner", - originalSource = cms.InputTag( "hltFullIterativeTrackingMergedPPRefForDmeson" ), - originalMVAVals = cms.InputTag( 'hltFullIterativeTrackingMergedPPRefForDmeson','MVAValues' ), - originalQualVals = cms.InputTag( 'hltFullIterativeTrackingMergedPPRefForDmeson','QualityMasks' ), - minQuality = cms.string( "highPurity" ), - copyExtras = cms.untracked.bool( True ), - copyTrajectories = cms.untracked.bool( False ) -) -process.hltFullCandsPPRef = cms.EDProducer( "ConcreteChargedCandidateProducer", - src = cms.InputTag( "hltGoodHighPurityFullTracksForDmesonPPRef" ), - particleType = cms.string( "pi+" ) -) -process.hltFullTrackFilterForDmesonPPRef = cms.EDFilter( "HLTSingleVertexPixelTrackFilter", - saveTags = cms.bool( False ), - vertexCollection = cms.InputTag( "hltFullOnlinePrimaryVerticesPPRefForDmeson" ), - trackCollection = cms.InputTag( "hltFullCandsPPRef" ), - MinPt = cms.double( 0.0 ), - MaxPt = cms.double( 10000.0 ), - MaxEta = cms.double( 9999.0 ), - MaxVz = cms.double( 9999.0 ), - MinTrks = cms.int32( 0 ), - MinSep = cms.double( 999.0 ) -) -process.hltTkTkVtxForDmesonDpt25PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 25.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) -) -process.hltTkTkFilterForDmesonDpt25PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", - saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt25PPRef" ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) -) -process.hltPrePPRefDmesonTrackingGlobalDpt35 = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltTkTkVtxForDmesonDpt35PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 35.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) -) -process.hltTkTkFilterForDmesonDpt35PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", +process.hltL2fL1fL1sSingleMu3SingleJet32L2Filtered0PPRef = cms.EDFilter( "HLTMuonL2FromL1TPreFilter", + saveTags = cms.bool( True ), + BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), + CandTag = cms.InputTag( "hltL2MuonCandidates" ), + PreviousCandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet32MuFiltered0PPRef" ), + SeedMapTag = cms.InputTag( "hltL2Muons" ), + MinN = cms.int32( 1 ), + MaxEta = cms.double( 2.5 ), + AbsEtaBins = cms.vdouble( 9999.0 ), + MinNstations = cms.vint32( 1 ), + MinNhits = cms.vint32( 0 ), + CutOnChambers = cms.bool( False ), + MinNchambers = cms.vint32( 0 ), + MaxDr = cms.double( 9999.0 ), + MinDr = cms.double( -1.0 ), + MaxDz = cms.double( 9999.0 ), + MinDxySig = cms.double( -1.0 ), + MinPt = cms.double( 0.0 ), + NSigmaPt = cms.double( 0.0 ), + MatchToPreviousCand = cms.bool( True ) +) +process.hltL3fL1fL1sSingleMu3SingleJet32L3Filtered5PPRef = cms.EDFilter( "HLTMuonL3PreFilter", saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt35PPRef" ), BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) + CandTag = cms.InputTag( "hltIterL3MuonCandidates" ), + PreviousCandTag = cms.InputTag( "hltL2fL1fL1sSingleMu3SingleJet32L2Filtered0PPRef" ), + L1CandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet32MuFiltered0PPRef" ), + inputMuonCollection = cms.InputTag( "hltIterL3Muons" ), + MinN = cms.int32( 1 ), + MaxEta = cms.double( 2.5 ), + MinNhits = cms.int32( 0 ), + MaxDr = cms.double( 999.0 ), + MinDr = cms.double( -1.0 ), + MaxDz = cms.double( 9999.0 ), + MinDxySig = cms.double( -1.0 ), + MinPt = cms.double( 5.0 ), + NSigmaPt = cms.double( 0.0 ), + MaxNormalizedChi2 = cms.double( 9999.0 ), + MaxDXYBeamSpot = cms.double( 9999.0 ), + MinDXYBeamSpot = cms.double( -1.0 ), + MinNmuonHits = cms.int32( 0 ), + MaxPtDifference = cms.double( 9999.0 ), + MinTrackPt = cms.double( 0.0 ), + minMuonStations = cms.int32( -1 ), + minTrkHits = cms.int32( -1 ), + minMuonHits = cms.int32( -1 ), + allowedTypeMask = cms.uint32( 255 ), + requiredTypeMask = cms.uint32( 0 ), + MaxNormalizedChi2_L3FromL1 = cms.double( 9999.0 ), + trkMuonId = cms.uint32( 0 ), + L1MatchingdR = cms.double( 999.0 ), + MatchToPreviousCand = cms.bool( True ), + InputLinks = cms.InputTag( "hltL3MuonsIterL3Links" ), + requireL3MuonTrajectorySeed = cms.bool( False ), + useSimpleGeometry = cms.bool( True ), + useStation2 = cms.bool( True ), + fallbackToME1 = cms.bool( False ), + cosmicPropagationHypothesis = cms.bool( False ), + useMB2InOverlap = cms.bool( False ), + useTrack = cms.string( "tracker" ), + useState = cms.string( "atVertex" ), + propagatorAlong = cms.ESInputTag( "","hltESPSteppingHelixPropagatorAlong" ), + propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), + propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) ) -process.hltL1sSingleJet44 = cms.EDFilter( "HLTL1TSeed", +process.hltL1sSingleMu3SingleJet40MidEta2p7BptxANDPPRef = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet44" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleMu3_SingleJet40er2p7" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -116165,65 +112524,173 @@ L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) ) -process.hltPrePPRefDmesonTrackingGlobalDpt45 = cms.EDFilter( "HLTPrescaler", +process.hltPrePPRefL3SingleMu5SingleAK4CaloJet60 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -process.hltTkTkVtxForDmesonDpt45PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 45.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) +process.hltL1fL1sSingleMu3SingleJet40MuFiltered0PPRef = cms.EDFilter( "HLTMuonL1TFilter", + saveTags = cms.bool( True ), + CandTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + PreviousCandTag = cms.InputTag( "hltL1sSingleMu3SingleJet40MidEta2p7BptxANDPPRef" ), + MaxEta = cms.double( 2.5 ), + MinPt = cms.double( 0.0 ), + MaxDeltaR = cms.double( 999.0 ), + MinN = cms.int32( 1 ), + CentralBxOnly = cms.bool( True ), + SelectQualities = cms.vint32( ) ) -process.hltTkTkFilterForDmesonDpt45PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", +process.hltL2fL1fL1sSingleMu3SingleJet40L2Filtered0PPRef = cms.EDFilter( "HLTMuonL2FromL1TPreFilter", + saveTags = cms.bool( True ), + BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), + CandTag = cms.InputTag( "hltL2MuonCandidates" ), + PreviousCandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet40MuFiltered0PPRef" ), + SeedMapTag = cms.InputTag( "hltL2Muons" ), + MinN = cms.int32( 1 ), + MaxEta = cms.double( 2.5 ), + AbsEtaBins = cms.vdouble( 9999.0 ), + MinNstations = cms.vint32( 1 ), + MinNhits = cms.vint32( 0 ), + CutOnChambers = cms.bool( False ), + MinNchambers = cms.vint32( 0 ), + MaxDr = cms.double( 9999.0 ), + MinDr = cms.double( -1.0 ), + MaxDz = cms.double( 9999.0 ), + MinDxySig = cms.double( -1.0 ), + MinPt = cms.double( 0.0 ), + NSigmaPt = cms.double( 0.0 ), + MatchToPreviousCand = cms.bool( True ) +) +process.hltL3fL1fL1sSingleMu3SingleJet40L3Filtered5PPRef = cms.EDFilter( "HLTMuonL3PreFilter", saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt45PPRef" ), BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) + CandTag = cms.InputTag( "hltIterL3MuonCandidates" ), + PreviousCandTag = cms.InputTag( "hltL2fL1fL1sSingleMu3SingleJet40L2Filtered0PPRef" ), + L1CandTag = cms.InputTag( "hltL1fL1sSingleMu3SingleJet40MuFiltered0PPRef" ), + inputMuonCollection = cms.InputTag( "hltIterL3Muons" ), + MinN = cms.int32( 1 ), + MaxEta = cms.double( 2.5 ), + MinNhits = cms.int32( 0 ), + MaxDr = cms.double( 999.0 ), + MinDr = cms.double( -1.0 ), + MaxDz = cms.double( 9999.0 ), + MinDxySig = cms.double( -1.0 ), + MinPt = cms.double( 5.0 ), + NSigmaPt = cms.double( 0.0 ), + MaxNormalizedChi2 = cms.double( 9999.0 ), + MaxDXYBeamSpot = cms.double( 9999.0 ), + MinDXYBeamSpot = cms.double( -1.0 ), + MinNmuonHits = cms.int32( 0 ), + MaxPtDifference = cms.double( 9999.0 ), + MinTrackPt = cms.double( 0.0 ), + minMuonStations = cms.int32( -1 ), + minTrkHits = cms.int32( -1 ), + minMuonHits = cms.int32( -1 ), + allowedTypeMask = cms.uint32( 255 ), + requiredTypeMask = cms.uint32( 0 ), + MaxNormalizedChi2_L3FromL1 = cms.double( 9999.0 ), + trkMuonId = cms.uint32( 0 ), + L1MatchingdR = cms.double( 999.0 ), + MatchToPreviousCand = cms.bool( True ), + InputLinks = cms.InputTag( "hltL3MuonsIterL3Links" ), + requireL3MuonTrajectorySeed = cms.bool( False ), + useSimpleGeometry = cms.bool( True ), + useStation2 = cms.bool( True ), + fallbackToME1 = cms.bool( False ), + cosmicPropagationHypothesis = cms.bool( False ), + useMB2InOverlap = cms.bool( False ), + useTrack = cms.string( "tracker" ), + useState = cms.string( "atVertex" ), + propagatorAlong = cms.ESInputTag( "","hltESPSteppingHelixPropagatorAlong" ), + propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), + propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) ) -process.hltPrePPRefDmesonTrackingGlobalDpt60 = cms.EDFilter( "HLTPrescaler", +process.hltPrePPRefL3SingleMu5SingleAK4CaloJet80 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -process.hltTkTkVtxForDmesonDpt60PPRef = cms.EDProducer( "HLTDisplacedtktkVtxProducer", - Src = cms.InputTag( "hltFullCandsPPRef" ), - PreviousCandTag = cms.InputTag( "hltFullTrackFilterForDmesonPPRef" ), - MaxEta = cms.double( 2.0 ), - MinPt = cms.double( 6.0 ), - MinPtPair = cms.double( 60.0 ), - MinInvMass = cms.double( 1.47 ), - MaxInvMass = cms.double( 2.27 ), - massParticle1 = cms.double( 0.1396 ), - massParticle2 = cms.double( 0.4937 ), - ChargeOpt = cms.int32( -1 ), - triggerTypeDaughters = cms.int32( 91 ) +process.hltPrePPRefCscClusterLoose = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -process.hltTkTkFilterForDmesonDpt60PPRef = cms.EDFilter( "HLTDisplacedtktkFilter", - saveTags = cms.bool( True ), - FastAccept = cms.bool( False ), - MinLxySignificance = cms.double( 1.0 ), - MaxLxySignificance = cms.double( 0.0 ), - MaxNormalisedChi2 = cms.double( 999.0 ), - MinVtxProbability = cms.double( 0.0 ), - MinCosinePointingAngle = cms.double( 0.8 ), - triggerTypeDaughters = cms.int32( 91 ), - DisplacedVertexTag = cms.InputTag( "hltTkTkVtxForDmesonDpt60PPRef" ), - BeamSpotTag = cms.InputTag( "hltOnlineBeamSpot" ), - TrackTag = cms.InputTag( "hltFullCandsPPRef" ) +process.hltCscClusterLoosePPRef = cms.EDFilter( "HLTMuonRecHitClusterFilter", + ClusterTag = cms.InputTag( "hltCSCrechitClusters" ), + MinN = cms.int32( 1 ), + MinSize = cms.int32( -1 ), + MinSizeMinusMB1 = cms.int32( -1 ), + MinSizeRegionCutEtas = cms.vdouble( -1.0, -1.0, 1.9, 1.9 ), + MaxSizeRegionCutEtas = cms.vdouble( 1.9, 1.9, -1.0, -1.0 ), + MinSizeRegionCutNstations = cms.vint32( -1, 1, -1, 1 ), + MaxSizeRegionCutNstations = cms.vint32( 1, -1, 1, -1 ), + MinSizeRegionCutClusterSize = cms.vint32( 100, 100, 200, 200 ), + Max_nMB1 = cms.int32( -1 ), + Max_nMB2 = cms.int32( -1 ), + Max_nME11 = cms.int32( 0 ), + Max_nME12 = cms.int32( 0 ), + Max_nME41 = cms.int32( -1 ), + Max_nME42 = cms.int32( -1 ), + MinNstation = cms.int32( 0 ), + MinAvgStation = cms.double( 0.0 ), + MinTime = cms.double( -5.0 ), + MaxTime = cms.double( 12.5 ), + MinEta = cms.double( -1.0 ), + MaxEta = cms.double( -1.0 ), + MaxTimeSpread = cms.double( -1.0 ) +) +process.hltPrePPRefCscClusterMedium = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltCscClusterMediumPPRef = cms.EDFilter( "HLTMuonRecHitClusterFilter", + ClusterTag = cms.InputTag( "hltCSCrechitClusters" ), + MinN = cms.int32( 1 ), + MinSize = cms.int32( -1 ), + MinSizeMinusMB1 = cms.int32( -1 ), + MinSizeRegionCutEtas = cms.vdouble( -1.0, -1.0, 1.9, 1.9 ), + MaxSizeRegionCutEtas = cms.vdouble( 1.9, 1.9, -1.0, -1.0 ), + MinSizeRegionCutNstations = cms.vint32( -1, 1, -1, 1 ), + MaxSizeRegionCutNstations = cms.vint32( 1, -1, 1, -1 ), + MinSizeRegionCutClusterSize = cms.vint32( 130, 100, 230, 230 ), + Max_nMB1 = cms.int32( -1 ), + Max_nMB2 = cms.int32( -1 ), + Max_nME11 = cms.int32( 0 ), + Max_nME12 = cms.int32( 0 ), + Max_nME41 = cms.int32( -1 ), + Max_nME42 = cms.int32( -1 ), + MinNstation = cms.int32( 0 ), + MinAvgStation = cms.double( 0.0 ), + MinTime = cms.double( -5.0 ), + MaxTime = cms.double( 12.5 ), + MinEta = cms.double( -1.0 ), + MaxEta = cms.double( -1.0 ), + MaxTimeSpread = cms.double( -1.0 ) +) +process.hltPrePPRefCscClusterTight = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltCscClusterTightPPRef = cms.EDFilter( "HLTMuonRecHitClusterFilter", + ClusterTag = cms.InputTag( "hltCSCrechitClusters" ), + MinN = cms.int32( 1 ), + MinSize = cms.int32( -1 ), + MinSizeMinusMB1 = cms.int32( -1 ), + MinSizeRegionCutEtas = cms.vdouble( -1.0, -1.0, 1.9, 1.9 ), + MaxSizeRegionCutEtas = cms.vdouble( 1.9, 1.9, -1.0, -1.0 ), + MinSizeRegionCutNstations = cms.vint32( -1, 1, -1, 1 ), + MaxSizeRegionCutNstations = cms.vint32( 1, -1, 1, -1 ), + MinSizeRegionCutClusterSize = cms.vint32( 150, 100, 250, 230 ), + Max_nMB1 = cms.int32( -1 ), + Max_nMB2 = cms.int32( -1 ), + Max_nME11 = cms.int32( 0 ), + Max_nME12 = cms.int32( 0 ), + Max_nME41 = cms.int32( -1 ), + Max_nME42 = cms.int32( -1 ), + MinNstation = cms.int32( 0 ), + MinAvgStation = cms.double( 0.0 ), + MinTime = cms.double( -5.0 ), + MaxTime = cms.double( 12.5 ), + MinEta = cms.double( -1.0 ), + MaxEta = cms.double( -1.0 ), + MaxTimeSpread = cms.double( -1.0 ) ) process.hltL1sZDC1nAsymXORSingleJet8 = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), @@ -116463,6 +112930,23 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +process.hltL1sL1ZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInTrain" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPrePPRefZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreMCReducedIterativeTracking = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -119641,6 +116125,22 @@ process.hltCombinatorialcosmicseedfinderP5 = cms.EDProducer( "CtfSpecialSeedGenerator", SeedMomentum = cms.double( 5.0 ), ErrorRescaling = cms.double( 50.0 ), + UseScintillatorsConstraint = cms.bool( False ), + TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), + SeedsFromPositiveY = cms.bool( True ), + SeedsFromNegativeY = cms.bool( False ), + CheckHitsAreOnDifferentLayers = cms.bool( False ), + SetMomentum = cms.bool( True ), + requireBOFF = cms.bool( True ), + maxSeeds = cms.int32( 10000 ), + doClusterCheck = cms.bool( True ), + MaxNumberOfStripClusters = cms.uint32( 300 ), + ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), + MaxNumberOfPixelClusters = cms.uint32( 1000 ), + PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), + cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 20 ), + Charges = cms.vint32( -1 ), RegionFactoryPSet = cms.PSet( RegionPSet = cms.PSet( ptMin = cms.double( 0.9 ), @@ -119654,7 +116154,20 @@ ), ComponentName = cms.string( "GlobalRegionProducer" ) ), - Charges = cms.vint32( -1 ), + UpperScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( 300.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), + LowerScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( -100.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), OrderedHitsFactoryPSets = cms.VPSet( cms.PSet( LayerSrc = cms.InputTag( "hltCombinatorialcosmicseedingtripletsP5" ), NavigationDirection = cms.string( "outsideIn" ), @@ -119686,40 +116199,11 @@ PropagationDirection = cms.string( "alongMomentum" ), ComponentName = cms.string( "GenericPairGenerator" ) ) - ), - UseScintillatorsConstraint = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - SeedsFromPositiveY = cms.bool( True ), - SeedsFromNegativeY = cms.bool( False ), - doClusterCheck = cms.bool( True ), - ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), - MaxNumberOfStripClusters = cms.uint32( 300 ), - MaxNumberOfPixelClusters = cms.uint32( 1000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), - CheckHitsAreOnDifferentLayers = cms.bool( False ), - SetMomentum = cms.bool( True ), - requireBOFF = cms.bool( True ), - maxSeeds = cms.int32( 10000 ), - DontCountDetsAboveNClusters = cms.untracked.uint32( 20 ), - UpperScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( 300.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) - ), - LowerScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( -100.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) ) ) process.hltCombinedP5SeedsForCTF = cms.EDProducer( "SeedCombiner", seedCollections = cms.VInputTag( 'hltCombinatorialcosmicseedfinderP5','hltSimpleCosmicBONSeeds' ), - PairCollection = cms.untracked.InputTag( "hltCombinatorialcosmicseedfinderP5" ), - TripletCollection = cms.untracked.InputTag( "hltSimpleCosmicBONSeeds" ) + clusterRemovalInfos = cms.VInputTag( ) ) process.hltCkfTrackCandidatesP5 = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -120447,7 +116931,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_HT300_Beamspot_v23', 'HLT_HT60_Beamspot_v22', 'HLT_ZeroBias_Beamspot_v16' ) @@ -120790,7 +117274,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 80', + triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 40', 'HLT_BptxOR_v6', 'HLT_DoublePhoton85_v25', 'HLT_L1ETM120_v4', @@ -120824,8 +117308,8 @@ 'HLT_L1SingleJet90_v4', 'HLT_L1SingleMu7_v5', 'HLT_PFJet500_v33 / 3', - 'HLT_PPRefGEDPhoton30_v6', - 'HLT_PPRefL3SingleMu7_v8 / 80', + 'HLT_PPRefGEDPhoton30_v6 / 50', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Physics_v14 / 10' ) ) process.hltPreDatasetEventDisplay = cms.EDFilter( "HLTPrescaler", @@ -120838,7 +117322,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_HT300_Beamspot_PixelClusters_WP2_v7', 'HLT_HT300_Beamspot_v23', 'HLT_HT60_Beamspot_v22', @@ -120893,7 +117377,7 @@ 'HLT_L1SingleJet60_v4', 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17 / 3', 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27', - 'HLT_PPRefEle15Ele10GsfMass50_v6', + 'HLT_PPRefEle15Ele10GsfMass50_v6 / 12', 'HLT_PPRefL3SingleMu7_v8 / 80', 'HLT_PPRefUPC_ZDC1nOR_v1 / 8500', 'HLT_Physics_v14 / 2', @@ -120929,10 +117413,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) process.hltPreDatasetHIDQMOnlineBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -120986,12 +117467,11 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14 / 15', - 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8 / 0', + triggerConditions = cms.vstring( 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8 / 0', 'HLT_HIDoubleEle15GsfMass50_v14', - 'HLT_HIDoubleGEDPhoton20_v7 / 65', + 'HLT_HIDoubleGEDPhoton20_v7 / 6', 'HLT_HIL1SingleMu5_SingleEG20Gsf_v7', - 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 25', + 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 6', 'HLT_HIL2DoubleMu0_M1p5to6_Open_v7 / 335', 'HLT_HIL3DoubleMu2_Quarkonia_Open_v7 / 200', 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', @@ -121008,10 +117488,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) process.hltPreDatasetHIExpressAlignment = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -121024,7 +117501,6 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HICsAK4PFJet100Eta1p5_v14 / 3', 'HLT_HIEle20Gsf_v14 / 2', 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIL1NotBptxOR_v14', @@ -121037,14 +117513,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) process.hltPreDatasetHIExpressPhysics = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -121057,9 +117533,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HICsAK4PFJet100Eta1p5_v14 / 3', - 'HLT_HIEle20Gsf_v14', - 'HLT_HIGEDPhoton40_v14 / 2', + 'HLT_HIEle20Gsf_v14 / 2', + 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1SingleMu0_Cosmic_v7 / 0', 'HLT_HIL1UnpairedBunchBptxMinus_v14 / 2', @@ -121070,14 +117545,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 5', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) process.hltPreDatasetHIExpressPhysicsRawPrime = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -121092,6 +117567,8 @@ triggerConditions = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -121340,8 +117817,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HICsAK4PFJet100Eta1p5_v14 / 3', - 'HLT_HIEle20Gsf_v14 / 3', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 / 5', + 'HLT_HIEle20Gsf_v14 / 2', 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIHcalNZS_v14 / 3', 'HLT_HIHcalPhiSym_v14 / 3', @@ -121355,14 +117832,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 10', 'HLT_HIL3SingleMu5_v7 / 0', 'HLT_HIL3SingleMu7_v7 / 0', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 20', - 'HLT_HIMinimumBiasHF1AND_copy_v6 / 20', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 2', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7 / 3', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', - 'HLT_HIZeroBias_v14 / 3' ) + 'HLT_HIZeroBias_v14' ) ) process.hltPreDatasetHIOnlineMonitor = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -121374,9 +117851,9 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 700', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 700', - 'HLT_HIMinimumBiasHF1AND_v7 / 700' ) + triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 5000', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 5000', + 'HLT_HIMinimumBiasHF1AND_v7 / 5000' ) ) process.hltPreDatasetHIMinimumBias0 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -121400,15 +117877,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HICsAK4PFJet100Eta1p5_v14', - 'HLT_HICsAK4PFJet100Eta2p1_v7', - 'HLT_HICsAK4PFJet120Eta1p5_v14', - 'HLT_HICsAK4PFJet120Eta2p1_v7', - 'HLT_HICsAK4PFJet60Eta1p5_v14', - 'HLT_HICsAK4PFJet60Eta2p1_v7', - 'HLT_HICsAK4PFJet80Eta1p5_v14', - 'HLT_HICsAK4PFJet80Eta2p1_v7', - 'HLT_HICscCluster_Loose_v7', + triggerConditions = cms.vstring( 'HLT_HICscCluster_Loose_v7', 'HLT_HICscCluster_Medium_v7', 'HLT_HICscCluster_Tight_v7', 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8', @@ -121552,7 +118021,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 8', + triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 20', 'HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29', 'HLT_Ele32_WPTight_Gsf_v25 / 5', 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', @@ -121560,11 +118029,14 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', 'HLT_L1SingleMuCosmics_CosmicTracking_v1', 'HLT_L1SingleMuCosmics_PointingCosmicTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -122103,8 +118575,8 @@ throw = cms.bool( True ), triggerConditions = ( cms.vstring( 'DQM_Random_v1', 'DQM_ZeroBias_v3', - 'HLT_AK4PFJet100_v8', - 'HLT_AK4PFJetFwd80_v8', + 'HLT_AK4PFJet100_v8 / 10', + 'HLT_AK4PFJetFwd80_v8 / 2', 'HLT_AK8DiPFJet250_250_SoftDropMass40_v6', 'HLT_AK8DiPFJet250_250_SoftDropMass50_v6', 'HLT_AK8DiPFJet260_260_SoftDropMass30_v6', @@ -122639,13 +119111,13 @@ 'HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31', 'HLT_PFMETTypeOne140_PFMHT140_IDTight_v23', 'HLT_PFMETTypeOne200_BeamHaloCleaned_v21', - 'HLT_PPRefDoubleEle10Gsf_v6', - 'HLT_PPRefEle30Gsf_v7', - 'HLT_PPRefGEDPhoton30_EB_v6', - 'HLT_PPRefGEDPhoton40_v6', - 'HLT_PPRefL3DoubleMu0_Open_v8', - 'HLT_PPRefL3DoubleMu0_v8', - 'HLT_PPRefL3SingleMu7_v8', + 'HLT_PPRefDoubleEle10Gsf_v6 / 50', + 'HLT_PPRefEle30Gsf_v7 / 5', + 'HLT_PPRefGEDPhoton30_EB_v6 / 20', + 'HLT_PPRefGEDPhoton40_v6 / 10', + 'HLT_PPRefL3DoubleMu0_Open_v8 / 0', + 'HLT_PPRefL3DoubleMu0_v8 / 200', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Photon100EBHE10_v12', 'HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3', 'HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5', @@ -122787,10 +119259,6 @@ 'HLT_AK4PFJetFwd40_v8', 'HLT_AK4PFJetFwd60_v8', 'HLT_AK4PFJetFwd80_v8', - 'HLT_PPRefDmesonTrackingGlobal_Dpt25_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt35_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt45_v6', - 'HLT_PPRefDmesonTrackingGlobal_Dpt60_v6', 'HLT_PPRefDoubleEle10GsfMass50_v6', 'HLT_PPRefDoubleEle10Gsf_v6', 'HLT_PPRefDoubleEle15GsfMass50_v6', @@ -122878,6 +119346,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) ) process.hltPreDatasetPPRefZeroBiasPlusForward0 = cms.EDFilter( "HLTPrescaler", @@ -123258,6 +119727,78 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +process.hltDatasetVRRandom = cms.EDFilter( "TriggerResultsFilter", + usePathStatus = cms.bool( True ), + hltResults = cms.InputTag( "" ), + l1tResults = cms.InputTag( "" ), + l1tIgnoreMaskAndPrescale = cms.bool( False ), + throw = cms.bool( True ), + triggerConditions = cms.vstring( 'HLT_Random_HighRate_v1' ) +) +process.hltPreDatasetVRRandom0 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom1 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 1 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom2 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 2 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom3 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 3 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom4 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 4 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom5 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 5 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom6 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 6 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom7 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 7 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom8 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 8 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom9 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 9 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom10 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 10 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom11 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 11 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom12 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 12 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom13 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 13 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom14 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 14 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom15 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 15 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltDatasetZeroBias = cms.EDFilter( "TriggerResultsFilter", usePathStatus = cms.bool( True ), hltResults = cms.InputTag( "" ), @@ -124247,6 +120788,7 @@ 'keep *_hltL3NoFiltersNoVtxMuonCandidates_*_*', 'keep *_hltMergedTracks_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltParticleNetDiscriminatorsJetTags_*_*', 'keep *_hltPixelTracks_*_*', 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelClusters_*_*', @@ -124300,10 +120842,6 @@ ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_DQMGPUvsCPU' ) ), outputCommands = cms.untracked.vstring( 'drop *', - 'keep *Cluster*_hltSiPixelClustersSerialSync_*_*', - 'keep *Cluster*_hltSiPixelClusters_*_*', - 'keep *RecHit*_hltSiPixelRecHitsSerialSync_*_*', - 'keep *RecHit*_hltSiPixelRecHits_*_*', 'keep *_hltEcalDigisSerialSync_*_*', 'keep *_hltEcalDigis_*_*', 'keep *_hltEcalUncalibRecHitSerialSync_*_*', @@ -124312,10 +120850,6 @@ 'keep *_hltHbhereco_*_*', 'keep *_hltParticleFlowClusterHCALSerialSync_*_*', 'keep *_hltParticleFlowClusterHCAL_*_*', - 'keep *_hltPixelTracksSerialSync_*_*', - 'keep *_hltPixelTracks_*_*', - 'keep *_hltPixelVerticesSerialSync_*_*', - 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelDigiErrorsSerialSync_*_*', 'keep *_hltSiPixelDigiErrors_*_*' ) ) @@ -124360,13 +120894,22 @@ ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_HIOnlineMonitor' ) ), outputCommands = cms.untracked.vstring( 'drop *', + 'keep *_hltDoubletRecoveryPFlowTrackSelectionHighPurityPPOnAA_*_*', 'keep *_hltEcalRecHit_*_*', + 'keep *_hltHITrackingSiStripRawToClustersFacilityFullZeroSuppression_*_*', 'keep *_hltHbhereco_*_*', 'keep *_hltHfreco_*_*', 'keep *_hltHoreco_*_*', + 'keep *_hltMergedTracksPPOnAA_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltPFMuonMergingPPOnAA_*_*', + 'keep *_hltPixelTracksPPOnAA_*_*', + 'keep *_hltPixelVerticesPPOnAA_*_*', + 'keep *_hltSiPixelClustersAfterSplittingPPOnAA_*_*', 'keep *_hltSiStripClusterizerForRawPrime_*_*', 'keep *_hltSiStripClusters2ApproxClusters_*_*', + 'keep *_hltTrimmedPixelVerticesPPOnAA_*_*', + 'keep *_hltVerticesPFFilterPPOnAA_*_*', 'keep DetIds_hltSiStripRawToDigi_*_*', 'keep FEDRawDataCollection_rawDataCollector_*_*', 'keep FEDRawDataCollection_rawDataRepacker_*_*', @@ -128252,6 +124795,142 @@ 'keep edmTriggerResults_*_*_*', 'keep triggerTriggerEvent_*_*_*' ) ) +process.hltOutputPhysicsVRRandom1 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom1.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom2', + 'Dataset_VRRandom3' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom0 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom0.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom0', + 'Dataset_VRRandom1' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom2 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom2.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom4', + 'Dataset_VRRandom5' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom3 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom3.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom6', + 'Dataset_VRRandom7' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom4 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom4.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom8', + 'Dataset_VRRandom9' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom5 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom5.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom10', + 'Dataset_VRRandom11' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom6 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom6.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom12', + 'Dataset_VRRandom13' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom7 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom7.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom14', + 'Dataset_VRRandom15' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) process.HLTL1UnpackerSequence = cms.Sequence( process.hltGtStage2Digis + process.hltGtStage2ObjectMap ) process.HLTBeamSpot = cms.Sequence( process.hltOnlineMetaDataDigis + process.hltOnlineBeamSpot ) @@ -128823,24 +125502,6 @@ process.HLTHIGEDPhoton60PPRefSequence = cms.Sequence( process.HLTDoFullUnpackingEgammaEcalSequence + process.HLTPFClusteringForEgamma + process.hltEgammaCandidates + process.hltEgammaCandidatesWrapper + process.hltEG60EtPPRefFilter + process.HLTDoLocalHcalWithTowerSequence + process.hltEgammaHoverE + process.hltEG60HoverELoosePPRefFilter ) process.HLTHIGEDPhoton60EBPPRefSequence = cms.Sequence( process.HLTDoFullUnpackingEgammaEcalSequence + process.HLTPFClusteringForEgamma + process.hltEgammaCandidates + process.hltEgammaCandidatesWrapper + process.hltEG60EtEBPPRefFilter + process.HLTDoLocalHcalWithTowerSequence + process.hltEgammaHoverE + process.hltEG60HoverELooseEBPPRefFilter ) process.HLTDoubleGEDPhoton20PPRefSequence = cms.Sequence( process.HLTDoFullUnpackingEgammaEcalSequence + process.HLTPFClusteringForEgamma + process.hltEgammaCandidates + process.hltEgammaCandidatesWrapper + process.hltDoubleEG20EtPPRefFilter + process.HLTDoLocalHcalWithTowerSequence + process.hltEgammaHoverE + process.hltDoubleEG20HoverELoosePPRefFilter ) -process.HLTDoLocalPixelSequenceForPFPPRefForDmeson = cms.Sequence( process.HLTDoLocalPixelSequence + process.hltSiPixelClustersCache ) -process.HLTFullIterativeTrackingIteration0PreSplittingPPRefForDmeson = cms.Sequence( process.hltFullIter0PixelQuadrupletsPreSplittingPPRefForDmeson + process.hltFullIter0PixelTrackingRegionsPreSplittingPPRefForDmeson + process.hltFullIter0PixelClusterCheckPreSplittingPPRefForDmeson + process.hltFullIter0PixelHitDoubletsPreSplittingPPRefForDmeson + process.hltFullIter0PixelHitQuadrupletsPreSplittingPPRefForDmeson + process.hltFullIter0PixelSeedsPreSplittingPPRefForDmeson + process.hltFullIter0CkfTrackCandidatesPreSplittingPPRefForDmeson + process.hltFullIter0CtfWithMaterialTracksPreSplittingPPRefForDmeson + process.hltFullIter0PrimaryVerticesPreSplittingPPRefForDmeson ) -process.HLTDoLocalPixelSequenceAfterSplittingPPRefForDmeson = cms.Sequence( process.hltSiPixelClustersAfterSplittingPPRefForDmeson + process.hltSiPixelClustersCacheAfterSplittingPPRefForDmeson + process.hltSiPixelRecHitsAfterSplittingPPRefForDmeson ) -process.HLTDoLocalStripSequenceFullPPRefForDmeson = cms.Sequence( process.hltSiStripExcludedFEDListProducer + process.hltAfterSplittingMeasureTrackerEventForDmeson + process.hltSiStripMatchedRecHitsFullPPRef ) -process.HLTPixelClusterSplittingForPFPPRefForDmeson = cms.Sequence( process.hltJetsForCoreTracking + process.HLTDoLocalPixelSequenceForPFPPRefForDmeson + process.HLTDoLocalPixelSequence + process.HLTDoLocalStripSequence + process.HLTFullIterativeTrackingIteration0PreSplittingPPRefForDmeson + process.HLTDoLocalPixelSequenceAfterSplittingPPRefForDmeson + process.HLTDoLocalStripSequenceFullPPRefForDmeson ) -process.HLTFullIterativeTrackingIteration0PPRefForDmeson = cms.Sequence( process.hltFullIter0PixelQuadrupletsPPRefForDmeson + process.hltFullIter0PixelTrackingRegionsPPRefForDmeson + process.hltFullIter0PixelClusterCheckPPRefForDmeson + process.hltFullIter0PixelHitDoubletsPPRefForDmeson + process.hltFullIter0PixelHitQuadrupletsPPRefForDmeson + process.hltFullIter0PixelSeedsPPRefForDmeson + process.hltFullIter0CkfTrackCandidatesPPRefForDmeson + process.hltFullIter0CtfWithMaterialTracksPPRefForDmeson + process.hltFullIter0PrimaryVerticesPPRefForDmeson + process.hltFullIter0TrackDNNClassifierPPRefForDmeson + process.hltFullIter0HighPurityTracksPPRefForDmeson ) -process.HLTFullIterativeTrackingIteration1PPRefForDmeson = cms.Sequence( process.hltFullIter1ClustersRefRemovalPPRefForDmeson + process.hltFullIter1MaskedMeasurementTrackerEventPPRefForDmeson + process.hltFullIter1PixelQuadrupletsPPRefForDmeson + process.hltFullIter1PixelTrackingRegionsPPRefForDmeson + process.hltFullIter1PixelClusterCheckPPRefForDmeson + process.hltFullIter1PixelHitDoubletsPPRefForDmeson + process.hltFullIter1PixelHitQuadrupletsPPRefForDmeson + process.hltFullIter1PixelSeedsPPRefForDmeson + process.hltFullIter1CkfTrackCandidatesPPRefForDmeson + process.hltFullIter1CtfWithMaterialTracksPPRefForDmeson + process.hltFullIter1TrackDNNClassifierPPRefForDmeson + process.hltFullIter1HighPurityTracksPPRefForDmeson ) -process.HLTFullIterativeTrackingIteration2PPRefForDmeson = cms.Sequence( process.hltFullIter2ClustersRefRemovalPPRefForDmeson + process.hltFullIter2MaskedMeasurementTrackerEventPPRefForDmeson + process.hltFullIter2PixelTripletsPPRefForDmeson + process.hltFullIter2PixelTrackingRegionsPPRefForDmeson + process.hltFullIter2PixelClusterCheckPPRefForDmeson + process.hltFullIter2PixelHitDoubletsPPRefForDmeson + process.hltFullIter2PixelHitTripletsPPRefForDmeson + process.hltFullIter2PixelSeedsPPRefForDmeson + process.hltFullIter2CkfTrackCandidatesPPRefForDmeson + process.hltFullIter2CtfWithMaterialTracksPPRefForDmeson + process.hltFullIter2TrackDNNClassifierPPRefForDmeson + process.hltFullIter2HighPurityTracksPPRefForDmeson ) -process.HLTFullIterativeTrackingIteration3PPRef = cms.Sequence( process.hltFullIter3ClustersRefRemovalPPRef + process.hltFullIter3MaskedMeasurementTrackerEventPPRef + process.hltFullIter3PixelTripletsPPRef + process.hltFullIter3PixelTrackingRegionsPPRef + process.hltFullIter3PixelClusterCheckPPRef + process.hltFullIter3PixelHitDoubletsPPRef + process.hltFullIter3PixelHitTripletsPPRef + process.hltFullIter3PixelSeedsPPRef + process.hltFullIter3CkfTrackCandidatesPPRef + process.hltFullIter3CtfWithMaterialTracksPPRef + process.hltFullIter3TrackDNNClassifierPPRef + process.hltFullIter3HighPurityTracksPPRef ) -process.HLTFullIterativeTrackingIteration4PPRef = cms.Sequence( process.hltFullIter4ClustersRefRemovalPPRef + process.hltFullIter4MaskedMeasurementTrackerEventPPRef + process.hltFullIter4PixelQuadrupletsPPRef + process.hltFullIter4PixelTrackingRegionsPPRef + process.hltFullIter4PixelClusterCheckPPRef + process.hltFullIter4PixelHitDoubletsPPRef + process.hltFullIter4PixelHitQuadrupletsPPRef + process.hltFullIter4PixelSeedsPPRef + process.hltFullIter4CkfTrackCandidatesPPRef + process.hltFullIter4CtfWithMaterialTracksPPRef + process.hltFullIter4TrackDNNClassifierPPRef + process.hltFullIter4HighPurityTracksPPRef ) -process.HLTFullIterativeTrackingIteration5PPRef = cms.Sequence( process.hltFullIter5ClustersRefRemovalPPRef + process.hltFullIter5MaskedMeasurementTrackerEventPPRef + process.hltFullIter5PixelTripletsPPRef + process.hltFullIter5PixelTrackingRegionsPPRef + process.hltFullIter5PixelClusterCheckPPRef + process.hltFullIter5PixelHitDoubletsPPRef + process.hltFullIter5PixelHitTripletsPPRef + process.hltFullIter5PixelSeedsPPRef + process.hltFullIter5CkfTrackCandidatesPPRef + process.hltFullIter5CtfWithMaterialTracksPPRef + process.hltFullIter5TrackDNNClassifierPPRef + process.hltFullIter5HighPurityTracksPPRef ) -process.HLTFullIterativeTrackingIteration6PPRef = cms.Sequence( process.hltFullIter6ClustersRefRemovalPPRef + process.hltFullIter6MaskedMeasurementTrackerEventPPRef + process.hltFullIter6PixelClusterCheckPPRef + process.hltFullIter6PixelTrackingRegionSeedLayersBPPRef + process.hltFullIter6PixelHitDoubletsBPPRef + process.hltFullIter6PixelSeedsBPPRef + process.hltFullIter6CkfTrackCandidatesPPRef + process.hltFullIter6CtfWithMaterialTracksPPRef + process.hltFullIter6TrackDNNClassifierPPRef + process.hltFullIter6HighPurityTracksPPRef ) -process.HLTFullIterativeTrackingIteration7PPRef = cms.Sequence( process.hltFullIter7ClustersRefRemovalPPRef + process.hltFullIter7MaskedMeasurementTrackerEventPPRef + process.hltFullIter7MixedLayersAPPRef + process.hltFullIter7MixedTrackingRegionsAPPRef + process.hltFullIter7MixedClusterCheckPPRef + process.hltFullIter7MixedHitDoubletsAPPRef + process.hltFullIter7MixedHitTripletsAPPRef + process.hltFullIter7MixedSeedsAPPRef + process.hltFullIter7MixedLayersBPPRef + process.hltFullIter7MixedTrackingRegionsBPPRef + process.hltFullIter7MixedHitDoubletsBPPRef + process.hltFullIter7MixedHitTripletsBPPRef + process.hltFullIter7MixedSeedsBPPRef + process.hltFullIter7MixedSeedsPPRef + process.hltFullIter7CkfTrackCandidatesPPRef + process.hltFullIter7CtfWithMaterialTracksPPRef + process.hltFullIter7TrackDNNClassifierPPRef + process.hltFullIter7HighPurityTracksPPRef ) -process.HLTFullIterativeTrackingIteration8PPRef = cms.Sequence( process.hltFullIter8ClustersRefRemovalPPRef + process.hltFullIter8MaskedMeasurementTrackerEventPPRef + process.hltFullIter8PixelLessLayersPPRef + process.hltFullIter8PixelLessTrackingRegionsPPRef + process.hltFullIter8PixelLessClusterCheckPPRef + process.hltFullIter8PixelLessHitDoubletsPPRef + process.hltFullIter8PixelLessHitTripletsPPRef + process.hltFullIter8PixelLessSeedsPPRef + process.hltFullIter8CkfTrackCandidatesPPRef + process.hltFullIter8CtfWithMaterialTracksPPRef + process.hltFullIter8TrackDNNClassifierPPRef + process.hltFullIter8HighPurityTracksPPRef ) -process.HLTFullIterativeTrackingIteration9PPRef = cms.Sequence( process.hltFullIter9ClustersRefRemovalPPRef + process.hltFullIter9MaskedMeasurementTrackerEventPPRef + process.hltFullIter9TobTecLayersTriplPPRef + process.hltFullIter9TobTecTrackingRegionsTriplPPRef + process.hltFullIter9TobTecClusterCheckPPRef + process.hltFullIter9TobTecHitDoubletsTriplPPRef + process.hltFullIter9TobTecHitTripletsTriplPPRef + process.hltFullIter9TobTecSeedsTriplPPRef + process.hltFullIter9TobTecLayersPairPPRef + process.hltFullIter9TobTecTrackingRegionsPairPPRef + process.hltFullIter9TobTecHitDoubletsPairPPRef + process.hltFullIter9TobTecSeedsPairPPRef + process.hltFullIter9TobTecSeedsPPRef + process.hltFullIter9CkfTrackCandidatesPPRef + process.hltFullIter9CtfWithMaterialTracksPPRef + process.hltFullIter9TrackDNNClassifierPPRef ) -process.HLTFullIterativeTrackingIteration10PPRef = cms.Sequence( process.hltFullIter10JetCoreLayersPPRef + process.hltFullIter10JetCoreRegionSeedsPPRef + process.hltFullIter10CkfTrackCandidatesPPRef + process.hltFullIter10CtfWithMaterialTracksPPRef + process.hltFullIter10TrackDNNClassifierPPRef ) -process.HLTFullIterativeTrackingPPRefForDmeson = cms.Sequence( process.HLTFullIterativeTrackingIteration0PPRefForDmeson + process.HLTFullIterativeTrackingIteration1PPRefForDmeson + process.HLTFullIterativeTrackingIteration2PPRefForDmeson + process.HLTFullIterativeTrackingIteration3PPRef + process.HLTFullIterativeTrackingIteration4PPRef + process.HLTFullIterativeTrackingIteration5PPRef + process.HLTFullIterativeTrackingIteration6PPRef + process.HLTFullIterativeTrackingIteration7PPRef + process.HLTFullIterativeTrackingIteration8PPRef + process.HLTFullIterativeTrackingIteration9PPRef + process.HLTFullIterativeTrackingIteration10PPRef + process.hltFullIterativeTrackingMergedPPRefForDmeson ) -process.HLTFullTracksForDmesonPPRef = cms.Sequence( process.hltGoodHighPurityFullTracksForDmesonPPRef + process.hltFullCandsPPRef + process.hltFullTrackFilterForDmesonPPRef ) process.HLTNoPUSequence = cms.Sequence( process.HLTDoLocalPixelSequence + process.HLTRecopixelvertexingSequence + process.hltSelectorJets20L1FastJetForNoPU + process.hltCaloJetFromPV ) process.HLTEgammaOpenSequence = cms.Sequence( process.HLTDoFullUnpackingEgammaEcalSequence + process.HLTPFClusteringForEgamma + process.hltEgammaCandidates + process.hltEgammaClusterShape + process.hltEgammaR9ID + process.HLTDoLocalHcalSequence + process.HLTFastJetForEgamma + process.hltEgammaHoverE + process.hltEgammaEcalPFClusterIso + process.HLTPFHcalClustering + process.hltEgammaHcalPFClusterIso + process.HLTTrackReconstructionForIsoForPhotons + process.hltEgammaHollowTrackIso + process.HLTElePixelMatchSequence + process.HLTGsfElectronSequence + process.HLTTrackReconstructionForIsoElectronIter02 + process.hltEgammaEleGsfTrackIso ) process.HLTElePixelMatchUnseededSequenceForBParking = cms.Sequence( process.HLTDoLocalPixelSequence + process.HLTDoLocalStripSequence + process.hltPixelLayerPairs + process.hltPixelLayerTriplets + process.hltEgammaHoverEUnseeded + process.hltEgammaSuperClustersToPixelMatchUnseeded + process.hltEleSeedsTrackingRegionsUnseeded + process.hltElePixelHitDoubletsUnseeded + process.hltElePixelHitDoubletsForTripletsUnseeded + process.hltElePixelHitTripletsUnseeded + process.hltElePixelSeedsDoubletsUnseeded + process.hltElePixelSeedsTripletsUnseeded + process.hltElePixelSeedsCombinedUnseeded + process.hltEgammaElectronPixelSeedsForBParkingUnseeded + process.hltEgammaPixelMatchVarsForBParkingUnseeded ) @@ -128999,6 +125660,7 @@ process.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleAndDoubleEGor + process.hltPreEle32WPTightGsfL1DoubleEG + process.HLTEle32L1DoubleEGWPTightGsfSequence + process.HLTEndSequence ) process.HLT_IsoMu20_v27 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu18 + process.hltPreIsoMu20 + process.hltL1fL1sMu18L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sMu18L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu18L1Filtered0) + process.hltL3fL1sMu18L1f0L2f10QL3Filtered20Q + process.HLTMu20IsolationSequence + process.hltL3crIsoL1sMu18L1f0L2f10QL3f20QL3trkIsoFiltered + process.HLTEndSequence ) process.HLT_IsoMu24_v25 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22 + process.hltPreIsoMu24 + process.hltL1fL1sMu22L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22L1Filtered0) + process.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + process.HLTMu24IsolationSequence + process.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + process.HLTEndSequence ) +process.HLT_IsoMu24_HLTTracking_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22 + process.hltPreIsoMu24HLTTracking + process.hltL1fL1sMu22L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22L1Filtered0) + process.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + process.HLTMu24IsolationSequence + process.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.HLT_IsoMu24_eta2p1_v27 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22 + process.hltPreIsoMu24eta2p1 + process.hltL1fL1sMu22erL1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sSingleMu22erL1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22erL1Filtered0) + process.hltL3fL1sSingleMu22erL1f0L2f10QL3Filtered24Q + process.HLTMu24Eta2p1IsolationSequence + process.hltL3crIsoL1sSingleMu22erL1f0L2f10QL3f24QL3trkIsoFiltered + process.HLTEndSequence ) process.HLT_IsoMu27_v28 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22or25 + process.hltPreIsoMu27 + process.hltL1fL1sMu22or25L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sMu22or25L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22or25L1Filtered0) + process.hltL3fL1sMu22Or25L1f0L2f10QL3Filtered27Q + process.HLTMu27IsolationSequence + process.hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered + process.HLTEndSequence ) process.HLT_UncorrectedJetE30_NoBPTX_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sV0SingleJetC20NotBptxOR + process.hltPreUncorrectedJetE30NoBPTX + process.HLTStoppedHSCPLocalHcalReco + process.HLTStoppedHSCPJetSequence + process.hltStoppedHSCP1CaloJetEnergy30 + process.HLTEndSequence ) @@ -129024,11 +125686,13 @@ process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVL + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.HLTEndSequence ) process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu19TrkIsoVVLMu9TrkIsoVVL + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered9 + process.hltL3fL1DoubleMu155fFiltered19 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon199RelTrkIsoVVLFiltered + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZ + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.HLTEndSequence ) +process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered9 + process.hltL3fL1DoubleMu155fFiltered19 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon199RelTrkIsoVVLFiltered + process.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8PFJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK4CaloJetsSequence + process.hltSingleCaloJet10 + process.HLTAK4PFJetsSequence + process.hltPFJetsCorrectedMatchedToCaloJets10 + process.hltSinglePFJet30 + process.HLTEndSequence ) process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZMass8 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered9 + process.hltL3fL1DoubleMu155fFiltered19 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon199RelTrkIsoVVLFiltered + process.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon199Mass8Filtered + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass3p8Filtered + process.HLTEndSequence ) +process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass3p8Filtered + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK4CaloJetsSequence + process.hltSingleCaloJet30 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8PFJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK8CaloJetsSequence + process.hltSingleCaloJet10AK8 + process.HLTAK8PFJetsSequence + process.hltPFJetsCorrectedMatchedToCaloJets10AK8 + process.hltSinglePFJet30AK8 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8CaloJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK8CaloJetsSequence + process.hltSingleCaloJet30AK8 + process.HLTEndSequence ) @@ -129641,14 +126305,12 @@ process.HLT_HIZeroBias_HighRateRAW_v4 = cms.Path( process.HLTBeginSequence + process.hltL1sZeroBiasCopy + process.hltPreHIZeroBiasHighRateRAW + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1AND_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1AND + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1AND_copy_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDcopy + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HIMinimumBiasHF1AND_Beamspot_v8 = cms.Path( process.HLTBeginSequence + process.hltL1sMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC1nOR + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC2nOR + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC1nORcopy + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC2nORcopy + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) -process.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) process.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND + process.hltPreHICentrality30100FirstCollisionAfterAbortGap + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) +process.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND + process.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) process.HLT_HIL1Centrality30_50_v7 = cms.Path( process.HLTBeginSequence + process.hltL1Centrality30to50BptxAND + process.hltPreHIL1Centrality3050 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIL1_UCC_0_0p5_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sUCC00p5 + process.hltPreHIL1UCC00p5 + process.HLTDoLocalHcalSequence + process.hltTowerMakerForHf + process.hltCaloMETProducerForHf + process.hltGlobalSumsETHfMaxFilter + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIL1_UCC_0_1_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sUCC01 + process.hltPreHIL1UCC01 + process.HLTDoLocalHcalSequence + process.hltTowerMakerForHf + process.hltCaloMETProducerForHf + process.hltGlobalSumsETHfMaxFilter + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) @@ -129667,15 +126329,6 @@ process.HLT_HIPuAK4CaloJet80Fwd_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet64FwdBptxAND + process.hltPreHIPuAK4CaloJet80Fwd + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet80Fwd + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIPuAK4CaloJet100Fwd_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet64FwdBptxAND + process.hltPreHIPuAK4CaloJet100Fwd + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet100Fwd + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIPuAK4CaloJet120Fwd_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet64FwdBptxAND + process.hltPreHIPuAK4CaloJet120Fwd + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet120Fwd + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet60Eta1p5_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet44BptxAND + process.hltPreHICsAK4PFJet60Eta1p5 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet60Eta1p5 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets60 + process.hltSingleCsPFJet60Eta1p5 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet60Eta2p1_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet44BptxAND + process.hltPreHICsAK4PFJet60Eta2p1 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet60Eta2p1 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets60Eta2p1 + process.hltSingleCsPFJet60Eta2p1 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet80Eta1p5_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet60BptxAND + process.hltPreHICsAK4PFJet80Eta1p5 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet70Eta1p5 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets70 + process.hltSingleCsPFJet80Eta1p5 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet80Eta2p1_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet60BptxAND + process.hltPreHICsAK4PFJet80Eta2p1 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet70Eta2p1 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets70Eta2p1 + process.hltSingleCsPFJet80Eta2p1 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet100Eta1p5_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet60BptxAND + process.hltPreHICsAK4PFJet100Eta1p5 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet80Eta1p5 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets80 + process.hltSingleCsPFJet100Eta1p5 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet60BptxAND + process.hltPreHICsAK4PFJet100Eta1p5Beamspot + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet80Eta1p5 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets80 + process.hltSingleCsPFJet100Eta1p5 + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet100Eta2p1_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet60BptxAND + process.hltPreHICsAK4PFJet100Eta2p1 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet80Eta2p1 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets80Eta2p1 + process.hltSingleCsPFJet100Eta2p1 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet120Eta1p5_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet80BptxAND + process.hltPreHICsAK4PFJet120Eta1p5 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet90Eta1p5 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets90 + process.hltSingleCsPFJet120Eta1p5 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HICsAK4PFJet120Eta2p1_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet80BptxAND + process.hltPreHICsAK4PFJet120Eta2p1 + process.HLTPuAK4CaloJetsSequence + process.hltSinglePuAK4CaloJet90Eta2p1 + process.HLTCsAK4PFJetsSequence + process.hltCsPFJetsCorrectedMatchedToPuCaloJets90Eta2p1 + process.hltSingleCsPFJet120Eta2p1 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIGEDPhoton10_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sL1SingleEG7BptxAND + process.hltPreHIGEDPhoton10 + process.HLTHIGEDPhoton10PPOnAASequence + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIGEDPhoton10_EB_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sL1SingleEG7BptxAND + process.hltPreHIGEDPhoton10EB + process.HLTHIGEDPhoton10EBPPOnAASequence + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIGEDPhoton20_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sL1SingleEG7BptxAND + process.hltPreHIGEDPhoton20 + process.HLTHIGEDPhoton20PPOnAASequence + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) @@ -129754,6 +126407,8 @@ process.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG2BptxAND + process.hltPreHIUPCDoubleEG2BptxANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.hltPixelActivityFilterMaxClusters1e3 + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG2NotHF2AND + process.hltPreHIUPCDoubleEG2NotMBHF2ANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG2NotHF2AND + process.hltPreHIUPCDoubleEG2NotMBHF2AND + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) +process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG3NotHF2AND + process.hltPreHIUPCDoubleEG3NotMBHF2AND + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) +process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG3NotHF2AND + process.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG5BptxAND + process.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.hltPixelActivityFilterMaxClusters1e3 + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG5NotHF2AND + process.hltPreHIUPCDoubleEG5NotMBHF2ANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG5NotHF2AND + process.hltPreHIUPCDoubleEG5NotMBHF2AND + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) @@ -129978,10 +126633,6 @@ process.HLT_PPRefCscCluster_Loose_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sMuShowerOneNominal + process.hltPrePPRefCscClusterLoose + process.HLTMuonLocalRecoSequence + process.hltCSCrechitClusters + process.hltCscClusterLoosePPRef + process.HLTEndSequence ) process.HLT_PPRefCscCluster_Medium_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sMuShowerOneNominal + process.hltPrePPRefCscClusterMedium + process.HLTMuonLocalRecoSequence + process.hltCSCrechitClusters + process.hltCscClusterMediumPPRef + process.HLTEndSequence ) process.HLT_PPRefCscCluster_Tight_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sMuShowerOneNominal + process.hltPrePPRefCscClusterTight + process.HLTMuonLocalRecoSequence + process.hltCSCrechitClusters + process.hltCscClusterTightPPRef + process.HLTEndSequence ) -process.HLT_PPRefDmesonTrackingGlobal_Dpt25_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet24 + process.hltPrePPRefDmesonTrackingGlobalDpt25 + process.HLTPuAK4CaloJetsSequence + process.HLTPixelClusterSplittingForPFPPRefForDmeson + process.HLTFullIterativeTrackingPPRefForDmeson + process.hltFullOnlinePrimaryVerticesPPRefForDmeson + process.HLTFullTracksForDmesonPPRef + process.hltTkTkVtxForDmesonDpt25PPRef + process.hltTkTkFilterForDmesonDpt25PPRef + process.HLTEndSequence ) -process.HLT_PPRefDmesonTrackingGlobal_Dpt35_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet35 + process.hltPrePPRefDmesonTrackingGlobalDpt35 + process.HLTPuAK4CaloJetsSequence + process.HLTPixelClusterSplittingForPFPPRefForDmeson + process.HLTFullIterativeTrackingPPRefForDmeson + process.hltFullOnlinePrimaryVerticesPPRefForDmeson + process.HLTFullTracksForDmesonPPRef + process.hltTkTkVtxForDmesonDpt35PPRef + process.hltTkTkFilterForDmesonDpt35PPRef + process.HLTEndSequence ) -process.HLT_PPRefDmesonTrackingGlobal_Dpt45_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet44 + process.hltPrePPRefDmesonTrackingGlobalDpt45 + process.HLTPuAK4CaloJetsSequence + process.HLTPixelClusterSplittingForPFPPRefForDmeson + process.HLTFullIterativeTrackingPPRefForDmeson + process.hltFullOnlinePrimaryVerticesPPRefForDmeson + process.HLTFullTracksForDmesonPPRef + process.hltTkTkVtxForDmesonDpt45PPRef + process.hltTkTkFilterForDmesonDpt45PPRef + process.HLTEndSequence ) -process.HLT_PPRefDmesonTrackingGlobal_Dpt60_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleJet60 + process.hltPrePPRefDmesonTrackingGlobalDpt60 + process.HLTPuAK4CaloJetsSequence + process.HLTPixelClusterSplittingForPFPPRefForDmeson + process.HLTFullIterativeTrackingPPRefForDmeson + process.hltFullOnlinePrimaryVerticesPPRefForDmeson + process.HLTFullTracksForDmesonPPRef + process.hltTkTkVtxForDmesonDpt60PPRef + process.hltTkTkFilterForDmesonDpt60PPRef + process.HLTEndSequence ) process.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nAsymXORSingleJet8 + process.hltPrePPRefUPCSingleJet8ZDC1nAsymXOR + process.HLTEndSequence ) process.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nAsymXORSingleJet12 + process.hltPrePPRefUPCSingleJet12ZDC1nAsymXOR + process.HLTEndSequence ) process.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nAsymXORSingleJet16 + process.hltPrePPRefUPCSingleJet16ZDC1nAsymXOR + process.HLTEndSequence ) @@ -129996,6 +126647,7 @@ process.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORSingleJet28 + process.hltPrePPRefUPCSingleJet28ZDC1nOR + process.HLTEndSequence ) process.HLT_PPRefUPC_ZDC1nAsymXOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nAsymXOR + process.hltPrePPRefUPCZDC1nAsymXOR + process.HLTEndSequence ) process.HLT_PPRefUPC_ZDC1nOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORPRef + process.hltPrePPRefUPCZDC1nOR + process.HLTEndSequence ) +process.HLT_PPRefZeroBias_FirstCollisionInTrain_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sL1ZeroBiasFirstCollisionInTrain + process.hltPrePPRefZeroBiasFirstCollisionInTrain + process.HLTEndSequence ) process.MC_ReducedIterativeTracking_v22 = cms.Path( process.HLTBeginSequence + process.hltPreMCReducedIterativeTracking + process.HLTDoLocalPixelSequence + process.HLTRecopixelvertexingSequence + process.HLTDoLocalStripSequence + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.MC_AK4CaloJets_v19 = cms.Path( process.HLTBeginSequence + process.hltPreMCAK4CaloJets + process.HLTAK4CaloJetsSequence + process.hltCaloJetCollection20Filter + process.HLTEndSequence ) process.MC_AK4CaloJetsFromPV_v18 = cms.Path( process.HLTBeginSequence + process.hltPreMCAK4CaloJetsFromPV + process.HLTAK4CaloJetsSequence + process.HLTNoPUSequence + process.hltCaloJetFromPVCollection20Filter + process.hltHtMhtFromPVForMC + process.hltCaloHtMhtFromPVOpenFilter + process.HLTEndSequence ) @@ -130220,6 +126872,22 @@ process.Dataset_Tau = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetTau + process.hltPreDatasetTau ) process.Dataset_TestEnablesEcalHcal = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetTestEnablesEcalHcal + process.hltPreDatasetTestEnablesEcalHcal ) process.Dataset_TestEnablesEcalHcalDQM = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetTestEnablesEcalHcalDQM + process.hltPreDatasetTestEnablesEcalHcalDQM ) +process.Dataset_VRRandom0 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom0 ) +process.Dataset_VRRandom1 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom1 ) +process.Dataset_VRRandom2 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom2 ) +process.Dataset_VRRandom3 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom3 ) +process.Dataset_VRRandom4 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom4 ) +process.Dataset_VRRandom5 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom5 ) +process.Dataset_VRRandom6 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom6 ) +process.Dataset_VRRandom7 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom7 ) +process.Dataset_VRRandom8 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom8 ) +process.Dataset_VRRandom9 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom9 ) +process.Dataset_VRRandom10 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom10 ) +process.Dataset_VRRandom11 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom11 ) +process.Dataset_VRRandom12 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom12 ) +process.Dataset_VRRandom13 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom13 ) +process.Dataset_VRRandom14 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom14 ) +process.Dataset_VRRandom15 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom15 ) process.Dataset_ZeroBias = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetZeroBias + process.hltPreDatasetZeroBias ) process.ALCALowPtJetOutput = cms.FinalPath( process.hltOutputALCALowPtJet ) process.ALCALumiPixelsCountsExpressOutput = cms.FinalPath( process.hltOutputALCALumiPixelsCountsExpress ) @@ -130651,9 +127319,17 @@ process.PhysicsHIPhysicsRawPrime33Output = cms.FinalPath( process.hltOutputPhysicsHIPhysicsRawPrime33 ) process.PhysicsHIPhysicsRawPrime32Output = cms.FinalPath( process.hltOutputPhysicsHIPhysicsRawPrime32 ) process.PhysicsHIPhysicsRawPrime43Output = cms.FinalPath( process.hltOutputPhysicsHIPhysicsRawPrime43 ) +process.PhysicsVRRandom1Output = cms.FinalPath( process.hltOutputPhysicsVRRandom1 ) +process.PhysicsVRRandom0Output = cms.FinalPath( process.hltOutputPhysicsVRRandom0 ) +process.PhysicsVRRandom2Output = cms.FinalPath( process.hltOutputPhysicsVRRandom2 ) +process.PhysicsVRRandom3Output = cms.FinalPath( process.hltOutputPhysicsVRRandom3 ) +process.PhysicsVRRandom4Output = cms.FinalPath( process.hltOutputPhysicsVRRandom4 ) +process.PhysicsVRRandom5Output = cms.FinalPath( process.hltOutputPhysicsVRRandom5 ) +process.PhysicsVRRandom6Output = cms.FinalPath( process.hltOutputPhysicsVRRandom6 ) +process.PhysicsVRRandom7Output = cms.FinalPath( process.hltOutputPhysicsVRRandom7 ) -process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_EcalPhiSymForHI_v12, process.AlCa_EcalEtaEBonly_v25, process.AlCa_EcalEtaEEonly_v25, process.AlCa_EcalPi0EBonly_v25, process.AlCa_EcalPi0EEonly_v25, process.AlCa_EcalEtaEBonlyForHI_v13, process.AlCa_EcalEtaEEonlyForHI_v13, process.AlCa_EcalPi0EBonlyForHI_v13, process.AlCa_EcalPi0EEonlyForHI_v13, process.AlCa_HIEcalEtaEBonly_v12, process.AlCa_HIEcalEtaEEonly_v12, process.AlCa_HIEcalPi0EBonly_v12, process.AlCa_HIEcalPi0EEonly_v12, process.AlCa_RPCMuonNormalisation_v23, process.AlCa_RPCMuonNormalisationForHI_v11, process.AlCa_HIRPCMuonNormalisation_v11, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.AlCa_PFJet40_v32, process.AlCa_PFJet40_CPUOnly_v11, process.AlCa_AK8PFJet40_v27, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DQM_HIPixelReconstruction_v12, process.DQM_HIEcalReconstruction_v10, process.DQM_HIHcalReconstruction_v8, process.DQM_Random_v1, process.DQM_ZeroBias_v3, process.DST_ZeroBias_v11, process.DST_Physics_v16, process.DST_PFScouting_DoubleMuon_v6, process.DST_PFScouting_DoubleEG_v6, process.DST_PFScouting_JetHT_v6, process.DST_PFScouting_AXOVLoose_v4, process.DST_PFScouting_AXOLoose_v4, process.DST_PFScouting_AXONominal_v6, process.DST_PFScouting_AXOTight_v6, process.DST_PFScouting_AXOVTight_v4, process.DST_PFScouting_CICADAVLoose_v2, process.DST_PFScouting_CICADALoose_v2, process.DST_PFScouting_CICADAMedium_v2, process.DST_PFScouting_CICADATight_v2, process.DST_PFScouting_CICADAVTight_v2, process.DST_PFScouting_SingleMuon_v6, process.DST_PFScouting_SinglePhotonEB_v3, process.DST_PFScouting_ZeroBias_v4, process.HLT_EphemeralPhysics_v9, process.HLT_EphemeralZeroBias_v9, process.HLT_HIEphemeralPhysics_v5, process.HLT_HIEphemeralZeroBias_v5, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Alignment_v8, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_IsolatedBunches_v12, process.HLT_ZeroBias_FirstBXAfterTrain_v10, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_ZeroBias_FirstCollisionInTrain_v11, process.HLT_ZeroBias_LastCollisionInTrain_v10, process.HLT_HT300_Beamspot_v23, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_PFJet40_GPUvsCPU_v7, process.HLT_AK8PFJet380_SoftDropMass30_v6, process.HLT_AK8PFJet400_SoftDropMass30_v6, process.HLT_AK8PFJet425_SoftDropMass30_v6, process.HLT_AK8PFJet450_SoftDropMass30_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, process.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, process.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, process.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, process.HLT_CaloJet500_NoJetID_v22, process.HLT_CaloJet550_NoJetID_v17, process.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, process.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, process.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, process.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, process.HLT_DoubleEle25_CaloIdL_MW_v15, process.HLT_DoubleEle27_CaloIdL_MW_v15, process.HLT_DoubleEle33_CaloIdL_MW_v28, process.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, process.HLT_Mu27_Ele37_CaloIdL_MW_v17, process.HLT_Mu37_Ele27_CaloIdL_MW_v17, process.HLT_Mu37_TkMu27_v17, process.HLT_DoubleMu4_3_Bs_v27, process.HLT_DoubleMu4_3_Jpsi_v27, process.HLT_DoubleMu4_3_LowMass_v13, process.HLT_DoubleMu4_LowMass_Displaced_v13, process.HLT_Mu0_L1DoubleMu_v13, process.HLT_Mu4_L1DoubleMu_v13, process.HLT_DoubleMu2_Jpsi_LowPt_v6, process.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, process.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, process.HLT_DoubleMu3_Trk_Tau3mu_v24, process.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, process.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, process.HLT_DoubleMu4_MuMuTrk_Displaced_v27, process.HLT_Mu3_PFJet40_v28, process.HLT_Mu7p5_L2Mu2_Jpsi_v22, process.HLT_Mu7p5_L2Mu2_Upsilon_v22, process.HLT_Mu3_L1SingleMu5orSingleMu7_v13, process.HLT_Mu0_Barrel_v6, process.HLT_Mu0_Barrel_L1HP6_v3, process.HLT_Mu0_Barrel_L1HP7_v3, process.HLT_Mu0_Barrel_L1HP8_v4, process.HLT_Mu0_Barrel_L1HP9_v4, process.HLT_Mu0_Barrel_L1HP10_v6, process.HLT_Mu0_Barrel_L1HP11_v6, process.HLT_Mu0_Barrel_L1HP6_IP6_v3, process.HLT_Mu6_Barrel_L1HP7_IP6_v3, process.HLT_Mu7_Barrel_L1HP8_IP6_v4, process.HLT_Mu8_Barrel_L1HP9_IP6_v4, process.HLT_Mu9_Barrel_L1HP10_IP6_v6, process.HLT_Mu10_Barrel_L1HP11_IP6_v6, process.HLT_DoublePhoton33_CaloIdL_v17, process.HLT_DoublePhoton70_v17, process.HLT_DoublePhoton85_v25, process.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, process.HLT_Ele30_WPTight_Gsf_v11, process.HLT_Ele32_WPTight_Gsf_v25, process.HLT_Ele35_WPTight_Gsf_v19, process.HLT_Ele38_WPTight_Gsf_v19, process.HLT_Ele40_WPTight_Gsf_v19, process.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, process.HLT_IsoMu20_v27, process.HLT_IsoMu24_v25, process.HLT_IsoMu24_eta2p1_v27, process.HLT_IsoMu27_v28, process.HLT_UncorrectedJetE30_NoBPTX_v14, process.HLT_UncorrectedJetE30_NoBPTX3BX_v14, process.HLT_UncorrectedJetE60_NoBPTX3BX_v14, process.HLT_UncorrectedJetE70_NoBPTX3BX_v14, process.HLT_L1SingleMuCosmics_v8, process.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, process.HLT_L2Mu10_NoVertex_NoBPTX_v15, process.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, process.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, process.HLT_L2Mu23NoVtx_2Cha_v10, process.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, process.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, process.HLT_DoubleL2Mu50_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, process.HLT_Mu30_TkMu0_Psi_v13, process.HLT_Mu30_TkMu0_Upsilon_v13, process.HLT_Mu25_TkMu0_Phi_v20, process.HLT_Mu15_v15, process.HLT_Mu20_v24, process.HLT_Mu27_v25, process.HLT_Mu50_v25, process.HLT_Mu55_v15, process.HLT_CascadeMu100_v13, process.HLT_HighPtTkMu100_v12, process.HLT_DiPFJetAve40_v26, process.HLT_DiPFJetAve60_v26, process.HLT_DiPFJetAve80_v26, process.HLT_DiPFJetAve140_v25, process.HLT_DiPFJetAve200_v25, process.HLT_DiPFJetAve260_v26, process.HLT_DiPFJetAve320_v26, process.HLT_DiPFJetAve400_v26, process.HLT_DiPFJetAve500_v26, process.HLT_DiPFJetAve60_HFJEC_v27, process.HLT_DiPFJetAve80_HFJEC_v29, process.HLT_DiPFJetAve100_HFJEC_v29, process.HLT_DiPFJetAve160_HFJEC_v28, process.HLT_DiPFJetAve220_HFJEC_v28, process.HLT_DiPFJetAve260_HFJEC_v11, process.HLT_DiPFJetAve300_HFJEC_v28, process.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, process.HLT_AK8PFJet40_v28, process.HLT_AK8PFJet60_v27, process.HLT_AK8PFJet80_v28, process.HLT_AK8PFJet140_v27, process.HLT_AK8PFJet200_v27, process.HLT_AK8PFJet260_v28, process.HLT_AK8PFJet320_v28, process.HLT_AK8PFJet400_v28, process.HLT_AK8PFJet450_v28, process.HLT_AK8PFJet500_v28, process.HLT_AK8PFJet550_v23, process.HLT_PFJet40_v33, process.HLT_PFJet60_v33, process.HLT_PFJet80_v33, process.HLT_PFJet110_v12, process.HLT_PFJet140_v31, process.HLT_PFJet200_v31, process.HLT_PFJet260_v32, process.HLT_PFJet320_v32, process.HLT_PFJet400_v32, process.HLT_PFJet450_v33, process.HLT_PFJet500_v33, process.HLT_PFJet550_v23, process.HLT_PFJetFwd40_v31, process.HLT_PFJetFwd60_v31, process.HLT_PFJetFwd80_v30, process.HLT_PFJetFwd140_v30, process.HLT_PFJetFwd200_v30, process.HLT_PFJetFwd260_v31, process.HLT_PFJetFwd320_v31, process.HLT_PFJetFwd400_v31, process.HLT_PFJetFwd450_v31, process.HLT_PFJetFwd500_v31, process.HLT_AK8PFJetFwd40_v27, process.HLT_AK8PFJetFwd60_v26, process.HLT_AK8PFJetFwd80_v26, process.HLT_AK8PFJetFwd140_v26, process.HLT_AK8PFJetFwd200_v26, process.HLT_AK8PFJetFwd260_v27, process.HLT_AK8PFJetFwd320_v27, process.HLT_AK8PFJetFwd400_v27, process.HLT_AK8PFJetFwd450_v27, process.HLT_AK8PFJetFwd500_v27, process.HLT_PFHT180_v29, process.HLT_PFHT250_v29, process.HLT_PFHT370_v29, process.HLT_PFHT430_v29, process.HLT_PFHT510_v29, process.HLT_PFHT590_v29, process.HLT_PFHT680_v29, process.HLT_PFHT780_v29, process.HLT_PFHT890_v29, process.HLT_PFHT1050_v30, process.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, process.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, process.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, process.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, process.HLT_PFMET120_PFMHT120_IDTight_v32, process.HLT_PFMET130_PFMHT130_IDTight_v32, process.HLT_PFMET140_PFMHT140_IDTight_v32, process.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, process.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, process.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, process.HLT_L1ETMHadSeeds_v10, process.HLT_CaloMHT90_v14, process.HLT_CaloMET90_NotCleaned_v14, process.HLT_CaloMET350_NotCleaned_v14, process.HLT_PFMET200_NotCleaned_v21, process.HLT_PFMET250_NotCleaned_v21, process.HLT_PFMET300_NotCleaned_v21, process.HLT_PFMET200_BeamHaloCleaned_v21, process.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, process.HLT_MET105_IsoTrk50_v19, process.HLT_MET120_IsoTrk50_v19, process.HLT_Mu12eta2p3_v13, process.HLT_Mu12eta2p3_PFJet40_v13, process.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Photon300_NoHE_v23, process.HLT_Mu8_TrkIsoVVL_v24, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, process.HLT_Mu17_TrkIsoVVL_v25, process.HLT_Mu19_TrkIsoVVL_v16, process.HLT_BTagMu_AK4DiJet20_Mu5_v25, process.HLT_BTagMu_AK4DiJet40_Mu5_v25, process.HLT_BTagMu_AK4DiJet70_Mu5_v25, process.HLT_BTagMu_AK4DiJet110_Mu5_v25, process.HLT_BTagMu_AK4DiJet170_Mu5_v24, process.HLT_BTagMu_AK4Jet300_Mu5_v24, process.HLT_BTagMu_AK8DiJet170_Mu5_v21, process.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, process.HLT_BTagMu_AK8Jet300_Mu5_v24, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, process.HLT_Photon33_v15, process.HLT_Photon50_v23, process.HLT_Photon75_v23, process.HLT_Photon90_v23, process.HLT_Photon120_v23, process.HLT_Photon150_v17, process.HLT_Photon175_v25, process.HLT_Photon200_v24, process.HLT_Photon45EB_v3, process.HLT_Photon40EB_v3, process.HLT_Photon50EB_v4, process.HLT_Photon30EB_TightID_TightIso_v12, process.HLT_Photon40EB_TightID_TightIso_v3, process.HLT_Photon45EB_TightID_TightIso_v3, process.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_v8, process.HLT_Photon55EB_TightID_TightIso_v4, process.HLT_Photon75EB_TightID_TightIso_v8, process.HLT_Photon90EB_TightID_TightIso_v8, process.HLT_Photon110EB_TightID_TightIso_v12, process.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon100EBHE10_v12, process.HLT_Photon50_R9Id90_HE10_IsoM_v24, process.HLT_Photon75_R9Id90_HE10_IsoM_v24, process.HLT_Photon90_R9Id90_HE10_IsoM_v24, process.HLT_Photon120_R9Id90_HE10_IsoM_v24, process.HLT_Photon165_R9Id90_HE10_IsoM_v25, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, process.HLT_DiphotonMVA14p25_Mass90_v3, process.HLT_DiphotonMVA14p25_Tight_Mass90_v3, process.HLT_Photon35_TwoProngs35_v13, process.HLT_IsoMu24_TwoProngs35_v13, process.HLT_Dimuon0_Jpsi_L1_NoOS_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, process.HLT_Dimuon0_Jpsi_v20, process.HLT_Dimuon0_Jpsi_NoVertexing_v20, process.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi3p5_Muon2_v17, process.HLT_Dimuon0_Upsilon_L1_4p5_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, process.HLT_Dimuon0_Upsilon_NoVertexing_v19, process.HLT_Dimuon0_LowMass_L1_0er1p5_v20, process.HLT_Dimuon0_LowMass_v20, process.HLT_Dimuon0_LowMass_L1_4_v20, process.HLT_Dimuon0_LowMass_L1_TM530_v18, process.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, process.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, process.HLT_TripleMu_10_5_5_DZ_v22, process.HLT_TripleMu_12_10_5_v22, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, process.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, process.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, process.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, process.HLT_DoubleMu4_3_LowMass_SS_v6, process.HLT_DoubleMu4_Jpsi_Displaced_v19, process.HLT_DoubleMu4_Jpsi_NoVertexing_v19, process.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, process.HLT_DoubleMu4_JpsiTrk_Bc_v12, process.HLT_DoubleMu43NoFiltersNoVtx_v14, process.HLT_DoubleMu48NoFiltersNoVtx_v14, process.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, process.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, process.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, process.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, process.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, process.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, process.HLT_Ele28_HighEta_SC20_Mass55_v23, process.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, process.HLT_Ele15_IsoVVVL_PFHT450_v28, process.HLT_Ele50_IsoVVVL_PFHT450_v28, process.HLT_Ele15_IsoVVVL_PFHT600_v32, process.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, process.HLT_Mu15_IsoVVVL_PFHT450_v27, process.HLT_Mu50_IsoVVVL_PFHT450_v27, process.HLT_Mu15_IsoVVVL_PFHT600_v31, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, process.HLT_Dimuon10_Upsilon_y1p4_v13, process.HLT_Dimuon12_Upsilon_y1p4_v14, process.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, process.HLT_Dimuon25_Jpsi_v26, process.HLT_Dimuon14_PsiPrime_v25, process.HLT_Dimuon14_PsiPrime_noCorrL1_v17, process.HLT_Dimuon18_PsiPrime_v26, process.HLT_Dimuon18_PsiPrime_noCorrL1_v18, process.HLT_Dimuon24_Upsilon_noCorrL1_v18, process.HLT_Dimuon24_Phi_noCorrL1_v18, process.HLT_Dimuon25_Jpsi_noCorrL1_v18, process.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, process.HLT_DoubleIsoMu20_eta2p1_v19, process.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, process.HLT_Mu8_v24, process.HLT_Mu17_v25, process.HLT_Mu19_v16, process.HLT_Mu17_Photon30_IsoCaloId_v18, process.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, process.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, process.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, process.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, process.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, process.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, process.HLT_PFHT400_SixPFJet32_v21, process.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, process.HLT_PFHT450_SixPFJet36_v20, process.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, process.HLT_PFHT350_v31, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, process.HLT_ECALHT800_v20, process.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, process.HLT_Photon20_HoverELoose_v20, process.HLT_Photon30_HoverELoose_v20, process.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, process.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, process.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, process.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, process.HLT_Mu18_Mu9_SameSign_v16, process.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, process.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, process.HLT_QuadPFJet103_88_75_15_v17, process.HLT_QuadPFJet105_88_76_15_v17, process.HLT_QuadPFJet111_90_80_15_v17, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, process.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, process.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, process.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, process.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, process.HLT_PFHT250_QuadPFJet25_v6, process.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, process.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, process.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, process.HLT_QuadPFJet100_88_70_30_v10, process.HLT_QuadPFJet105_88_75_30_v9, process.HLT_QuadPFJet111_90_80_30_v9, process.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, process.HLT_AK8PFJet220_SoftDropMass40_v13, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, process.HLT_AK8PFJet230_SoftDropMass40_v13, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_Nch45_v6, process.HLT_AK8PFJet275_Nch40_v6, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PFHT250_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, process.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, process.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, process.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, process.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, process.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu10NoVtx_2Cha_v9, process.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_L3Mu10NoVtx_v10, process.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, process.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, process.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, process.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, process.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, process.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, process.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, process.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, process.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, process.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, process.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, process.HLT_L1Mu6HT240_v9, process.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, process.HLT_HT350_v7, process.HLT_HT425_v19, process.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT550_DisplacedDijet60_Inclusive_v23, process.HLT_HT650_DisplacedDijet60_Inclusive_v23, process.HLT_CaloMET60_DTCluster50_v11, process.HLT_CaloMET60_DTClusterNoMB1S50_v11, process.HLT_L1MET_DTCluster50_v11, process.HLT_L1MET_DTClusterNoMB1S50_v11, process.HLT_CscCluster_Loose_v10, process.HLT_CscCluster_Medium_v10, process.HLT_CscCluster_Tight_v10, process.HLT_CscCluster50_Photon20Unseeded_v4, process.HLT_CscCluster50_Photon30Unseeded_v4, process.HLT_CscCluster100_Ele5_v4, process.HLT_CscCluster100_Mu5_v6, process.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, process.HLT_DoubleCscCluster75_v7, process.HLT_IsoTrk200_L1SingleMuShower_v4, process.HLT_IsoTrk400_L1SingleMuShower_v4, process.HLT_DoubleCscCluster100_v7, process.HLT_L1CSCShower_DTCluster50_v10, process.HLT_L1CSCShower_DTCluster75_v10, process.HLT_PFMET105_IsoTrk50_v13, process.HLT_L1SingleLLPJet_v7, process.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, process.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, process.HLT_DiPhoton10Time1ns_v10, process.HLT_DiPhoton10Time1p2ns_v10, process.HLT_DiPhoton10Time1p4ns_v10, process.HLT_DiPhoton10Time1p6ns_v10, process.HLT_DiPhoton10Time1p8ns_v10, process.HLT_DiPhoton10Time2ns_v10, process.HLT_DiPhoton10_CaloIdL_v10, process.HLT_DoubleEle6p5_eta1p22_mMax6_v10, process.HLT_DoubleEle8_eta1p22_mMax6_v10, process.HLT_DoubleEle10_eta1p22_mMax6_v10, process.HLT_SingleEle8_v9, process.HLT_SingleEle8_SingleEGL1_v9, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Mu50_L1SingleMuShower_v11, process.HLT_IsoMu24_OneProng32_v9, process.HLT_Photon32_OneProng32_M50To105_v10, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, process.HLT_VBF_DiPFJet125_45_Mjj1050_v8, process.HLT_VBF_DiPFJet125_45_Mjj1200_v6, process.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, process.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, process.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, process.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_PFJet200_TimeLtNeg2p5ns_v10, process.HLT_PFJet200_TimeGt2p5ns_v10, process.HLT_Photon50_TimeLtNeg2p5ns_v7, process.HLT_Photon50_TimeGt2p5ns_v7, process.HLT_PPSMaxTracksPerArm1_v9, process.HLT_PPSMaxTracksPerRP4_v9, process.HLT_PPSRandom_v1, process.HLT_HIL1NotBptxOR_v14, process.HLT_HIL1UnpairedBunchBptxPlus_v14, process.HLT_HIL1UnpairedBunchBptxMinus_v14, process.HLT_HIPhysics_v14, process.HLT_HIPhysicsForZS_v14, process.HLT_HIRandom_v7, process.HLT_HIRandom_HighRate_v3, process.HLT_HIHcalNZS_v14, process.HLT_HIHcalPhiSym_v14, process.HLT_HIZeroBias_v14, process.HLT_HIZeroBias_HighRate_v7, process.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, process.HLT_HIZeroBias_HighRateRAW_v4, process.HLT_HIMinimumBiasHF1AND_v7, process.HLT_HIMinimumBiasHF1AND_copy_v6, process.HLT_HIMinimumBiasHF1AND_Beamspot_v8, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8, process.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, process.HLT_HIL1Centrality30_50_v7, process.HLT_HIL1_UCC_0_0p5_v7, process.HLT_HIL1_UCC_0_1_v7, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet80Eta5p1_v14, process.HLT_HIPuAK4CaloJet100Eta5p1_v14, process.HLT_HIPuAK4CaloJet120Eta2p1_v7, process.HLT_HIPuAK4CaloJet120Eta5p1_v14, process.HLT_HIPuAK4CaloJet40Fwd_v7, process.HLT_HIPuAK4CaloJet60Fwd_v7, process.HLT_HIPuAK4CaloJet80Fwd_v7, process.HLT_HIPuAK4CaloJet100Fwd_v7, process.HLT_HIPuAK4CaloJet120Fwd_v7, process.HLT_HICsAK4PFJet60Eta1p5_v14, process.HLT_HICsAK4PFJet60Eta2p1_v7, process.HLT_HICsAK4PFJet80Eta1p5_v14, process.HLT_HICsAK4PFJet80Eta2p1_v7, process.HLT_HICsAK4PFJet100Eta1p5_v14, process.HLT_HICsAK4PFJet100Eta1p5_Beamspot_v8, process.HLT_HICsAK4PFJet100Eta2p1_v7, process.HLT_HICsAK4PFJet120Eta1p5_v14, process.HLT_HICsAK4PFJet120Eta2p1_v7, process.HLT_HIGEDPhoton10_v14, process.HLT_HIGEDPhoton10_EB_v14, process.HLT_HIGEDPhoton20_v14, process.HLT_HIGEDPhoton20_EB_v14, process.HLT_HIGEDPhoton30_v14, process.HLT_HIGEDPhoton30_EB_v14, process.HLT_HIGEDPhoton40_v14, process.HLT_HIGEDPhoton40_EB_v14, process.HLT_HIGEDPhoton50_v14, process.HLT_HIGEDPhoton50_EB_v14, process.HLT_HIGEDPhoton60_v14, process.HLT_HIGEDPhoton60_EB_v14, process.HLT_HIDoubleGEDPhoton20_v7, process.HLT_HIEle10Gsf_v14, process.HLT_HIEle15Gsf_v14, process.HLT_HIEle20Gsf_v14, process.HLT_HIEle30Gsf_v14, process.HLT_HIEle40Gsf_v14, process.HLT_HIEle50Gsf_v14, process.HLT_HIEle15Ele10Gsf_v14, process.HLT_HIEle15Ele10GsfMass50_v14, process.HLT_HIDoubleEle10Gsf_v14, process.HLT_HIDoubleEle10GsfMass50_v14, process.HLT_HIDoubleEle15Gsf_v14, process.HLT_HIDoubleEle15GsfMass50_v14, process.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_NotMBHF2_v5, process.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, process.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, process.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, process.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, process.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_Random_HighRate_v1, process.HLT_HIUPC_HFafterglowCombined_v1, process.HLT_HIL1SingleMuOpen_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality40to100_v1, process.HLT_HIL1SingleMu0_v7, process.HLT_HIL1SingleMu0_Open_v7, process.HLT_HIL1SingleMu0_Cosmic_v7, process.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, process.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, process.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, process.HLT_HIL2DoubleMuOpen_SS_v1, process.HLT_HIL2DoubleMuOpen_OS_v1, process.HLT_HIL1DoubleMu0_v7, process.HLT_HIL2DoubleMu0_SQ_v1, process.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, process.HLT_HIL1DoubleMu0_SQ_v7, process.HLT_HIL2SingleMuOpen_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality40to100_v1, process.HLT_HIL2SingleMu3_Open_v7, process.HLT_HIL2SingleMu5_v7, process.HLT_HIL2SingleMu7_v7, process.HLT_HIL2SingleMu12_v1, process.HLT_HIL2DoubleMu0_Open_v7, process.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu0_M7to15_Open_v7, process.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu3_M7to15_Open_v7, process.HLT_HIL3SingleMu3_Open_v7, process.HLT_HIL3SingleMu5_v7, process.HLT_HIL3SingleMu7_v7, process.HLT_HIL3SingleMu12_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, process.HLT_HIL3DoubleMu0_M0toInf_Open_v7, process.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu0_M7to15_Open_v7, process.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, process.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu2_M7to15_Open_v7, process.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, process.HLT_HICscCluster_Loose_v7, process.HLT_HICscCluster_Medium_v7, process.HLT_HICscCluster_Tight_v7, process.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, process.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, process.HLT_HIL1NotBptxORForPPRef_v9, process.HLT_HIHT80_Beamspot_ppRef5TeV_v15, process.HLT_PPRefZeroBias_v6, process.HLT_AK4CaloJet40_v6, process.HLT_AK4CaloJet60_v6, process.HLT_AK4CaloJet70_v6, process.HLT_AK4CaloJet80_v6, process.HLT_AK4CaloJet100_v6, process.HLT_AK4CaloJet120_v6, process.HLT_AK4CaloJetFwd40_v6, process.HLT_AK4CaloJetFwd60_v6, process.HLT_AK4CaloJetFwd70_v6, process.HLT_AK4CaloJetFwd80_v6, process.HLT_AK4CaloJetFwd100_v6, process.HLT_AK4CaloJetFwd120_v6, process.HLT_AK4PFJet40_v8, process.HLT_AK4PFJet60_v8, process.HLT_AK4PFJet80_v8, process.HLT_AK4PFJet100_v8, process.HLT_AK4PFJet120_v8, process.HLT_AK4PFJetFwd40_v8, process.HLT_AK4PFJetFwd60_v8, process.HLT_AK4PFJetFwd80_v8, process.HLT_AK4PFJetFwd100_v8, process.HLT_AK4PFJetFwd120_v8, process.HLT_PPRefDoubleEle10Gsf_v6, process.HLT_PPRefDoubleEle10GsfMass50_v6, process.HLT_PPRefDoubleEle15Gsf_v6, process.HLT_PPRefDoubleEle15GsfMass50_v6, process.HLT_PPRefEle15Ele10Gsf_v6, process.HLT_PPRefEle15Ele10GsfMass50_v6, process.HLT_PPRefEle10Gsf_v6, process.HLT_PPRefEle15Gsf_v6, process.HLT_PPRefEle20Gsf_v7, process.HLT_PPRefEle30Gsf_v7, process.HLT_PPRefEle40Gsf_v6, process.HLT_PPRefEle50Gsf_v6, process.HLT_PPRefGEDPhoton10_v6, process.HLT_PPRefGEDPhoton10_EB_v6, process.HLT_PPRefGEDPhoton20_v6, process.HLT_PPRefGEDPhoton20_EB_v6, process.HLT_PPRefGEDPhoton30_v6, process.HLT_PPRefGEDPhoton30_EB_v6, process.HLT_PPRefGEDPhoton40_v6, process.HLT_PPRefGEDPhoton40_EB_v6, process.HLT_PPRefGEDPhoton50_v6, process.HLT_PPRefGEDPhoton50_EB_v6, process.HLT_PPRefGEDPhoton60_v6, process.HLT_PPRefGEDPhoton60_EB_v6, process.HLT_PPRefDoubleGEDPhoton20_v1, process.HLT_PPRefL1DoubleMu0_v6, process.HLT_PPRefL1DoubleMu0_SQ_v1, process.HLT_PPRefL1DoubleMu0_Open_v6, process.HLT_PPRefL1DoubleMu2_v1, process.HLT_PPRefL1DoubleMu2_SQ_v1, process.HLT_PPRefL1SingleMu0_Cosmics_v6, process.HLT_PPRefL1SingleMu7_v6, process.HLT_PPRefL1SingleMu12_v6, process.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, process.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, process.HLT_PPRefL2DoubleMu0_v6, process.HLT_PPRefL2DoubleMu0_Open_v6, process.HLT_PPRefL2SingleMu7_v6, process.HLT_PPRefL2SingleMu12_v6, process.HLT_PPRefL2SingleMu15_v6, process.HLT_PPRefL2SingleMu20_v6, process.HLT_PPRefL3DoubleMu0_v8, process.HLT_PPRefL3DoubleMu0_Open_v8, process.HLT_PPRefL3SingleMu3_v8, process.HLT_PPRefL3SingleMu5_v8, process.HLT_PPRefL3SingleMu7_v8, process.HLT_PPRefL3SingleMu12_v8, process.HLT_PPRefL3SingleMu15_v8, process.HLT_PPRefL3SingleMu20_v8, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, process.HLT_PPRefCscCluster_Loose_v6, process.HLT_PPRefCscCluster_Medium_v6, process.HLT_PPRefCscCluster_Tight_v6, process.HLT_PPRefDmesonTrackingGlobal_Dpt25_v6, process.HLT_PPRefDmesonTrackingGlobal_Dpt35_v6, process.HLT_PPRefDmesonTrackingGlobal_Dpt45_v6, process.HLT_PPRefDmesonTrackingGlobal_Dpt60_v6, process.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, process.HLT_PPRefUPC_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_ZDC1nOR_v1, process.MC_ReducedIterativeTracking_v22, process.MC_AK4CaloJets_v19, process.MC_AK4CaloJetsFromPV_v18, process.MC_CaloHT_v18, process.MC_AK8CaloHT_v18, process.MC_CaloMHT_v18, process.MC_AK4PFJets_v29, process.MC_PFHT_v28, process.MC_AK8PFJets_v29, process.MC_AK8PFHT_v28, process.MC_CaloMET_v18, process.MC_CaloMET_JetIdCleaned_v19, process.MC_PFMET_v29, process.MC_PFMHT_v28, process.MC_AK4PFJetPNet_v5, process.MC_AK8PFJetPNet_v5, process.MC_Egamma_Open_v8, process.MC_Egamma_Open_Unseeded_v8, process.MC_Ele5_WPTight_Gsf_v18, process.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, process.MC_DoubleEle5_CaloIdL_MW_v26, process.MC_IsoMu_v27, process.MC_DoubleMu_TrkIsoVVL_DZ_v23, process.MC_DoubleMuNoFiltersNoVtx_v17, process.MC_PFScouting_v6, process.HLT_SpecialHLTPhysics_v7, process.AlCa_LumiPixelsCounts_RandomHighRate_v4, process.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, process.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, process.HLT_L1AXOVTight_v4, process.HLT_L1SingleMuOpen_v6, process.HLT_L1SingleMuOpen_DT_v6, process.HLT_L1SingleMu3_v5, process.HLT_L1SingleMu5_v5, process.HLT_L1SingleMu7_v5, process.HLT_L1DoubleMu0_v5, process.HLT_L1SingleJet8erHE_v5, process.HLT_L1SingleJet10erHE_v5, process.HLT_L1SingleJet12erHE_v5, process.HLT_L1SingleJet35_v5, process.HLT_L1SingleJet200_v5, process.HLT_L1SingleEG8er2p5_v4, process.HLT_L1SingleEG10er2p5_v4, process.HLT_L1SingleEG15er2p5_v4, process.HLT_L1SingleEG26er2p5_v4, process.HLT_L1SingleEG28er2p5_v4, process.HLT_L1SingleEG28er2p1_v4, process.HLT_L1SingleEG28er1p5_v4, process.HLT_L1SingleEG34er2p5_v4, process.HLT_L1SingleEG36er2p5_v4, process.HLT_L1SingleEG38er2p5_v4, process.HLT_L1SingleEG40er2p5_v4, process.HLT_L1SingleEG42er2p5_v4, process.HLT_L1SingleEG45er2p5_v4, process.HLT_L1SingleEG50_v4, process.HLT_L1SingleJet60_v4, process.HLT_L1SingleJet90_v4, process.HLT_L1SingleJet120_v4, process.HLT_L1SingleJet180_v4, process.HLT_L1HTT120er_v4, process.HLT_L1HTT160er_v4, process.HLT_L1HTT200er_v4, process.HLT_L1HTT255er_v4, process.HLT_L1HTT280er_v4, process.HLT_L1HTT320er_v4, process.HLT_L1HTT360er_v4, process.HLT_L1HTT400er_v4, process.HLT_L1HTT450er_v4, process.HLT_L1ETM120_v4, process.HLT_L1ETM150_v4, process.HLT_L1EXT_HCAL_LaserMon1_v5, process.HLT_L1EXT_HCAL_LaserMon4_v5, process.HLT_CscCluster_Cosmic_v4, process.HLT_HT60_Beamspot_v22, process.HLT_HT300_Beamspot_PixelClusters_WP2_v7, process.HLT_PixelClusters_WP2_v4, process.HLT_PixelClusters_WP1_v4, process.HLT_BptxOR_v6, process.HLT_L1SingleMuCosmics_EMTF_v4, process.HLT_L1SingleMuCosmics_CosmicTracking_v1, process.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, process.HLT_L1FatEvents_v5, process.HLT_Random_HighRate_v1, process.HLT_ZeroBias_HighRate_v4, process.HLT_ZeroBias_Gated_v4, process.HLT_SpecialZeroBias_v6, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.DQMHistograms, process.RatesMonitoring, process.Dataset_AlCaLowPtJet, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaLumiPixelsCountsPromptHighRate0, process.Dataset_AlCaLumiPixelsCountsPromptHighRate1, process.Dataset_AlCaLumiPixelsCountsPromptHighRate2, process.Dataset_AlCaLumiPixelsCountsPromptHighRate3, process.Dataset_AlCaLumiPixelsCountsPromptHighRate4, process.Dataset_AlCaLumiPixelsCountsPromptHighRate5, process.Dataset_AlCaLumiPixelsCountsGated, process.Dataset_AlCaP0, process.Dataset_AlCaPPSExpress, process.Dataset_AlCaPPSPrompt, process.Dataset_AlCaPhiSym, process.Dataset_BTagMu, process.Dataset_Commissioning, process.Dataset_Cosmics, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_DQMPPSRandom, process.Dataset_DisplacedJet, process.Dataset_EGamma0, process.Dataset_EGamma1, process.Dataset_EcalLaser, process.Dataset_EmptyBX, process.Dataset_EphemeralHLTPhysics0, process.Dataset_EphemeralHLTPhysics1, process.Dataset_EphemeralHLTPhysics2, process.Dataset_EphemeralHLTPhysics3, process.Dataset_EphemeralHLTPhysics4, process.Dataset_EphemeralHLTPhysics5, process.Dataset_EphemeralHLTPhysics6, process.Dataset_EphemeralHLTPhysics7, process.Dataset_EphemeralZeroBias0, process.Dataset_EphemeralZeroBias1, process.Dataset_EphemeralZeroBias2, process.Dataset_EphemeralZeroBias3, process.Dataset_EphemeralZeroBias4, process.Dataset_EphemeralZeroBias5, process.Dataset_EphemeralZeroBias6, process.Dataset_EphemeralZeroBias7, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressCosmics, process.Dataset_ExpressPhysics, process.Dataset_HIDQMGPUvsCPU, process.Dataset_HIDQMOnlineBeamspot, process.Dataset_HIEmptyBX, process.Dataset_HIEphemeralHLTPhysics, process.Dataset_HIEphemeralZeroBias0, process.Dataset_HIEphemeralZeroBias1, process.Dataset_HIEventDisplay, process.Dataset_HIExpressAlignment, process.Dataset_HIExpressPhysics, process.Dataset_HIExpressPhysicsRawPrime, process.Dataset_HIForward0, process.Dataset_HIForward1, process.Dataset_HIForward2, process.Dataset_HIForward3, process.Dataset_HIForward4, process.Dataset_HIForward5, process.Dataset_HIForward6, process.Dataset_HIForward7, process.Dataset_HIForward8, process.Dataset_HIForward9, process.Dataset_HIForward10, process.Dataset_HIForward11, process.Dataset_HIForward12, process.Dataset_HIForward13, process.Dataset_HIForward14, process.Dataset_HIForward15, process.Dataset_HIForward16, process.Dataset_HIForward17, process.Dataset_HIForward18, process.Dataset_HIForward19, process.Dataset_HIHLTPhysics, process.Dataset_HIHcalNZS, process.Dataset_HIOnlineMonitor, process.Dataset_HIMinimumBias0, process.Dataset_HIMinimumBias1, process.Dataset_HIMinimumBias2, process.Dataset_HIMinimumBias3, process.Dataset_HIPhysicsRawPrime0, process.Dataset_HITrackerNZS, process.Dataset_HIZeroBias0, process.Dataset_HIZeroBias1, process.Dataset_HIZeroBias2, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_JetMET0, process.Dataset_JetMET1, process.Dataset_L1Accept, process.Dataset_MinimumBias, process.Dataset_MonteCarlo, process.Dataset_Muon0, process.Dataset_Muon1, process.Dataset_MuonEG, process.Dataset_MuonShower, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_PPRefDoubleMuon0, process.Dataset_PPRefDoubleMuon1, process.Dataset_PPRefDoubleMuon2, process.Dataset_PPRefDoubleMuon3, process.Dataset_PPRefHardProbes0, process.Dataset_PPRefSingleMuon0, process.Dataset_PPRefZeroBiasPlusForward0, process.Dataset_ParkingDoubleMuonLowMass0, process.Dataset_ParkingDoubleMuonLowMass1, process.Dataset_ParkingDoubleMuonLowMass2, process.Dataset_ParkingDoubleMuonLowMass3, process.Dataset_ParkingDoubleMuonLowMass4, process.Dataset_ParkingDoubleMuonLowMass5, process.Dataset_ParkingDoubleMuonLowMass6, process.Dataset_ParkingDoubleMuonLowMass7, process.Dataset_ParkingHH, process.Dataset_ParkingLLP, process.Dataset_ParkingSingleMuon0, process.Dataset_ParkingVBF0, process.Dataset_ParkingVBF1, process.Dataset_ParkingVBF2, process.Dataset_ParkingVBF3, process.Dataset_ParkingVBF4, process.Dataset_ParkingVBF5, process.Dataset_ParkingVBF6, process.Dataset_ParkingVBF7, process.Dataset_RPCMonitor, process.Dataset_ScoutingPFMonitor, process.Dataset_ScoutingPFRun3, process.Dataset_Tau, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_ZeroBias, process.ALCALowPtJetOutput, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsGatedOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCALumiPixelsCountsPromptHighRate0Output, process.ALCALumiPixelsCountsPromptHighRate1Output, process.ALCALumiPixelsCountsPromptHighRate2Output, process.ALCALumiPixelsCountsPromptHighRate3Output, process.ALCALumiPixelsCountsPromptHighRate4Output, process.ALCALumiPixelsCountsPromptHighRate5Output, process.ALCAP0Output, process.ALCAPHISYMOutput, process.ALCAPPSExpressOutput, process.ALCAPPSPromptOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.DQMPPSRandomOutput, process.HIDQMOutput, process.HIDQMEventDisplayOutput, process.HIDQMGPUvsCPUOutput, process.HIDQMOnlineBeamspotOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.ExpressCosmicsOutput, process.HIExpressOutput, process.HIExpressAlignmentOutput, process.HIExpressRawPrimeOutput, process.HLTMonitorOutput, process.PhysicsHLTPhysics2Output, process.ParkingDoubleMuonLowMass0Output, process.ParkingDoubleMuonLowMass1Output, process.ParkingDoubleMuonLowMass2Output, process.ParkingDoubleMuonLowMass3Output, process.ParkingHHOutput, process.ParkingLLPOutput, process.ParkingSingleMuon0Output, process.ParkingSingleMuon1Output, process.ParkingSingleMuon2Output, process.ParkingSingleMuon3Output, process.ParkingSingleMuon4Output, process.ParkingSingleMuon5Output, process.ParkingSingleMuon6Output, process.ParkingSingleMuon7Output, process.ParkingSingleMuon8Output, process.ParkingSingleMuon9Output, process.ParkingSingleMuon10Output, process.ParkingSingleMuon11Output, process.ParkingVBF0Output, process.ParkingVBF1Output, process.ParkingVBF2Output, process.ParkingVBF3Output, process.PhysicsCommissioningOutput, process.PhysicsDispJetBTagMuEGTauOutput, process.PhysicsEGamma0Output, process.PhysicsEGamma1Output, process.PhysicsHICommissioningOutput, process.PhysicsHIForward0Output, process.PhysicsHIForward1Output, process.PhysicsHIForward2Output, process.PhysicsHIForward3Output, process.PhysicsHIForward4Output, process.PhysicsHIForward5Output, process.PhysicsHIForward6Output, process.PhysicsHIForward7Output, process.PhysicsHIForward8Output, process.PhysicsHIForward9Output, process.PhysicsHIForward10Output, process.PhysicsHIForward11Output, process.PhysicsHIForward12Output, process.PhysicsHIForward13Output, process.PhysicsHIForward14Output, process.PhysicsHIForward15Output, process.PhysicsHIForward16Output, process.PhysicsHIForward17Output, process.PhysicsHIForward18Output, process.PhysicsHIForward19Output, process.PhysicsHIHLTPhysicsOutput, process.PhysicsHIMinimumBias0Output, process.PhysicsHIMinimumBias1Output, process.PhysicsHIMinimumBias2Output, process.PhysicsHIMinimumBias3Output, process.PhysicsHIPhysicsRawPrime0Output, process.PhysicsHIPhysicsRawPrime1Output, process.PhysicsHIPhysicsRawPrime2Output, process.PhysicsHIPhysicsRawPrime3Output, process.PhysicsHIPhysicsRawPrime4Output, process.PhysicsHIPhysicsRawPrime5Output, process.PhysicsHIPhysicsRawPrime6Output, process.PhysicsHIPhysicsRawPrime7Output, process.PhysicsHIPhysicsRawPrime8Output, process.PhysicsHIPhysicsRawPrime9Output, process.PhysicsHIPhysicsRawPrime10Output, process.PhysicsHIPhysicsRawPrime11Output, process.PhysicsHIPhysicsRawPrime12Output, process.PhysicsHIPhysicsRawPrime13Output, process.PhysicsHIPhysicsRawPrime14Output, process.PhysicsHIPhysicsRawPrime15Output, process.PhysicsHIPhysicsRawPrime16Output, process.PhysicsHIPhysicsRawPrime17Output, process.PhysicsHIPhysicsRawPrime18Output, process.PhysicsHIPhysicsRawPrime19Output, process.PhysicsHIPhysicsRawPrime20Output, process.PhysicsHIPhysicsRawPrime21Output, process.PhysicsHIPhysicsRawPrime22Output, process.PhysicsHIPhysicsRawPrime23Output, process.PhysicsHIPhysicsRawPrime24Output, process.PhysicsHIPhysicsRawPrime25Output, process.PhysicsHIPhysicsRawPrime26Output, process.PhysicsHIPhysicsRawPrime27Output, process.PhysicsHIPhysicsRawPrime28Output, process.PhysicsHIPhysicsRawPrime29Output, process.PhysicsHIPhysicsRawPrime30Output, process.PhysicsHIPhysicsRawPrime31Output, process.PhysicsHITrackerNZSOutput, process.PhysicsHIZeroBiasOutput, process.PhysicsHIZeroBiasRAW0Output, process.PhysicsHIZeroBiasRAW1Output, process.PhysicsHIZeroBiasRAW2Output, process.PhysicsHLTPhysics0Output, process.PhysicsHLTPhysics1Output, process.PhysicsHLTPhysics3Output, process.PhysicsJetMET0Output, process.PhysicsJetMET1Output, process.PhysicsMuon0Output, process.PhysicsMuon1Output, process.PhysicsPPRefDoubleMuon0Output, process.PhysicsPPRefDoubleMuon1Output, process.PhysicsPPRefDoubleMuon2Output, process.PhysicsPPRefDoubleMuon3Output, process.PhysicsPPRefHardProbes0Output, process.PhysicsPPRefHardProbes1Output, process.PhysicsPPRefHardProbes2Output, process.PhysicsPPRefSingleMuon0Output, process.PhysicsPPRefSingleMuon1Output, process.PhysicsPPRefSingleMuon2Output, process.PhysicsPPRefZeroBiasPlusForward0Output, process.PhysicsPPRefZeroBiasPlusForward1Output, process.PhysicsPPRefZeroBiasPlusForward2Output, process.PhysicsPPRefZeroBiasPlusForward3Output, process.PhysicsPPRefZeroBiasPlusForward4Output, process.PhysicsPPRefZeroBiasPlusForward5Output, process.PhysicsPPRefZeroBiasPlusForward6Output, process.PhysicsPPRefZeroBiasPlusForward7Output, process.PhysicsPPRefZeroBiasPlusForward8Output, process.PhysicsPPRefZeroBiasPlusForward9Output, process.PhysicsScoutingPFMonitorOutput, process.PhysicsZeroBias0Output, process.PhysicsZeroBias1Output, process.PhysicsZeroBias2Output, process.PhysicsZeroBias3Output, process.NanoDSTOutput, process.RPCMONOutput, process.ScoutingPFOutput, process.PhysicsSpecialHLTPhysics0Output, process.PhysicsSpecialHLTPhysics1Output, process.PhysicsSpecialHLTPhysics2Output, process.PhysicsSpecialHLTPhysics3Output, process.PhysicsSpecialHLTPhysics4Output, process.PhysicsSpecialHLTPhysics5Output, process.PhysicsSpecialHLTPhysics6Output, process.PhysicsSpecialHLTPhysics7Output, process.PhysicsSpecialHLTPhysics8Output, process.PhysicsSpecialHLTPhysics9Output, process.PhysicsSpecialHLTPhysics10Output, process.PhysicsSpecialHLTPhysics11Output, process.PhysicsSpecialHLTPhysics12Output, process.PhysicsSpecialHLTPhysics13Output, process.PhysicsSpecialHLTPhysics14Output, process.PhysicsSpecialHLTPhysics15Output, process.PhysicsSpecialHLTPhysics16Output, process.PhysicsSpecialHLTPhysics17Output, process.PhysicsSpecialHLTPhysics18Output, process.PhysicsSpecialHLTPhysics19Output, process.PhysicsSpecialRandom0Output, process.PhysicsSpecialRandom1Output, process.PhysicsSpecialRandom2Output, process.PhysicsSpecialRandom3Output, process.PhysicsSpecialRandom4Output, process.PhysicsSpecialRandom5Output, process.PhysicsSpecialRandom6Output, process.PhysicsSpecialRandom7Output, process.PhysicsSpecialRandom8Output, process.PhysicsSpecialRandom9Output, process.PhysicsSpecialZeroBias0Output, process.PhysicsSpecialZeroBias1Output, process.PhysicsSpecialZeroBias2Output, process.PhysicsSpecialZeroBias3Output, process.PhysicsSpecialZeroBias4Output, process.PhysicsSpecialZeroBias5Output, process.PhysicsSpecialZeroBias6Output, process.PhysicsSpecialZeroBias7Output, process.PhysicsSpecialZeroBias8Output, process.PhysicsSpecialZeroBias9Output, process.PhysicsSpecialZeroBias10Output, process.PhysicsSpecialZeroBias11Output, process.PhysicsSpecialZeroBias12Output, process.PhysicsSpecialZeroBias13Output, process.PhysicsSpecialZeroBias14Output, process.PhysicsSpecialZeroBias15Output, process.Dataset_SpecialRandom0, process.Dataset_SpecialRandom1, process.Dataset_SpecialRandom2, process.Dataset_SpecialRandom3, process.Dataset_SpecialRandom4, process.Dataset_SpecialRandom5, process.Dataset_SpecialRandom6, process.Dataset_SpecialRandom7, process.Dataset_SpecialRandom8, process.Dataset_SpecialRandom9, process.Dataset_SpecialRandom10, process.Dataset_SpecialRandom11, process.Dataset_SpecialRandom12, process.Dataset_SpecialRandom13, process.Dataset_SpecialRandom14, process.Dataset_SpecialRandom15, process.Dataset_SpecialRandom16, process.Dataset_SpecialRandom17, process.Dataset_SpecialRandom18, process.Dataset_SpecialRandom19, process.Dataset_SpecialZeroBias0, process.Dataset_SpecialZeroBias1, process.Dataset_SpecialZeroBias2, process.Dataset_SpecialZeroBias3, process.Dataset_SpecialZeroBias4, process.Dataset_SpecialZeroBias5, process.Dataset_SpecialZeroBias6, process.Dataset_SpecialZeroBias7, process.Dataset_SpecialZeroBias8, process.Dataset_SpecialZeroBias9, process.Dataset_SpecialZeroBias10, process.Dataset_SpecialZeroBias11, process.Dataset_SpecialZeroBias12, process.Dataset_SpecialZeroBias13, process.Dataset_SpecialZeroBias14, process.Dataset_SpecialZeroBias15, process.Dataset_SpecialZeroBias16, process.Dataset_SpecialZeroBias17, process.Dataset_SpecialZeroBias18, process.Dataset_SpecialZeroBias19, process.Dataset_SpecialZeroBias20, process.Dataset_SpecialZeroBias21, process.Dataset_SpecialZeroBias22, process.Dataset_SpecialZeroBias23, process.Dataset_SpecialZeroBias24, process.Dataset_SpecialZeroBias25, process.Dataset_SpecialZeroBias26, process.Dataset_SpecialZeroBias27, process.Dataset_SpecialZeroBias28, process.Dataset_SpecialZeroBias29, process.Dataset_SpecialZeroBias30, process.Dataset_SpecialZeroBias31, process.Dataset_SpecialHLTPhysics0, process.Dataset_SpecialHLTPhysics1, process.Dataset_SpecialHLTPhysics2, process.Dataset_SpecialHLTPhysics3, process.Dataset_SpecialHLTPhysics4, process.Dataset_SpecialHLTPhysics5, process.Dataset_SpecialHLTPhysics6, process.Dataset_SpecialHLTPhysics7, process.Dataset_SpecialHLTPhysics8, process.Dataset_SpecialHLTPhysics9, process.Dataset_SpecialHLTPhysics10, process.Dataset_SpecialHLTPhysics11, process.Dataset_SpecialHLTPhysics12, process.Dataset_SpecialHLTPhysics13, process.Dataset_SpecialHLTPhysics14, process.Dataset_SpecialHLTPhysics15, process.Dataset_SpecialHLTPhysics16, process.Dataset_SpecialHLTPhysics17, process.Dataset_SpecialHLTPhysics18, process.Dataset_SpecialHLTPhysics19, process.Dataset_ParkingSingleMuon1, process.Dataset_ParkingSingleMuon2, process.Dataset_ParkingSingleMuon3, process.Dataset_ParkingSingleMuon4, process.Dataset_ParkingSingleMuon5, process.Dataset_ParkingSingleMuon6, process.Dataset_ParkingSingleMuon7, process.Dataset_ParkingSingleMuon8, process.Dataset_ParkingSingleMuon9, process.Dataset_ParkingSingleMuon10, process.Dataset_ParkingSingleMuon11, process.Dataset_PPRefZeroBiasPlusForward1, process.Dataset_PPRefZeroBiasPlusForward2, process.Dataset_PPRefZeroBiasPlusForward3, process.Dataset_PPRefZeroBiasPlusForward4, process.Dataset_PPRefZeroBiasPlusForward5, process.Dataset_PPRefZeroBiasPlusForward6, process.Dataset_PPRefZeroBiasPlusForward7, process.Dataset_PPRefZeroBiasPlusForward8, process.Dataset_PPRefZeroBiasPlusForward9, process.Dataset_PPRefZeroBiasPlusForward10, process.Dataset_PPRefZeroBiasPlusForward11, process.Dataset_PPRefZeroBiasPlusForward12, process.Dataset_PPRefZeroBiasPlusForward13, process.Dataset_PPRefZeroBiasPlusForward14, process.Dataset_PPRefZeroBiasPlusForward15, process.Dataset_PPRefZeroBiasPlusForward16, process.Dataset_PPRefZeroBiasPlusForward17, process.Dataset_PPRefZeroBiasPlusForward18, process.Dataset_PPRefZeroBiasPlusForward19, process.Dataset_PPRefZeroBiasPlusForward20, process.Dataset_PPRefZeroBiasPlusForward21, process.Dataset_PPRefZeroBiasPlusForward22, process.Dataset_PPRefZeroBiasPlusForward23, process.Dataset_PPRefZeroBiasPlusForward24, process.Dataset_PPRefSingleMuon1, process.Dataset_PPRefSingleMuon2, process.Dataset_PPRefSingleMuon3, process.Dataset_PPRefHardProbes1, process.Dataset_PPRefHardProbes2, process.Dataset_PPRefHardProbes3, process.Dataset_PPRefHardProbes4, process.PhysicsPPRefHardProbes3Output, process.PhysicsPPRefHardProbes4Output, process.PhysicsPPRefSingleMuon3Output, process.PhysicsPPRefZeroBiasPlusForward10Output, process.PhysicsPPRefZeroBiasPlusForward11Output, process.PhysicsPPRefZeroBiasPlusForward12Output, process.PhysicsPPRefZeroBiasPlusForward13Output, process.PhysicsPPRefZeroBiasPlusForward14Output, process.PhysicsPPRefZeroBiasPlusForward15Output, process.PhysicsPPRefZeroBiasPlusForward16Output, process.PhysicsPPRefZeroBiasPlusForward18Output, process.PhysicsPPRefZeroBiasPlusForward19Output, process.PhysicsPPRefZeroBiasPlusForward17Output, process.PhysicsPPRefZeroBiasPlusForward24Output, process.PhysicsPPRefZeroBiasPlusForward23Output, process.PhysicsPPRefZeroBiasPlusForward22Output, process.PhysicsPPRefZeroBiasPlusForward21Output, process.PhysicsPPRefZeroBiasPlusForward20Output, process.Dataset_HIPhysicsRawPrime1, process.Dataset_HIPhysicsRawPrime2, process.Dataset_HIPhysicsRawPrime3, process.Dataset_HIPhysicsRawPrime4, process.Dataset_HIPhysicsRawPrime5, process.Dataset_HIPhysicsRawPrime6, process.Dataset_HIPhysicsRawPrime7, process.Dataset_HIPhysicsRawPrime8, process.Dataset_HIPhysicsRawPrime9, process.Dataset_HIPhysicsRawPrime10, process.Dataset_HIPhysicsRawPrime11, process.Dataset_HIPhysicsRawPrime12, process.Dataset_HIPhysicsRawPrime13, process.Dataset_HIPhysicsRawPrime14, process.Dataset_HIPhysicsRawPrime15, process.Dataset_HIPhysicsRawPrime16, process.Dataset_HIPhysicsRawPrime17, process.Dataset_HIPhysicsRawPrime18, process.Dataset_HIPhysicsRawPrime19, process.Dataset_HIPhysicsRawPrime20, process.Dataset_HIPhysicsRawPrime21, process.Dataset_HIPhysicsRawPrime22, process.Dataset_HIPhysicsRawPrime23, process.Dataset_HIPhysicsRawPrime24, process.Dataset_HIPhysicsRawPrime25, process.Dataset_HIPhysicsRawPrime26, process.Dataset_HIPhysicsRawPrime27, process.Dataset_HIPhysicsRawPrime28, process.Dataset_HIPhysicsRawPrime29, process.Dataset_HIPhysicsRawPrime30, process.Dataset_HIPhysicsRawPrime31, process.Dataset_HIPhysicsRawPrime32, process.Dataset_HIPhysicsRawPrime33, process.Dataset_HIPhysicsRawPrime34, process.Dataset_HIPhysicsRawPrime35, process.Dataset_HIPhysicsRawPrime36, process.Dataset_HIPhysicsRawPrime37, process.Dataset_HIPhysicsRawPrime38, process.Dataset_HIPhysicsRawPrime39, process.Dataset_HIPhysicsRawPrime40, process.Dataset_HIPhysicsRawPrime41, process.Dataset_HIPhysicsRawPrime42, process.Dataset_HIPhysicsRawPrime43, process.Dataset_HIPhysicsRawPrime44, process.Dataset_HIPhysicsRawPrime45, process.Dataset_HIPhysicsRawPrime46, process.Dataset_HIPhysicsRawPrime47, process.Dataset_HIPhysicsRawPrime48, process.Dataset_HIPhysicsRawPrime49, process.Dataset_HIPhysicsRawPrime50, process.Dataset_HIPhysicsRawPrime51, process.Dataset_HIPhysicsRawPrime52, process.Dataset_HIPhysicsRawPrime53, process.Dataset_HIPhysicsRawPrime54, process.Dataset_HIPhysicsRawPrime55, process.Dataset_HIPhysicsRawPrime56, process.Dataset_HIPhysicsRawPrime57, process.Dataset_HIPhysicsRawPrime58, process.Dataset_HIPhysicsRawPrime59, process.PhysicsHIPhysicsRawPrime59Output, process.PhysicsHIPhysicsRawPrime58Output, process.PhysicsHIPhysicsRawPrime57Output, process.PhysicsHIPhysicsRawPrime56Output, process.PhysicsHIPhysicsRawPrime55Output, process.PhysicsHIPhysicsRawPrime54Output, process.PhysicsHIPhysicsRawPrime53Output, process.PhysicsHIPhysicsRawPrime52Output, process.PhysicsHIPhysicsRawPrime51Output, process.PhysicsHIPhysicsRawPrime50Output, process.PhysicsHIPhysicsRawPrime49Output, process.PhysicsHIPhysicsRawPrime48Output, process.PhysicsHIPhysicsRawPrime47Output, process.PhysicsHIPhysicsRawPrime46Output, process.PhysicsHIPhysicsRawPrime45Output, process.PhysicsHIPhysicsRawPrime44Output, process.PhysicsHIPhysicsRawPrime42Output, process.PhysicsHIPhysicsRawPrime41Output, process.PhysicsHIPhysicsRawPrime40Output, process.PhysicsHIPhysicsRawPrime39Output, process.PhysicsHIPhysicsRawPrime38Output, process.PhysicsHIPhysicsRawPrime37Output, process.PhysicsHIPhysicsRawPrime36Output, process.PhysicsHIPhysicsRawPrime35Output, process.PhysicsHIPhysicsRawPrime34Output, process.PhysicsHIPhysicsRawPrime33Output, process.PhysicsHIPhysicsRawPrime32Output, process.PhysicsHIPhysicsRawPrime43Output, )) +process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_EcalPhiSymForHI_v12, process.AlCa_EcalEtaEBonly_v25, process.AlCa_EcalEtaEEonly_v25, process.AlCa_EcalPi0EBonly_v25, process.AlCa_EcalPi0EEonly_v25, process.AlCa_EcalEtaEBonlyForHI_v13, process.AlCa_EcalEtaEEonlyForHI_v13, process.AlCa_EcalPi0EBonlyForHI_v13, process.AlCa_EcalPi0EEonlyForHI_v13, process.AlCa_HIEcalEtaEBonly_v12, process.AlCa_HIEcalEtaEEonly_v12, process.AlCa_HIEcalPi0EBonly_v12, process.AlCa_HIEcalPi0EEonly_v12, process.AlCa_RPCMuonNormalisation_v23, process.AlCa_RPCMuonNormalisationForHI_v11, process.AlCa_HIRPCMuonNormalisation_v11, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.AlCa_PFJet40_v32, process.AlCa_PFJet40_CPUOnly_v11, process.AlCa_AK8PFJet40_v27, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DQM_HIPixelReconstruction_v12, process.DQM_HIEcalReconstruction_v10, process.DQM_HIHcalReconstruction_v8, process.DQM_Random_v1, process.DQM_ZeroBias_v3, process.DST_ZeroBias_v11, process.DST_Physics_v16, process.DST_PFScouting_DoubleMuon_v6, process.DST_PFScouting_DoubleEG_v6, process.DST_PFScouting_JetHT_v6, process.DST_PFScouting_AXOVLoose_v4, process.DST_PFScouting_AXOLoose_v4, process.DST_PFScouting_AXONominal_v6, process.DST_PFScouting_AXOTight_v6, process.DST_PFScouting_AXOVTight_v4, process.DST_PFScouting_CICADAVLoose_v2, process.DST_PFScouting_CICADALoose_v2, process.DST_PFScouting_CICADAMedium_v2, process.DST_PFScouting_CICADATight_v2, process.DST_PFScouting_CICADAVTight_v2, process.DST_PFScouting_SingleMuon_v6, process.DST_PFScouting_SinglePhotonEB_v3, process.DST_PFScouting_ZeroBias_v4, process.HLT_EphemeralPhysics_v9, process.HLT_EphemeralZeroBias_v9, process.HLT_HIEphemeralPhysics_v5, process.HLT_HIEphemeralZeroBias_v5, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Alignment_v8, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_IsolatedBunches_v12, process.HLT_ZeroBias_FirstBXAfterTrain_v10, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_ZeroBias_FirstCollisionInTrain_v11, process.HLT_ZeroBias_LastCollisionInTrain_v10, process.HLT_HT300_Beamspot_v23, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_PFJet40_GPUvsCPU_v7, process.HLT_AK8PFJet380_SoftDropMass30_v6, process.HLT_AK8PFJet400_SoftDropMass30_v6, process.HLT_AK8PFJet425_SoftDropMass30_v6, process.HLT_AK8PFJet450_SoftDropMass30_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, process.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, process.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, process.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, process.HLT_CaloJet500_NoJetID_v22, process.HLT_CaloJet550_NoJetID_v17, process.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, process.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, process.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, process.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, process.HLT_DoubleEle25_CaloIdL_MW_v15, process.HLT_DoubleEle27_CaloIdL_MW_v15, process.HLT_DoubleEle33_CaloIdL_MW_v28, process.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, process.HLT_Mu27_Ele37_CaloIdL_MW_v17, process.HLT_Mu37_Ele27_CaloIdL_MW_v17, process.HLT_Mu37_TkMu27_v17, process.HLT_DoubleMu4_3_Bs_v27, process.HLT_DoubleMu4_3_Jpsi_v27, process.HLT_DoubleMu4_3_LowMass_v13, process.HLT_DoubleMu4_LowMass_Displaced_v13, process.HLT_Mu0_L1DoubleMu_v13, process.HLT_Mu4_L1DoubleMu_v13, process.HLT_DoubleMu2_Jpsi_LowPt_v6, process.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, process.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, process.HLT_DoubleMu3_Trk_Tau3mu_v24, process.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, process.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, process.HLT_DoubleMu4_MuMuTrk_Displaced_v27, process.HLT_Mu3_PFJet40_v28, process.HLT_Mu7p5_L2Mu2_Jpsi_v22, process.HLT_Mu7p5_L2Mu2_Upsilon_v22, process.HLT_Mu3_L1SingleMu5orSingleMu7_v13, process.HLT_Mu0_Barrel_v6, process.HLT_Mu0_Barrel_L1HP6_v3, process.HLT_Mu0_Barrel_L1HP7_v3, process.HLT_Mu0_Barrel_L1HP8_v4, process.HLT_Mu0_Barrel_L1HP9_v4, process.HLT_Mu0_Barrel_L1HP10_v6, process.HLT_Mu0_Barrel_L1HP11_v6, process.HLT_Mu0_Barrel_L1HP6_IP6_v3, process.HLT_Mu6_Barrel_L1HP7_IP6_v3, process.HLT_Mu7_Barrel_L1HP8_IP6_v4, process.HLT_Mu8_Barrel_L1HP9_IP6_v4, process.HLT_Mu9_Barrel_L1HP10_IP6_v6, process.HLT_Mu10_Barrel_L1HP11_IP6_v6, process.HLT_DoublePhoton33_CaloIdL_v17, process.HLT_DoublePhoton70_v17, process.HLT_DoublePhoton85_v25, process.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, process.HLT_Ele30_WPTight_Gsf_v11, process.HLT_Ele32_WPTight_Gsf_v25, process.HLT_Ele35_WPTight_Gsf_v19, process.HLT_Ele38_WPTight_Gsf_v19, process.HLT_Ele40_WPTight_Gsf_v19, process.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, process.HLT_IsoMu20_v27, process.HLT_IsoMu24_v25, process.HLT_IsoMu24_HLTTracking_v1, process.HLT_IsoMu24_eta2p1_v27, process.HLT_IsoMu27_v28, process.HLT_UncorrectedJetE30_NoBPTX_v14, process.HLT_UncorrectedJetE30_NoBPTX3BX_v14, process.HLT_UncorrectedJetE60_NoBPTX3BX_v14, process.HLT_UncorrectedJetE70_NoBPTX3BX_v14, process.HLT_L1SingleMuCosmics_v8, process.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, process.HLT_L2Mu10_NoVertex_NoBPTX_v15, process.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, process.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, process.HLT_L2Mu23NoVtx_2Cha_v10, process.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, process.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, process.HLT_DoubleL2Mu50_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, process.HLT_Mu30_TkMu0_Psi_v13, process.HLT_Mu30_TkMu0_Upsilon_v13, process.HLT_Mu25_TkMu0_Phi_v20, process.HLT_Mu15_v15, process.HLT_Mu20_v24, process.HLT_Mu27_v25, process.HLT_Mu50_v25, process.HLT_Mu55_v15, process.HLT_CascadeMu100_v13, process.HLT_HighPtTkMu100_v12, process.HLT_DiPFJetAve40_v26, process.HLT_DiPFJetAve60_v26, process.HLT_DiPFJetAve80_v26, process.HLT_DiPFJetAve140_v25, process.HLT_DiPFJetAve200_v25, process.HLT_DiPFJetAve260_v26, process.HLT_DiPFJetAve320_v26, process.HLT_DiPFJetAve400_v26, process.HLT_DiPFJetAve500_v26, process.HLT_DiPFJetAve60_HFJEC_v27, process.HLT_DiPFJetAve80_HFJEC_v29, process.HLT_DiPFJetAve100_HFJEC_v29, process.HLT_DiPFJetAve160_HFJEC_v28, process.HLT_DiPFJetAve220_HFJEC_v28, process.HLT_DiPFJetAve260_HFJEC_v11, process.HLT_DiPFJetAve300_HFJEC_v28, process.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, process.HLT_AK8PFJet40_v28, process.HLT_AK8PFJet60_v27, process.HLT_AK8PFJet80_v28, process.HLT_AK8PFJet140_v27, process.HLT_AK8PFJet200_v27, process.HLT_AK8PFJet260_v28, process.HLT_AK8PFJet320_v28, process.HLT_AK8PFJet400_v28, process.HLT_AK8PFJet450_v28, process.HLT_AK8PFJet500_v28, process.HLT_AK8PFJet550_v23, process.HLT_PFJet40_v33, process.HLT_PFJet60_v33, process.HLT_PFJet80_v33, process.HLT_PFJet110_v12, process.HLT_PFJet140_v31, process.HLT_PFJet200_v31, process.HLT_PFJet260_v32, process.HLT_PFJet320_v32, process.HLT_PFJet400_v32, process.HLT_PFJet450_v33, process.HLT_PFJet500_v33, process.HLT_PFJet550_v23, process.HLT_PFJetFwd40_v31, process.HLT_PFJetFwd60_v31, process.HLT_PFJetFwd80_v30, process.HLT_PFJetFwd140_v30, process.HLT_PFJetFwd200_v30, process.HLT_PFJetFwd260_v31, process.HLT_PFJetFwd320_v31, process.HLT_PFJetFwd400_v31, process.HLT_PFJetFwd450_v31, process.HLT_PFJetFwd500_v31, process.HLT_AK8PFJetFwd40_v27, process.HLT_AK8PFJetFwd60_v26, process.HLT_AK8PFJetFwd80_v26, process.HLT_AK8PFJetFwd140_v26, process.HLT_AK8PFJetFwd200_v26, process.HLT_AK8PFJetFwd260_v27, process.HLT_AK8PFJetFwd320_v27, process.HLT_AK8PFJetFwd400_v27, process.HLT_AK8PFJetFwd450_v27, process.HLT_AK8PFJetFwd500_v27, process.HLT_PFHT180_v29, process.HLT_PFHT250_v29, process.HLT_PFHT370_v29, process.HLT_PFHT430_v29, process.HLT_PFHT510_v29, process.HLT_PFHT590_v29, process.HLT_PFHT680_v29, process.HLT_PFHT780_v29, process.HLT_PFHT890_v29, process.HLT_PFHT1050_v30, process.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, process.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, process.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, process.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, process.HLT_PFMET120_PFMHT120_IDTight_v32, process.HLT_PFMET130_PFMHT130_IDTight_v32, process.HLT_PFMET140_PFMHT140_IDTight_v32, process.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, process.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, process.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, process.HLT_L1ETMHadSeeds_v10, process.HLT_CaloMHT90_v14, process.HLT_CaloMET90_NotCleaned_v14, process.HLT_CaloMET350_NotCleaned_v14, process.HLT_PFMET200_NotCleaned_v21, process.HLT_PFMET250_NotCleaned_v21, process.HLT_PFMET300_NotCleaned_v21, process.HLT_PFMET200_BeamHaloCleaned_v21, process.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, process.HLT_MET105_IsoTrk50_v19, process.HLT_MET120_IsoTrk50_v19, process.HLT_Mu12eta2p3_v13, process.HLT_Mu12eta2p3_PFJet40_v13, process.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Photon300_NoHE_v23, process.HLT_Mu8_TrkIsoVVL_v24, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, process.HLT_Mu17_TrkIsoVVL_v25, process.HLT_Mu19_TrkIsoVVL_v16, process.HLT_BTagMu_AK4DiJet20_Mu5_v25, process.HLT_BTagMu_AK4DiJet40_Mu5_v25, process.HLT_BTagMu_AK4DiJet70_Mu5_v25, process.HLT_BTagMu_AK4DiJet110_Mu5_v25, process.HLT_BTagMu_AK4DiJet170_Mu5_v24, process.HLT_BTagMu_AK4Jet300_Mu5_v24, process.HLT_BTagMu_AK8DiJet170_Mu5_v21, process.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, process.HLT_BTagMu_AK8Jet300_Mu5_v24, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, process.HLT_Photon33_v15, process.HLT_Photon50_v23, process.HLT_Photon75_v23, process.HLT_Photon90_v23, process.HLT_Photon120_v23, process.HLT_Photon150_v17, process.HLT_Photon175_v25, process.HLT_Photon200_v24, process.HLT_Photon45EB_v3, process.HLT_Photon40EB_v3, process.HLT_Photon50EB_v4, process.HLT_Photon30EB_TightID_TightIso_v12, process.HLT_Photon40EB_TightID_TightIso_v3, process.HLT_Photon45EB_TightID_TightIso_v3, process.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_v8, process.HLT_Photon55EB_TightID_TightIso_v4, process.HLT_Photon75EB_TightID_TightIso_v8, process.HLT_Photon90EB_TightID_TightIso_v8, process.HLT_Photon110EB_TightID_TightIso_v12, process.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon100EBHE10_v12, process.HLT_Photon50_R9Id90_HE10_IsoM_v24, process.HLT_Photon75_R9Id90_HE10_IsoM_v24, process.HLT_Photon90_R9Id90_HE10_IsoM_v24, process.HLT_Photon120_R9Id90_HE10_IsoM_v24, process.HLT_Photon165_R9Id90_HE10_IsoM_v25, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, process.HLT_DiphotonMVA14p25_Mass90_v3, process.HLT_DiphotonMVA14p25_Tight_Mass90_v3, process.HLT_Photon35_TwoProngs35_v13, process.HLT_IsoMu24_TwoProngs35_v13, process.HLT_Dimuon0_Jpsi_L1_NoOS_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, process.HLT_Dimuon0_Jpsi_v20, process.HLT_Dimuon0_Jpsi_NoVertexing_v20, process.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi3p5_Muon2_v17, process.HLT_Dimuon0_Upsilon_L1_4p5_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, process.HLT_Dimuon0_Upsilon_NoVertexing_v19, process.HLT_Dimuon0_LowMass_L1_0er1p5_v20, process.HLT_Dimuon0_LowMass_v20, process.HLT_Dimuon0_LowMass_L1_4_v20, process.HLT_Dimuon0_LowMass_L1_TM530_v18, process.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, process.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, process.HLT_TripleMu_10_5_5_DZ_v22, process.HLT_TripleMu_12_10_5_v22, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, process.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, process.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, process.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, process.HLT_DoubleMu4_3_LowMass_SS_v6, process.HLT_DoubleMu4_Jpsi_Displaced_v19, process.HLT_DoubleMu4_Jpsi_NoVertexing_v19, process.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, process.HLT_DoubleMu4_JpsiTrk_Bc_v12, process.HLT_DoubleMu43NoFiltersNoVtx_v14, process.HLT_DoubleMu48NoFiltersNoVtx_v14, process.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, process.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, process.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, process.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, process.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, process.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, process.HLT_Ele28_HighEta_SC20_Mass55_v23, process.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, process.HLT_Ele15_IsoVVVL_PFHT450_v28, process.HLT_Ele50_IsoVVVL_PFHT450_v28, process.HLT_Ele15_IsoVVVL_PFHT600_v32, process.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, process.HLT_Mu15_IsoVVVL_PFHT450_v27, process.HLT_Mu50_IsoVVVL_PFHT450_v27, process.HLT_Mu15_IsoVVVL_PFHT600_v31, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, process.HLT_Dimuon10_Upsilon_y1p4_v13, process.HLT_Dimuon12_Upsilon_y1p4_v14, process.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, process.HLT_Dimuon25_Jpsi_v26, process.HLT_Dimuon14_PsiPrime_v25, process.HLT_Dimuon14_PsiPrime_noCorrL1_v17, process.HLT_Dimuon18_PsiPrime_v26, process.HLT_Dimuon18_PsiPrime_noCorrL1_v18, process.HLT_Dimuon24_Upsilon_noCorrL1_v18, process.HLT_Dimuon24_Phi_noCorrL1_v18, process.HLT_Dimuon25_Jpsi_noCorrL1_v18, process.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, process.HLT_DoubleIsoMu20_eta2p1_v19, process.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, process.HLT_Mu8_v24, process.HLT_Mu17_v25, process.HLT_Mu19_v16, process.HLT_Mu17_Photon30_IsoCaloId_v18, process.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, process.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, process.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, process.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, process.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, process.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, process.HLT_PFHT400_SixPFJet32_v21, process.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, process.HLT_PFHT450_SixPFJet36_v20, process.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, process.HLT_PFHT350_v31, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, process.HLT_ECALHT800_v20, process.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, process.HLT_Photon20_HoverELoose_v20, process.HLT_Photon30_HoverELoose_v20, process.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, process.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, process.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, process.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, process.HLT_Mu18_Mu9_SameSign_v16, process.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, process.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, process.HLT_QuadPFJet103_88_75_15_v17, process.HLT_QuadPFJet105_88_76_15_v17, process.HLT_QuadPFJet111_90_80_15_v17, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, process.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, process.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, process.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, process.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, process.HLT_PFHT250_QuadPFJet25_v6, process.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, process.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, process.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, process.HLT_QuadPFJet100_88_70_30_v10, process.HLT_QuadPFJet105_88_75_30_v9, process.HLT_QuadPFJet111_90_80_30_v9, process.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, process.HLT_AK8PFJet220_SoftDropMass40_v13, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, process.HLT_AK8PFJet230_SoftDropMass40_v13, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_Nch45_v6, process.HLT_AK8PFJet275_Nch40_v6, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PFHT250_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, process.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, process.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, process.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, process.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, process.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu10NoVtx_2Cha_v9, process.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_L3Mu10NoVtx_v10, process.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, process.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, process.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, process.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, process.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, process.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, process.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, process.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, process.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, process.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, process.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, process.HLT_L1Mu6HT240_v9, process.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, process.HLT_HT350_v7, process.HLT_HT425_v19, process.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT550_DisplacedDijet60_Inclusive_v23, process.HLT_HT650_DisplacedDijet60_Inclusive_v23, process.HLT_CaloMET60_DTCluster50_v11, process.HLT_CaloMET60_DTClusterNoMB1S50_v11, process.HLT_L1MET_DTCluster50_v11, process.HLT_L1MET_DTClusterNoMB1S50_v11, process.HLT_CscCluster_Loose_v10, process.HLT_CscCluster_Medium_v10, process.HLT_CscCluster_Tight_v10, process.HLT_CscCluster50_Photon20Unseeded_v4, process.HLT_CscCluster50_Photon30Unseeded_v4, process.HLT_CscCluster100_Ele5_v4, process.HLT_CscCluster100_Mu5_v6, process.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, process.HLT_DoubleCscCluster75_v7, process.HLT_IsoTrk200_L1SingleMuShower_v4, process.HLT_IsoTrk400_L1SingleMuShower_v4, process.HLT_DoubleCscCluster100_v7, process.HLT_L1CSCShower_DTCluster50_v10, process.HLT_L1CSCShower_DTCluster75_v10, process.HLT_PFMET105_IsoTrk50_v13, process.HLT_L1SingleLLPJet_v7, process.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, process.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, process.HLT_DiPhoton10Time1ns_v10, process.HLT_DiPhoton10Time1p2ns_v10, process.HLT_DiPhoton10Time1p4ns_v10, process.HLT_DiPhoton10Time1p6ns_v10, process.HLT_DiPhoton10Time1p8ns_v10, process.HLT_DiPhoton10Time2ns_v10, process.HLT_DiPhoton10_CaloIdL_v10, process.HLT_DoubleEle6p5_eta1p22_mMax6_v10, process.HLT_DoubleEle8_eta1p22_mMax6_v10, process.HLT_DoubleEle10_eta1p22_mMax6_v10, process.HLT_SingleEle8_v9, process.HLT_SingleEle8_SingleEGL1_v9, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Mu50_L1SingleMuShower_v11, process.HLT_IsoMu24_OneProng32_v9, process.HLT_Photon32_OneProng32_M50To105_v10, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, process.HLT_VBF_DiPFJet125_45_Mjj1050_v8, process.HLT_VBF_DiPFJet125_45_Mjj1200_v6, process.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, process.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, process.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, process.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_PFJet200_TimeLtNeg2p5ns_v10, process.HLT_PFJet200_TimeGt2p5ns_v10, process.HLT_Photon50_TimeLtNeg2p5ns_v7, process.HLT_Photon50_TimeGt2p5ns_v7, process.HLT_PPSMaxTracksPerArm1_v9, process.HLT_PPSMaxTracksPerRP4_v9, process.HLT_PPSRandom_v1, process.HLT_HIL1NotBptxOR_v14, process.HLT_HIL1UnpairedBunchBptxPlus_v14, process.HLT_HIL1UnpairedBunchBptxMinus_v14, process.HLT_HIPhysics_v14, process.HLT_HIPhysicsForZS_v14, process.HLT_HIRandom_v7, process.HLT_HIRandom_HighRate_v3, process.HLT_HIHcalNZS_v14, process.HLT_HIHcalPhiSym_v14, process.HLT_HIZeroBias_v14, process.HLT_HIZeroBias_HighRate_v7, process.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, process.HLT_HIZeroBias_HighRateRAW_v4, process.HLT_HIMinimumBiasHF1AND_v7, process.HLT_HIMinimumBiasHF1AND_copy_v6, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, process.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, process.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1, process.HLT_HIL1Centrality30_50_v7, process.HLT_HIL1_UCC_0_0p5_v7, process.HLT_HIL1_UCC_0_1_v7, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet80Eta5p1_v14, process.HLT_HIPuAK4CaloJet100Eta5p1_v14, process.HLT_HIPuAK4CaloJet120Eta2p1_v7, process.HLT_HIPuAK4CaloJet120Eta5p1_v14, process.HLT_HIPuAK4CaloJet40Fwd_v7, process.HLT_HIPuAK4CaloJet60Fwd_v7, process.HLT_HIPuAK4CaloJet80Fwd_v7, process.HLT_HIPuAK4CaloJet100Fwd_v7, process.HLT_HIPuAK4CaloJet120Fwd_v7, process.HLT_HIGEDPhoton10_v14, process.HLT_HIGEDPhoton10_EB_v14, process.HLT_HIGEDPhoton20_v14, process.HLT_HIGEDPhoton20_EB_v14, process.HLT_HIGEDPhoton30_v14, process.HLT_HIGEDPhoton30_EB_v14, process.HLT_HIGEDPhoton40_v14, process.HLT_HIGEDPhoton40_EB_v14, process.HLT_HIGEDPhoton50_v14, process.HLT_HIGEDPhoton50_EB_v14, process.HLT_HIGEDPhoton60_v14, process.HLT_HIGEDPhoton60_EB_v14, process.HLT_HIDoubleGEDPhoton20_v7, process.HLT_HIEle10Gsf_v14, process.HLT_HIEle15Gsf_v14, process.HLT_HIEle20Gsf_v14, process.HLT_HIEle30Gsf_v14, process.HLT_HIEle40Gsf_v14, process.HLT_HIEle50Gsf_v14, process.HLT_HIEle15Ele10Gsf_v14, process.HLT_HIEle15Ele10GsfMass50_v14, process.HLT_HIDoubleEle10Gsf_v14, process.HLT_HIDoubleEle10GsfMass50_v14, process.HLT_HIDoubleEle15Gsf_v14, process.HLT_HIDoubleEle15GsfMass50_v14, process.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_NotMBHF2_v5, process.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, process.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1, process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1, process.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, process.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, process.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_Random_HighRate_v1, process.HLT_HIUPC_HFafterglowCombined_v1, process.HLT_HIL1SingleMuOpen_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality40to100_v1, process.HLT_HIL1SingleMu0_v7, process.HLT_HIL1SingleMu0_Open_v7, process.HLT_HIL1SingleMu0_Cosmic_v7, process.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, process.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, process.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, process.HLT_HIL2DoubleMuOpen_SS_v1, process.HLT_HIL2DoubleMuOpen_OS_v1, process.HLT_HIL1DoubleMu0_v7, process.HLT_HIL2DoubleMu0_SQ_v1, process.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, process.HLT_HIL1DoubleMu0_SQ_v7, process.HLT_HIL2SingleMuOpen_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality40to100_v1, process.HLT_HIL2SingleMu3_Open_v7, process.HLT_HIL2SingleMu5_v7, process.HLT_HIL2SingleMu7_v7, process.HLT_HIL2SingleMu12_v1, process.HLT_HIL2DoubleMu0_Open_v7, process.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu0_M7to15_Open_v7, process.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu3_M7to15_Open_v7, process.HLT_HIL3SingleMu3_Open_v7, process.HLT_HIL3SingleMu5_v7, process.HLT_HIL3SingleMu7_v7, process.HLT_HIL3SingleMu12_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, process.HLT_HIL3DoubleMu0_M0toInf_Open_v7, process.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu0_M7to15_Open_v7, process.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, process.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu2_M7to15_Open_v7, process.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, process.HLT_HICscCluster_Loose_v7, process.HLT_HICscCluster_Medium_v7, process.HLT_HICscCluster_Tight_v7, process.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, process.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, process.HLT_HIL1NotBptxORForPPRef_v9, process.HLT_HIHT80_Beamspot_ppRef5TeV_v15, process.HLT_PPRefZeroBias_v6, process.HLT_AK4CaloJet40_v6, process.HLT_AK4CaloJet60_v6, process.HLT_AK4CaloJet70_v6, process.HLT_AK4CaloJet80_v6, process.HLT_AK4CaloJet100_v6, process.HLT_AK4CaloJet120_v6, process.HLT_AK4CaloJetFwd40_v6, process.HLT_AK4CaloJetFwd60_v6, process.HLT_AK4CaloJetFwd70_v6, process.HLT_AK4CaloJetFwd80_v6, process.HLT_AK4CaloJetFwd100_v6, process.HLT_AK4CaloJetFwd120_v6, process.HLT_AK4PFJet40_v8, process.HLT_AK4PFJet60_v8, process.HLT_AK4PFJet80_v8, process.HLT_AK4PFJet100_v8, process.HLT_AK4PFJet120_v8, process.HLT_AK4PFJetFwd40_v8, process.HLT_AK4PFJetFwd60_v8, process.HLT_AK4PFJetFwd80_v8, process.HLT_AK4PFJetFwd100_v8, process.HLT_AK4PFJetFwd120_v8, process.HLT_PPRefDoubleEle10Gsf_v6, process.HLT_PPRefDoubleEle10GsfMass50_v6, process.HLT_PPRefDoubleEle15Gsf_v6, process.HLT_PPRefDoubleEle15GsfMass50_v6, process.HLT_PPRefEle15Ele10Gsf_v6, process.HLT_PPRefEle15Ele10GsfMass50_v6, process.HLT_PPRefEle10Gsf_v6, process.HLT_PPRefEle15Gsf_v6, process.HLT_PPRefEle20Gsf_v7, process.HLT_PPRefEle30Gsf_v7, process.HLT_PPRefEle40Gsf_v6, process.HLT_PPRefEle50Gsf_v6, process.HLT_PPRefGEDPhoton10_v6, process.HLT_PPRefGEDPhoton10_EB_v6, process.HLT_PPRefGEDPhoton20_v6, process.HLT_PPRefGEDPhoton20_EB_v6, process.HLT_PPRefGEDPhoton30_v6, process.HLT_PPRefGEDPhoton30_EB_v6, process.HLT_PPRefGEDPhoton40_v6, process.HLT_PPRefGEDPhoton40_EB_v6, process.HLT_PPRefGEDPhoton50_v6, process.HLT_PPRefGEDPhoton50_EB_v6, process.HLT_PPRefGEDPhoton60_v6, process.HLT_PPRefGEDPhoton60_EB_v6, process.HLT_PPRefDoubleGEDPhoton20_v1, process.HLT_PPRefL1DoubleMu0_v6, process.HLT_PPRefL1DoubleMu0_SQ_v1, process.HLT_PPRefL1DoubleMu0_Open_v6, process.HLT_PPRefL1DoubleMu2_v1, process.HLT_PPRefL1DoubleMu2_SQ_v1, process.HLT_PPRefL1SingleMu0_Cosmics_v6, process.HLT_PPRefL1SingleMu7_v6, process.HLT_PPRefL1SingleMu12_v6, process.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, process.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, process.HLT_PPRefL2DoubleMu0_v6, process.HLT_PPRefL2DoubleMu0_Open_v6, process.HLT_PPRefL2SingleMu7_v6, process.HLT_PPRefL2SingleMu12_v6, process.HLT_PPRefL2SingleMu15_v6, process.HLT_PPRefL2SingleMu20_v6, process.HLT_PPRefL3DoubleMu0_v8, process.HLT_PPRefL3DoubleMu0_Open_v8, process.HLT_PPRefL3SingleMu3_v8, process.HLT_PPRefL3SingleMu5_v8, process.HLT_PPRefL3SingleMu7_v8, process.HLT_PPRefL3SingleMu12_v8, process.HLT_PPRefL3SingleMu15_v8, process.HLT_PPRefL3SingleMu20_v8, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, process.HLT_PPRefCscCluster_Loose_v6, process.HLT_PPRefCscCluster_Medium_v6, process.HLT_PPRefCscCluster_Tight_v6, process.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, process.HLT_PPRefUPC_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_ZDC1nOR_v1, process.HLT_PPRefZeroBias_FirstCollisionInTrain_v1, process.MC_ReducedIterativeTracking_v22, process.MC_AK4CaloJets_v19, process.MC_AK4CaloJetsFromPV_v18, process.MC_CaloHT_v18, process.MC_AK8CaloHT_v18, process.MC_CaloMHT_v18, process.MC_AK4PFJets_v29, process.MC_PFHT_v28, process.MC_AK8PFJets_v29, process.MC_AK8PFHT_v28, process.MC_CaloMET_v18, process.MC_CaloMET_JetIdCleaned_v19, process.MC_PFMET_v29, process.MC_PFMHT_v28, process.MC_AK4PFJetPNet_v5, process.MC_AK8PFJetPNet_v5, process.MC_Egamma_Open_v8, process.MC_Egamma_Open_Unseeded_v8, process.MC_Ele5_WPTight_Gsf_v18, process.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, process.MC_DoubleEle5_CaloIdL_MW_v26, process.MC_IsoMu_v27, process.MC_DoubleMu_TrkIsoVVL_DZ_v23, process.MC_DoubleMuNoFiltersNoVtx_v17, process.MC_PFScouting_v6, process.HLT_SpecialHLTPhysics_v7, process.AlCa_LumiPixelsCounts_RandomHighRate_v4, process.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, process.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, process.HLT_L1AXOVTight_v4, process.HLT_L1SingleMuOpen_v6, process.HLT_L1SingleMuOpen_DT_v6, process.HLT_L1SingleMu3_v5, process.HLT_L1SingleMu5_v5, process.HLT_L1SingleMu7_v5, process.HLT_L1DoubleMu0_v5, process.HLT_L1SingleJet8erHE_v5, process.HLT_L1SingleJet10erHE_v5, process.HLT_L1SingleJet12erHE_v5, process.HLT_L1SingleJet35_v5, process.HLT_L1SingleJet200_v5, process.HLT_L1SingleEG8er2p5_v4, process.HLT_L1SingleEG10er2p5_v4, process.HLT_L1SingleEG15er2p5_v4, process.HLT_L1SingleEG26er2p5_v4, process.HLT_L1SingleEG28er2p5_v4, process.HLT_L1SingleEG28er2p1_v4, process.HLT_L1SingleEG28er1p5_v4, process.HLT_L1SingleEG34er2p5_v4, process.HLT_L1SingleEG36er2p5_v4, process.HLT_L1SingleEG38er2p5_v4, process.HLT_L1SingleEG40er2p5_v4, process.HLT_L1SingleEG42er2p5_v4, process.HLT_L1SingleEG45er2p5_v4, process.HLT_L1SingleEG50_v4, process.HLT_L1SingleJet60_v4, process.HLT_L1SingleJet90_v4, process.HLT_L1SingleJet120_v4, process.HLT_L1SingleJet180_v4, process.HLT_L1HTT120er_v4, process.HLT_L1HTT160er_v4, process.HLT_L1HTT200er_v4, process.HLT_L1HTT255er_v4, process.HLT_L1HTT280er_v4, process.HLT_L1HTT320er_v4, process.HLT_L1HTT360er_v4, process.HLT_L1HTT400er_v4, process.HLT_L1HTT450er_v4, process.HLT_L1ETM120_v4, process.HLT_L1ETM150_v4, process.HLT_L1EXT_HCAL_LaserMon1_v5, process.HLT_L1EXT_HCAL_LaserMon4_v5, process.HLT_CscCluster_Cosmic_v4, process.HLT_HT60_Beamspot_v22, process.HLT_HT300_Beamspot_PixelClusters_WP2_v7, process.HLT_PixelClusters_WP2_v4, process.HLT_PixelClusters_WP1_v4, process.HLT_BptxOR_v6, process.HLT_L1SingleMuCosmics_EMTF_v4, process.HLT_L1SingleMuCosmics_CosmicTracking_v1, process.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, process.HLT_L1FatEvents_v5, process.HLT_Random_HighRate_v1, process.HLT_ZeroBias_HighRate_v4, process.HLT_ZeroBias_Gated_v4, process.HLT_SpecialZeroBias_v6, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.DQMHistograms, process.RatesMonitoring, process.Dataset_AlCaLowPtJet, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaLumiPixelsCountsPromptHighRate0, process.Dataset_AlCaLumiPixelsCountsPromptHighRate1, process.Dataset_AlCaLumiPixelsCountsPromptHighRate2, process.Dataset_AlCaLumiPixelsCountsPromptHighRate3, process.Dataset_AlCaLumiPixelsCountsPromptHighRate4, process.Dataset_AlCaLumiPixelsCountsPromptHighRate5, process.Dataset_AlCaLumiPixelsCountsGated, process.Dataset_AlCaP0, process.Dataset_AlCaPPSExpress, process.Dataset_AlCaPPSPrompt, process.Dataset_AlCaPhiSym, process.Dataset_BTagMu, process.Dataset_Commissioning, process.Dataset_Cosmics, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_DQMPPSRandom, process.Dataset_DisplacedJet, process.Dataset_EGamma0, process.Dataset_EGamma1, process.Dataset_EcalLaser, process.Dataset_EmptyBX, process.Dataset_EphemeralHLTPhysics0, process.Dataset_EphemeralHLTPhysics1, process.Dataset_EphemeralHLTPhysics2, process.Dataset_EphemeralHLTPhysics3, process.Dataset_EphemeralHLTPhysics4, process.Dataset_EphemeralHLTPhysics5, process.Dataset_EphemeralHLTPhysics6, process.Dataset_EphemeralHLTPhysics7, process.Dataset_EphemeralZeroBias0, process.Dataset_EphemeralZeroBias1, process.Dataset_EphemeralZeroBias2, process.Dataset_EphemeralZeroBias3, process.Dataset_EphemeralZeroBias4, process.Dataset_EphemeralZeroBias5, process.Dataset_EphemeralZeroBias6, process.Dataset_EphemeralZeroBias7, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressCosmics, process.Dataset_ExpressPhysics, process.Dataset_HIDQMGPUvsCPU, process.Dataset_HIDQMOnlineBeamspot, process.Dataset_HIEmptyBX, process.Dataset_HIEphemeralHLTPhysics, process.Dataset_HIEphemeralZeroBias0, process.Dataset_HIEphemeralZeroBias1, process.Dataset_HIEventDisplay, process.Dataset_HIExpressAlignment, process.Dataset_HIExpressPhysics, process.Dataset_HIExpressPhysicsRawPrime, process.Dataset_HIForward0, process.Dataset_HIForward1, process.Dataset_HIForward2, process.Dataset_HIForward3, process.Dataset_HIForward4, process.Dataset_HIForward5, process.Dataset_HIForward6, process.Dataset_HIForward7, process.Dataset_HIForward8, process.Dataset_HIForward9, process.Dataset_HIForward10, process.Dataset_HIForward11, process.Dataset_HIForward12, process.Dataset_HIForward13, process.Dataset_HIForward14, process.Dataset_HIForward15, process.Dataset_HIForward16, process.Dataset_HIForward17, process.Dataset_HIForward18, process.Dataset_HIForward19, process.Dataset_HIHLTPhysics, process.Dataset_HIHcalNZS, process.Dataset_HIOnlineMonitor, process.Dataset_HIMinimumBias0, process.Dataset_HIMinimumBias1, process.Dataset_HIMinimumBias2, process.Dataset_HIMinimumBias3, process.Dataset_HIPhysicsRawPrime0, process.Dataset_HITrackerNZS, process.Dataset_HIZeroBias0, process.Dataset_HIZeroBias1, process.Dataset_HIZeroBias2, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_JetMET0, process.Dataset_JetMET1, process.Dataset_L1Accept, process.Dataset_MinimumBias, process.Dataset_MonteCarlo, process.Dataset_Muon0, process.Dataset_Muon1, process.Dataset_MuonEG, process.Dataset_MuonShower, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_PPRefDoubleMuon0, process.Dataset_PPRefDoubleMuon1, process.Dataset_PPRefDoubleMuon2, process.Dataset_PPRefDoubleMuon3, process.Dataset_PPRefHardProbes0, process.Dataset_PPRefSingleMuon0, process.Dataset_PPRefZeroBiasPlusForward0, process.Dataset_ParkingDoubleMuonLowMass0, process.Dataset_ParkingDoubleMuonLowMass1, process.Dataset_ParkingDoubleMuonLowMass2, process.Dataset_ParkingDoubleMuonLowMass3, process.Dataset_ParkingDoubleMuonLowMass4, process.Dataset_ParkingDoubleMuonLowMass5, process.Dataset_ParkingDoubleMuonLowMass6, process.Dataset_ParkingDoubleMuonLowMass7, process.Dataset_ParkingHH, process.Dataset_ParkingLLP, process.Dataset_ParkingSingleMuon0, process.Dataset_ParkingVBF0, process.Dataset_ParkingVBF1, process.Dataset_ParkingVBF2, process.Dataset_ParkingVBF3, process.Dataset_ParkingVBF4, process.Dataset_ParkingVBF5, process.Dataset_ParkingVBF6, process.Dataset_ParkingVBF7, process.Dataset_RPCMonitor, process.Dataset_ScoutingPFMonitor, process.Dataset_ScoutingPFRun3, process.Dataset_Tau, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_VRRandom0, process.Dataset_VRRandom1, process.Dataset_VRRandom2, process.Dataset_VRRandom3, process.Dataset_VRRandom4, process.Dataset_VRRandom5, process.Dataset_VRRandom6, process.Dataset_VRRandom7, process.Dataset_VRRandom8, process.Dataset_VRRandom9, process.Dataset_VRRandom10, process.Dataset_VRRandom11, process.Dataset_VRRandom12, process.Dataset_VRRandom13, process.Dataset_VRRandom14, process.Dataset_VRRandom15, process.Dataset_ZeroBias, process.ALCALowPtJetOutput, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsGatedOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCALumiPixelsCountsPromptHighRate0Output, process.ALCALumiPixelsCountsPromptHighRate1Output, process.ALCALumiPixelsCountsPromptHighRate2Output, process.ALCALumiPixelsCountsPromptHighRate3Output, process.ALCALumiPixelsCountsPromptHighRate4Output, process.ALCALumiPixelsCountsPromptHighRate5Output, process.ALCAP0Output, process.ALCAPHISYMOutput, process.ALCAPPSExpressOutput, process.ALCAPPSPromptOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.DQMPPSRandomOutput, process.HIDQMOutput, process.HIDQMEventDisplayOutput, process.HIDQMGPUvsCPUOutput, process.HIDQMOnlineBeamspotOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.ExpressCosmicsOutput, process.HIExpressOutput, process.HIExpressAlignmentOutput, process.HIExpressRawPrimeOutput, process.HLTMonitorOutput, process.PhysicsHLTPhysics2Output, process.ParkingDoubleMuonLowMass0Output, process.ParkingDoubleMuonLowMass1Output, process.ParkingDoubleMuonLowMass2Output, process.ParkingDoubleMuonLowMass3Output, process.ParkingHHOutput, process.ParkingLLPOutput, process.ParkingSingleMuon0Output, process.ParkingSingleMuon1Output, process.ParkingSingleMuon2Output, process.ParkingSingleMuon3Output, process.ParkingSingleMuon4Output, process.ParkingSingleMuon5Output, process.ParkingSingleMuon6Output, process.ParkingSingleMuon7Output, process.ParkingSingleMuon8Output, process.ParkingSingleMuon9Output, process.ParkingSingleMuon10Output, process.ParkingSingleMuon11Output, process.ParkingVBF0Output, process.ParkingVBF1Output, process.ParkingVBF2Output, process.ParkingVBF3Output, process.PhysicsCommissioningOutput, process.PhysicsDispJetBTagMuEGTauOutput, process.PhysicsEGamma0Output, process.PhysicsEGamma1Output, process.PhysicsHICommissioningOutput, process.PhysicsHIForward0Output, process.PhysicsHIForward1Output, process.PhysicsHIForward2Output, process.PhysicsHIForward3Output, process.PhysicsHIForward4Output, process.PhysicsHIForward5Output, process.PhysicsHIForward6Output, process.PhysicsHIForward7Output, process.PhysicsHIForward8Output, process.PhysicsHIForward9Output, process.PhysicsHIForward10Output, process.PhysicsHIForward11Output, process.PhysicsHIForward12Output, process.PhysicsHIForward13Output, process.PhysicsHIForward14Output, process.PhysicsHIForward15Output, process.PhysicsHIForward16Output, process.PhysicsHIForward17Output, process.PhysicsHIForward18Output, process.PhysicsHIForward19Output, process.PhysicsHIHLTPhysicsOutput, process.PhysicsHIMinimumBias0Output, process.PhysicsHIMinimumBias1Output, process.PhysicsHIMinimumBias2Output, process.PhysicsHIMinimumBias3Output, process.PhysicsHIPhysicsRawPrime0Output, process.PhysicsHIPhysicsRawPrime1Output, process.PhysicsHIPhysicsRawPrime2Output, process.PhysicsHIPhysicsRawPrime3Output, process.PhysicsHIPhysicsRawPrime4Output, process.PhysicsHIPhysicsRawPrime5Output, process.PhysicsHIPhysicsRawPrime6Output, process.PhysicsHIPhysicsRawPrime7Output, process.PhysicsHIPhysicsRawPrime8Output, process.PhysicsHIPhysicsRawPrime9Output, process.PhysicsHIPhysicsRawPrime10Output, process.PhysicsHIPhysicsRawPrime11Output, process.PhysicsHIPhysicsRawPrime12Output, process.PhysicsHIPhysicsRawPrime13Output, process.PhysicsHIPhysicsRawPrime14Output, process.PhysicsHIPhysicsRawPrime15Output, process.PhysicsHIPhysicsRawPrime16Output, process.PhysicsHIPhysicsRawPrime17Output, process.PhysicsHIPhysicsRawPrime18Output, process.PhysicsHIPhysicsRawPrime19Output, process.PhysicsHIPhysicsRawPrime20Output, process.PhysicsHIPhysicsRawPrime21Output, process.PhysicsHIPhysicsRawPrime22Output, process.PhysicsHIPhysicsRawPrime23Output, process.PhysicsHIPhysicsRawPrime24Output, process.PhysicsHIPhysicsRawPrime25Output, process.PhysicsHIPhysicsRawPrime26Output, process.PhysicsHIPhysicsRawPrime27Output, process.PhysicsHIPhysicsRawPrime28Output, process.PhysicsHIPhysicsRawPrime29Output, process.PhysicsHIPhysicsRawPrime30Output, process.PhysicsHIPhysicsRawPrime31Output, process.PhysicsHITrackerNZSOutput, process.PhysicsHIZeroBiasOutput, process.PhysicsHIZeroBiasRAW0Output, process.PhysicsHIZeroBiasRAW1Output, process.PhysicsHIZeroBiasRAW2Output, process.PhysicsHLTPhysics0Output, process.PhysicsHLTPhysics1Output, process.PhysicsHLTPhysics3Output, process.PhysicsJetMET0Output, process.PhysicsJetMET1Output, process.PhysicsMuon0Output, process.PhysicsMuon1Output, process.PhysicsPPRefDoubleMuon0Output, process.PhysicsPPRefDoubleMuon1Output, process.PhysicsPPRefDoubleMuon2Output, process.PhysicsPPRefDoubleMuon3Output, process.PhysicsPPRefHardProbes0Output, process.PhysicsPPRefHardProbes1Output, process.PhysicsPPRefHardProbes2Output, process.PhysicsPPRefSingleMuon0Output, process.PhysicsPPRefSingleMuon1Output, process.PhysicsPPRefSingleMuon2Output, process.PhysicsPPRefZeroBiasPlusForward0Output, process.PhysicsPPRefZeroBiasPlusForward1Output, process.PhysicsPPRefZeroBiasPlusForward2Output, process.PhysicsPPRefZeroBiasPlusForward3Output, process.PhysicsPPRefZeroBiasPlusForward4Output, process.PhysicsPPRefZeroBiasPlusForward5Output, process.PhysicsPPRefZeroBiasPlusForward6Output, process.PhysicsPPRefZeroBiasPlusForward7Output, process.PhysicsPPRefZeroBiasPlusForward8Output, process.PhysicsPPRefZeroBiasPlusForward9Output, process.PhysicsScoutingPFMonitorOutput, process.PhysicsZeroBias0Output, process.PhysicsZeroBias1Output, process.PhysicsZeroBias2Output, process.PhysicsZeroBias3Output, process.NanoDSTOutput, process.RPCMONOutput, process.ScoutingPFOutput, process.PhysicsSpecialHLTPhysics0Output, process.PhysicsSpecialHLTPhysics1Output, process.PhysicsSpecialHLTPhysics2Output, process.PhysicsSpecialHLTPhysics3Output, process.PhysicsSpecialHLTPhysics4Output, process.PhysicsSpecialHLTPhysics5Output, process.PhysicsSpecialHLTPhysics6Output, process.PhysicsSpecialHLTPhysics7Output, process.PhysicsSpecialHLTPhysics8Output, process.PhysicsSpecialHLTPhysics9Output, process.PhysicsSpecialHLTPhysics10Output, process.PhysicsSpecialHLTPhysics11Output, process.PhysicsSpecialHLTPhysics12Output, process.PhysicsSpecialHLTPhysics13Output, process.PhysicsSpecialHLTPhysics14Output, process.PhysicsSpecialHLTPhysics15Output, process.PhysicsSpecialHLTPhysics16Output, process.PhysicsSpecialHLTPhysics17Output, process.PhysicsSpecialHLTPhysics18Output, process.PhysicsSpecialHLTPhysics19Output, process.PhysicsSpecialRandom0Output, process.PhysicsSpecialRandom1Output, process.PhysicsSpecialRandom2Output, process.PhysicsSpecialRandom3Output, process.PhysicsSpecialRandom4Output, process.PhysicsSpecialRandom5Output, process.PhysicsSpecialRandom6Output, process.PhysicsSpecialRandom7Output, process.PhysicsSpecialRandom8Output, process.PhysicsSpecialRandom9Output, process.PhysicsSpecialZeroBias0Output, process.PhysicsSpecialZeroBias1Output, process.PhysicsSpecialZeroBias2Output, process.PhysicsSpecialZeroBias3Output, process.PhysicsSpecialZeroBias4Output, process.PhysicsSpecialZeroBias5Output, process.PhysicsSpecialZeroBias6Output, process.PhysicsSpecialZeroBias7Output, process.PhysicsSpecialZeroBias8Output, process.PhysicsSpecialZeroBias9Output, process.PhysicsSpecialZeroBias10Output, process.PhysicsSpecialZeroBias11Output, process.PhysicsSpecialZeroBias12Output, process.PhysicsSpecialZeroBias13Output, process.PhysicsSpecialZeroBias14Output, process.PhysicsSpecialZeroBias15Output, process.Dataset_SpecialRandom0, process.Dataset_SpecialRandom1, process.Dataset_SpecialRandom2, process.Dataset_SpecialRandom3, process.Dataset_SpecialRandom4, process.Dataset_SpecialRandom5, process.Dataset_SpecialRandom6, process.Dataset_SpecialRandom7, process.Dataset_SpecialRandom8, process.Dataset_SpecialRandom9, process.Dataset_SpecialRandom10, process.Dataset_SpecialRandom11, process.Dataset_SpecialRandom12, process.Dataset_SpecialRandom13, process.Dataset_SpecialRandom14, process.Dataset_SpecialRandom15, process.Dataset_SpecialRandom16, process.Dataset_SpecialRandom17, process.Dataset_SpecialRandom18, process.Dataset_SpecialRandom19, process.Dataset_SpecialZeroBias0, process.Dataset_SpecialZeroBias1, process.Dataset_SpecialZeroBias2, process.Dataset_SpecialZeroBias3, process.Dataset_SpecialZeroBias4, process.Dataset_SpecialZeroBias5, process.Dataset_SpecialZeroBias6, process.Dataset_SpecialZeroBias7, process.Dataset_SpecialZeroBias8, process.Dataset_SpecialZeroBias9, process.Dataset_SpecialZeroBias10, process.Dataset_SpecialZeroBias11, process.Dataset_SpecialZeroBias12, process.Dataset_SpecialZeroBias13, process.Dataset_SpecialZeroBias14, process.Dataset_SpecialZeroBias15, process.Dataset_SpecialZeroBias16, process.Dataset_SpecialZeroBias17, process.Dataset_SpecialZeroBias18, process.Dataset_SpecialZeroBias19, process.Dataset_SpecialZeroBias20, process.Dataset_SpecialZeroBias21, process.Dataset_SpecialZeroBias22, process.Dataset_SpecialZeroBias23, process.Dataset_SpecialZeroBias24, process.Dataset_SpecialZeroBias25, process.Dataset_SpecialZeroBias26, process.Dataset_SpecialZeroBias27, process.Dataset_SpecialZeroBias28, process.Dataset_SpecialZeroBias29, process.Dataset_SpecialZeroBias30, process.Dataset_SpecialZeroBias31, process.Dataset_SpecialHLTPhysics0, process.Dataset_SpecialHLTPhysics1, process.Dataset_SpecialHLTPhysics2, process.Dataset_SpecialHLTPhysics3, process.Dataset_SpecialHLTPhysics4, process.Dataset_SpecialHLTPhysics5, process.Dataset_SpecialHLTPhysics6, process.Dataset_SpecialHLTPhysics7, process.Dataset_SpecialHLTPhysics8, process.Dataset_SpecialHLTPhysics9, process.Dataset_SpecialHLTPhysics10, process.Dataset_SpecialHLTPhysics11, process.Dataset_SpecialHLTPhysics12, process.Dataset_SpecialHLTPhysics13, process.Dataset_SpecialHLTPhysics14, process.Dataset_SpecialHLTPhysics15, process.Dataset_SpecialHLTPhysics16, process.Dataset_SpecialHLTPhysics17, process.Dataset_SpecialHLTPhysics18, process.Dataset_SpecialHLTPhysics19, process.Dataset_ParkingSingleMuon1, process.Dataset_ParkingSingleMuon2, process.Dataset_ParkingSingleMuon3, process.Dataset_ParkingSingleMuon4, process.Dataset_ParkingSingleMuon5, process.Dataset_ParkingSingleMuon6, process.Dataset_ParkingSingleMuon7, process.Dataset_ParkingSingleMuon8, process.Dataset_ParkingSingleMuon9, process.Dataset_ParkingSingleMuon10, process.Dataset_ParkingSingleMuon11, process.Dataset_PPRefZeroBiasPlusForward1, process.Dataset_PPRefZeroBiasPlusForward2, process.Dataset_PPRefZeroBiasPlusForward3, process.Dataset_PPRefZeroBiasPlusForward4, process.Dataset_PPRefZeroBiasPlusForward5, process.Dataset_PPRefZeroBiasPlusForward6, process.Dataset_PPRefZeroBiasPlusForward7, process.Dataset_PPRefZeroBiasPlusForward8, process.Dataset_PPRefZeroBiasPlusForward9, process.Dataset_PPRefZeroBiasPlusForward10, process.Dataset_PPRefZeroBiasPlusForward11, process.Dataset_PPRefZeroBiasPlusForward12, process.Dataset_PPRefZeroBiasPlusForward13, process.Dataset_PPRefZeroBiasPlusForward14, process.Dataset_PPRefZeroBiasPlusForward15, process.Dataset_PPRefZeroBiasPlusForward16, process.Dataset_PPRefZeroBiasPlusForward17, process.Dataset_PPRefZeroBiasPlusForward18, process.Dataset_PPRefZeroBiasPlusForward19, process.Dataset_PPRefZeroBiasPlusForward20, process.Dataset_PPRefZeroBiasPlusForward21, process.Dataset_PPRefZeroBiasPlusForward22, process.Dataset_PPRefZeroBiasPlusForward23, process.Dataset_PPRefZeroBiasPlusForward24, process.Dataset_PPRefSingleMuon1, process.Dataset_PPRefSingleMuon2, process.Dataset_PPRefSingleMuon3, process.Dataset_PPRefHardProbes1, process.Dataset_PPRefHardProbes2, process.Dataset_PPRefHardProbes3, process.Dataset_PPRefHardProbes4, process.PhysicsPPRefHardProbes3Output, process.PhysicsPPRefHardProbes4Output, process.PhysicsPPRefSingleMuon3Output, process.PhysicsPPRefZeroBiasPlusForward10Output, process.PhysicsPPRefZeroBiasPlusForward11Output, process.PhysicsPPRefZeroBiasPlusForward12Output, process.PhysicsPPRefZeroBiasPlusForward13Output, process.PhysicsPPRefZeroBiasPlusForward14Output, process.PhysicsPPRefZeroBiasPlusForward15Output, process.PhysicsPPRefZeroBiasPlusForward16Output, process.PhysicsPPRefZeroBiasPlusForward18Output, process.PhysicsPPRefZeroBiasPlusForward19Output, process.PhysicsPPRefZeroBiasPlusForward17Output, process.PhysicsPPRefZeroBiasPlusForward24Output, process.PhysicsPPRefZeroBiasPlusForward23Output, process.PhysicsPPRefZeroBiasPlusForward22Output, process.PhysicsPPRefZeroBiasPlusForward21Output, process.PhysicsPPRefZeroBiasPlusForward20Output, process.Dataset_HIPhysicsRawPrime1, process.Dataset_HIPhysicsRawPrime2, process.Dataset_HIPhysicsRawPrime3, process.Dataset_HIPhysicsRawPrime4, process.Dataset_HIPhysicsRawPrime5, process.Dataset_HIPhysicsRawPrime6, process.Dataset_HIPhysicsRawPrime7, process.Dataset_HIPhysicsRawPrime8, process.Dataset_HIPhysicsRawPrime9, process.Dataset_HIPhysicsRawPrime10, process.Dataset_HIPhysicsRawPrime11, process.Dataset_HIPhysicsRawPrime12, process.Dataset_HIPhysicsRawPrime13, process.Dataset_HIPhysicsRawPrime14, process.Dataset_HIPhysicsRawPrime15, process.Dataset_HIPhysicsRawPrime16, process.Dataset_HIPhysicsRawPrime17, process.Dataset_HIPhysicsRawPrime18, process.Dataset_HIPhysicsRawPrime19, process.Dataset_HIPhysicsRawPrime20, process.Dataset_HIPhysicsRawPrime21, process.Dataset_HIPhysicsRawPrime22, process.Dataset_HIPhysicsRawPrime23, process.Dataset_HIPhysicsRawPrime24, process.Dataset_HIPhysicsRawPrime25, process.Dataset_HIPhysicsRawPrime26, process.Dataset_HIPhysicsRawPrime27, process.Dataset_HIPhysicsRawPrime28, process.Dataset_HIPhysicsRawPrime29, process.Dataset_HIPhysicsRawPrime30, process.Dataset_HIPhysicsRawPrime31, process.Dataset_HIPhysicsRawPrime32, process.Dataset_HIPhysicsRawPrime33, process.Dataset_HIPhysicsRawPrime34, process.Dataset_HIPhysicsRawPrime35, process.Dataset_HIPhysicsRawPrime36, process.Dataset_HIPhysicsRawPrime37, process.Dataset_HIPhysicsRawPrime38, process.Dataset_HIPhysicsRawPrime39, process.Dataset_HIPhysicsRawPrime40, process.Dataset_HIPhysicsRawPrime41, process.Dataset_HIPhysicsRawPrime42, process.Dataset_HIPhysicsRawPrime43, process.Dataset_HIPhysicsRawPrime44, process.Dataset_HIPhysicsRawPrime45, process.Dataset_HIPhysicsRawPrime46, process.Dataset_HIPhysicsRawPrime47, process.Dataset_HIPhysicsRawPrime48, process.Dataset_HIPhysicsRawPrime49, process.Dataset_HIPhysicsRawPrime50, process.Dataset_HIPhysicsRawPrime51, process.Dataset_HIPhysicsRawPrime52, process.Dataset_HIPhysicsRawPrime53, process.Dataset_HIPhysicsRawPrime54, process.Dataset_HIPhysicsRawPrime55, process.Dataset_HIPhysicsRawPrime56, process.Dataset_HIPhysicsRawPrime57, process.Dataset_HIPhysicsRawPrime58, process.Dataset_HIPhysicsRawPrime59, process.PhysicsHIPhysicsRawPrime59Output, process.PhysicsHIPhysicsRawPrime58Output, process.PhysicsHIPhysicsRawPrime57Output, process.PhysicsHIPhysicsRawPrime56Output, process.PhysicsHIPhysicsRawPrime55Output, process.PhysicsHIPhysicsRawPrime54Output, process.PhysicsHIPhysicsRawPrime53Output, process.PhysicsHIPhysicsRawPrime52Output, process.PhysicsHIPhysicsRawPrime51Output, process.PhysicsHIPhysicsRawPrime50Output, process.PhysicsHIPhysicsRawPrime49Output, process.PhysicsHIPhysicsRawPrime48Output, process.PhysicsHIPhysicsRawPrime47Output, process.PhysicsHIPhysicsRawPrime46Output, process.PhysicsHIPhysicsRawPrime45Output, process.PhysicsHIPhysicsRawPrime44Output, process.PhysicsHIPhysicsRawPrime42Output, process.PhysicsHIPhysicsRawPrime41Output, process.PhysicsHIPhysicsRawPrime40Output, process.PhysicsHIPhysicsRawPrime39Output, process.PhysicsHIPhysicsRawPrime38Output, process.PhysicsHIPhysicsRawPrime37Output, process.PhysicsHIPhysicsRawPrime36Output, process.PhysicsHIPhysicsRawPrime35Output, process.PhysicsHIPhysicsRawPrime34Output, process.PhysicsHIPhysicsRawPrime33Output, process.PhysicsHIPhysicsRawPrime32Output, process.PhysicsHIPhysicsRawPrime43Output, process.PhysicsVRRandom1Output, process.PhysicsVRRandom0Output, process.PhysicsVRRandom2Output, process.PhysicsVRRandom3Output, process.PhysicsVRRandom4Output, process.PhysicsVRRandom5Output, process.PhysicsVRRandom6Output, process.PhysicsVRRandom7Output, )) # source module (EDM inputs) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_Fake.py b/HLTrigger/Configuration/test/OnLine_HLT_Fake.py index 525b35e9bd767..19be69906ab5a 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_Fake.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_Fake.py @@ -1,13 +1,13 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Fake --full --data --type Fake --unprescale --process HLTFake --globaltag auto:run1_hlt_Fake --input file:RelVal_Raw_Fake_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/Fake --full --data --type Fake --unprescale --process HLTFake --globaltag auto:run1_hlt_Fake --input file:RelVal_Raw_Fake_DATA.root -# /dev/CMSSW_14_1_0/Fake/V12 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Fake/V5 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms process = cms.Process( "HLTFake" ) process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Fake/V12") + tableName = cms.string("/dev/CMSSW_14_2_0/Fake/V5") ) process.streams = cms.PSet( A = cms.vstring( 'InitialPD' ) ) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_Fake1.py b/HLTrigger/Configuration/test/OnLine_HLT_Fake1.py index e118b6f96545a..c2df3f4aefafb 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_Fake1.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_Fake1.py @@ -1,13 +1,13 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Fake1 --full --data --type Fake1 --unprescale --process HLTFake1 --globaltag auto:run2_hlt_Fake1 --input file:RelVal_Raw_Fake1_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/Fake1 --full --data --type Fake1 --unprescale --process HLTFake1 --globaltag auto:run2_hlt_Fake1 --input file:RelVal_Raw_Fake1_DATA.root -# /dev/CMSSW_14_1_0/Fake1/V12 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Fake1/V5 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms process = cms.Process( "HLTFake1" ) process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Fake1/V12") + tableName = cms.string("/dev/CMSSW_14_2_0/Fake1/V5") ) process.streams = cms.PSet( A = cms.vstring( 'InitialPD' ) ) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_Fake2.py b/HLTrigger/Configuration/test/OnLine_HLT_Fake2.py index 661c3156ffce7..5ff44eee835f5 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_Fake2.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_Fake2.py @@ -1,13 +1,13 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Fake2 --full --data --type Fake2 --unprescale --process HLTFake2 --globaltag auto:run2_hlt_Fake2 --input file:RelVal_Raw_Fake2_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/Fake2 --full --data --type Fake2 --unprescale --process HLTFake2 --globaltag auto:run2_hlt_Fake2 --input file:RelVal_Raw_Fake2_DATA.root -# /dev/CMSSW_14_1_0/Fake2/V12 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Fake2/V5 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms process = cms.Process( "HLTFake2" ) process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Fake2/V12") + tableName = cms.string("/dev/CMSSW_14_2_0/Fake2/V5") ) process.streams = cms.PSet( A = cms.vstring( 'InitialPD' ) ) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_GRun.py b/HLTrigger/Configuration/test/OnLine_HLT_GRun.py index be78d8760227b..112479590cd2b 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_GRun.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_GRun.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/GRun --full --data --type GRun --unprescale --process HLTGRun --globaltag auto:run3_hlt_GRun --input file:RelVal_Raw_GRun_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/GRun --full --data --type GRun --unprescale --process HLTGRun --globaltag auto:run3_hlt_GRun --input file:RelVal_Raw_GRun_DATA.root -# /dev/CMSSW_14_1_0/GRun/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/GRun/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/GRun/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/GRun/V10") ) process.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1859,9 +1859,12 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -6692,8 +6695,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -8758,6 +8761,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -9336,6 +9340,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -10137,6 +10142,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -11446,8 +11452,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -12169,6 +12175,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -12704,6 +12711,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -13505,6 +13513,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersSerialSync" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoubletsSerialSync = cms.EDProducer( "HitPairEDProducer", @@ -17078,7 +17087,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombinedUnseeded = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsUnseeded','hltElePixelSeedsTripletsUnseeded' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeedsUnseeded = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedUnseeded" ), @@ -20984,7 +20994,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -31572,6 +31583,10 @@ DepTag = cms.VInputTag( 'hltMuonTkRelIsolationCut0p14Map' ), IsolatorPSet = cms.PSet( ) ) +process.hltPreIsoMu24HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreIsoMu24eta2p1 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -33380,6 +33395,10 @@ MinPixHitsForDZ = cms.int32( 0 ), checkSC = cms.bool( False ) ) +process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -33561,6 +33580,10 @@ propagatorAny = cms.ESInputTag( "","SteppingHelixPropagatorAny" ), propagatorOpposite = cms.ESInputTag( "","hltESPSteppingHelixPropagatorOpposite" ) ) +process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -70995,6 +71018,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PixelLessHitDoubletsForGlbDisplacedMuons = cms.EDProducer( "HitPairEDProducer", @@ -71236,6 +71260,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PixelLessHitDoubletsForDisplacedTkMuons = cms.EDProducer( "HitPairEDProducer", @@ -72650,6 +72675,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PFlowPixelLessHitDoubletsForTau = cms.EDProducer( "HitPairEDProducer", @@ -75704,6 +75730,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter1PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -76004,6 +76031,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter2PFlowPixelHitDoubletsForDisplaced = cms.EDProducer( "HitPairEDProducer", @@ -76923,6 +76951,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersRegForDisplaced" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDisplacedhltIter4PFlowPixelLessHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -86390,9 +86419,12 @@ 'HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12', 'HLT_HT400_DisplacedDijet40_DisplacedTrack_v23', 'HLT_HT550_DisplacedDijet60_Inclusive_v23', + 'HLT_IsoMu24_HLTTracking_v1', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9', 'HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1', + 'HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1', 'HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9', 'HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13', @@ -88031,6 +88063,7 @@ 'keep *_hltL3NoFiltersNoVtxMuonCandidates_*_*', 'keep *_hltMergedTracks_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltParticleNetDiscriminatorsJetTags_*_*', 'keep *_hltPixelTracks_*_*', 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelClusters_*_*', @@ -88084,10 +88117,6 @@ ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_DQMGPUvsCPU' ) ), outputCommands = cms.untracked.vstring( 'drop *', - 'keep *Cluster*_hltSiPixelClustersSerialSync_*_*', - 'keep *Cluster*_hltSiPixelClusters_*_*', - 'keep *RecHit*_hltSiPixelRecHitsSerialSync_*_*', - 'keep *RecHit*_hltSiPixelRecHits_*_*', 'keep *_hltEcalDigisSerialSync_*_*', 'keep *_hltEcalDigis_*_*', 'keep *_hltEcalUncalibRecHitSerialSync_*_*', @@ -88096,10 +88125,6 @@ 'keep *_hltHbhereco_*_*', 'keep *_hltParticleFlowClusterHCALSerialSync_*_*', 'keep *_hltParticleFlowClusterHCAL_*_*', - 'keep *_hltPixelTracksSerialSync_*_*', - 'keep *_hltPixelTracks_*_*', - 'keep *_hltPixelVerticesSerialSync_*_*', - 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelDigiErrorsSerialSync_*_*', 'keep *_hltSiPixelDigiErrors_*_*' ) ) @@ -89528,6 +89553,7 @@ process.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleAndDoubleEGor + process.hltPreEle32WPTightGsfL1DoubleEG + process.HLTEle32L1DoubleEGWPTightGsfSequence + process.HLTEndSequence ) process.HLT_IsoMu20_v27 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu18 + process.hltPreIsoMu20 + process.hltL1fL1sMu18L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sMu18L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu18L1Filtered0) + process.hltL3fL1sMu18L1f0L2f10QL3Filtered20Q + process.HLTMu20IsolationSequence + process.hltL3crIsoL1sMu18L1f0L2f10QL3f20QL3trkIsoFiltered + process.HLTEndSequence ) process.HLT_IsoMu24_v25 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22 + process.hltPreIsoMu24 + process.hltL1fL1sMu22L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22L1Filtered0) + process.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + process.HLTMu24IsolationSequence + process.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + process.HLTEndSequence ) +process.HLT_IsoMu24_HLTTracking_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22 + process.hltPreIsoMu24HLTTracking + process.hltL1fL1sMu22L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sSingleMu22L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22L1Filtered0) + process.hltL3fL1sSingleMu22L1f0L2f10QL3Filtered24Q + process.HLTMu24IsolationSequence + process.hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.HLT_IsoMu24_eta2p1_v27 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22 + process.hltPreIsoMu24eta2p1 + process.hltL1fL1sMu22erL1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sSingleMu22erL1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22erL1Filtered0) + process.hltL3fL1sSingleMu22erL1f0L2f10QL3Filtered24Q + process.HLTMu24Eta2p1IsolationSequence + process.hltL3crIsoL1sSingleMu22erL1f0L2f10QL3f24QL3trkIsoFiltered + process.HLTEndSequence ) process.HLT_IsoMu27_v28 = cms.Path( process.HLTBeginSequence + process.hltL1sSingleMu22or25 + process.hltPreIsoMu27 + process.hltL1fL1sMu22or25L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2fL1sMu22or25L1f0L2Filtered10Q) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sMu22or25L1Filtered0) + process.hltL3fL1sMu22Or25L1f0L2f10QL3Filtered27Q + process.HLTMu27IsolationSequence + process.hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered + process.HLTEndSequence ) process.HLT_UncorrectedJetE30_NoBPTX_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sV0SingleJetC20NotBptxOR + process.hltPreUncorrectedJetE30NoBPTX + process.HLTStoppedHSCPLocalHcalReco + process.HLTStoppedHSCPJetSequence + process.hltStoppedHSCP1CaloJetEnergy30 + process.HLTEndSequence ) @@ -89553,11 +89579,13 @@ process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVL + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.HLTEndSequence ) process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu19TrkIsoVVLMu9TrkIsoVVL + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered9 + process.hltL3fL1DoubleMu155fFiltered19 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon199RelTrkIsoVVLFiltered + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZ + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.HLTEndSequence ) +process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZHLTTracking + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZ + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered9 + process.hltL3fL1DoubleMu155fFiltered19 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon199RelTrkIsoVVLFiltered + process.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8PFJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK4CaloJetsSequence + process.hltSingleCaloJet10 + process.HLTAK4PFJetsSequence + process.hltPFJetsCorrectedMatchedToCaloJets10 + process.hltSinglePFJet30 + process.HLTEndSequence ) process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu19TrkIsoVVLMu9TrkIsoVVLDZMass8 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered9 + process.hltL3fL1DoubleMu155fFiltered19 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon199RelTrkIsoVVLFiltered + process.hltDiMuon199RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon199Mass8Filtered + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass3p8Filtered + process.HLTEndSequence ) +process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass3p8HLTTracking + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass3p8Filtered + process.HLTIterativeTrackingIter02 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8CaloJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK4CaloJetsSequence + process.hltSingleCaloJet30 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8PFJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK8CaloJetsSequence + process.hltSingleCaloJet10AK8 + process.HLTAK8PFJetsSequence + process.hltPFJetsCorrectedMatchedToCaloJets10AK8 + process.hltSinglePFJet30AK8 + process.HLTEndSequence ) process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleMu125to157 + process.hltPreMu17TrkIsoVVLMu8TrkIsoVVLDZMass8AK8CaloJet30 + process.hltL1fL1sDoubleMu155L1Filtered0 + process.HLTL2muonrecoSequence + cms.ignore(process.hltL2pfL1sDoubleMu155L1f0L2PreFiltered0) + cms.ignore(process.hltL2fL1sDoubleMu155L1f0L2Filtered10OneMu) + process.HLTL3muonrecoSequence + cms.ignore(process.hltL1fForIterL3L1fL1sDoubleMu155L1Filtered0) + process.hltL3fL1DoubleMu155fPreFiltered8 + process.hltL3fL1DoubleMu155fFiltered17 + process.HLTL3muontrkisovvlSequence + process.hltDiMuon178RelTrkIsoVVLFiltered + process.hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2 + process.hltDiMuon178Mass8Filtered + process.HLTAK8CaloJetsSequence + process.hltSingleCaloJet30AK8 + process.HLTEndSequence ) @@ -90338,7 +90366,7 @@ process.Dataset_ParkingSingleMuon11 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetParkingSingleMuon + process.hltPreDatasetParkingSingleMuon11 ) -process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_EcalEtaEBonly_v25, process.AlCa_EcalEtaEEonly_v25, process.AlCa_EcalPi0EBonly_v25, process.AlCa_EcalPi0EEonly_v25, process.AlCa_RPCMuonNormalisation_v23, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.AlCa_PFJet40_v32, process.AlCa_PFJet40_CPUOnly_v11, process.AlCa_AK8PFJet40_v27, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DST_ZeroBias_v11, process.DST_Physics_v16, process.DST_PFScouting_DoubleMuon_v6, process.DST_PFScouting_DoubleEG_v6, process.DST_PFScouting_JetHT_v6, process.DST_PFScouting_AXOVLoose_v4, process.DST_PFScouting_AXOLoose_v4, process.DST_PFScouting_AXONominal_v6, process.DST_PFScouting_AXOTight_v6, process.DST_PFScouting_AXOVTight_v4, process.DST_PFScouting_CICADAVLoose_v2, process.DST_PFScouting_CICADALoose_v2, process.DST_PFScouting_CICADAMedium_v2, process.DST_PFScouting_CICADATight_v2, process.DST_PFScouting_CICADAVTight_v2, process.DST_PFScouting_SingleMuon_v6, process.DST_PFScouting_SinglePhotonEB_v3, process.DST_PFScouting_ZeroBias_v4, process.HLT_EphemeralPhysics_v9, process.HLT_EphemeralZeroBias_v9, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Alignment_v8, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_IsolatedBunches_v12, process.HLT_ZeroBias_FirstBXAfterTrain_v10, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_ZeroBias_FirstCollisionInTrain_v11, process.HLT_ZeroBias_LastCollisionInTrain_v10, process.HLT_HT300_Beamspot_v23, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_PFJet40_GPUvsCPU_v7, process.HLT_AK8PFJet380_SoftDropMass30_v6, process.HLT_AK8PFJet400_SoftDropMass30_v6, process.HLT_AK8PFJet425_SoftDropMass30_v6, process.HLT_AK8PFJet450_SoftDropMass30_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, process.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, process.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, process.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, process.HLT_CaloJet500_NoJetID_v22, process.HLT_CaloJet550_NoJetID_v17, process.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, process.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, process.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, process.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, process.HLT_DoubleEle25_CaloIdL_MW_v15, process.HLT_DoubleEle27_CaloIdL_MW_v15, process.HLT_DoubleEle33_CaloIdL_MW_v28, process.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, process.HLT_Mu27_Ele37_CaloIdL_MW_v17, process.HLT_Mu37_Ele27_CaloIdL_MW_v17, process.HLT_Mu37_TkMu27_v17, process.HLT_DoubleMu4_3_Bs_v27, process.HLT_DoubleMu4_3_Jpsi_v27, process.HLT_DoubleMu4_3_LowMass_v13, process.HLT_DoubleMu4_LowMass_Displaced_v13, process.HLT_Mu0_L1DoubleMu_v13, process.HLT_Mu4_L1DoubleMu_v13, process.HLT_DoubleMu2_Jpsi_LowPt_v6, process.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, process.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, process.HLT_DoubleMu3_Trk_Tau3mu_v24, process.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, process.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, process.HLT_DoubleMu4_MuMuTrk_Displaced_v27, process.HLT_Mu3_PFJet40_v28, process.HLT_Mu7p5_L2Mu2_Jpsi_v22, process.HLT_Mu7p5_L2Mu2_Upsilon_v22, process.HLT_Mu3_L1SingleMu5orSingleMu7_v13, process.HLT_Mu0_Barrel_v6, process.HLT_Mu0_Barrel_L1HP6_v3, process.HLT_Mu0_Barrel_L1HP7_v3, process.HLT_Mu0_Barrel_L1HP8_v4, process.HLT_Mu0_Barrel_L1HP9_v4, process.HLT_Mu0_Barrel_L1HP10_v6, process.HLT_Mu0_Barrel_L1HP11_v6, process.HLT_Mu0_Barrel_L1HP6_IP6_v3, process.HLT_Mu6_Barrel_L1HP7_IP6_v3, process.HLT_Mu7_Barrel_L1HP8_IP6_v4, process.HLT_Mu8_Barrel_L1HP9_IP6_v4, process.HLT_Mu9_Barrel_L1HP10_IP6_v6, process.HLT_Mu10_Barrel_L1HP11_IP6_v6, process.HLT_DoublePhoton33_CaloIdL_v17, process.HLT_DoublePhoton70_v17, process.HLT_DoublePhoton85_v25, process.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, process.HLT_Ele30_WPTight_Gsf_v11, process.HLT_Ele32_WPTight_Gsf_v25, process.HLT_Ele35_WPTight_Gsf_v19, process.HLT_Ele38_WPTight_Gsf_v19, process.HLT_Ele40_WPTight_Gsf_v19, process.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, process.HLT_IsoMu20_v27, process.HLT_IsoMu24_v25, process.HLT_IsoMu24_eta2p1_v27, process.HLT_IsoMu27_v28, process.HLT_UncorrectedJetE30_NoBPTX_v14, process.HLT_UncorrectedJetE30_NoBPTX3BX_v14, process.HLT_UncorrectedJetE60_NoBPTX3BX_v14, process.HLT_UncorrectedJetE70_NoBPTX3BX_v14, process.HLT_L1SingleMuCosmics_v8, process.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, process.HLT_L2Mu10_NoVertex_NoBPTX_v15, process.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, process.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, process.HLT_L2Mu23NoVtx_2Cha_v10, process.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, process.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, process.HLT_DoubleL2Mu50_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, process.HLT_Mu30_TkMu0_Psi_v13, process.HLT_Mu30_TkMu0_Upsilon_v13, process.HLT_Mu25_TkMu0_Phi_v20, process.HLT_Mu15_v15, process.HLT_Mu20_v24, process.HLT_Mu27_v25, process.HLT_Mu50_v25, process.HLT_Mu55_v15, process.HLT_CascadeMu100_v13, process.HLT_HighPtTkMu100_v12, process.HLT_DiPFJetAve40_v26, process.HLT_DiPFJetAve60_v26, process.HLT_DiPFJetAve80_v26, process.HLT_DiPFJetAve140_v25, process.HLT_DiPFJetAve200_v25, process.HLT_DiPFJetAve260_v26, process.HLT_DiPFJetAve320_v26, process.HLT_DiPFJetAve400_v26, process.HLT_DiPFJetAve500_v26, process.HLT_DiPFJetAve60_HFJEC_v27, process.HLT_DiPFJetAve80_HFJEC_v29, process.HLT_DiPFJetAve100_HFJEC_v29, process.HLT_DiPFJetAve160_HFJEC_v28, process.HLT_DiPFJetAve220_HFJEC_v28, process.HLT_DiPFJetAve260_HFJEC_v11, process.HLT_DiPFJetAve300_HFJEC_v28, process.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, process.HLT_AK8PFJet40_v28, process.HLT_AK8PFJet60_v27, process.HLT_AK8PFJet80_v28, process.HLT_AK8PFJet140_v27, process.HLT_AK8PFJet200_v27, process.HLT_AK8PFJet260_v28, process.HLT_AK8PFJet320_v28, process.HLT_AK8PFJet400_v28, process.HLT_AK8PFJet450_v28, process.HLT_AK8PFJet500_v28, process.HLT_AK8PFJet550_v23, process.HLT_PFJet40_v33, process.HLT_PFJet60_v33, process.HLT_PFJet80_v33, process.HLT_PFJet110_v12, process.HLT_PFJet140_v31, process.HLT_PFJet200_v31, process.HLT_PFJet260_v32, process.HLT_PFJet320_v32, process.HLT_PFJet400_v32, process.HLT_PFJet450_v33, process.HLT_PFJet500_v33, process.HLT_PFJet550_v23, process.HLT_PFJetFwd40_v31, process.HLT_PFJetFwd60_v31, process.HLT_PFJetFwd80_v30, process.HLT_PFJetFwd140_v30, process.HLT_PFJetFwd200_v30, process.HLT_PFJetFwd260_v31, process.HLT_PFJetFwd320_v31, process.HLT_PFJetFwd400_v31, process.HLT_PFJetFwd450_v31, process.HLT_PFJetFwd500_v31, process.HLT_AK8PFJetFwd40_v27, process.HLT_AK8PFJetFwd60_v26, process.HLT_AK8PFJetFwd80_v26, process.HLT_AK8PFJetFwd140_v26, process.HLT_AK8PFJetFwd200_v26, process.HLT_AK8PFJetFwd260_v27, process.HLT_AK8PFJetFwd320_v27, process.HLT_AK8PFJetFwd400_v27, process.HLT_AK8PFJetFwd450_v27, process.HLT_AK8PFJetFwd500_v27, process.HLT_PFHT180_v29, process.HLT_PFHT250_v29, process.HLT_PFHT370_v29, process.HLT_PFHT430_v29, process.HLT_PFHT510_v29, process.HLT_PFHT590_v29, process.HLT_PFHT680_v29, process.HLT_PFHT780_v29, process.HLT_PFHT890_v29, process.HLT_PFHT1050_v30, process.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, process.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, process.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, process.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, process.HLT_PFMET120_PFMHT120_IDTight_v32, process.HLT_PFMET130_PFMHT130_IDTight_v32, process.HLT_PFMET140_PFMHT140_IDTight_v32, process.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, process.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, process.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, process.HLT_L1ETMHadSeeds_v10, process.HLT_CaloMHT90_v14, process.HLT_CaloMET90_NotCleaned_v14, process.HLT_CaloMET350_NotCleaned_v14, process.HLT_PFMET200_NotCleaned_v21, process.HLT_PFMET250_NotCleaned_v21, process.HLT_PFMET300_NotCleaned_v21, process.HLT_PFMET200_BeamHaloCleaned_v21, process.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, process.HLT_MET105_IsoTrk50_v19, process.HLT_MET120_IsoTrk50_v19, process.HLT_Mu12eta2p3_v13, process.HLT_Mu12eta2p3_PFJet40_v13, process.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Photon300_NoHE_v23, process.HLT_Mu8_TrkIsoVVL_v24, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, process.HLT_Mu17_TrkIsoVVL_v25, process.HLT_Mu19_TrkIsoVVL_v16, process.HLT_BTagMu_AK4DiJet20_Mu5_v25, process.HLT_BTagMu_AK4DiJet40_Mu5_v25, process.HLT_BTagMu_AK4DiJet70_Mu5_v25, process.HLT_BTagMu_AK4DiJet110_Mu5_v25, process.HLT_BTagMu_AK4DiJet170_Mu5_v24, process.HLT_BTagMu_AK4Jet300_Mu5_v24, process.HLT_BTagMu_AK8DiJet170_Mu5_v21, process.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, process.HLT_BTagMu_AK8Jet300_Mu5_v24, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, process.HLT_Photon33_v15, process.HLT_Photon50_v23, process.HLT_Photon75_v23, process.HLT_Photon90_v23, process.HLT_Photon120_v23, process.HLT_Photon150_v17, process.HLT_Photon175_v25, process.HLT_Photon200_v24, process.HLT_Photon45EB_v3, process.HLT_Photon40EB_v3, process.HLT_Photon50EB_v4, process.HLT_Photon30EB_TightID_TightIso_v12, process.HLT_Photon40EB_TightID_TightIso_v3, process.HLT_Photon45EB_TightID_TightIso_v3, process.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_v8, process.HLT_Photon55EB_TightID_TightIso_v4, process.HLT_Photon75EB_TightID_TightIso_v8, process.HLT_Photon90EB_TightID_TightIso_v8, process.HLT_Photon110EB_TightID_TightIso_v12, process.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon100EBHE10_v12, process.HLT_Photon50_R9Id90_HE10_IsoM_v24, process.HLT_Photon75_R9Id90_HE10_IsoM_v24, process.HLT_Photon90_R9Id90_HE10_IsoM_v24, process.HLT_Photon120_R9Id90_HE10_IsoM_v24, process.HLT_Photon165_R9Id90_HE10_IsoM_v25, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, process.HLT_DiphotonMVA14p25_Mass90_v3, process.HLT_DiphotonMVA14p25_Tight_Mass90_v3, process.HLT_Photon35_TwoProngs35_v13, process.HLT_IsoMu24_TwoProngs35_v13, process.HLT_Dimuon0_Jpsi_L1_NoOS_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, process.HLT_Dimuon0_Jpsi_v20, process.HLT_Dimuon0_Jpsi_NoVertexing_v20, process.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi3p5_Muon2_v17, process.HLT_Dimuon0_Upsilon_L1_4p5_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, process.HLT_Dimuon0_Upsilon_NoVertexing_v19, process.HLT_Dimuon0_LowMass_L1_0er1p5_v20, process.HLT_Dimuon0_LowMass_v20, process.HLT_Dimuon0_LowMass_L1_4_v20, process.HLT_Dimuon0_LowMass_L1_TM530_v18, process.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, process.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, process.HLT_TripleMu_10_5_5_DZ_v22, process.HLT_TripleMu_12_10_5_v22, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, process.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, process.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, process.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, process.HLT_DoubleMu4_3_LowMass_SS_v6, process.HLT_DoubleMu4_Jpsi_Displaced_v19, process.HLT_DoubleMu4_Jpsi_NoVertexing_v19, process.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, process.HLT_DoubleMu4_JpsiTrk_Bc_v12, process.HLT_DoubleMu43NoFiltersNoVtx_v14, process.HLT_DoubleMu48NoFiltersNoVtx_v14, process.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, process.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, process.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, process.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, process.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, process.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, process.HLT_Ele28_HighEta_SC20_Mass55_v23, process.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, process.HLT_Ele15_IsoVVVL_PFHT450_v28, process.HLT_Ele50_IsoVVVL_PFHT450_v28, process.HLT_Ele15_IsoVVVL_PFHT600_v32, process.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, process.HLT_Mu15_IsoVVVL_PFHT450_v27, process.HLT_Mu50_IsoVVVL_PFHT450_v27, process.HLT_Mu15_IsoVVVL_PFHT600_v31, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, process.HLT_Dimuon10_Upsilon_y1p4_v13, process.HLT_Dimuon12_Upsilon_y1p4_v14, process.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, process.HLT_Dimuon25_Jpsi_v26, process.HLT_Dimuon14_PsiPrime_v25, process.HLT_Dimuon14_PsiPrime_noCorrL1_v17, process.HLT_Dimuon18_PsiPrime_v26, process.HLT_Dimuon18_PsiPrime_noCorrL1_v18, process.HLT_Dimuon24_Upsilon_noCorrL1_v18, process.HLT_Dimuon24_Phi_noCorrL1_v18, process.HLT_Dimuon25_Jpsi_noCorrL1_v18, process.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, process.HLT_DoubleIsoMu20_eta2p1_v19, process.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, process.HLT_Mu8_v24, process.HLT_Mu17_v25, process.HLT_Mu19_v16, process.HLT_Mu17_Photon30_IsoCaloId_v18, process.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, process.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, process.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, process.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, process.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, process.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, process.HLT_PFHT400_SixPFJet32_v21, process.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, process.HLT_PFHT450_SixPFJet36_v20, process.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, process.HLT_PFHT350_v31, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, process.HLT_ECALHT800_v20, process.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, process.HLT_Photon20_HoverELoose_v20, process.HLT_Photon30_HoverELoose_v20, process.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, process.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, process.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, process.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, process.HLT_Mu18_Mu9_SameSign_v16, process.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, process.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, process.HLT_QuadPFJet103_88_75_15_v17, process.HLT_QuadPFJet105_88_76_15_v17, process.HLT_QuadPFJet111_90_80_15_v17, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, process.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, process.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, process.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, process.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, process.HLT_PFHT250_QuadPFJet25_v6, process.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, process.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, process.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, process.HLT_QuadPFJet100_88_70_30_v10, process.HLT_QuadPFJet105_88_75_30_v9, process.HLT_QuadPFJet111_90_80_30_v9, process.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, process.HLT_AK8PFJet220_SoftDropMass40_v13, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, process.HLT_AK8PFJet230_SoftDropMass40_v13, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_Nch45_v6, process.HLT_AK8PFJet275_Nch40_v6, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PFHT250_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, process.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, process.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, process.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, process.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, process.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu10NoVtx_2Cha_v9, process.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_L3Mu10NoVtx_v10, process.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, process.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, process.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, process.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, process.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, process.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, process.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, process.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, process.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, process.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, process.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, process.HLT_L1Mu6HT240_v9, process.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, process.HLT_HT350_v7, process.HLT_HT425_v19, process.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT550_DisplacedDijet60_Inclusive_v23, process.HLT_HT650_DisplacedDijet60_Inclusive_v23, process.HLT_CaloMET60_DTCluster50_v11, process.HLT_CaloMET60_DTClusterNoMB1S50_v11, process.HLT_L1MET_DTCluster50_v11, process.HLT_L1MET_DTClusterNoMB1S50_v11, process.HLT_CscCluster_Loose_v10, process.HLT_CscCluster_Medium_v10, process.HLT_CscCluster_Tight_v10, process.HLT_CscCluster50_Photon20Unseeded_v4, process.HLT_CscCluster50_Photon30Unseeded_v4, process.HLT_CscCluster100_Ele5_v4, process.HLT_CscCluster100_Mu5_v6, process.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, process.HLT_DoubleCscCluster75_v7, process.HLT_IsoTrk200_L1SingleMuShower_v4, process.HLT_IsoTrk400_L1SingleMuShower_v4, process.HLT_DoubleCscCluster100_v7, process.HLT_L1CSCShower_DTCluster50_v10, process.HLT_L1CSCShower_DTCluster75_v10, process.HLT_PFMET105_IsoTrk50_v13, process.HLT_L1SingleLLPJet_v7, process.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, process.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, process.HLT_DiPhoton10Time1ns_v10, process.HLT_DiPhoton10Time1p2ns_v10, process.HLT_DiPhoton10Time1p4ns_v10, process.HLT_DiPhoton10Time1p6ns_v10, process.HLT_DiPhoton10Time1p8ns_v10, process.HLT_DiPhoton10Time2ns_v10, process.HLT_DiPhoton10_CaloIdL_v10, process.HLT_DoubleEle6p5_eta1p22_mMax6_v10, process.HLT_DoubleEle8_eta1p22_mMax6_v10, process.HLT_DoubleEle10_eta1p22_mMax6_v10, process.HLT_SingleEle8_v9, process.HLT_SingleEle8_SingleEGL1_v9, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Mu50_L1SingleMuShower_v11, process.HLT_IsoMu24_OneProng32_v9, process.HLT_Photon32_OneProng32_M50To105_v10, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, process.HLT_VBF_DiPFJet125_45_Mjj1050_v8, process.HLT_VBF_DiPFJet125_45_Mjj1200_v6, process.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, process.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, process.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, process.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_PFJet200_TimeLtNeg2p5ns_v10, process.HLT_PFJet200_TimeGt2p5ns_v10, process.HLT_Photon50_TimeLtNeg2p5ns_v7, process.HLT_Photon50_TimeGt2p5ns_v7, process.HLT_PPSMaxTracksPerArm1_v9, process.HLT_PPSMaxTracksPerRP4_v9, process.HLT_PPSRandom_v1, process.MC_ReducedIterativeTracking_v22, process.MC_AK4CaloJets_v19, process.MC_AK4CaloJetsFromPV_v18, process.MC_CaloHT_v18, process.MC_AK8CaloHT_v18, process.MC_CaloMHT_v18, process.MC_AK4PFJets_v29, process.MC_PFHT_v28, process.MC_AK8PFJets_v29, process.MC_AK8PFHT_v28, process.MC_CaloMET_v18, process.MC_CaloMET_JetIdCleaned_v19, process.MC_PFMET_v29, process.MC_PFMHT_v28, process.MC_AK4PFJetPNet_v5, process.MC_AK8PFJetPNet_v5, process.MC_Egamma_Open_v8, process.MC_Egamma_Open_Unseeded_v8, process.MC_Ele5_WPTight_Gsf_v18, process.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, process.MC_DoubleEle5_CaloIdL_MW_v26, process.MC_IsoMu_v27, process.MC_DoubleMu_TrkIsoVVL_DZ_v23, process.MC_DoubleMuNoFiltersNoVtx_v17, process.MC_PFScouting_v6, process.HLT_L1AXOVTight_v4, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaLowPtJet, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaP0, process.Dataset_AlCaPPSExpress, process.Dataset_AlCaPPSPrompt, process.Dataset_AlCaPhiSym, process.Dataset_BTagMu, process.Dataset_Commissioning, process.Dataset_Cosmics, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_DQMPPSRandom, process.Dataset_DisplacedJet, process.Dataset_EGamma0, process.Dataset_EGamma1, process.Dataset_EcalLaser, process.Dataset_EphemeralHLTPhysics0, process.Dataset_EphemeralHLTPhysics1, process.Dataset_EphemeralHLTPhysics2, process.Dataset_EphemeralHLTPhysics3, process.Dataset_EphemeralHLTPhysics4, process.Dataset_EphemeralHLTPhysics5, process.Dataset_EphemeralHLTPhysics6, process.Dataset_EphemeralHLTPhysics7, process.Dataset_EphemeralZeroBias0, process.Dataset_EphemeralZeroBias1, process.Dataset_EphemeralZeroBias2, process.Dataset_EphemeralZeroBias3, process.Dataset_EphemeralZeroBias4, process.Dataset_EphemeralZeroBias5, process.Dataset_EphemeralZeroBias6, process.Dataset_EphemeralZeroBias7, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressPhysics, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_JetMET0, process.Dataset_JetMET1, process.Dataset_L1Accept, process.Dataset_MonteCarlo, process.Dataset_Muon0, process.Dataset_Muon1, process.Dataset_MuonEG, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_ParkingDoubleMuonLowMass0, process.Dataset_ParkingDoubleMuonLowMass1, process.Dataset_ParkingDoubleMuonLowMass2, process.Dataset_ParkingDoubleMuonLowMass3, process.Dataset_ParkingDoubleMuonLowMass4, process.Dataset_ParkingDoubleMuonLowMass5, process.Dataset_ParkingDoubleMuonLowMass6, process.Dataset_ParkingDoubleMuonLowMass7, process.Dataset_ParkingHH, process.Dataset_ParkingLLP, process.Dataset_ParkingSingleMuon0, process.Dataset_ParkingVBF0, process.Dataset_ParkingVBF1, process.Dataset_ParkingVBF2, process.Dataset_ParkingVBF3, process.Dataset_ParkingVBF4, process.Dataset_ParkingVBF5, process.Dataset_ParkingVBF6, process.Dataset_ParkingVBF7, process.Dataset_RPCMonitor, process.Dataset_ScoutingPFMonitor, process.Dataset_ScoutingPFRun3, process.Dataset_Tau, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_ZeroBias, process.ALCALowPtJetOutput, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCAP0Output, process.ALCAPHISYMOutput, process.ALCAPPSExpressOutput, process.ALCAPPSPromptOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.DQMPPSRandomOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.HLTMonitorOutput, process.PhysicsHLTPhysics2Output, process.ParkingDoubleMuonLowMass0Output, process.ParkingDoubleMuonLowMass1Output, process.ParkingDoubleMuonLowMass2Output, process.ParkingDoubleMuonLowMass3Output, process.ParkingHHOutput, process.ParkingLLPOutput, process.ParkingSingleMuon0Output, process.ParkingSingleMuon1Output, process.ParkingSingleMuon2Output, process.ParkingSingleMuon3Output, process.ParkingSingleMuon4Output, process.ParkingSingleMuon5Output, process.ParkingSingleMuon6Output, process.ParkingSingleMuon7Output, process.ParkingSingleMuon8Output, process.ParkingSingleMuon9Output, process.ParkingSingleMuon10Output, process.ParkingSingleMuon11Output, process.ParkingVBF0Output, process.ParkingVBF1Output, process.ParkingVBF2Output, process.ParkingVBF3Output, process.PhysicsCommissioningOutput, process.PhysicsDispJetBTagMuEGTauOutput, process.PhysicsEGamma0Output, process.PhysicsEGamma1Output, process.PhysicsHLTPhysics0Output, process.PhysicsHLTPhysics1Output, process.PhysicsHLTPhysics3Output, process.PhysicsJetMET0Output, process.PhysicsJetMET1Output, process.PhysicsMuon0Output, process.PhysicsMuon1Output, process.PhysicsScoutingPFMonitorOutput, process.PhysicsZeroBias0Output, process.PhysicsZeroBias1Output, process.PhysicsZeroBias2Output, process.PhysicsZeroBias3Output, process.NanoDSTOutput, process.RPCMONOutput, process.ScoutingPFOutput, process.Dataset_ParkingSingleMuon1, process.Dataset_ParkingSingleMuon2, process.Dataset_ParkingSingleMuon3, process.Dataset_ParkingSingleMuon4, process.Dataset_ParkingSingleMuon5, process.Dataset_ParkingSingleMuon6, process.Dataset_ParkingSingleMuon7, process.Dataset_ParkingSingleMuon8, process.Dataset_ParkingSingleMuon9, process.Dataset_ParkingSingleMuon10, process.Dataset_ParkingSingleMuon11, )) +process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_EcalEtaEBonly_v25, process.AlCa_EcalEtaEEonly_v25, process.AlCa_EcalPi0EBonly_v25, process.AlCa_EcalPi0EEonly_v25, process.AlCa_RPCMuonNormalisation_v23, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.AlCa_PFJet40_v32, process.AlCa_PFJet40_CPUOnly_v11, process.AlCa_AK8PFJet40_v27, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DST_ZeroBias_v11, process.DST_Physics_v16, process.DST_PFScouting_DoubleMuon_v6, process.DST_PFScouting_DoubleEG_v6, process.DST_PFScouting_JetHT_v6, process.DST_PFScouting_AXOVLoose_v4, process.DST_PFScouting_AXOLoose_v4, process.DST_PFScouting_AXONominal_v6, process.DST_PFScouting_AXOTight_v6, process.DST_PFScouting_AXOVTight_v4, process.DST_PFScouting_CICADAVLoose_v2, process.DST_PFScouting_CICADALoose_v2, process.DST_PFScouting_CICADAMedium_v2, process.DST_PFScouting_CICADATight_v2, process.DST_PFScouting_CICADAVTight_v2, process.DST_PFScouting_SingleMuon_v6, process.DST_PFScouting_SinglePhotonEB_v3, process.DST_PFScouting_ZeroBias_v4, process.HLT_EphemeralPhysics_v9, process.HLT_EphemeralZeroBias_v9, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Alignment_v8, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_IsolatedBunches_v12, process.HLT_ZeroBias_FirstBXAfterTrain_v10, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_ZeroBias_FirstCollisionInTrain_v11, process.HLT_ZeroBias_LastCollisionInTrain_v10, process.HLT_HT300_Beamspot_v23, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_PFJet40_GPUvsCPU_v7, process.HLT_AK8PFJet380_SoftDropMass30_v6, process.HLT_AK8PFJet400_SoftDropMass30_v6, process.HLT_AK8PFJet425_SoftDropMass30_v6, process.HLT_AK8PFJet450_SoftDropMass30_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass40_v6, process.HLT_AK8DiPFJet250_250_SoftDropMass50_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass30_v6, process.HLT_AK8DiPFJet260_260_SoftDropMass40_v6, process.HLT_AK8DiPFJet270_270_SoftDropMass30_v6, process.HLT_AK8DiPFJet280_280_SoftDropMass30_v12, process.HLT_AK8DiPFJet290_290_SoftDropMass30_v6, process.HLT_CaloJet500_NoJetID_v22, process.HLT_CaloJet550_NoJetID_v17, process.HLT_DoubleMu5_Upsilon_DoubleEle3_CaloIdL_TrackIdL_v16, process.HLT_DoubleMu3_DoubleEle7p5_CaloIdL_TrackIdL_Upsilon_v16, process.HLT_Trimuon5_3p5_2_Upsilon_Muon_v17, process.HLT_TrimuonOpen_5_3p5_2_Upsilon_Muon_v14, process.HLT_DoubleEle25_CaloIdL_MW_v15, process.HLT_DoubleEle27_CaloIdL_MW_v15, process.HLT_DoubleEle33_CaloIdL_MW_v28, process.HLT_DoubleEle24_eta2p1_WPTight_Gsf_v17, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v32, process.HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v32, process.HLT_Mu27_Ele37_CaloIdL_MW_v17, process.HLT_Mu37_Ele27_CaloIdL_MW_v17, process.HLT_Mu37_TkMu27_v17, process.HLT_DoubleMu4_3_Bs_v27, process.HLT_DoubleMu4_3_Jpsi_v27, process.HLT_DoubleMu4_3_LowMass_v13, process.HLT_DoubleMu4_LowMass_Displaced_v13, process.HLT_Mu0_L1DoubleMu_v13, process.HLT_Mu4_L1DoubleMu_v13, process.HLT_DoubleMu2_Jpsi_LowPt_v6, process.HLT_DoubleMu4_3_Photon4_BsToMMG_v12, process.HLT_DoubleMu4_3_Displaced_Photon4_BsToMMG_v12, process.HLT_DoubleMu3_Trk_Tau3mu_v24, process.HLT_DoubleMu3_TkMu_DsTau3Mu_v16, process.HLT_DoubleMu4_Mass3p8_DZ_PFHT350_v20, process.HLT_DoubleMu4_MuMuTrk_Displaced_v27, process.HLT_Mu3_PFJet40_v28, process.HLT_Mu7p5_L2Mu2_Jpsi_v22, process.HLT_Mu7p5_L2Mu2_Upsilon_v22, process.HLT_Mu3_L1SingleMu5orSingleMu7_v13, process.HLT_Mu0_Barrel_v6, process.HLT_Mu0_Barrel_L1HP6_v3, process.HLT_Mu0_Barrel_L1HP7_v3, process.HLT_Mu0_Barrel_L1HP8_v4, process.HLT_Mu0_Barrel_L1HP9_v4, process.HLT_Mu0_Barrel_L1HP10_v6, process.HLT_Mu0_Barrel_L1HP11_v6, process.HLT_Mu0_Barrel_L1HP6_IP6_v3, process.HLT_Mu6_Barrel_L1HP7_IP6_v3, process.HLT_Mu7_Barrel_L1HP8_IP6_v4, process.HLT_Mu8_Barrel_L1HP9_IP6_v4, process.HLT_Mu9_Barrel_L1HP10_IP6_v6, process.HLT_Mu10_Barrel_L1HP11_IP6_v6, process.HLT_DoublePhoton33_CaloIdL_v17, process.HLT_DoublePhoton70_v17, process.HLT_DoublePhoton85_v25, process.HLT_DiEle27_WPTightCaloOnly_L1DoubleEG_v14, process.HLT_Ele30_WPTight_Gsf_v11, process.HLT_Ele32_WPTight_Gsf_v25, process.HLT_Ele35_WPTight_Gsf_v19, process.HLT_Ele38_WPTight_Gsf_v19, process.HLT_Ele40_WPTight_Gsf_v19, process.HLT_Ele32_WPTight_Gsf_L1DoubleEG_v19, process.HLT_IsoMu20_v27, process.HLT_IsoMu24_v25, process.HLT_IsoMu24_HLTTracking_v1, process.HLT_IsoMu24_eta2p1_v27, process.HLT_IsoMu27_v28, process.HLT_UncorrectedJetE30_NoBPTX_v14, process.HLT_UncorrectedJetE30_NoBPTX3BX_v14, process.HLT_UncorrectedJetE60_NoBPTX3BX_v14, process.HLT_UncorrectedJetE70_NoBPTX3BX_v14, process.HLT_L1SingleMuCosmics_v8, process.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, process.HLT_L2Mu10_NoVertex_NoBPTX_v15, process.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, process.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, process.HLT_L2Mu23NoVtx_2Cha_v10, process.HLT_L2Mu23NoVtx_2Cha_CosmicSeed_v10, process.HLT_DoubleL2Mu30NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu30NoVtx_2Cha_Eta2p4_v11, process.HLT_DoubleL2Mu50_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_CosmicSeed_Eta2p4_v11, process.HLT_DoubleL2Mu23NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_v11, process.HLT_DoubleL2Mu25NoVtx_2Cha_Eta2p4_v11, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v26, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v27, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_HLTTracking_v1, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_PFJet30_v6, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v15, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v17, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_HLTTracking_v1, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_CaloJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8PFJet30_v5, process.HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_AK8CaloJet30_v5, process.HLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v15, process.HLT_Mu30_TkMu0_Psi_v13, process.HLT_Mu30_TkMu0_Upsilon_v13, process.HLT_Mu25_TkMu0_Phi_v20, process.HLT_Mu15_v15, process.HLT_Mu20_v24, process.HLT_Mu27_v25, process.HLT_Mu50_v25, process.HLT_Mu55_v15, process.HLT_CascadeMu100_v13, process.HLT_HighPtTkMu100_v12, process.HLT_DiPFJetAve40_v26, process.HLT_DiPFJetAve60_v26, process.HLT_DiPFJetAve80_v26, process.HLT_DiPFJetAve140_v25, process.HLT_DiPFJetAve200_v25, process.HLT_DiPFJetAve260_v26, process.HLT_DiPFJetAve320_v26, process.HLT_DiPFJetAve400_v26, process.HLT_DiPFJetAve500_v26, process.HLT_DiPFJetAve60_HFJEC_v27, process.HLT_DiPFJetAve80_HFJEC_v29, process.HLT_DiPFJetAve100_HFJEC_v29, process.HLT_DiPFJetAve160_HFJEC_v28, process.HLT_DiPFJetAve220_HFJEC_v28, process.HLT_DiPFJetAve260_HFJEC_v11, process.HLT_DiPFJetAve300_HFJEC_v28, process.HLT_DiPFJetAve180_PPSMatch_Xi0p3_QuadJet_Max2ProtPerRP_v6, process.HLT_AK8PFJet40_v28, process.HLT_AK8PFJet60_v27, process.HLT_AK8PFJet80_v28, process.HLT_AK8PFJet140_v27, process.HLT_AK8PFJet200_v27, process.HLT_AK8PFJet260_v28, process.HLT_AK8PFJet320_v28, process.HLT_AK8PFJet400_v28, process.HLT_AK8PFJet450_v28, process.HLT_AK8PFJet500_v28, process.HLT_AK8PFJet550_v23, process.HLT_PFJet40_v33, process.HLT_PFJet60_v33, process.HLT_PFJet80_v33, process.HLT_PFJet110_v12, process.HLT_PFJet140_v31, process.HLT_PFJet200_v31, process.HLT_PFJet260_v32, process.HLT_PFJet320_v32, process.HLT_PFJet400_v32, process.HLT_PFJet450_v33, process.HLT_PFJet500_v33, process.HLT_PFJet550_v23, process.HLT_PFJetFwd40_v31, process.HLT_PFJetFwd60_v31, process.HLT_PFJetFwd80_v30, process.HLT_PFJetFwd140_v30, process.HLT_PFJetFwd200_v30, process.HLT_PFJetFwd260_v31, process.HLT_PFJetFwd320_v31, process.HLT_PFJetFwd400_v31, process.HLT_PFJetFwd450_v31, process.HLT_PFJetFwd500_v31, process.HLT_AK8PFJetFwd40_v27, process.HLT_AK8PFJetFwd60_v26, process.HLT_AK8PFJetFwd80_v26, process.HLT_AK8PFJetFwd140_v26, process.HLT_AK8PFJetFwd200_v26, process.HLT_AK8PFJetFwd260_v27, process.HLT_AK8PFJetFwd320_v27, process.HLT_AK8PFJetFwd400_v27, process.HLT_AK8PFJetFwd450_v27, process.HLT_AK8PFJetFwd500_v27, process.HLT_PFHT180_v29, process.HLT_PFHT250_v29, process.HLT_PFHT370_v29, process.HLT_PFHT430_v29, process.HLT_PFHT510_v29, process.HLT_PFHT590_v29, process.HLT_PFHT680_v29, process.HLT_PFHT780_v29, process.HLT_PFHT890_v29, process.HLT_PFHT1050_v30, process.HLT_PFHT500_PFMET100_PFMHT100_IDTight_v24, process.HLT_PFHT500_PFMET110_PFMHT110_IDTight_v24, process.HLT_PFHT700_PFMET85_PFMHT85_IDTight_v24, process.HLT_PFHT800_PFMET75_PFMHT75_IDTight_v24, process.HLT_PFMET120_PFMHT120_IDTight_v32, process.HLT_PFMET130_PFMHT130_IDTight_v32, process.HLT_PFMET140_PFMHT140_IDTight_v32, process.HLT_PFMET120_PFMHT120_IDTight_PFHT60_v21, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v21, process.HLT_PFMETTypeOne140_PFMHT140_IDTight_v23, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v32, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_v31, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_v31, process.HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_FilterHF_v12, process.HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_FilterHF_v12, process.HLT_PFMETNoMu130_PFMHTNoMu130_IDTight_FilterHF_v12, process.HLT_PFMETNoMu140_PFMHTNoMu140_IDTight_FilterHF_v12, process.HLT_L1ETMHadSeeds_v10, process.HLT_CaloMHT90_v14, process.HLT_CaloMET90_NotCleaned_v14, process.HLT_CaloMET350_NotCleaned_v14, process.HLT_PFMET200_NotCleaned_v21, process.HLT_PFMET250_NotCleaned_v21, process.HLT_PFMET300_NotCleaned_v21, process.HLT_PFMET200_BeamHaloCleaned_v21, process.HLT_PFMETTypeOne200_BeamHaloCleaned_v21, process.HLT_MET105_IsoTrk50_v19, process.HLT_MET120_IsoTrk50_v19, process.HLT_Mu12eta2p3_v13, process.HLT_Mu12eta2p3_PFJet40_v13, process.HLT_Mu12_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_Mu12_DoublePFJets40MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Mu12_DoublePFJets54MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets40_PNetBTag_0p11_v6, process.HLT_DoublePFJets100_PNetBTag_0p11_v6, process.HLT_DoublePFJets200_PNetBTag_0p11_v6, process.HLT_DoublePFJets350_PNetBTag_0p11_v6, process.HLT_DoublePFJets116MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_DoublePFJets128MaxDeta1p6_PNet2BTag_0p11_v6, process.HLT_Photon300_NoHE_v23, process.HLT_Mu8_TrkIsoVVL_v24, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_DZ_v30, process.HLT_Mu8_DiEle12_CaloIdL_TrackIdL_v30, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_DZ_v31, process.HLT_Mu8_Ele8_CaloIdM_TrackIdM_Mass8_PFHT350_v31, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v13, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v23, process.HLT_Mu17_TrkIsoVVL_v25, process.HLT_Mu19_TrkIsoVVL_v16, process.HLT_BTagMu_AK4DiJet20_Mu5_v25, process.HLT_BTagMu_AK4DiJet40_Mu5_v25, process.HLT_BTagMu_AK4DiJet70_Mu5_v25, process.HLT_BTagMu_AK4DiJet110_Mu5_v25, process.HLT_BTagMu_AK4DiJet170_Mu5_v24, process.HLT_BTagMu_AK4Jet300_Mu5_v24, process.HLT_BTagMu_AK8DiJet170_Mu5_v21, process.HLT_BTagMu_AK8Jet170_DoubleMu5_v14, process.HLT_BTagMu_AK8Jet300_Mu5_v24, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v29, process.HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v29, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu23_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_v19, process.HLT_Mu12_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_v27, process.HLT_Mu12_IsoVVL_PFHT150_PNetBTag0p53_v5, process.HLT_Photon33_v15, process.HLT_Photon50_v23, process.HLT_Photon75_v23, process.HLT_Photon90_v23, process.HLT_Photon120_v23, process.HLT_Photon150_v17, process.HLT_Photon175_v25, process.HLT_Photon200_v24, process.HLT_Photon45EB_v3, process.HLT_Photon40EB_v3, process.HLT_Photon50EB_v4, process.HLT_Photon30EB_TightID_TightIso_v12, process.HLT_Photon40EB_TightID_TightIso_v3, process.HLT_Photon45EB_TightID_TightIso_v3, process.HLT_Photon50EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon50EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon50EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon50EB_TightID_TightIso_v8, process.HLT_Photon55EB_TightID_TightIso_v4, process.HLT_Photon75EB_TightID_TightIso_v8, process.HLT_Photon90EB_TightID_TightIso_v8, process.HLT_Photon110EB_TightID_TightIso_v12, process.HLT_Photon110EB_TightID_TightIso_PFJet30_v6, process.HLT_Photon110EB_TightID_TightIso_CaloJet30_v3, process.HLT_Photon110EB_TightID_TightIso_AK8PFJet30_v5, process.HLT_Photon110EB_TightID_TightIso_AK8CaloJet30_v3, process.HLT_Photon100EBHE10_v12, process.HLT_Photon50_R9Id90_HE10_IsoM_v24, process.HLT_Photon75_R9Id90_HE10_IsoM_v24, process.HLT_Photon90_R9Id90_HE10_IsoM_v24, process.HLT_Photon120_R9Id90_HE10_IsoM_v24, process.HLT_Photon165_R9Id90_HE10_IsoM_v25, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass90_v23, process.HLT_Diphoton30_22_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass95_v23, process.HLT_DiphotonMVA14p25_Mass90_v3, process.HLT_DiphotonMVA14p25_Tight_Mass90_v3, process.HLT_Photon35_TwoProngs35_v13, process.HLT_IsoMu24_TwoProngs35_v13, process.HLT_Dimuon0_Jpsi_L1_NoOS_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_NoOS_v19, process.HLT_Dimuon0_Jpsi_v20, process.HLT_Dimuon0_Jpsi_NoVertexing_v20, process.HLT_Dimuon0_Jpsi_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi_NoVertexing_L1_4R_0er1p5R_v19, process.HLT_Dimuon0_Jpsi3p5_Muon2_v17, process.HLT_Dimuon0_Upsilon_L1_4p5_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0_v21, process.HLT_Dimuon0_Upsilon_L1_4p5er2p0M_v19, process.HLT_Dimuon0_Upsilon_NoVertexing_v19, process.HLT_Dimuon0_LowMass_L1_0er1p5_v20, process.HLT_Dimuon0_LowMass_v20, process.HLT_Dimuon0_LowMass_L1_4_v20, process.HLT_Dimuon0_LowMass_L1_TM530_v18, process.HLT_Dimuon0_Upsilon_Muon_NoL1Mass_v18, process.HLT_TripleMu_5_3_3_Mass3p8_DZ_v20, process.HLT_TripleMu_10_5_5_DZ_v22, process.HLT_TripleMu_12_10_5_v22, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_Tau15_Charge1_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_v16, process.HLT_Tau3Mu_Mu7_Mu1_TkMu1_IsoTau15_Charge1_v16, process.HLT_DoubleMu3_DZ_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DZ_PFMET70_PFMHT70_v22, process.HLT_DoubleMu3_DZ_PFMET90_PFMHT90_v22, process.HLT_DoubleMu3_Trk_Tau3mu_NoL1Mass_v18, process.HLT_DoubleMu4_3_LowMass_SS_v6, process.HLT_DoubleMu4_Jpsi_Displaced_v19, process.HLT_DoubleMu4_Jpsi_NoVertexing_v19, process.HLT_DoubleMu4_JpsiTrkTrk_Displaced_v19, process.HLT_DoubleMu4_JpsiTrk_Bc_v12, process.HLT_DoubleMu43NoFiltersNoVtx_v14, process.HLT_DoubleMu48NoFiltersNoVtx_v14, process.HLT_Mu43NoFiltersNoVtx_Photon43_CaloIdL_v15, process.HLT_Mu48NoFiltersNoVtx_Photon48_CaloIdL_v15, process.HLT_Mu38NoFiltersNoVtxDisplaced_Photon38_CaloIdL_v11, process.HLT_Mu43NoFiltersNoVtxDisplaced_Photon43_CaloIdL_v11, process.HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v25, process.HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v25, process.HLT_Ele28_HighEta_SC20_Mass55_v23, process.HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v28, process.HLT_Ele15_IsoVVVL_PFHT450_v28, process.HLT_Ele50_IsoVVVL_PFHT450_v28, process.HLT_Ele15_IsoVVVL_PFHT600_v32, process.HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v27, process.HLT_Mu15_IsoVVVL_PFHT450_v27, process.HLT_Mu50_IsoVVVL_PFHT450_v27, process.HLT_Mu15_IsoVVVL_PFHT600_v31, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET80_PFMHT80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET90_PFMHT90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMET100_PFMHT100_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu80_PFMHTNoMu80_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu90_PFMHTNoMu90_IDTight_v14, process.HLT_Mu3er1p5_PFJet100er2p5_PFMETNoMu100_PFMHTNoMu100_IDTight_v14, process.HLT_Dimuon10_Upsilon_y1p4_v13, process.HLT_Dimuon12_Upsilon_y1p4_v14, process.HLT_Dimuon14_Phi_Barrel_Seagulls_v19, process.HLT_Dimuon25_Jpsi_v26, process.HLT_Dimuon14_PsiPrime_v25, process.HLT_Dimuon14_PsiPrime_noCorrL1_v17, process.HLT_Dimuon18_PsiPrime_v26, process.HLT_Dimuon18_PsiPrime_noCorrL1_v18, process.HLT_Dimuon24_Upsilon_noCorrL1_v18, process.HLT_Dimuon24_Phi_noCorrL1_v18, process.HLT_Dimuon25_Jpsi_noCorrL1_v18, process.HLT_DiMu4_Ele9_CaloIdL_TrackIdL_DZ_Mass3p8_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_DZ_v29, process.HLT_DiMu9_Ele9_CaloIdL_TrackIdL_v29, process.HLT_DoubleIsoMu20_eta2p1_v19, process.HLT_TrkMu12_DoubleTrkMu5NoFiltersNoVtx_v17, process.HLT_Mu8_v24, process.HLT_Mu17_v25, process.HLT_Mu19_v16, process.HLT_Mu17_Photon30_IsoCaloId_v18, process.HLT_Ele8_CaloIdL_TrackIdL_IsoVL_PFJet30_v28, process.HLT_Ele12_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele14_eta2p5_IsoVVVL_Gsf_PFHT200_PNetBTag0p53_v5, process.HLT_Ele23_CaloIdL_TrackIdL_IsoVL_PFJet30_v30, process.HLT_Ele8_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele17_CaloIdM_TrackIdM_PFJet30_v28, process.HLT_Ele23_CaloIdM_TrackIdM_PFJet30_v30, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_PFJet165_v30, process.HLT_Ele115_CaloIdVT_GsfTrkIdT_v25, process.HLT_Ele135_CaloIdVT_GsfTrkIdT_v18, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_v21, process.HLT_PFHT400_SixPFJet32_v21, process.HLT_PFHT400_SixPFJet32_PNet2BTagMean0p50_v9, process.HLT_PFHT450_SixPFJet36_v20, process.HLT_PFHT450_SixPFJet36_PNetBTag0p35_v9, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_v6, process.HLT_PFHT350_v31, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT350_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT380_v10, process.HLT_Photon60_R9Id90_CaloIdL_IsoL_DisplacedIdL_PFHT400_v10, process.HLT_ECALHT800_v20, process.HLT_DiSC30_18_EIso_AND_HE_Mass70_v24, process.HLT_Photon20_HoverELoose_v20, process.HLT_Photon30_HoverELoose_v20, process.HLT_L1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142_v9, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_Ele16_Ele12_Ele8_CaloIdL_TrackIdL_v19, process.HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v13, process.HLT_Photon60_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v9, process.HLT_Photon75_R9Id90_HE10_IsoM_EBOnly_PFJetsMJJ300DEta3_v17, process.HLT_Mu18_Mu9_SameSign_v16, process.HLT_DoubleMu2_Jpsi_DoubleTrk1_Phi1p05_v18, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_v22, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_v6, process.HLT_DoubleMu3_DCA_PFMET50_PFMHT60_Mass2p0_noDCA_v6, process.HLT_TripleMu_5_3_3_Mass3p8_DCA_v15, process.HLT_QuadPFJet103_88_75_15_v17, process.HLT_QuadPFJet105_88_76_15_v17, process.HLT_QuadPFJet111_90_80_15_v17, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_v11, process.HLT_Diphoton30_18_R9IdL_AND_HE_AND_IsoCaloId_Mass55_v11, process.HLT_DoubleMediumDeepTauPFTauHPS35_L2NN_eta2p1_v12, process.HLT_Ele24_eta2p1_WPTight_Gsf_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Tight_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Medium_eta2p3_CrossL1_v6, process.HLT_Ele24_eta2p1_WPTight_Gsf_PNetTauhPFJet30_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_LooseDeepTauPFTauHPS27_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS180_eta2p1_v13, process.HLT_IsoMu24_eta2p1_LooseDeepTauPFTauHPS30_eta2p1_CrossL1_v13, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS35_L2NN_eta2p1_CrossL1_v13, process.HLT_LooseDeepTauPFTauHPS180_L2NN_eta2p1_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_TriplePFBTagDeepJet_4p5_v13, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_4p3_v5, process.HLT_PFHT330PT30_QuadPFJet_75_60_45_40_PNet3BTag_2p0_v5, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_5p6_v6, process.HLT_PFHT400_FivePFJet_120_120_60_30_30_PNet2BTag_4p3_v6, process.HLT_QuadPFJet103_88_75_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet103_88_75_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet105_88_76_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet105_88_76_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_QuadPFJet111_90_80_15_PNetBTag_0p4_VBF2_v6, process.HLT_QuadPFJet111_90_80_15_PNet2BTag_0p4_0p12_VBF1_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PFBtagDeepJet_1p5_v13, process.HLT_PFHT250_QuadPFJet25_v6, process.HLT_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet25_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT250_QuadPFJet30_PNet2BTagMean0p55_v6, process.HLT_PFHT250_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_PNet1BTag0p20_PNet1Tauh0p50_v6, process.HLT_PFHT280_QuadPFJet30_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_PFHT280_QuadPFJet30_PNet2BTagMean0p60_v9, process.HLT_PFHT280_QuadPFJet35_PNet2BTagMean0p60_v9, process.HLT_PFHT340_QuadPFJet70_50_40_40_PNet2BTagMean0p70_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT280_QuadPFJet30_PNet2BTagMean0p55_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_PNet2BTagMean0p50_v9, process.HLT_QuadPFJet100_88_70_30_v10, process.HLT_QuadPFJet105_88_75_30_v9, process.HLT_QuadPFJet111_90_80_30_v9, process.HLT_QuadPFJet100_88_70_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet105_88_75_30_PNet1CvsAll0p5_VBF3Tight_v10, process.HLT_QuadPFJet111_90_80_30_PNet1CvsAll0p6_VBF3Tight_v10, process.HLT_AK8PFJet220_SoftDropMass40_v13, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p53_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p55_v9, process.HLT_AK8PFJet220_SoftDropMass40_PNetBB0p06_DoubleAK4PFJet60_30_PNet2BTagMean0p60_v9, process.HLT_AK8PFJet230_SoftDropMass40_v13, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet230_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet250_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p06_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetBB0p10_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p03_v9, process.HLT_AK8PFJet275_SoftDropMass40_PNetTauTau0p05_v9, process.HLT_AK8PFJet275_Nch45_v6, process.HLT_AK8PFJet275_Nch40_v6, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_v12, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_IsoMu50_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet220_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_v12, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p06_v9, process.HLT_Ele50_CaloIdVT_GsfTrkIdT_AK8PFJet230_SoftDropMass40_PNetBB0p10_v9, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_DoubleAK4PFJet60_30_PNet2BTagMean0p50_v10, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet2BTagMean0p55_v6, process.HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFHT250_QuadPFJet25_PNet1BTag0p20_v6, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_v12, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet60_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_PFJet75_CrossL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v12, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS45_L2NN_eta2p1_CrossL1_v12, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet60_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet26_L2NN_eta2p3_CrossL1_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Tight_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Medium_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet30_Loose_eta2p3_CrossL1_ETau_Monitoring_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Tight_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Medium_eta2p3_CrossL1_v6, process.HLT_IsoMu20_eta2p1_PNetTauhPFJet27_Loose_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet20_eta2p2_SingleL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet45_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PFHT250_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_v6, process.HLT_IsoMu24_eta2p1_PFHT250_QuadPFJet25_PNet1Tauh0p50_v6, process.HLT_IsoMu24_eta2p1_SinglePFJet25_PNet1Tauh0p50_v6, process.HLT_DoublePNetTauhPFJet30_Medium_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet30_Tight_L2NN_eta2p3_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet60_v6, process.HLT_DoublePNetTauhPFJet26_L2NN_eta2p3_PFJet75_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Loose_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Medium_L2NN_eta2p3_CrossL1_v6, process.HLT_IsoMu24_eta2p1_PNetTauhPFJet130_Tight_L2NN_eta2p3_CrossL1_v6, process.HLT_SinglePNetTauhPFJet130_Loose_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Medium_L2NN_eta2p3_v6, process.HLT_SinglePNetTauhPFJet130_Tight_L2NN_eta2p3_v6, process.HLT_DoubleL2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v12, process.HLT_DoubleL2Mu12NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu14NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3Mu16_10NoVtx_DxyMin0p01cm_v11, process.HLT_DoubleL3Mu18_10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL3Mu20_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu10NoVtx_2Cha_v9, process.HLT_L2Mu10NoVtx_2Cha_VetoL3Mu0DxyMax1cm_v11, process.HLT_L3Mu10NoVtx_v10, process.HLT_L3Mu10NoVtx_DxyMin0p01cm_v10, process.HLT_DoubleL2Mu_L3Mu16NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu_L3Mu18NoVtx_VetoL3Mu0DxyMax0p1cm_v10, process.HLT_DoubleL2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL2Mu12NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_v9, process.HLT_L2Mu10NoVtx_2Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v11, process.HLT_DoubleL3dTksMu16_10NoVtx_DxyMin0p01cm_v10, process.HLT_L2Mu50NoVtx_3Cha_CosmicSeed_VetoL3Mu0DxyMax1cm_v4, process.HLT_L2Mu50NoVtx_3Cha_VetoL3Mu0DxyMax1cm_v4, process.HLT_L3Mu30NoVtx_DxyMin0p01cm_v3, process.HLT_L3Mu50NoVtx_DxyMin0p01cm_v3, process.HLT_L3dTksMu10_NoVtx_DxyMin0p01cm_v10, process.HLT_Mu20NoFiltersNoVtxDisplaced_Photon20_CaloCustomId_v11, process.HLT_DisplacedMu24_MediumChargedIsoDisplacedPFTauHPS24_v8, process.HLT_Photon34_R9Id90_CaloIdL_IsoL_DisplacedIdL_MediumChargedIsoDisplacedPFTauHPS34_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_v13, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS36_Trk1_eta2p1_v8, process.HLT_DoubleMediumChargedIsoDisplacedPFTauHPS32_Trk1_eta2p1_noDxy_v8, process.HLT_IsoMu27_MediumChargedIsoDisplacedPFTauHPS24_eta2p1_SingleL1_v8, process.HLT_HT350_DelayedJet40_SingleDelay1p5To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p6To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay1p75To3p5nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p25nsInclusive_v7, process.HLT_HT350_DelayedJet40_SingleDelay3p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay1To1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p1To1p6nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p25To1p75nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsInclusive_v9, process.HLT_HT430_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT430_DelayedJet40_SingleDelay2p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay2p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_SingleDelay0p5nsTrackless_v9, process.HLT_HT430_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT430_DelayedJet40_SingleDelay1p25nsTrackless_v7, process.HLT_HT430_DelayedJet40_SingleDelay1p5nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsInclusive_v10, process.HLT_HT430_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT430_DelayedJet40_DoubleDelay1p25nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_HT430_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT430_DelayedJet40_DoubleDelay0p75nsTrackless_v7, process.HLT_HT430_DelayedJet40_DoubleDelay1nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p6To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75To4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3p5nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay3p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay4nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay2p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_SingleDelay2p75nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_SingleDelay3nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p75nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsInclusive_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p75nsInclusive_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay0p5nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1nsTrackless_v9, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p25nsTrackless_v7, process.HLT_L1Tau_DelayedJet40_DoubleDelay1p5nsTrackless_v7, process.HLT_L1Mu6HT240_v9, process.HLT_Mu6HT240_DisplacedDijet30_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet35_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet40_Inclusive1PtrkShortSig5_DisplacedLoose_v11, process.HLT_Mu6HT240_DisplacedDijet45_Inclusive0PtrkShortSig5_v11, process.HLT_Mu6HT240_DisplacedDijet50_Inclusive0PtrkShortSig5_v11, process.HLT_HT350_v7, process.HLT_HT425_v19, process.HLT_HT360_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT360_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT390_DisplacedDijet45_Inclusive1PtrkShortSig5_v7, process.HLT_HT390eta2p0_DisplacedDijet40_Inclusive1PtrkShortSig5_v7, process.HLT_HT430_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT400_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT430_DisplacedDijet40_DisplacedTrack_v23, process.HLT_HT550_DisplacedDijet60_Inclusive_v23, process.HLT_HT650_DisplacedDijet60_Inclusive_v23, process.HLT_CaloMET60_DTCluster50_v11, process.HLT_CaloMET60_DTClusterNoMB1S50_v11, process.HLT_L1MET_DTCluster50_v11, process.HLT_L1MET_DTClusterNoMB1S50_v11, process.HLT_CscCluster_Loose_v10, process.HLT_CscCluster_Medium_v10, process.HLT_CscCluster_Tight_v10, process.HLT_CscCluster50_Photon20Unseeded_v4, process.HLT_CscCluster50_Photon30Unseeded_v4, process.HLT_CscCluster100_Ele5_v4, process.HLT_CscCluster100_Mu5_v6, process.HLT_CscCluster100_PNetTauhPFJet10_Loose_v6, process.HLT_DoubleCscCluster75_v7, process.HLT_IsoTrk200_L1SingleMuShower_v4, process.HLT_IsoTrk400_L1SingleMuShower_v4, process.HLT_DoubleCscCluster100_v7, process.HLT_L1CSCShower_DTCluster50_v10, process.HLT_L1CSCShower_DTCluster75_v10, process.HLT_PFMET105_IsoTrk50_v13, process.HLT_L1SingleLLPJet_v7, process.HLT_HT170_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet60_DisplacedTrack_v11, process.HLT_HT270_L1SingleLLPJet_DisplacedDijet40_DisplacedTrack_v11, process.HLT_HT200_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v11, process.HLT_HT240_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT280_L1SingleLLPJet_DisplacedDijet40_Inclusive1PtrkShortSig5_v8, process.HLT_HT320_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT420_L1SingleLLPJet_DisplacedDijet60_Inclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay1nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_SingleDelay2nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay0p5nsTrackless_v11, process.HLT_HT200_L1SingleLLPJet_DelayedJet40_DoubleDelay1nsInclusive_v11, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p7_v6, process.HLT_HT200_L1SingleLLPJet_PFJet60_NeutralHadronFrac0p8_v6, process.HLT_DiPhoton10Time1ns_v10, process.HLT_DiPhoton10Time1p2ns_v10, process.HLT_DiPhoton10Time1p4ns_v10, process.HLT_DiPhoton10Time1p6ns_v10, process.HLT_DiPhoton10Time1p8ns_v10, process.HLT_DiPhoton10Time2ns_v10, process.HLT_DiPhoton10_CaloIdL_v10, process.HLT_DoubleEle6p5_eta1p22_mMax6_v10, process.HLT_DoubleEle8_eta1p22_mMax6_v10, process.HLT_DoubleEle10_eta1p22_mMax6_v10, process.HLT_SingleEle8_v9, process.HLT_SingleEle8_SingleEGL1_v9, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton20_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HE_AND_IsoTCaloIdT_v10, process.HLT_Diphoton22_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_14_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Diphoton24_16_eta1p5_R9IdL_AND_HET_AND_IsoTCaloIdT_v10, process.HLT_Mu50_L1SingleMuShower_v11, process.HLT_IsoMu24_OneProng32_v9, process.HLT_Photon32_OneProng32_M50To105_v10, process.HLT_DoubleMediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_v8, process.HLT_IsoMu24_eta2p1_MediumDeepTauPFTauHPS30_L2NN_eta2p1_OneProng_CrossL1_v8, process.HLT_VBF_DiPFJet125_45_Mjj1050_v8, process.HLT_VBF_DiPFJet125_45_Mjj1200_v6, process.HLT_VBF_DiPFJet75_45_Mjj800_DiPFJet60_v6, process.HLT_VBF_DiPFJet75_45_Mjj850_DiPFJet60_v6, process.HLT_VBF_DiPFJet80_45_Mjj650_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet80_45_Mjj750_PFMETNoMu85_v6, process.HLT_VBF_DiPFJet95_45_Mjj750_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet95_45_Mjj850_Mu3_TrkIsoVVL_v6, process.HLT_VBF_DiPFJet50_Mjj650_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj750_Photon22_v6, process.HLT_VBF_DiPFJet50_Mjj600_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet50_Mjj650_Ele22_eta2p1_WPTight_Gsf_v6, process.HLT_VBF_DiPFJet45_Mjj650_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DiPFJet45_Mjj750_MediumDeepTauPFTauHPS45_L2NN_eta2p1_v6, process.HLT_VBF_DoublePNetTauhPFJet20_eta2p2_v6, process.HLT_VBF_DiPFJet45_Mjj650_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_VBF_DiPFJet45_Mjj750_PNetTauhPFJet45_L2NN_eta2p3_v6, process.HLT_PFJet200_TimeLtNeg2p5ns_v10, process.HLT_PFJet200_TimeGt2p5ns_v10, process.HLT_Photon50_TimeLtNeg2p5ns_v7, process.HLT_Photon50_TimeGt2p5ns_v7, process.HLT_PPSMaxTracksPerArm1_v9, process.HLT_PPSMaxTracksPerRP4_v9, process.HLT_PPSRandom_v1, process.MC_ReducedIterativeTracking_v22, process.MC_AK4CaloJets_v19, process.MC_AK4CaloJetsFromPV_v18, process.MC_CaloHT_v18, process.MC_AK8CaloHT_v18, process.MC_CaloMHT_v18, process.MC_AK4PFJets_v29, process.MC_PFHT_v28, process.MC_AK8PFJets_v29, process.MC_AK8PFHT_v28, process.MC_CaloMET_v18, process.MC_CaloMET_JetIdCleaned_v19, process.MC_PFMET_v29, process.MC_PFMHT_v28, process.MC_AK4PFJetPNet_v5, process.MC_AK8PFJetPNet_v5, process.MC_Egamma_Open_v8, process.MC_Egamma_Open_Unseeded_v8, process.MC_Ele5_WPTight_Gsf_v18, process.MC_Ele15_Ele10_CaloIdL_TrackIdL_IsoVL_DZ_v25, process.MC_Diphoton10_10_R9Id_OR_IsoCaloId_AND_HE_R9Id_Mass10_v23, process.MC_DoubleEle5_CaloIdL_MW_v26, process.MC_IsoMu_v27, process.MC_DoubleMu_TrkIsoVVL_DZ_v23, process.MC_DoubleMuNoFiltersNoVtx_v17, process.MC_PFScouting_v6, process.HLT_L1AXOVTight_v4, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaLowPtJet, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaP0, process.Dataset_AlCaPPSExpress, process.Dataset_AlCaPPSPrompt, process.Dataset_AlCaPhiSym, process.Dataset_BTagMu, process.Dataset_Commissioning, process.Dataset_Cosmics, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_DQMPPSRandom, process.Dataset_DisplacedJet, process.Dataset_EGamma0, process.Dataset_EGamma1, process.Dataset_EcalLaser, process.Dataset_EphemeralHLTPhysics0, process.Dataset_EphemeralHLTPhysics1, process.Dataset_EphemeralHLTPhysics2, process.Dataset_EphemeralHLTPhysics3, process.Dataset_EphemeralHLTPhysics4, process.Dataset_EphemeralHLTPhysics5, process.Dataset_EphemeralHLTPhysics6, process.Dataset_EphemeralHLTPhysics7, process.Dataset_EphemeralZeroBias0, process.Dataset_EphemeralZeroBias1, process.Dataset_EphemeralZeroBias2, process.Dataset_EphemeralZeroBias3, process.Dataset_EphemeralZeroBias4, process.Dataset_EphemeralZeroBias5, process.Dataset_EphemeralZeroBias6, process.Dataset_EphemeralZeroBias7, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressPhysics, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_JetMET0, process.Dataset_JetMET1, process.Dataset_L1Accept, process.Dataset_MonteCarlo, process.Dataset_Muon0, process.Dataset_Muon1, process.Dataset_MuonEG, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_ParkingDoubleMuonLowMass0, process.Dataset_ParkingDoubleMuonLowMass1, process.Dataset_ParkingDoubleMuonLowMass2, process.Dataset_ParkingDoubleMuonLowMass3, process.Dataset_ParkingDoubleMuonLowMass4, process.Dataset_ParkingDoubleMuonLowMass5, process.Dataset_ParkingDoubleMuonLowMass6, process.Dataset_ParkingDoubleMuonLowMass7, process.Dataset_ParkingHH, process.Dataset_ParkingLLP, process.Dataset_ParkingSingleMuon0, process.Dataset_ParkingVBF0, process.Dataset_ParkingVBF1, process.Dataset_ParkingVBF2, process.Dataset_ParkingVBF3, process.Dataset_ParkingVBF4, process.Dataset_ParkingVBF5, process.Dataset_ParkingVBF6, process.Dataset_ParkingVBF7, process.Dataset_RPCMonitor, process.Dataset_ScoutingPFMonitor, process.Dataset_ScoutingPFRun3, process.Dataset_Tau, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_ZeroBias, process.ALCALowPtJetOutput, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCAP0Output, process.ALCAPHISYMOutput, process.ALCAPPSExpressOutput, process.ALCAPPSPromptOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.DQMPPSRandomOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.HLTMonitorOutput, process.PhysicsHLTPhysics2Output, process.ParkingDoubleMuonLowMass0Output, process.ParkingDoubleMuonLowMass1Output, process.ParkingDoubleMuonLowMass2Output, process.ParkingDoubleMuonLowMass3Output, process.ParkingHHOutput, process.ParkingLLPOutput, process.ParkingSingleMuon0Output, process.ParkingSingleMuon1Output, process.ParkingSingleMuon2Output, process.ParkingSingleMuon3Output, process.ParkingSingleMuon4Output, process.ParkingSingleMuon5Output, process.ParkingSingleMuon6Output, process.ParkingSingleMuon7Output, process.ParkingSingleMuon8Output, process.ParkingSingleMuon9Output, process.ParkingSingleMuon10Output, process.ParkingSingleMuon11Output, process.ParkingVBF0Output, process.ParkingVBF1Output, process.ParkingVBF2Output, process.ParkingVBF3Output, process.PhysicsCommissioningOutput, process.PhysicsDispJetBTagMuEGTauOutput, process.PhysicsEGamma0Output, process.PhysicsEGamma1Output, process.PhysicsHLTPhysics0Output, process.PhysicsHLTPhysics1Output, process.PhysicsHLTPhysics3Output, process.PhysicsJetMET0Output, process.PhysicsJetMET1Output, process.PhysicsMuon0Output, process.PhysicsMuon1Output, process.PhysicsScoutingPFMonitorOutput, process.PhysicsZeroBias0Output, process.PhysicsZeroBias1Output, process.PhysicsZeroBias2Output, process.PhysicsZeroBias3Output, process.NanoDSTOutput, process.RPCMONOutput, process.ScoutingPFOutput, process.Dataset_ParkingSingleMuon1, process.Dataset_ParkingSingleMuon2, process.Dataset_ParkingSingleMuon3, process.Dataset_ParkingSingleMuon4, process.Dataset_ParkingSingleMuon5, process.Dataset_ParkingSingleMuon6, process.Dataset_ParkingSingleMuon7, process.Dataset_ParkingSingleMuon8, process.Dataset_ParkingSingleMuon9, process.Dataset_ParkingSingleMuon10, process.Dataset_ParkingSingleMuon11, )) # source module (EDM inputs) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_HIon.py b/HLTrigger/Configuration/test/OnLine_HLT_HIon.py index d5a0cfa4a7a45..f92abca057ec1 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_HIon.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_HIon.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/HIon --full --data --type HIon --unprescale --process HLTHIon --globaltag auto:run3_hlt_HIon --input file:RelVal_Raw_HIon_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/HIon --full --data --type HIon --unprescale --process HLTHIon --globaltag auto:run3_hlt_HIon --input file:RelVal_Raw_HIon_DATA.root -# /dev/CMSSW_14_1_0/HIon/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/HIon/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/HIon/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/HIon/V10") ) process.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1516,9 +1516,7 @@ HIDQMGPUvsCPU = cms.vstring( 'DQM_HIEcalReconstruction_v10', 'DQM_HIHcalReconstruction_v8', 'DQM_HIPixelReconstruction_v12' ), - HIDQMOnlineBeamspot = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIDQMOnlineBeamspot = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIEmptyBX = cms.vstring( 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1UnpairedBunchBptxMinus_v14', 'HLT_HIL1UnpairedBunchBptxPlus_v14' ), @@ -1535,9 +1533,7 @@ 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', 'HLT_HIMinimumBiasHF1AND_copy_v6' ), - HIExpressAlignment = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ), + HIExpressAlignment = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ), HIExpressPhysics = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', @@ -1583,6 +1579,8 @@ HIForward0 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1721,6 +1719,8 @@ HIForward1 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1859,6 +1859,8 @@ HIForward10 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -1997,6 +1999,8 @@ HIForward11 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2135,6 +2139,8 @@ HIForward12 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2273,6 +2279,8 @@ HIForward13 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2411,6 +2419,8 @@ HIForward14 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2549,6 +2559,8 @@ HIForward15 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2687,6 +2699,8 @@ HIForward16 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2825,6 +2839,8 @@ HIForward17 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -2963,6 +2979,8 @@ HIForward18 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3101,6 +3119,8 @@ HIForward19 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3239,6 +3259,8 @@ HIForward2 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3377,6 +3399,8 @@ HIForward3 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3515,6 +3539,8 @@ HIForward4 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3653,6 +3679,8 @@ HIForward5 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3791,6 +3819,8 @@ HIForward6 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -3929,6 +3959,8 @@ HIForward7 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4067,6 +4099,8 @@ HIForward8 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4205,6 +4239,8 @@ HIForward9 = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -4356,6 +4392,7 @@ 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7', 'HLT_HIMinimumBiasHF1AND_v7' ), HIOnlineMonitor = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1', 'HLT_HIEle20Gsf_v14', 'HLT_HIGEDPhoton40_v14', 'HLT_HIHcalNZS_v14', @@ -12934,7 +12971,7 @@ ) process.hltL1sAlCaEcalPhiSymForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_MinimumBiasHF1_AND_BptxAND OR L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -13074,8 +13111,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -13142,7 +13179,7 @@ ) process.hltL1sAlCaEcalPi0EtaForHI = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC2n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC3n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AND_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AND_MinimumBiasHF1_AND_BptxAND OR L1_MinimumBiasHF1_AND_BptxAND OR L1_AlwaysTrue OR L1_IsolatedBunch OR L1_SingleEG21_BptxAND OR L1_SingleJet56_BptxAND OR L1_SingleEG3 OR L1_SingleEG5 OR L1_SingleEG50 OR L1_SingleEG8er2p5 OR L1_SingleEG10er2p5 OR L1_SingleEG15er2p5 OR L1_SingleEG26er2p5" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -13817,6 +13854,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoA" ) @@ -13890,6 +13928,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ) @@ -13935,7 +13974,7 @@ process.hltPixelTracksSoACompareGPUvsCPUPPOnAA = cms.EDProducer( "SiPixelHIonPhase1CompareTracks", pixelTrackReferenceSoA = cms.InputTag( "hltPixelTracksPPOnAASoASerialSync" ), pixelTrackTargetSoA = cms.InputTag( "hltPixelTracksPPOnAASoA" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareDeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelTrackCompareGPUvsCPU" ), useQualityCut = cms.bool( True ), minQuality = cms.string( "loose" ), deltaR2cut = cms.double( 4.0E-4 ) @@ -13954,7 +13993,7 @@ pixelVertexReferenceSoA = cms.InputTag( "hltPixelVerticesPPOnAASoASerialSync" ), pixelVertexTargetSoA = cms.InputTag( "hltPixelVerticesPPOnAASoA" ), beamSpotSrc = cms.InputTag( "hltOnlineBeamSpot" ), - topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareSoADeviceVSHost" ), + topFolderName = cms.string( "SiPixelHeterogeneous/PixelVertexCompareGPUvsCPU" ), dzCut = cms.double( 1.0 ) ) process.hltL1sDQMHIEcalReconstruction = cms.EDFilter( "HLTL1TSeed", @@ -14061,8 +14100,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -14893,7 +14932,79 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) -process.hltPreHIMinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", +process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_OR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_Centrality_50_100_MinimumBiasHF1_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) @@ -17013,6 +17124,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPreSplittingPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -17166,7 +17278,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) process.hltSiPixelClustersCacheAfterSplittingPPOnAA = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), @@ -17266,6 +17383,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -17497,6 +17615,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter1PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -17828,6 +17947,7 @@ MaxNumberOfPixelClusters = cms.uint32( 150000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "strip < 1000000 && pixel < 150000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter2PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -18063,6 +18183,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAA" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -19271,73 +19392,6 @@ inputTag = cms.InputTag( "rawDataCollector" ), fedList = cms.vuint32( 1022 ) ) -process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHIMinimumBiasHF1ANDZDC1nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC2n_OR_MinimumBiasHF1_AND_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHIMinimumBiasHF1ANDZDC2nOR = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC1nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC2nORcopy = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) -process.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND = cms.EDFilter( "HLTL1TSeed", - saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInOrbit_Centrality30_100_BptxAND" ), - L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), - L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), - L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), - L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), - L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), - L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), - L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), - L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), - L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) -) -process.hltPreHICentrality30100FirstCollisionAfterAbortGap = cms.EDFilter( "HLTPrescaler", - offset = cms.uint32( 0 ), - L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) -) process.hltL1Centrality30to50BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), L1SeedsLogicalExpression = cms.string( "L1_Centrality_30_50_BptxAND" ), @@ -20981,7 +21035,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombinedPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoubletsPPOnAA','hltElePixelSeedsTripletsPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeedsPPOnAA = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombinedPPOnAA" ), @@ -23134,6 +23189,7 @@ MaxNumberOfPixelClusters = cms.uint32( 10000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( True ) ) process.hltPixelTracksHitDoubletsLowPtForUPCPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -23283,7 +23339,7 @@ ) process.hltL1sZDC1nOR = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23308,7 +23364,7 @@ ) process.hltL1sZDC1nXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23351,7 +23407,7 @@ ) process.hltL1sZDC1nXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_XOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_XOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23376,7 +23432,7 @@ ) process.hltL1sZDC1nAsymXORHF1AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF1_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF1_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23401,7 +23457,7 @@ ) process.hltL1sZDC1nAsymXORHF2AND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp1_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp2_AsymXOR_MinimumBiasHF2_AND_BptxAND OR L1_ZDC1n_Bkp3_AsymXOR_MinimumBiasHF2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23846,6 +23902,27 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +process.hltL1sDoubleEG3NotHF2AND = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleEG3_NotMinimumBiasHF2_AND_BptxAND" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPreHIUPCDoubleEG3NotMBHF2AND = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -23873,7 +23950,7 @@ ) process.hltL1sZDC1nXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23890,7 +23967,7 @@ ) process.hltL1sZDC1nXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23907,7 +23984,7 @@ ) process.hltL1sZDC1nXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23924,7 +24001,7 @@ ) process.hltL1sZDC1nXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23941,7 +24018,7 @@ ) process.hltL1sZDC1nXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23958,7 +24035,7 @@ ) process.hltL1sZDC1nXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_XOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_XOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23975,7 +24052,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet8_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -23992,7 +24069,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet12_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24009,7 +24086,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet16_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24026,7 +24103,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet20_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24043,7 +24120,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet24_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24060,7 +24137,7 @@ ) process.hltL1sZDC1nAsymXORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_ZDC1n_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp1_AsymXOR_BptxAND OR L1_SingleJet28_ZDC1n_Bkp2_AsymXOR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24217,7 +24294,7 @@ ) process.hltL1sZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24234,7 +24311,7 @@ ) process.hltL1sZeroBiasZDC1nORZDC1nANDANDNotMBHF2BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_ZeroBias OR L1_ZDC1n_OR_BptxAND OR L1_ZDC1n_Bkp1_OR_BptxAND OR L1_ZDC1n_Bkp2_OR_BptxAND OR L1_ZDC1n_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp1_AND_AND_NotMBHF2_BptxAND OR L1_ZDC1n_Bkp2_AND_AND_NotMBHF2_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24834,7 +24911,7 @@ ) process.hltL1sNotZDC1nORSingleJet8BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet8_notZDC_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet8_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24851,7 +24928,7 @@ ) process.hltL1sNotZDC1nORSingleJet12BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet12_notZDC_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet12_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24868,7 +24945,7 @@ ) process.hltL1sNotZDC1nORSingleJet16BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet16_notZDC_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet16_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24885,7 +24962,7 @@ ) process.hltL1sNotZDC1nORSingleJet20BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet20_notZDC_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet20_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24902,7 +24979,7 @@ ) process.hltL1sNotZDC1nORSingleJet24BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet24_notZDC_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet24_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -24919,7 +24996,7 @@ ) process.hltL1sNotZDC1nORSingleJet28BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_SingleJet28_notZDC_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp1_OR_BptxAND OR L1_SingleJet28_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -25089,7 +25166,7 @@ ) process.hltL1sNotZDC1nANDDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -25106,7 +25183,7 @@ ) process.hltL1sNotZDC1nANDDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -25123,7 +25200,7 @@ ) process.hltL1sNotZDC1nANDDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp1_AND_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_NotZDC1n_Bkp2_AND_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -25140,7 +25217,7 @@ ) process.hltL1sNotZDC1nORDoubleJet8DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet8_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet8_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -25157,7 +25234,7 @@ ) process.hltL1sNotZDC1nORDoubleJet12DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet12_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet12_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -25174,7 +25251,7 @@ ) process.hltL1sNotZDC1nORDoubleJet16DeltaPhi2p0BptxAND = cms.EDFilter( "HLTL1TSeed", saveTags = cms.bool( True ), - L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND" ), + L1SeedsLogicalExpression = cms.string( "L1_DoubleJet16_DeltaPhi2p0_notZDC_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp1_OR_BptxAND OR L1_DoubleJet16_DeltaPhi2p0_notZDC_Bkp2_OR_BptxAND" ), L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), @@ -27344,6 +27421,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersPPOnAA" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPreSplittingPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -27497,7 +27575,12 @@ forceYError = cms.double( 150.0 ), fractionalWidth = cms.double( 0.4 ), chargePerUnit = cms.double( 2000.0 ), - centralMIPCharge = cms.double( 26000.0 ) + centralMIPCharge = cms.double( 26000.0 ), + expSizeXAtLorentzAngleIncidence = cms.double( 1.5 ), + expSizeXDeltaPerTanAlpha = cms.double( 0.0 ), + expSizeYAtNormalIncidence = cms.double( 1.3 ), + tanLorentzAngle = cms.double( 0.0 ), + tanLorentzAngleBarrelLayer1 = cms.double( 0.0 ) ) process.hltSiPixelClustersCacheAfterSplittingPPOnAAForDmeson = cms.EDProducer( "SiPixelClusterShapeCacheProducer", src = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), @@ -27570,6 +27653,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter0PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -27801,6 +27885,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter1PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -28005,6 +28090,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter2PixelHitDoubletsPPOnAAForDmeson = cms.EDProducer( "HitPairEDProducer", @@ -28207,6 +28293,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter3PixelHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28404,6 +28491,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter7MixedHitDoubletsAPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28546,7 +28634,8 @@ ) ) process.hltFullIter7MixedSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter7MixedSeedsAPPOnAA','hltFullIter7MixedSeedsBPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltFullIter7CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -28747,6 +28836,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter8PixelLessHitDoubletsPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -28960,6 +29050,7 @@ MaxNumberOfPixelClusters = cms.uint32( 120000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClustersAfterSplittingPPOnAAForDmeson" ), cut = cms.string( "strip > 0 && pixel > 0 && strip < 500000 && pixel < 120000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + strip/2.)" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltFullIter9TobTecHitDoubletsTriplPPOnAA = cms.EDProducer( "HitPairEDProducer", @@ -29146,7 +29237,8 @@ ) ) process.hltFullIter9TobTecSeedsPPOnAA = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ) + seedCollections = cms.VInputTag( 'hltFullIter9TobTecSeedsTriplPPOnAA','hltFullIter9TobTecSeedsPairPPOnAA' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltFullIter9CkfTrackCandidatesPPOnAA = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -29800,9 +29892,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) process.hltPreDatasetHIDQMOnlineBeamspot = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29858,9 +29948,9 @@ throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8 / 0', 'HLT_HIDoubleEle15GsfMass50_v14', - 'HLT_HIDoubleGEDPhoton20_v7 / 65', + 'HLT_HIDoubleGEDPhoton20_v7 / 6', 'HLT_HIL1SingleMu5_SingleEG20Gsf_v7', - 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 25', + 'HLT_HIL1SingleMu5_SingleGEDPhoton20_v7 / 6', 'HLT_HIL2DoubleMu0_M1p5to6_Open_v7 / 335', 'HLT_HIL3DoubleMu2_Quarkonia_Open_v7 / 200', 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', @@ -29877,9 +29967,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8', - 'HLT_HIMinimumBiasHF1AND_Beamspot_v8' ) + triggerConditions = cms.vstring( 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1' ) ) process.hltPreDatasetHIExpressAlignment = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29904,14 +29992,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) process.hltPreDatasetHIExpressPhysics = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29924,8 +30012,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HIEle20Gsf_v14', - 'HLT_HIGEDPhoton40_v14 / 2', + 'HLT_HIEle20Gsf_v14 / 2', + 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIL1NotBptxOR_v14', 'HLT_HIL1SingleMu0_Cosmic_v7 / 0', 'HLT_HIL1UnpairedBunchBptxMinus_v14 / 2', @@ -29936,14 +30024,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 35', 'HLT_HIL3SingleMu5_v7 / 2000', 'HLT_HIL3SingleMu7_v7 / 800', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6', - 'HLT_HIMinimumBiasHF1AND_copy_v6', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 5', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14 / 2', - 'HLT_HIZeroBias_v14 / 5' ) + 'HLT_HIZeroBias_v14' ) ) process.hltPreDatasetHIExpressPhysicsRawPrime = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -29958,6 +30046,8 @@ triggerConditions = cms.vstring( 'HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1', + 'HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1', 'HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14', 'HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12', @@ -30206,7 +30296,8 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 / 0', - 'HLT_HIEle20Gsf_v14 / 3', + 'HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 / 5', + 'HLT_HIEle20Gsf_v14 / 2', 'HLT_HIGEDPhoton40_v14 / 3', 'HLT_HIHcalNZS_v14 / 3', 'HLT_HIHcalPhiSym_v14 / 3', @@ -30220,14 +30311,14 @@ 'HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7 / 10', 'HLT_HIL3SingleMu5_v7 / 0', 'HLT_HIL3SingleMu7_v7 / 0', - 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 20', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 20', - 'HLT_HIMinimumBiasHF1AND_copy_v6 / 20', + 'HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 / 15', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 / 15', + 'HLT_HIMinimumBiasHF1AND_copy_v6 / 15', 'HLT_HIPhysics_v14', - 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 2', + 'HLT_HIPuAK4CaloJet100Eta5p1_v14 / 8', 'HLT_HIRandom_v7 / 3', 'HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14', - 'HLT_HIZeroBias_v14 / 3' ) + 'HLT_HIZeroBias_v14' ) ) process.hltPreDatasetHIOnlineMonitor = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -30239,9 +30330,9 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 700', - 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 700', - 'HLT_HIMinimumBiasHF1AND_v7 / 700' ) + triggerConditions = cms.vstring( 'HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 / 5000', + 'HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 / 5000', + 'HLT_HIMinimumBiasHF1AND_v7 / 5000' ) ) process.hltPreDatasetHIMinimumBias0 = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), @@ -30768,13 +30859,22 @@ ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_HIOnlineMonitor' ) ), outputCommands = cms.untracked.vstring( 'drop *', + 'keep *_hltDoubletRecoveryPFlowTrackSelectionHighPurityPPOnAA_*_*', 'keep *_hltEcalRecHit_*_*', + 'keep *_hltHITrackingSiStripRawToClustersFacilityFullZeroSuppression_*_*', 'keep *_hltHbhereco_*_*', 'keep *_hltHfreco_*_*', 'keep *_hltHoreco_*_*', + 'keep *_hltMergedTracksPPOnAA_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltPFMuonMergingPPOnAA_*_*', + 'keep *_hltPixelTracksPPOnAA_*_*', + 'keep *_hltPixelVerticesPPOnAA_*_*', + 'keep *_hltSiPixelClustersAfterSplittingPPOnAA_*_*', 'keep *_hltSiStripClusterizerForRawPrime_*_*', 'keep *_hltSiStripClusters2ApproxClusters_*_*', + 'keep *_hltTrimmedPixelVerticesPPOnAA_*_*', + 'keep *_hltVerticesPFFilterPPOnAA_*_*', 'keep DetIds_hltSiStripRawToDigi_*_*', 'keep FEDRawDataCollection_rawDataCollector_*_*', 'keep FEDRawDataCollection_rawDataRepacker_*_*', @@ -32674,14 +32774,12 @@ process.HLT_HIZeroBias_HighRateRAW_v4 = cms.Path( process.HLTBeginSequence + process.hltL1sZeroBiasCopy + process.hltPreHIZeroBiasHighRateRAW + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1AND_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1AND + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1AND_copy_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDcopy + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HIMinimumBiasHF1AND_Beamspot_v8 = cms.Path( process.HLTBeginSequence + process.hltL1sMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC1nOR + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC2nOR + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC1nORcopy + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC2nORcopy + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) -process.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC1nORBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) -process.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC2nORMinimumBiasHF1ANDBptxAND + process.hltPreHIMinimumBiasHF1ANDZDC2nORBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) process.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sL1FirstCollisionAfterAbortGapCentrality30100BptxAND + process.hltPreHICentrality30100FirstCollisionAfterAbortGap + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) +process.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sCentrality50100MinimumBiasHF1ANDBptxAND + process.hltPreHICentrality50100MinimumBiasHF1ANDBeamspot + process.HLTPuAK4CaloJetsSequence + process.HLTCsAK4PFJetsSequence + process.hltVerticesPFPPOnAA + process.hltVerticesPFSelectorPPOnAA + process.hltVerticesPFFilterPPOnAA + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.hltFEDSelectorOnlineMetaData + process.hltFEDSelectorTCDS + process.HLTEndSequence ) process.HLT_HIL1Centrality30_50_v7 = cms.Path( process.HLTBeginSequence + process.hltL1Centrality30to50BptxAND + process.hltPreHIL1Centrality3050 + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIL1_UCC_0_0p5_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sUCC00p5 + process.hltPreHIL1UCC00p5 + process.HLTDoLocalHcalSequence + process.hltTowerMakerForHf + process.hltCaloMETProducerForHf + process.hltGlobalSumsETHfMaxFilter + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) process.HLT_HIL1_UCC_0_1_v7 = cms.Path( process.HLTBeginSequence + process.hltL1sUCC01 + process.hltPreHIL1UCC01 + process.HLTDoLocalHcalSequence + process.hltTowerMakerForHf + process.hltCaloMETProducerForHf + process.hltGlobalSumsETHfMaxFilter + process.HLTDoHIStripZeroSuppressionAndRawPrime + process.HLTEndSequence ) @@ -32778,6 +32876,8 @@ process.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG2BptxAND + process.hltPreHIUPCDoubleEG2BptxANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.hltPixelActivityFilterMaxClusters1e3 + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG2NotHF2AND + process.hltPreHIUPCDoubleEG2NotMBHF2ANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG2NotHF2AND + process.hltPreHIUPCDoubleEG2NotMBHF2AND + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) +process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG3NotHF2AND + process.hltPreHIUPCDoubleEG3NotMBHF2AND + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) +process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG3NotHF2AND + process.hltPreHIUPCDoubleEG3NotMBHF2ANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG5BptxAND + process.hltPreHIUPCDoubleEG5BptxANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.hltPixelActivityFilterMaxClusters1e3 + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG5NotHF2AND + process.hltPreHIUPCDoubleEG5NotMBHF2ANDSinglePixelTrackMaxPixelTrack + process.HLTDoSiStripZeroSuppression + process.HLTDoLocalPixelPPOnAASequence + process.HLTDoLocalStripSequencePPOnAA + process.HLTRecopixelvertexingSequencePPOnAAForUPC + process.hltPixelCandsForUPCPPOnAA + process.hltFilteredPixelTracksForUPC + process.HLTDoHIStripZeroSuppressionRepacker + process.HLTEndSequence ) process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12 = cms.Path( process.HLTBeginSequence + process.hltL1sDoubleEG5NotHF2AND + process.hltPreHIUPCDoubleEG5NotMBHF2AND + process.HLTDoHIStripZeroSuppression + process.HLTEndSequence ) @@ -33132,7 +33232,7 @@ process.PhysicsHIPhysicsRawPrime43Output = cms.FinalPath( process.hltOutputPhysicsHIPhysicsRawPrime43 ) -process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSymForHI_v12, process.AlCa_EcalEtaEBonlyForHI_v13, process.AlCa_EcalEtaEEonlyForHI_v13, process.AlCa_EcalPi0EBonlyForHI_v13, process.AlCa_EcalPi0EEonlyForHI_v13, process.AlCa_RPCMuonNormalisationForHI_v11, process.DQM_HIPixelReconstruction_v12, process.DQM_HIEcalReconstruction_v10, process.DQM_HIHcalReconstruction_v8, process.DST_Physics_v16, process.HLT_HIEphemeralPhysics_v5, process.HLT_HIEphemeralZeroBias_v5, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HIL1NotBptxOR_v14, process.HLT_HIL1UnpairedBunchBptxPlus_v14, process.HLT_HIL1UnpairedBunchBptxMinus_v14, process.HLT_HIPhysics_v14, process.HLT_HIPhysicsForZS_v14, process.HLT_HIRandom_v7, process.HLT_HIRandom_HighRate_v3, process.HLT_HIHcalNZS_v14, process.HLT_HIHcalPhiSym_v14, process.HLT_HIZeroBias_v14, process.HLT_HIZeroBias_HighRate_v7, process.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, process.HLT_HIZeroBias_HighRateRAW_v4, process.HLT_HIMinimumBiasHF1AND_v7, process.HLT_HIMinimumBiasHF1AND_copy_v6, process.HLT_HIMinimumBiasHF1AND_Beamspot_v8, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_Beamspot_v5, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_Beamspot_v8, process.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, process.HLT_HIL1Centrality30_50_v7, process.HLT_HIL1_UCC_0_0p5_v7, process.HLT_HIL1_UCC_0_1_v7, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet80Eta5p1_v14, process.HLT_HIPuAK4CaloJet100Eta5p1_v14, process.HLT_HIPuAK4CaloJet120Eta2p1_v7, process.HLT_HIPuAK4CaloJet120Eta5p1_v14, process.HLT_HIPuAK4CaloJet40Fwd_v7, process.HLT_HIPuAK4CaloJet60Fwd_v7, process.HLT_HIPuAK4CaloJet80Fwd_v7, process.HLT_HIPuAK4CaloJet100Fwd_v7, process.HLT_HIPuAK4CaloJet120Fwd_v7, process.HLT_HIGEDPhoton10_v14, process.HLT_HIGEDPhoton10_EB_v14, process.HLT_HIGEDPhoton20_v14, process.HLT_HIGEDPhoton20_EB_v14, process.HLT_HIGEDPhoton30_v14, process.HLT_HIGEDPhoton30_EB_v14, process.HLT_HIGEDPhoton40_v14, process.HLT_HIGEDPhoton40_EB_v14, process.HLT_HIGEDPhoton50_v14, process.HLT_HIGEDPhoton50_EB_v14, process.HLT_HIGEDPhoton60_v14, process.HLT_HIGEDPhoton60_EB_v14, process.HLT_HIDoubleGEDPhoton20_v7, process.HLT_HIEle10Gsf_v14, process.HLT_HIEle15Gsf_v14, process.HLT_HIEle20Gsf_v14, process.HLT_HIEle30Gsf_v14, process.HLT_HIEle40Gsf_v14, process.HLT_HIEle50Gsf_v14, process.HLT_HIEle15Ele10Gsf_v14, process.HLT_HIEle15Ele10GsfMass50_v14, process.HLT_HIDoubleEle10Gsf_v14, process.HLT_HIDoubleEle10GsfMass50_v14, process.HLT_HIDoubleEle15Gsf_v14, process.HLT_HIDoubleEle15GsfMass50_v14, process.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_NotMBHF2_v5, process.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, process.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, process.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, process.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, process.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_Random_HighRate_v1, process.HLT_HIUPC_HFafterglowCombined_v1, process.HLT_HIL1SingleMuOpen_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality40to100_v1, process.HLT_HIL1SingleMu0_v7, process.HLT_HIL1SingleMu0_Open_v7, process.HLT_HIL1SingleMu0_Cosmic_v7, process.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, process.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, process.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, process.HLT_HIL2DoubleMuOpen_SS_v1, process.HLT_HIL2DoubleMuOpen_OS_v1, process.HLT_HIL1DoubleMu0_v7, process.HLT_HIL2DoubleMu0_SQ_v1, process.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, process.HLT_HIL1DoubleMu0_SQ_v7, process.HLT_HIL2SingleMuOpen_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality40to100_v1, process.HLT_HIL2SingleMu3_Open_v7, process.HLT_HIL2SingleMu5_v7, process.HLT_HIL2SingleMu7_v7, process.HLT_HIL2SingleMu12_v1, process.HLT_HIL2DoubleMu0_Open_v7, process.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu0_M7to15_Open_v7, process.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu3_M7to15_Open_v7, process.HLT_HIL3SingleMu3_Open_v7, process.HLT_HIL3SingleMu5_v7, process.HLT_HIL3SingleMu7_v7, process.HLT_HIL3SingleMu12_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, process.HLT_HIL3DoubleMu0_M0toInf_Open_v7, process.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu0_M7to15_Open_v7, process.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, process.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu2_M7to15_Open_v7, process.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, process.HLT_HICscCluster_Loose_v7, process.HLT_HICscCluster_Medium_v7, process.HLT_HICscCluster_Tight_v7, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaP0, process.Dataset_AlCaPhiSym, process.Dataset_EcalLaser, process.Dataset_HIDQMGPUvsCPU, process.Dataset_HIDQMOnlineBeamspot, process.Dataset_HIEmptyBX, process.Dataset_HIEphemeralHLTPhysics, process.Dataset_HIEphemeralZeroBias0, process.Dataset_HIEphemeralZeroBias1, process.Dataset_HIEventDisplay, process.Dataset_HIExpressAlignment, process.Dataset_HIExpressPhysics, process.Dataset_HIExpressPhysicsRawPrime, process.Dataset_HIForward0, process.Dataset_HIForward1, process.Dataset_HIForward2, process.Dataset_HIForward3, process.Dataset_HIForward4, process.Dataset_HIForward5, process.Dataset_HIForward6, process.Dataset_HIForward7, process.Dataset_HIForward8, process.Dataset_HIForward9, process.Dataset_HIForward10, process.Dataset_HIForward11, process.Dataset_HIForward12, process.Dataset_HIForward13, process.Dataset_HIForward14, process.Dataset_HIForward15, process.Dataset_HIForward16, process.Dataset_HIForward17, process.Dataset_HIForward18, process.Dataset_HIForward19, process.Dataset_HIHLTPhysics, process.Dataset_HIHcalNZS, process.Dataset_HIOnlineMonitor, process.Dataset_HIMinimumBias0, process.Dataset_HIMinimumBias1, process.Dataset_HIMinimumBias2, process.Dataset_HIMinimumBias3, process.Dataset_HIPhysicsRawPrime0, process.Dataset_HITrackerNZS, process.Dataset_HIZeroBias0, process.Dataset_HIZeroBias1, process.Dataset_HIZeroBias2, process.Dataset_L1Accept, process.Dataset_RPCMonitor, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.ALCAP0Output, process.ALCAPHISYMOutput, process.CalibrationOutput, process.DQMCalibrationOutput, process.HIDQMOutput, process.HIDQMEventDisplayOutput, process.HIDQMGPUvsCPUOutput, process.HIDQMOnlineBeamspotOutput, process.EcalCalibrationOutput, process.HIExpressOutput, process.HIExpressAlignmentOutput, process.HIExpressRawPrimeOutput, process.PhysicsHICommissioningOutput, process.PhysicsHIForward0Output, process.PhysicsHIForward1Output, process.PhysicsHIForward2Output, process.PhysicsHIForward3Output, process.PhysicsHIForward4Output, process.PhysicsHIForward5Output, process.PhysicsHIForward6Output, process.PhysicsHIForward7Output, process.PhysicsHIForward8Output, process.PhysicsHIForward9Output, process.PhysicsHIForward10Output, process.PhysicsHIForward11Output, process.PhysicsHIForward12Output, process.PhysicsHIForward13Output, process.PhysicsHIForward14Output, process.PhysicsHIForward15Output, process.PhysicsHIForward16Output, process.PhysicsHIForward17Output, process.PhysicsHIForward18Output, process.PhysicsHIForward19Output, process.PhysicsHIHLTPhysicsOutput, process.PhysicsHIMinimumBias0Output, process.PhysicsHIMinimumBias1Output, process.PhysicsHIMinimumBias2Output, process.PhysicsHIMinimumBias3Output, process.PhysicsHIPhysicsRawPrime0Output, process.PhysicsHIPhysicsRawPrime1Output, process.PhysicsHIPhysicsRawPrime2Output, process.PhysicsHIPhysicsRawPrime3Output, process.PhysicsHIPhysicsRawPrime4Output, process.PhysicsHIPhysicsRawPrime5Output, process.PhysicsHIPhysicsRawPrime6Output, process.PhysicsHIPhysicsRawPrime7Output, process.PhysicsHIPhysicsRawPrime8Output, process.PhysicsHIPhysicsRawPrime9Output, process.PhysicsHIPhysicsRawPrime10Output, process.PhysicsHIPhysicsRawPrime11Output, process.PhysicsHIPhysicsRawPrime12Output, process.PhysicsHIPhysicsRawPrime13Output, process.PhysicsHIPhysicsRawPrime14Output, process.PhysicsHIPhysicsRawPrime15Output, process.PhysicsHIPhysicsRawPrime16Output, process.PhysicsHIPhysicsRawPrime17Output, process.PhysicsHIPhysicsRawPrime18Output, process.PhysicsHIPhysicsRawPrime19Output, process.PhysicsHIPhysicsRawPrime20Output, process.PhysicsHIPhysicsRawPrime21Output, process.PhysicsHIPhysicsRawPrime22Output, process.PhysicsHIPhysicsRawPrime23Output, process.PhysicsHIPhysicsRawPrime24Output, process.PhysicsHIPhysicsRawPrime25Output, process.PhysicsHIPhysicsRawPrime26Output, process.PhysicsHIPhysicsRawPrime27Output, process.PhysicsHIPhysicsRawPrime28Output, process.PhysicsHIPhysicsRawPrime29Output, process.PhysicsHIPhysicsRawPrime30Output, process.PhysicsHIPhysicsRawPrime31Output, process.PhysicsHITrackerNZSOutput, process.PhysicsHIZeroBiasOutput, process.PhysicsHIZeroBiasRAW0Output, process.PhysicsHIZeroBiasRAW1Output, process.PhysicsHIZeroBiasRAW2Output, process.NanoDSTOutput, process.RPCMONOutput, process.Dataset_HIPhysicsRawPrime1, process.Dataset_HIPhysicsRawPrime2, process.Dataset_HIPhysicsRawPrime3, process.Dataset_HIPhysicsRawPrime4, process.Dataset_HIPhysicsRawPrime5, process.Dataset_HIPhysicsRawPrime6, process.Dataset_HIPhysicsRawPrime7, process.Dataset_HIPhysicsRawPrime8, process.Dataset_HIPhysicsRawPrime9, process.Dataset_HIPhysicsRawPrime10, process.Dataset_HIPhysicsRawPrime11, process.Dataset_HIPhysicsRawPrime12, process.Dataset_HIPhysicsRawPrime13, process.Dataset_HIPhysicsRawPrime14, process.Dataset_HIPhysicsRawPrime15, process.Dataset_HIPhysicsRawPrime16, process.Dataset_HIPhysicsRawPrime17, process.Dataset_HIPhysicsRawPrime18, process.Dataset_HIPhysicsRawPrime19, process.Dataset_HIPhysicsRawPrime20, process.Dataset_HIPhysicsRawPrime21, process.Dataset_HIPhysicsRawPrime22, process.Dataset_HIPhysicsRawPrime23, process.Dataset_HIPhysicsRawPrime24, process.Dataset_HIPhysicsRawPrime25, process.Dataset_HIPhysicsRawPrime26, process.Dataset_HIPhysicsRawPrime27, process.Dataset_HIPhysicsRawPrime28, process.Dataset_HIPhysicsRawPrime29, process.Dataset_HIPhysicsRawPrime30, process.Dataset_HIPhysicsRawPrime31, process.Dataset_HIPhysicsRawPrime32, process.Dataset_HIPhysicsRawPrime33, process.Dataset_HIPhysicsRawPrime34, process.Dataset_HIPhysicsRawPrime35, process.Dataset_HIPhysicsRawPrime36, process.Dataset_HIPhysicsRawPrime37, process.Dataset_HIPhysicsRawPrime38, process.Dataset_HIPhysicsRawPrime39, process.Dataset_HIPhysicsRawPrime40, process.Dataset_HIPhysicsRawPrime41, process.Dataset_HIPhysicsRawPrime42, process.Dataset_HIPhysicsRawPrime43, process.Dataset_HIPhysicsRawPrime44, process.Dataset_HIPhysicsRawPrime45, process.Dataset_HIPhysicsRawPrime46, process.Dataset_HIPhysicsRawPrime47, process.Dataset_HIPhysicsRawPrime48, process.Dataset_HIPhysicsRawPrime49, process.Dataset_HIPhysicsRawPrime50, process.Dataset_HIPhysicsRawPrime51, process.Dataset_HIPhysicsRawPrime52, process.Dataset_HIPhysicsRawPrime53, process.Dataset_HIPhysicsRawPrime54, process.Dataset_HIPhysicsRawPrime55, process.Dataset_HIPhysicsRawPrime56, process.Dataset_HIPhysicsRawPrime57, process.Dataset_HIPhysicsRawPrime58, process.Dataset_HIPhysicsRawPrime59, process.PhysicsHIPhysicsRawPrime59Output, process.PhysicsHIPhysicsRawPrime58Output, process.PhysicsHIPhysicsRawPrime57Output, process.PhysicsHIPhysicsRawPrime56Output, process.PhysicsHIPhysicsRawPrime55Output, process.PhysicsHIPhysicsRawPrime54Output, process.PhysicsHIPhysicsRawPrime53Output, process.PhysicsHIPhysicsRawPrime52Output, process.PhysicsHIPhysicsRawPrime51Output, process.PhysicsHIPhysicsRawPrime50Output, process.PhysicsHIPhysicsRawPrime49Output, process.PhysicsHIPhysicsRawPrime48Output, process.PhysicsHIPhysicsRawPrime47Output, process.PhysicsHIPhysicsRawPrime46Output, process.PhysicsHIPhysicsRawPrime45Output, process.PhysicsHIPhysicsRawPrime44Output, process.PhysicsHIPhysicsRawPrime42Output, process.PhysicsHIPhysicsRawPrime41Output, process.PhysicsHIPhysicsRawPrime40Output, process.PhysicsHIPhysicsRawPrime39Output, process.PhysicsHIPhysicsRawPrime38Output, process.PhysicsHIPhysicsRawPrime37Output, process.PhysicsHIPhysicsRawPrime36Output, process.PhysicsHIPhysicsRawPrime35Output, process.PhysicsHIPhysicsRawPrime34Output, process.PhysicsHIPhysicsRawPrime33Output, process.PhysicsHIPhysicsRawPrime32Output, process.PhysicsHIPhysicsRawPrime43Output, )) +process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSymForHI_v12, process.AlCa_EcalEtaEBonlyForHI_v13, process.AlCa_EcalEtaEEonlyForHI_v13, process.AlCa_EcalPi0EBonlyForHI_v13, process.AlCa_EcalPi0EEonlyForHI_v13, process.AlCa_RPCMuonNormalisationForHI_v11, process.DQM_HIPixelReconstruction_v12, process.DQM_HIEcalReconstruction_v10, process.DQM_HIHcalReconstruction_v8, process.DST_Physics_v16, process.HLT_HIEphemeralPhysics_v5, process.HLT_HIEphemeralZeroBias_v5, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HIL1NotBptxOR_v14, process.HLT_HIL1UnpairedBunchBptxPlus_v14, process.HLT_HIL1UnpairedBunchBptxMinus_v14, process.HLT_HIPhysics_v14, process.HLT_HIPhysicsForZS_v14, process.HLT_HIRandom_v7, process.HLT_HIRandom_HighRate_v3, process.HLT_HIHcalNZS_v14, process.HLT_HIHcalPhiSym_v14, process.HLT_HIZeroBias_v14, process.HLT_HIZeroBias_HighRate_v7, process.HLT_HIZeroBias_FirstCollisionAfterAbortGap_v14, process.HLT_HIZeroBias_HighRateRAW_v4, process.HLT_HIMinimumBiasHF1AND_v7, process.HLT_HIMinimumBiasHF1AND_copy_v6, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_v7, process.HLT_HIMinimumBiasHF1ANDZDC1nOR_copy_v4, process.HLT_HIMinimumBiasHF1ANDZDC2nOR_copy_v6, process.HLT_HICentrality30100_FirstCollisionAfterAbortGap_v14, process.HLT_HICentrality50100MinimumBiasHF1AND_Beamspot_v1, process.HLT_HIL1Centrality30_50_v7, process.HLT_HIL1_UCC_0_0p5_v7, process.HLT_HIL1_UCC_0_1_v7, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet40Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_v6, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC1nOR_v4, process.HLT_HIPuAK4CaloJet60Eta5p1_MinBiasHF1AND_ZDC2nOR_v6, process.HLT_HIPuAK4CaloJet80Eta5p1_v14, process.HLT_HIPuAK4CaloJet100Eta5p1_v14, process.HLT_HIPuAK4CaloJet120Eta2p1_v7, process.HLT_HIPuAK4CaloJet120Eta5p1_v14, process.HLT_HIPuAK4CaloJet40Fwd_v7, process.HLT_HIPuAK4CaloJet60Fwd_v7, process.HLT_HIPuAK4CaloJet80Fwd_v7, process.HLT_HIPuAK4CaloJet100Fwd_v7, process.HLT_HIPuAK4CaloJet120Fwd_v7, process.HLT_HIGEDPhoton10_v14, process.HLT_HIGEDPhoton10_EB_v14, process.HLT_HIGEDPhoton20_v14, process.HLT_HIGEDPhoton20_EB_v14, process.HLT_HIGEDPhoton30_v14, process.HLT_HIGEDPhoton30_EB_v14, process.HLT_HIGEDPhoton40_v14, process.HLT_HIGEDPhoton40_EB_v14, process.HLT_HIGEDPhoton50_v14, process.HLT_HIGEDPhoton50_EB_v14, process.HLT_HIGEDPhoton60_v14, process.HLT_HIGEDPhoton60_EB_v14, process.HLT_HIDoubleGEDPhoton20_v7, process.HLT_HIEle10Gsf_v14, process.HLT_HIEle15Gsf_v14, process.HLT_HIEle20Gsf_v14, process.HLT_HIEle30Gsf_v14, process.HLT_HIEle40Gsf_v14, process.HLT_HIEle50Gsf_v14, process.HLT_HIEle15Ele10Gsf_v14, process.HLT_HIEle15Ele10GsfMass50_v14, process.HLT_HIDoubleEle10Gsf_v14, process.HLT_HIDoubleEle10GsfMass50_v14, process.HLT_HIDoubleEle15Gsf_v14, process.HLT_HIDoubleEle15GsfMass50_v14, process.HLT_HIUPC_ZeroBias_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZeroBias_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZeroBias_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_NotMBHF2_v5, process.HLT_HIUPC_ZDC1nOR_MinPixelCluster400_MaxPixelCluster10000_v13, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrackLowPt_MaxPixelCluster400_v12, process.HLT_HIUPC_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF1AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity20_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity30_v13, process.HLT_HIUPC_ZDC1nXOR_MBHF2AND_PixelTrackMultiplicity40_v13, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF1AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity20_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity30_v5, process.HLT_HIUPC_ZDC1nAsymXOR_MBHF2AND_PixelTrackMultiplicity40_v5, process.HLT_HIUPC_SingleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuCosmic_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_v12, process.HLT_HIUPC_SingleMuOpen_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_v10, process.HLT_HIUPC_SingleMuOpen_OR_SingleMuCosmic_EMTF_NotMBHF2OR_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuCosmic_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_BptxAND_MaxPixelCluster1000_v6, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_v10, process.HLT_HIUPC_DoubleMuOpen_NotMBHF2AND_MaxPixelCluster1000_v6, process.HLT_HIUPC_SingleEG2_NotMBHF2AND_ZDC1nOR_SinglePixelTrack_MaxPixelTrack_v12, process.HLT_HIUPC_SingleEG3_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_v12, process.HLT_HIUPC_SingleEG3_NotMBHF2OR_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_SingleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_SingleEG4_NotMBHF2AND_v1, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG2_NotMBHF2AND_v12, process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_v1, process.HLT_HIUPC_DoubleEG3_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v1, process.HLT_HIUPC_DoubleEG5_BptxAND_SinglePixelTrack_MaxPixelTrack_v15, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_SinglePixelTrack_MaxPixelTrack_v14, process.HLT_HIUPC_DoubleEG5_NotMBHF2AND_v12, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZeroBias_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MaxPixelCluster10000_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity20400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity30400_v2, process.HLT_HIUPC_ZDC1nOR_MBHF1AND_PixelTrackMultiplicity40400_v2, process.HLT_HIUPC_ZDC1nAND_NotMBHF2_MaxPixelCluster10000_v2, process.HLT_HIUPC_MinPixelThrust0p8_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleUncorrJet8_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_ZDC1nAsymXOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleUncorrJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_ZDC1nOR_RapGap_MaxPixelCluster10000_v2, process.HLT_HIUPC_SingleJet8_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_ZDC1nXOR_RapGap_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet8_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet12_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet16_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet20_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet24_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_SingleUncorrJet28_NotZDC_OR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotMBHF2AND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDCAND_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet8_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet12_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_DoubleJet16_DeltaPhi2p0_NotZDC1nOR_MaxPixelCluster10000_v1, process.HLT_HIUPC_Random_HighRate_v1, process.HLT_HIUPC_HFafterglowCombined_v1, process.HLT_HIL1SingleMuOpen_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality30to100_v1, process.HLT_HIL1SingleMu0_Centrality40to100_v1, process.HLT_HIL1SingleMu0_v7, process.HLT_HIL1SingleMu0_Open_v7, process.HLT_HIL1SingleMu0_Cosmic_v7, process.HLT_HIL1SingleMu5_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu5_SingleGEDPhoton20_v7, process.HLT_HIL1SingleMu7_SingleEG20Gsf_v7, process.HLT_HIL1SingleMu7_SingleGEDPhoton20_v1, process.HLT_HIL2DoubleMuOpen_Centrality40to100_v1, process.HLT_HIL2DoubleMuOpen_SS_v1, process.HLT_HIL2DoubleMuOpen_OS_v1, process.HLT_HIL1DoubleMu0_v7, process.HLT_HIL2DoubleMu0_SQ_v1, process.HLT_HIL1DoubleMu0_MaxDr3p5_Open_v7, process.HLT_HIL1DoubleMu0_SQ_v7, process.HLT_HIL2SingleMuOpen_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality30to100_v1, process.HLT_HIL2SingleMu0_Centrality40to100_v1, process.HLT_HIL2SingleMu3_Open_v7, process.HLT_HIL2SingleMu5_v7, process.HLT_HIL2SingleMu7_v7, process.HLT_HIL2SingleMu12_v1, process.HLT_HIL2DoubleMu0_Open_v7, process.HLT_HIL2DoubleMu0_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu0_M7to15_Open_v7, process.HLT_HIL2DoubleMu2p8_M1p5to6_Open_v7, process.HLT_HIL2DoubleMu3_M7to15_Open_v7, process.HLT_HIL3SingleMu3_Open_v7, process.HLT_HIL3SingleMu5_v7, process.HLT_HIL3SingleMu7_v7, process.HLT_HIL3SingleMu12_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu3_SinglePuAK4CaloJet80_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet40_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet60_v7, process.HLT_HIL3SingleMu5_SinglePuAK4CaloJet80_v7, process.HLT_HIL3DoubleMu0_M0toInf_Open_v7, process.HLT_HIL3DoubleMu0_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu0_M7to15_Open_v7, process.HLT_HIL3DoubleMu0_Quarkonia_Open_v7, process.HLT_HIL3DoubleMu2_M2to4p5_Open_v7, process.HLT_HIL3DoubleMu2_M7to15_Open_v7, process.HLT_HIL3DoubleMu2_Quarkonia_Open_v7, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt30_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt45_v8, process.HLT_HIDmesonPPOnAATrackingGlobal_Dpt60_v8, process.HLT_HICscCluster_Loose_v7, process.HLT_HICscCluster_Medium_v7, process.HLT_HICscCluster_Tight_v7, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaP0, process.Dataset_AlCaPhiSym, process.Dataset_EcalLaser, process.Dataset_HIDQMGPUvsCPU, process.Dataset_HIDQMOnlineBeamspot, process.Dataset_HIEmptyBX, process.Dataset_HIEphemeralHLTPhysics, process.Dataset_HIEphemeralZeroBias0, process.Dataset_HIEphemeralZeroBias1, process.Dataset_HIEventDisplay, process.Dataset_HIExpressAlignment, process.Dataset_HIExpressPhysics, process.Dataset_HIExpressPhysicsRawPrime, process.Dataset_HIForward0, process.Dataset_HIForward1, process.Dataset_HIForward2, process.Dataset_HIForward3, process.Dataset_HIForward4, process.Dataset_HIForward5, process.Dataset_HIForward6, process.Dataset_HIForward7, process.Dataset_HIForward8, process.Dataset_HIForward9, process.Dataset_HIForward10, process.Dataset_HIForward11, process.Dataset_HIForward12, process.Dataset_HIForward13, process.Dataset_HIForward14, process.Dataset_HIForward15, process.Dataset_HIForward16, process.Dataset_HIForward17, process.Dataset_HIForward18, process.Dataset_HIForward19, process.Dataset_HIHLTPhysics, process.Dataset_HIHcalNZS, process.Dataset_HIOnlineMonitor, process.Dataset_HIMinimumBias0, process.Dataset_HIMinimumBias1, process.Dataset_HIMinimumBias2, process.Dataset_HIMinimumBias3, process.Dataset_HIPhysicsRawPrime0, process.Dataset_HITrackerNZS, process.Dataset_HIZeroBias0, process.Dataset_HIZeroBias1, process.Dataset_HIZeroBias2, process.Dataset_L1Accept, process.Dataset_RPCMonitor, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.ALCAP0Output, process.ALCAPHISYMOutput, process.CalibrationOutput, process.DQMCalibrationOutput, process.HIDQMOutput, process.HIDQMEventDisplayOutput, process.HIDQMGPUvsCPUOutput, process.HIDQMOnlineBeamspotOutput, process.EcalCalibrationOutput, process.HIExpressOutput, process.HIExpressAlignmentOutput, process.HIExpressRawPrimeOutput, process.PhysicsHICommissioningOutput, process.PhysicsHIForward0Output, process.PhysicsHIForward1Output, process.PhysicsHIForward2Output, process.PhysicsHIForward3Output, process.PhysicsHIForward4Output, process.PhysicsHIForward5Output, process.PhysicsHIForward6Output, process.PhysicsHIForward7Output, process.PhysicsHIForward8Output, process.PhysicsHIForward9Output, process.PhysicsHIForward10Output, process.PhysicsHIForward11Output, process.PhysicsHIForward12Output, process.PhysicsHIForward13Output, process.PhysicsHIForward14Output, process.PhysicsHIForward15Output, process.PhysicsHIForward16Output, process.PhysicsHIForward17Output, process.PhysicsHIForward18Output, process.PhysicsHIForward19Output, process.PhysicsHIHLTPhysicsOutput, process.PhysicsHIMinimumBias0Output, process.PhysicsHIMinimumBias1Output, process.PhysicsHIMinimumBias2Output, process.PhysicsHIMinimumBias3Output, process.PhysicsHIPhysicsRawPrime0Output, process.PhysicsHIPhysicsRawPrime1Output, process.PhysicsHIPhysicsRawPrime2Output, process.PhysicsHIPhysicsRawPrime3Output, process.PhysicsHIPhysicsRawPrime4Output, process.PhysicsHIPhysicsRawPrime5Output, process.PhysicsHIPhysicsRawPrime6Output, process.PhysicsHIPhysicsRawPrime7Output, process.PhysicsHIPhysicsRawPrime8Output, process.PhysicsHIPhysicsRawPrime9Output, process.PhysicsHIPhysicsRawPrime10Output, process.PhysicsHIPhysicsRawPrime11Output, process.PhysicsHIPhysicsRawPrime12Output, process.PhysicsHIPhysicsRawPrime13Output, process.PhysicsHIPhysicsRawPrime14Output, process.PhysicsHIPhysicsRawPrime15Output, process.PhysicsHIPhysicsRawPrime16Output, process.PhysicsHIPhysicsRawPrime17Output, process.PhysicsHIPhysicsRawPrime18Output, process.PhysicsHIPhysicsRawPrime19Output, process.PhysicsHIPhysicsRawPrime20Output, process.PhysicsHIPhysicsRawPrime21Output, process.PhysicsHIPhysicsRawPrime22Output, process.PhysicsHIPhysicsRawPrime23Output, process.PhysicsHIPhysicsRawPrime24Output, process.PhysicsHIPhysicsRawPrime25Output, process.PhysicsHIPhysicsRawPrime26Output, process.PhysicsHIPhysicsRawPrime27Output, process.PhysicsHIPhysicsRawPrime28Output, process.PhysicsHIPhysicsRawPrime29Output, process.PhysicsHIPhysicsRawPrime30Output, process.PhysicsHIPhysicsRawPrime31Output, process.PhysicsHITrackerNZSOutput, process.PhysicsHIZeroBiasOutput, process.PhysicsHIZeroBiasRAW0Output, process.PhysicsHIZeroBiasRAW1Output, process.PhysicsHIZeroBiasRAW2Output, process.NanoDSTOutput, process.RPCMONOutput, process.Dataset_HIPhysicsRawPrime1, process.Dataset_HIPhysicsRawPrime2, process.Dataset_HIPhysicsRawPrime3, process.Dataset_HIPhysicsRawPrime4, process.Dataset_HIPhysicsRawPrime5, process.Dataset_HIPhysicsRawPrime6, process.Dataset_HIPhysicsRawPrime7, process.Dataset_HIPhysicsRawPrime8, process.Dataset_HIPhysicsRawPrime9, process.Dataset_HIPhysicsRawPrime10, process.Dataset_HIPhysicsRawPrime11, process.Dataset_HIPhysicsRawPrime12, process.Dataset_HIPhysicsRawPrime13, process.Dataset_HIPhysicsRawPrime14, process.Dataset_HIPhysicsRawPrime15, process.Dataset_HIPhysicsRawPrime16, process.Dataset_HIPhysicsRawPrime17, process.Dataset_HIPhysicsRawPrime18, process.Dataset_HIPhysicsRawPrime19, process.Dataset_HIPhysicsRawPrime20, process.Dataset_HIPhysicsRawPrime21, process.Dataset_HIPhysicsRawPrime22, process.Dataset_HIPhysicsRawPrime23, process.Dataset_HIPhysicsRawPrime24, process.Dataset_HIPhysicsRawPrime25, process.Dataset_HIPhysicsRawPrime26, process.Dataset_HIPhysicsRawPrime27, process.Dataset_HIPhysicsRawPrime28, process.Dataset_HIPhysicsRawPrime29, process.Dataset_HIPhysicsRawPrime30, process.Dataset_HIPhysicsRawPrime31, process.Dataset_HIPhysicsRawPrime32, process.Dataset_HIPhysicsRawPrime33, process.Dataset_HIPhysicsRawPrime34, process.Dataset_HIPhysicsRawPrime35, process.Dataset_HIPhysicsRawPrime36, process.Dataset_HIPhysicsRawPrime37, process.Dataset_HIPhysicsRawPrime38, process.Dataset_HIPhysicsRawPrime39, process.Dataset_HIPhysicsRawPrime40, process.Dataset_HIPhysicsRawPrime41, process.Dataset_HIPhysicsRawPrime42, process.Dataset_HIPhysicsRawPrime43, process.Dataset_HIPhysicsRawPrime44, process.Dataset_HIPhysicsRawPrime45, process.Dataset_HIPhysicsRawPrime46, process.Dataset_HIPhysicsRawPrime47, process.Dataset_HIPhysicsRawPrime48, process.Dataset_HIPhysicsRawPrime49, process.Dataset_HIPhysicsRawPrime50, process.Dataset_HIPhysicsRawPrime51, process.Dataset_HIPhysicsRawPrime52, process.Dataset_HIPhysicsRawPrime53, process.Dataset_HIPhysicsRawPrime54, process.Dataset_HIPhysicsRawPrime55, process.Dataset_HIPhysicsRawPrime56, process.Dataset_HIPhysicsRawPrime57, process.Dataset_HIPhysicsRawPrime58, process.Dataset_HIPhysicsRawPrime59, process.PhysicsHIPhysicsRawPrime59Output, process.PhysicsHIPhysicsRawPrime58Output, process.PhysicsHIPhysicsRawPrime57Output, process.PhysicsHIPhysicsRawPrime56Output, process.PhysicsHIPhysicsRawPrime55Output, process.PhysicsHIPhysicsRawPrime54Output, process.PhysicsHIPhysicsRawPrime53Output, process.PhysicsHIPhysicsRawPrime52Output, process.PhysicsHIPhysicsRawPrime51Output, process.PhysicsHIPhysicsRawPrime50Output, process.PhysicsHIPhysicsRawPrime49Output, process.PhysicsHIPhysicsRawPrime48Output, process.PhysicsHIPhysicsRawPrime47Output, process.PhysicsHIPhysicsRawPrime46Output, process.PhysicsHIPhysicsRawPrime45Output, process.PhysicsHIPhysicsRawPrime44Output, process.PhysicsHIPhysicsRawPrime42Output, process.PhysicsHIPhysicsRawPrime41Output, process.PhysicsHIPhysicsRawPrime40Output, process.PhysicsHIPhysicsRawPrime39Output, process.PhysicsHIPhysicsRawPrime38Output, process.PhysicsHIPhysicsRawPrime37Output, process.PhysicsHIPhysicsRawPrime36Output, process.PhysicsHIPhysicsRawPrime35Output, process.PhysicsHIPhysicsRawPrime34Output, process.PhysicsHIPhysicsRawPrime33Output, process.PhysicsHIPhysicsRawPrime32Output, process.PhysicsHIPhysicsRawPrime43Output, )) # source module (EDM inputs) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_PIon.py b/HLTrigger/Configuration/test/OnLine_HLT_PIon.py index bb2fbc3550019..ffb14f47b5411 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_PIon.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_PIon.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/PIon --full --data --type PIon --unprescale --process HLTPIon --globaltag auto:run3_hlt_PIon --input file:RelVal_Raw_PIon_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/PIon --full --data --type PIon --unprescale --process HLTPIon --globaltag auto:run3_hlt_PIon --input file:RelVal_Raw_PIon_DATA.root -# /dev/CMSSW_14_1_0/PIon/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/PIon/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/PIon/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/PIon/V10") ) process.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -4023,6 +4023,7 @@ 'keep *_hltL3NoFiltersNoVtxMuonCandidates_*_*', 'keep *_hltMergedTracks_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltParticleNetDiscriminatorsJetTags_*_*', 'keep *_hltPixelTracks_*_*', 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelClusters_*_*', diff --git a/HLTrigger/Configuration/test/OnLine_HLT_PRef.py b/HLTrigger/Configuration/test/OnLine_HLT_PRef.py index c16179e2a330e..5d6877c849e56 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_PRef.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_PRef.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/PRef --full --data --type PRef --unprescale --process HLTPRef --globaltag auto:run3_hlt_PRef --input file:RelVal_Raw_PRef_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/PRef --full --data --type PRef --unprescale --process HLTPRef --globaltag auto:run3_hlt_PRef --input file:RelVal_Raw_PRef_DATA.root -# /dev/CMSSW_14_1_0/PRef/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/PRef/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/PRef/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/PRef/V10") ) process.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1932,6 +1932,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward1 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1947,6 +1948,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward10 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1962,6 +1964,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward11 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1977,6 +1980,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward12 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -1992,6 +1996,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward13 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2007,6 +2012,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward14 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2022,6 +2028,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward15 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2037,6 +2044,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward16 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2052,6 +2060,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward17 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2067,6 +2076,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward18 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2082,6 +2092,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward19 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2097,6 +2108,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward2 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2112,6 +2124,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward20 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2127,6 +2140,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward21 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2142,6 +2156,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward22 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2157,6 +2172,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward23 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2172,6 +2188,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward24 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2187,6 +2204,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward3 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2202,6 +2220,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward4 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2217,6 +2236,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward5 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2232,6 +2252,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward6 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2247,6 +2268,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward7 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2262,6 +2284,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward8 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2277,6 +2300,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), PPRefZeroBiasPlusForward9 = cms.vstring( 'HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1', @@ -2292,6 +2316,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ), RPCMonitor = cms.vstring( 'AlCa_HIRPCMuonNormalisation_v11' ), SpecialRandom0 = cms.vstring( 'HLT_Random_HighRate_v1' ), @@ -4947,8 +4972,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -5719,6 +5744,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -5793,6 +5819,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -5964,8 +5991,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -8154,6 +8181,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -8955,6 +8983,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -12147,7 +12176,8 @@ SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ) process.hltElePixelSeedsCombined = cms.EDProducer( "SeedCombiner", - seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ) + seedCollections = cms.VInputTag( 'hltElePixelSeedsDoublets','hltElePixelSeedsTriplets' ), + clusterRemovalInfos = cms.VInputTag( ) ) process.hltEgammaElectronPixelSeeds = cms.EDProducer( "ElectronNHitSeedProducer", initialSeeds = cms.InputTag( "hltElePixelSeedsCombined" ), @@ -16184,6 +16214,23 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +process.hltL1sL1ZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTL1TSeed", + saveTags = cms.bool( True ), + L1SeedsLogicalExpression = cms.string( "L1_FirstCollisionInTrain" ), + L1ObjectMapInputTag = cms.InputTag( "hltGtStage2ObjectMap" ), + L1GlobalInputTag = cms.InputTag( "hltGtStage2Digis" ), + L1MuonInputTag = cms.InputTag( 'hltGtStage2Digis','Muon' ), + L1MuonShowerInputTag = cms.InputTag( 'hltGtStage2Digis','MuonShower' ), + L1EGammaInputTag = cms.InputTag( 'hltGtStage2Digis','EGamma' ), + L1JetInputTag = cms.InputTag( 'hltGtStage2Digis','Jet' ), + L1TauInputTag = cms.InputTag( 'hltGtStage2Digis','Tau' ), + L1EtSumInputTag = cms.InputTag( 'hltGtStage2Digis','EtSum' ), + L1EtSumZdcInputTag = cms.InputTag( 'hltGtStage2Digis','EtSumZDC' ) +) +process.hltPrePPRefZeroBiasFirstCollisionInTrain = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltPreRandomHighRate = cms.EDFilter( "HLTPrescaler", offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) @@ -16302,7 +16349,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_ZeroBias_Beamspot_v16' ) ) process.hltPreDatasetDQMOnlineBeamspot = cms.EDFilter( "HLTPrescaler", @@ -16341,9 +16388,9 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 80', - 'HLT_PPRefGEDPhoton30_v6', - 'HLT_PPRefL3SingleMu7_v8 / 80', + triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 40', + 'HLT_PPRefGEDPhoton30_v6 / 50', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Physics_v14 / 10' ) ) process.hltPreDatasetEventDisplay = cms.EDFilter( "HLTPrescaler", @@ -16356,7 +16403,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15', + triggerConditions = cms.vstring( 'HLT_HIHT80_Beamspot_ppRef5TeV_v15 / 2', 'HLT_ZeroBias_Beamspot_v16' ) ) process.hltPreDatasetExpressAlignment = cms.EDFilter( "HLTPrescaler", @@ -16370,7 +16417,7 @@ l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 80', - 'HLT_PPRefEle15Ele10GsfMass50_v6', + 'HLT_PPRefEle15Ele10GsfMass50_v6 / 12', 'HLT_PPRefL3SingleMu7_v8 / 80', 'HLT_PPRefUPC_ZDC1nOR_v1 / 8500', 'HLT_Physics_v14 / 2', @@ -16388,7 +16435,7 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 8', + triggerConditions = cms.vstring( 'HLT_AK4PFJet80_v8 / 20', 'HLT_PPRefEle15Ele10GsfMass50_v6', 'HLT_PPRefEle50Gsf_v6' ) ) @@ -16452,8 +16499,8 @@ l1tResults = cms.InputTag( "" ), l1tIgnoreMaskAndPrescale = cms.bool( False ), throw = cms.bool( True ), - triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8', - 'HLT_AK4PFJetFwd80_v8', + triggerConditions = cms.vstring( 'HLT_AK4PFJet100_v8 / 10', + 'HLT_AK4PFJetFwd80_v8 / 2', 'HLT_CDC_L2cosmic_10_er1p0_v10', 'HLT_CDC_L2cosmic_5p5_er1p0_v10', 'HLT_HIL1NotBptxORForPPRef_v9', @@ -16463,13 +16510,13 @@ 'HLT_HcalPhiSym_v23', 'HLT_IsoTrackHB_v14', 'HLT_IsoTrackHE_v14', - 'HLT_PPRefDoubleEle10Gsf_v6', - 'HLT_PPRefEle30Gsf_v7', - 'HLT_PPRefGEDPhoton30_EB_v6', - 'HLT_PPRefGEDPhoton40_v6', - 'HLT_PPRefL3DoubleMu0_Open_v8', - 'HLT_PPRefL3DoubleMu0_v8', - 'HLT_PPRefL3SingleMu7_v8', + 'HLT_PPRefDoubleEle10Gsf_v6 / 50', + 'HLT_PPRefEle30Gsf_v7 / 5', + 'HLT_PPRefGEDPhoton30_EB_v6 / 20', + 'HLT_PPRefGEDPhoton40_v6 / 10', + 'HLT_PPRefL3DoubleMu0_Open_v8 / 0', + 'HLT_PPRefL3DoubleMu0_v8 / 200', + 'HLT_PPRefL3SingleMu7_v8 / 200', 'HLT_Physics_v14', 'HLT_Random_v3', 'HLT_ZeroBias_FirstCollisionAfterAbortGap_v12', @@ -16626,6 +16673,7 @@ 'HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1', 'HLT_PPRefUPC_ZDC1nAsymXOR_v1', 'HLT_PPRefUPC_ZDC1nOR_v1', + 'HLT_PPRefZeroBias_FirstCollisionInTrain_v1', 'HLT_PPRefZeroBias_v6' ) ) process.hltPreDatasetPPRefZeroBiasPlusForward0 = cms.EDFilter( "HLTPrescaler", @@ -17000,6 +17048,7 @@ 'keep *_hltL3NoFiltersNoVtxMuonCandidates_*_*', 'keep *_hltMergedTracks_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltParticleNetDiscriminatorsJetTags_*_*', 'keep *_hltPixelTracks_*_*', 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelClusters_*_*', @@ -17053,10 +17102,6 @@ ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_DQMGPUvsCPU' ) ), outputCommands = cms.untracked.vstring( 'drop *', - 'keep *Cluster*_hltSiPixelClustersSerialSync_*_*', - 'keep *Cluster*_hltSiPixelClusters_*_*', - 'keep *RecHit*_hltSiPixelRecHitsSerialSync_*_*', - 'keep *RecHit*_hltSiPixelRecHits_*_*', 'keep *_hltEcalDigisSerialSync_*_*', 'keep *_hltEcalDigis_*_*', 'keep *_hltEcalUncalibRecHitSerialSync_*_*', @@ -17065,10 +17110,6 @@ 'keep *_hltHbhereco_*_*', 'keep *_hltParticleFlowClusterHCALSerialSync_*_*', 'keep *_hltParticleFlowClusterHCAL_*_*', - 'keep *_hltPixelTracksSerialSync_*_*', - 'keep *_hltPixelTracks_*_*', - 'keep *_hltPixelVerticesSerialSync_*_*', - 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelDigiErrorsSerialSync_*_*', 'keep *_hltSiPixelDigiErrors_*_*' ) ) @@ -18236,6 +18277,7 @@ process.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORSingleJet28 + process.hltPrePPRefUPCSingleJet28ZDC1nOR + process.HLTEndSequence ) process.HLT_PPRefUPC_ZDC1nAsymXOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nAsymXOR + process.hltPrePPRefUPCZDC1nAsymXOR + process.HLTEndSequence ) process.HLT_PPRefUPC_ZDC1nOR_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sZDC1nORPRef + process.hltPrePPRefUPCZDC1nOR + process.HLTEndSequence ) +process.HLT_PPRefZeroBias_FirstCollisionInTrain_v1 = cms.Path( process.HLTBeginSequence + process.hltL1sL1ZeroBiasFirstCollisionInTrain + process.hltPrePPRefZeroBiasFirstCollisionInTrain + process.HLTEndSequence ) process.HLT_Random_HighRate_v1 = cms.Path( process.HLTBeginSequenceRandom + process.hltPreRandomHighRate + process.HLTEndSequence ) process.HLTriggerFinalPath = cms.Path( process.hltGtStage2Digis + process.hltTriggerSummaryAOD + process.hltTriggerSummaryRAW + process.hltBoolFalse ) process.HLTAnalyzerEndpath = cms.EndPath( process.hltGtStage2Digis + process.hltL1TGlobalSummary + process.hltTrigReport ) @@ -18393,7 +18435,7 @@ process.PhysicsPPRefZeroBiasPlusForward20Output = cms.FinalPath( process.hltOutputPhysicsPPRefZeroBiasPlusForward20 ) -process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_HIEcalEtaEBonly_v12, process.AlCa_HIEcalEtaEEonly_v12, process.AlCa_HIEcalPi0EBonly_v12, process.AlCa_HIEcalPi0EEonly_v12, process.AlCa_HIRPCMuonNormalisation_v11, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DST_Physics_v16, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, process.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, process.HLT_HIL1NotBptxORForPPRef_v9, process.HLT_HIHT80_Beamspot_ppRef5TeV_v15, process.HLT_PPRefZeroBias_v6, process.HLT_AK4CaloJet40_v6, process.HLT_AK4CaloJet60_v6, process.HLT_AK4CaloJet70_v6, process.HLT_AK4CaloJet80_v6, process.HLT_AK4CaloJet100_v6, process.HLT_AK4CaloJet120_v6, process.HLT_AK4CaloJetFwd40_v6, process.HLT_AK4CaloJetFwd60_v6, process.HLT_AK4CaloJetFwd70_v6, process.HLT_AK4CaloJetFwd80_v6, process.HLT_AK4CaloJetFwd100_v6, process.HLT_AK4CaloJetFwd120_v6, process.HLT_AK4PFJet40_v8, process.HLT_AK4PFJet60_v8, process.HLT_AK4PFJet80_v8, process.HLT_AK4PFJet100_v8, process.HLT_AK4PFJet120_v8, process.HLT_AK4PFJetFwd40_v8, process.HLT_AK4PFJetFwd60_v8, process.HLT_AK4PFJetFwd80_v8, process.HLT_AK4PFJetFwd100_v8, process.HLT_AK4PFJetFwd120_v8, process.HLT_PPRefDoubleEle10Gsf_v6, process.HLT_PPRefDoubleEle10GsfMass50_v6, process.HLT_PPRefDoubleEle15Gsf_v6, process.HLT_PPRefDoubleEle15GsfMass50_v6, process.HLT_PPRefEle15Ele10Gsf_v6, process.HLT_PPRefEle15Ele10GsfMass50_v6, process.HLT_PPRefEle10Gsf_v6, process.HLT_PPRefEle15Gsf_v6, process.HLT_PPRefEle20Gsf_v7, process.HLT_PPRefEle30Gsf_v7, process.HLT_PPRefEle40Gsf_v6, process.HLT_PPRefEle50Gsf_v6, process.HLT_PPRefGEDPhoton10_v6, process.HLT_PPRefGEDPhoton10_EB_v6, process.HLT_PPRefGEDPhoton20_v6, process.HLT_PPRefGEDPhoton20_EB_v6, process.HLT_PPRefGEDPhoton30_v6, process.HLT_PPRefGEDPhoton30_EB_v6, process.HLT_PPRefGEDPhoton40_v6, process.HLT_PPRefGEDPhoton40_EB_v6, process.HLT_PPRefGEDPhoton50_v6, process.HLT_PPRefGEDPhoton50_EB_v6, process.HLT_PPRefGEDPhoton60_v6, process.HLT_PPRefGEDPhoton60_EB_v6, process.HLT_PPRefDoubleGEDPhoton20_v1, process.HLT_PPRefL1DoubleMu0_v6, process.HLT_PPRefL1DoubleMu0_SQ_v1, process.HLT_PPRefL1DoubleMu0_Open_v6, process.HLT_PPRefL1DoubleMu2_v1, process.HLT_PPRefL1DoubleMu2_SQ_v1, process.HLT_PPRefL1SingleMu0_Cosmics_v6, process.HLT_PPRefL1SingleMu7_v6, process.HLT_PPRefL1SingleMu12_v6, process.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, process.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, process.HLT_PPRefL2DoubleMu0_v6, process.HLT_PPRefL2DoubleMu0_Open_v6, process.HLT_PPRefL2SingleMu7_v6, process.HLT_PPRefL2SingleMu12_v6, process.HLT_PPRefL2SingleMu15_v6, process.HLT_PPRefL2SingleMu20_v6, process.HLT_PPRefL3DoubleMu0_v8, process.HLT_PPRefL3DoubleMu0_Open_v8, process.HLT_PPRefL3SingleMu3_v8, process.HLT_PPRefL3SingleMu5_v8, process.HLT_PPRefL3SingleMu7_v8, process.HLT_PPRefL3SingleMu12_v8, process.HLT_PPRefL3SingleMu15_v8, process.HLT_PPRefL3SingleMu20_v8, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, process.HLT_PPRefCscCluster_Loose_v6, process.HLT_PPRefCscCluster_Medium_v6, process.HLT_PPRefCscCluster_Tight_v6, process.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, process.HLT_PPRefUPC_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_ZDC1nOR_v1, process.HLT_Random_HighRate_v1, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaP0, process.Dataset_AlCaPhiSym, process.Dataset_Commissioning, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_EcalLaser, process.Dataset_EmptyBX, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressPhysics, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_L1Accept, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_PPRefDoubleMuon0, process.Dataset_PPRefDoubleMuon1, process.Dataset_PPRefDoubleMuon2, process.Dataset_PPRefDoubleMuon3, process.Dataset_PPRefHardProbes0, process.Dataset_PPRefSingleMuon0, process.Dataset_PPRefZeroBiasPlusForward0, process.Dataset_RPCMonitor, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_ZeroBias, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCAP0Output, process.ALCAPHISYMOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.HLTMonitorOutput, process.PhysicsCommissioningOutput, process.PhysicsPPRefDoubleMuon0Output, process.PhysicsPPRefDoubleMuon1Output, process.PhysicsPPRefDoubleMuon2Output, process.PhysicsPPRefDoubleMuon3Output, process.PhysicsPPRefHardProbes0Output, process.PhysicsPPRefHardProbes1Output, process.PhysicsPPRefHardProbes2Output, process.PhysicsPPRefSingleMuon0Output, process.PhysicsPPRefSingleMuon1Output, process.PhysicsPPRefSingleMuon2Output, process.PhysicsPPRefZeroBiasPlusForward0Output, process.PhysicsPPRefZeroBiasPlusForward1Output, process.PhysicsPPRefZeroBiasPlusForward2Output, process.PhysicsPPRefZeroBiasPlusForward3Output, process.PhysicsPPRefZeroBiasPlusForward4Output, process.PhysicsPPRefZeroBiasPlusForward5Output, process.PhysicsPPRefZeroBiasPlusForward6Output, process.PhysicsPPRefZeroBiasPlusForward7Output, process.PhysicsPPRefZeroBiasPlusForward8Output, process.PhysicsPPRefZeroBiasPlusForward9Output, process.NanoDSTOutput, process.RPCMONOutput, process.PhysicsSpecialRandom0Output, process.PhysicsSpecialRandom1Output, process.PhysicsSpecialRandom2Output, process.PhysicsSpecialRandom3Output, process.PhysicsSpecialRandom4Output, process.PhysicsSpecialRandom5Output, process.PhysicsSpecialRandom6Output, process.PhysicsSpecialRandom7Output, process.PhysicsSpecialRandom8Output, process.PhysicsSpecialRandom9Output, process.Dataset_SpecialRandom0, process.Dataset_SpecialRandom1, process.Dataset_SpecialRandom2, process.Dataset_SpecialRandom3, process.Dataset_SpecialRandom4, process.Dataset_SpecialRandom5, process.Dataset_SpecialRandom6, process.Dataset_SpecialRandom7, process.Dataset_SpecialRandom8, process.Dataset_SpecialRandom9, process.Dataset_SpecialRandom10, process.Dataset_SpecialRandom11, process.Dataset_SpecialRandom12, process.Dataset_SpecialRandom13, process.Dataset_SpecialRandom14, process.Dataset_SpecialRandom15, process.Dataset_SpecialRandom16, process.Dataset_SpecialRandom17, process.Dataset_SpecialRandom18, process.Dataset_SpecialRandom19, process.Dataset_PPRefZeroBiasPlusForward1, process.Dataset_PPRefZeroBiasPlusForward2, process.Dataset_PPRefZeroBiasPlusForward3, process.Dataset_PPRefZeroBiasPlusForward4, process.Dataset_PPRefZeroBiasPlusForward5, process.Dataset_PPRefZeroBiasPlusForward6, process.Dataset_PPRefZeroBiasPlusForward7, process.Dataset_PPRefZeroBiasPlusForward8, process.Dataset_PPRefZeroBiasPlusForward9, process.Dataset_PPRefZeroBiasPlusForward10, process.Dataset_PPRefZeroBiasPlusForward11, process.Dataset_PPRefZeroBiasPlusForward12, process.Dataset_PPRefZeroBiasPlusForward13, process.Dataset_PPRefZeroBiasPlusForward14, process.Dataset_PPRefZeroBiasPlusForward15, process.Dataset_PPRefZeroBiasPlusForward16, process.Dataset_PPRefZeroBiasPlusForward17, process.Dataset_PPRefZeroBiasPlusForward18, process.Dataset_PPRefZeroBiasPlusForward19, process.Dataset_PPRefZeroBiasPlusForward20, process.Dataset_PPRefZeroBiasPlusForward21, process.Dataset_PPRefZeroBiasPlusForward22, process.Dataset_PPRefZeroBiasPlusForward23, process.Dataset_PPRefZeroBiasPlusForward24, process.Dataset_PPRefSingleMuon1, process.Dataset_PPRefSingleMuon2, process.Dataset_PPRefSingleMuon3, process.Dataset_PPRefHardProbes1, process.Dataset_PPRefHardProbes2, process.Dataset_PPRefHardProbes3, process.Dataset_PPRefHardProbes4, process.PhysicsPPRefHardProbes3Output, process.PhysicsPPRefHardProbes4Output, process.PhysicsPPRefSingleMuon3Output, process.PhysicsPPRefZeroBiasPlusForward10Output, process.PhysicsPPRefZeroBiasPlusForward11Output, process.PhysicsPPRefZeroBiasPlusForward12Output, process.PhysicsPPRefZeroBiasPlusForward13Output, process.PhysicsPPRefZeroBiasPlusForward14Output, process.PhysicsPPRefZeroBiasPlusForward15Output, process.PhysicsPPRefZeroBiasPlusForward16Output, process.PhysicsPPRefZeroBiasPlusForward18Output, process.PhysicsPPRefZeroBiasPlusForward19Output, process.PhysicsPPRefZeroBiasPlusForward17Output, process.PhysicsPPRefZeroBiasPlusForward24Output, process.PhysicsPPRefZeroBiasPlusForward23Output, process.PhysicsPPRefZeroBiasPlusForward22Output, process.PhysicsPPRefZeroBiasPlusForward21Output, process.PhysicsPPRefZeroBiasPlusForward20Output, )) +process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_HIEcalEtaEBonly_v12, process.AlCa_HIEcalEtaEEonly_v12, process.AlCa_HIEcalPi0EBonly_v12, process.AlCa_HIEcalPi0EEonly_v12, process.AlCa_HIRPCMuonNormalisation_v11, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DST_Physics_v16, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_HIL1UnpairedBunchBptxMinusForPPRef_v9, process.HLT_HIL1UnpairedBunchBptxPlusForPPRef_v9, process.HLT_HIL1NotBptxORForPPRef_v9, process.HLT_HIHT80_Beamspot_ppRef5TeV_v15, process.HLT_PPRefZeroBias_v6, process.HLT_AK4CaloJet40_v6, process.HLT_AK4CaloJet60_v6, process.HLT_AK4CaloJet70_v6, process.HLT_AK4CaloJet80_v6, process.HLT_AK4CaloJet100_v6, process.HLT_AK4CaloJet120_v6, process.HLT_AK4CaloJetFwd40_v6, process.HLT_AK4CaloJetFwd60_v6, process.HLT_AK4CaloJetFwd70_v6, process.HLT_AK4CaloJetFwd80_v6, process.HLT_AK4CaloJetFwd100_v6, process.HLT_AK4CaloJetFwd120_v6, process.HLT_AK4PFJet40_v8, process.HLT_AK4PFJet60_v8, process.HLT_AK4PFJet80_v8, process.HLT_AK4PFJet100_v8, process.HLT_AK4PFJet120_v8, process.HLT_AK4PFJetFwd40_v8, process.HLT_AK4PFJetFwd60_v8, process.HLT_AK4PFJetFwd80_v8, process.HLT_AK4PFJetFwd100_v8, process.HLT_AK4PFJetFwd120_v8, process.HLT_PPRefDoubleEle10Gsf_v6, process.HLT_PPRefDoubleEle10GsfMass50_v6, process.HLT_PPRefDoubleEle15Gsf_v6, process.HLT_PPRefDoubleEle15GsfMass50_v6, process.HLT_PPRefEle15Ele10Gsf_v6, process.HLT_PPRefEle15Ele10GsfMass50_v6, process.HLT_PPRefEle10Gsf_v6, process.HLT_PPRefEle15Gsf_v6, process.HLT_PPRefEle20Gsf_v7, process.HLT_PPRefEle30Gsf_v7, process.HLT_PPRefEle40Gsf_v6, process.HLT_PPRefEle50Gsf_v6, process.HLT_PPRefGEDPhoton10_v6, process.HLT_PPRefGEDPhoton10_EB_v6, process.HLT_PPRefGEDPhoton20_v6, process.HLT_PPRefGEDPhoton20_EB_v6, process.HLT_PPRefGEDPhoton30_v6, process.HLT_PPRefGEDPhoton30_EB_v6, process.HLT_PPRefGEDPhoton40_v6, process.HLT_PPRefGEDPhoton40_EB_v6, process.HLT_PPRefGEDPhoton50_v6, process.HLT_PPRefGEDPhoton50_EB_v6, process.HLT_PPRefGEDPhoton60_v6, process.HLT_PPRefGEDPhoton60_EB_v6, process.HLT_PPRefDoubleGEDPhoton20_v1, process.HLT_PPRefL1DoubleMu0_v6, process.HLT_PPRefL1DoubleMu0_SQ_v1, process.HLT_PPRefL1DoubleMu0_Open_v6, process.HLT_PPRefL1DoubleMu2_v1, process.HLT_PPRefL1DoubleMu2_SQ_v1, process.HLT_PPRefL1SingleMu0_Cosmics_v6, process.HLT_PPRefL1SingleMu7_v6, process.HLT_PPRefL1SingleMu12_v6, process.HLT_PPRefL1SingleMu5_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu5_GEDPhoton20_v1, process.HLT_PPRefL1SingleMu7_Ele20Gsf_v1, process.HLT_PPRefL1SingleMu7_GEDPhoton10_v1, process.HLT_PPRefL2DoubleMu0_v6, process.HLT_PPRefL2DoubleMu0_Open_v6, process.HLT_PPRefL2SingleMu7_v6, process.HLT_PPRefL2SingleMu12_v6, process.HLT_PPRefL2SingleMu15_v6, process.HLT_PPRefL2SingleMu20_v6, process.HLT_PPRefL3DoubleMu0_v8, process.HLT_PPRefL3DoubleMu0_Open_v8, process.HLT_PPRefL3SingleMu3_v8, process.HLT_PPRefL3SingleMu5_v8, process.HLT_PPRefL3SingleMu7_v8, process.HLT_PPRefL3SingleMu12_v8, process.HLT_PPRefL3SingleMu15_v8, process.HLT_PPRefL3SingleMu20_v8, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu3_SingleAK4CaloJet80_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet40_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet60_v1, process.HLT_PPRefL3SingleMu5_SingleAK4CaloJet80_v1, process.HLT_PPRefCscCluster_Loose_v6, process.HLT_PPRefCscCluster_Medium_v6, process.HLT_PPRefCscCluster_Tight_v6, process.HLT_PPRefUPC_SingleJet8_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_SingleJet8_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet12_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet16_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet20_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet24_ZDC1nOR_v1, process.HLT_PPRefUPC_SingleJet28_ZDC1nOR_v1, process.HLT_PPRefUPC_ZDC1nAsymXOR_v1, process.HLT_PPRefUPC_ZDC1nOR_v1, process.HLT_PPRefZeroBias_FirstCollisionInTrain_v1, process.HLT_Random_HighRate_v1, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaP0, process.Dataset_AlCaPhiSym, process.Dataset_Commissioning, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_EcalLaser, process.Dataset_EmptyBX, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressPhysics, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_L1Accept, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_PPRefDoubleMuon0, process.Dataset_PPRefDoubleMuon1, process.Dataset_PPRefDoubleMuon2, process.Dataset_PPRefDoubleMuon3, process.Dataset_PPRefHardProbes0, process.Dataset_PPRefSingleMuon0, process.Dataset_PPRefZeroBiasPlusForward0, process.Dataset_RPCMonitor, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_ZeroBias, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCAP0Output, process.ALCAPHISYMOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.HLTMonitorOutput, process.PhysicsCommissioningOutput, process.PhysicsPPRefDoubleMuon0Output, process.PhysicsPPRefDoubleMuon1Output, process.PhysicsPPRefDoubleMuon2Output, process.PhysicsPPRefDoubleMuon3Output, process.PhysicsPPRefHardProbes0Output, process.PhysicsPPRefHardProbes1Output, process.PhysicsPPRefHardProbes2Output, process.PhysicsPPRefSingleMuon0Output, process.PhysicsPPRefSingleMuon1Output, process.PhysicsPPRefSingleMuon2Output, process.PhysicsPPRefZeroBiasPlusForward0Output, process.PhysicsPPRefZeroBiasPlusForward1Output, process.PhysicsPPRefZeroBiasPlusForward2Output, process.PhysicsPPRefZeroBiasPlusForward3Output, process.PhysicsPPRefZeroBiasPlusForward4Output, process.PhysicsPPRefZeroBiasPlusForward5Output, process.PhysicsPPRefZeroBiasPlusForward6Output, process.PhysicsPPRefZeroBiasPlusForward7Output, process.PhysicsPPRefZeroBiasPlusForward8Output, process.PhysicsPPRefZeroBiasPlusForward9Output, process.NanoDSTOutput, process.RPCMONOutput, process.PhysicsSpecialRandom0Output, process.PhysicsSpecialRandom1Output, process.PhysicsSpecialRandom2Output, process.PhysicsSpecialRandom3Output, process.PhysicsSpecialRandom4Output, process.PhysicsSpecialRandom5Output, process.PhysicsSpecialRandom6Output, process.PhysicsSpecialRandom7Output, process.PhysicsSpecialRandom8Output, process.PhysicsSpecialRandom9Output, process.Dataset_SpecialRandom0, process.Dataset_SpecialRandom1, process.Dataset_SpecialRandom2, process.Dataset_SpecialRandom3, process.Dataset_SpecialRandom4, process.Dataset_SpecialRandom5, process.Dataset_SpecialRandom6, process.Dataset_SpecialRandom7, process.Dataset_SpecialRandom8, process.Dataset_SpecialRandom9, process.Dataset_SpecialRandom10, process.Dataset_SpecialRandom11, process.Dataset_SpecialRandom12, process.Dataset_SpecialRandom13, process.Dataset_SpecialRandom14, process.Dataset_SpecialRandom15, process.Dataset_SpecialRandom16, process.Dataset_SpecialRandom17, process.Dataset_SpecialRandom18, process.Dataset_SpecialRandom19, process.Dataset_PPRefZeroBiasPlusForward1, process.Dataset_PPRefZeroBiasPlusForward2, process.Dataset_PPRefZeroBiasPlusForward3, process.Dataset_PPRefZeroBiasPlusForward4, process.Dataset_PPRefZeroBiasPlusForward5, process.Dataset_PPRefZeroBiasPlusForward6, process.Dataset_PPRefZeroBiasPlusForward7, process.Dataset_PPRefZeroBiasPlusForward8, process.Dataset_PPRefZeroBiasPlusForward9, process.Dataset_PPRefZeroBiasPlusForward10, process.Dataset_PPRefZeroBiasPlusForward11, process.Dataset_PPRefZeroBiasPlusForward12, process.Dataset_PPRefZeroBiasPlusForward13, process.Dataset_PPRefZeroBiasPlusForward14, process.Dataset_PPRefZeroBiasPlusForward15, process.Dataset_PPRefZeroBiasPlusForward16, process.Dataset_PPRefZeroBiasPlusForward17, process.Dataset_PPRefZeroBiasPlusForward18, process.Dataset_PPRefZeroBiasPlusForward19, process.Dataset_PPRefZeroBiasPlusForward20, process.Dataset_PPRefZeroBiasPlusForward21, process.Dataset_PPRefZeroBiasPlusForward22, process.Dataset_PPRefZeroBiasPlusForward23, process.Dataset_PPRefZeroBiasPlusForward24, process.Dataset_PPRefSingleMuon1, process.Dataset_PPRefSingleMuon2, process.Dataset_PPRefSingleMuon3, process.Dataset_PPRefHardProbes1, process.Dataset_PPRefHardProbes2, process.Dataset_PPRefHardProbes3, process.Dataset_PPRefHardProbes4, process.PhysicsPPRefHardProbes3Output, process.PhysicsPPRefHardProbes4Output, process.PhysicsPPRefSingleMuon3Output, process.PhysicsPPRefZeroBiasPlusForward10Output, process.PhysicsPPRefZeroBiasPlusForward11Output, process.PhysicsPPRefZeroBiasPlusForward12Output, process.PhysicsPPRefZeroBiasPlusForward13Output, process.PhysicsPPRefZeroBiasPlusForward14Output, process.PhysicsPPRefZeroBiasPlusForward15Output, process.PhysicsPPRefZeroBiasPlusForward16Output, process.PhysicsPPRefZeroBiasPlusForward18Output, process.PhysicsPPRefZeroBiasPlusForward19Output, process.PhysicsPPRefZeroBiasPlusForward17Output, process.PhysicsPPRefZeroBiasPlusForward24Output, process.PhysicsPPRefZeroBiasPlusForward23Output, process.PhysicsPPRefZeroBiasPlusForward22Output, process.PhysicsPPRefZeroBiasPlusForward21Output, process.PhysicsPPRefZeroBiasPlusForward20Output, )) # source module (EDM inputs) diff --git a/HLTrigger/Configuration/test/OnLine_HLT_Special.py b/HLTrigger/Configuration/test/OnLine_HLT_Special.py index b2128742e1649..66d537033f8c3 100644 --- a/HLTrigger/Configuration/test/OnLine_HLT_Special.py +++ b/HLTrigger/Configuration/test/OnLine_HLT_Special.py @@ -1,6 +1,6 @@ -# hltGetConfiguration /dev/CMSSW_14_1_0/Special --full --data --type Special --unprescale --process HLTSpecial --globaltag auto:run3_hlt_Special --input file:RelVal_Raw_Special_DATA.root +# hltGetConfiguration /dev/CMSSW_14_2_0/Special --full --data --type Special --unprescale --process HLTSpecial --globaltag auto:run3_hlt_Special --input file:RelVal_Raw_Special_DATA.root -# /dev/CMSSW_14_1_0/Special/V40 (CMSSW_14_1_1) +# /dev/CMSSW_14_2_0/Special/V10 (CMSSW_14_2_0) import FWCore.ParameterSet.Config as cms @@ -9,7 +9,7 @@ process.load("Configuration.StandardSequences.Accelerators_cff") process.HLTConfigVersion = cms.PSet( - tableName = cms.string("/dev/CMSSW_14_1_0/Special/V40") + tableName = cms.string("/dev/CMSSW_14_2_0/Special/V10") ) process.HLTGroupedCkfTrajectoryBuilderP5 = cms.PSet( @@ -1503,6 +1503,22 @@ 'SpecialZeroBias17' ), PhysicsSpecialZeroBias9 = cms.vstring( 'SpecialZeroBias18', 'SpecialZeroBias19' ), + PhysicsVRRandom0 = cms.vstring( 'VRRandom0', + 'VRRandom1' ), + PhysicsVRRandom1 = cms.vstring( 'VRRandom2', + 'VRRandom3' ), + PhysicsVRRandom2 = cms.vstring( 'VRRandom4', + 'VRRandom5' ), + PhysicsVRRandom3 = cms.vstring( 'VRRandom6', + 'VRRandom7' ), + PhysicsVRRandom4 = cms.vstring( 'VRRandom8', + 'VRRandom9' ), + PhysicsVRRandom5 = cms.vstring( 'VRRandom10', + 'VRRandom11' ), + PhysicsVRRandom6 = cms.vstring( 'VRRandom12', + 'VRRandom13' ), + PhysicsVRRandom7 = cms.vstring( 'VRRandom14', + 'VRRandom15' ), RPCMON = cms.vstring( 'RPCMonitor' ) ) process.datasets = cms.PSet( @@ -1865,6 +1881,22 @@ 'HLT_HcalCalibration_v6' ), TestEnablesEcalHcalDQM = cms.vstring( 'HLT_EcalCalibration_v4', 'HLT_HcalCalibration_v6' ), + VRRandom0 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom1 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom10 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom11 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom12 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom13 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom14 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom15 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom2 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom3 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom4 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom5 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom6 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom7 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom8 = cms.vstring( 'HLT_Random_HighRate_v1' ), + VRRandom9 = cms.vstring( 'HLT_Random_HighRate_v1' ), ZeroBias = cms.vstring( 'HLT_Random_v3', 'HLT_ZeroBias_Alignment_v8', 'HLT_ZeroBias_FirstBXAfterTrain_v10', @@ -4499,8 +4531,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -5271,6 +5303,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoA" ), @@ -5345,6 +5378,7 @@ eps = cms.double( 0.07 ), errmax = cms.double( 0.01 ), chi2max = cms.double( 9.0 ), + maxVertices = cms.int32( 256 ), PtMin = cms.double( 0.5 ), PtMax = cms.double( 75.0 ), pixelTrackSrc = cms.InputTag( "hltPixelTracksSoASerialSync" ) @@ -5516,8 +5550,8 @@ recoverEEFE = cms.bool( False ), dbStatusToBeExcludedEE = cms.vint32( 14, 78, 142 ), dbStatusToBeExcludedEB = cms.vint32( 14, 78, 142 ), - logWarningEtThreshold_EB_FE = cms.double( 50.0 ), - logWarningEtThreshold_EE_FE = cms.double( 50.0 ), + logWarningEtThreshold_EB_FE = cms.double( -1.0 ), + logWarningEtThreshold_EE_FE = cms.double( -1.0 ), ebDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebDetId' ), eeDetIdToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','eeDetId' ), ebFEToBeRecovered = cms.InputTag( 'hltEcalDetIdToBeRecovered','ebFE' ), @@ -7722,6 +7756,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltIter3IterL3FromL1MuonPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -8523,6 +8558,7 @@ MaxNumberOfPixelClusters = cms.uint32( 40000 ), PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), cut = cms.string( "" ), + DontCountDetsAboveNClusters = cms.uint32( 0 ), silentClusterCheck = cms.untracked.bool( False ) ) process.hltDoubletRecoveryPFlowPixelHitDoublets = cms.EDProducer( "HitPairEDProducer", @@ -11025,6 +11061,22 @@ process.hltCombinatorialcosmicseedfinderP5 = cms.EDProducer( "CtfSpecialSeedGenerator", SeedMomentum = cms.double( 5.0 ), ErrorRescaling = cms.double( 50.0 ), + UseScintillatorsConstraint = cms.bool( False ), + TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), + SeedsFromPositiveY = cms.bool( True ), + SeedsFromNegativeY = cms.bool( False ), + CheckHitsAreOnDifferentLayers = cms.bool( False ), + SetMomentum = cms.bool( True ), + requireBOFF = cms.bool( True ), + maxSeeds = cms.int32( 10000 ), + doClusterCheck = cms.bool( True ), + MaxNumberOfStripClusters = cms.uint32( 300 ), + ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), + MaxNumberOfPixelClusters = cms.uint32( 1000 ), + PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), + cut = cms.string( "strip < 400000 && pixel < 40000 && (strip < 50000 + 10*pixel) && (pixel < 5000 + 0.1*strip)" ), + DontCountDetsAboveNClusters = cms.uint32( 20 ), + Charges = cms.vint32( -1 ), RegionFactoryPSet = cms.PSet( RegionPSet = cms.PSet( ptMin = cms.double( 0.9 ), @@ -11038,7 +11090,20 @@ ), ComponentName = cms.string( "GlobalRegionProducer" ) ), - Charges = cms.vint32( -1 ), + UpperScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( 300.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), + LowerScintillatorParameters = cms.PSet( + WidthInX = cms.double( 100.0 ), + GlobalX = cms.double( 0.0 ), + GlobalY = cms.double( -100.0 ), + GlobalZ = cms.double( 50.0 ), + LenghtInZ = cms.double( 100.0 ) + ), OrderedHitsFactoryPSets = cms.VPSet( cms.PSet( LayerSrc = cms.InputTag( "hltCombinatorialcosmicseedingtripletsP5" ), NavigationDirection = cms.string( "outsideIn" ), @@ -11070,40 +11135,11 @@ PropagationDirection = cms.string( "alongMomentum" ), ComponentName = cms.string( "GenericPairGenerator" ) ) - ), - UseScintillatorsConstraint = cms.bool( False ), - TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), - SeedsFromPositiveY = cms.bool( True ), - SeedsFromNegativeY = cms.bool( False ), - doClusterCheck = cms.bool( True ), - ClusterCollectionLabel = cms.InputTag( "hltFullSiStripRawToClustersFacility" ), - MaxNumberOfStripClusters = cms.uint32( 300 ), - MaxNumberOfPixelClusters = cms.uint32( 1000 ), - PixelClusterCollectionLabel = cms.InputTag( "hltSiPixelClusters" ), - CheckHitsAreOnDifferentLayers = cms.bool( False ), - SetMomentum = cms.bool( True ), - requireBOFF = cms.bool( True ), - maxSeeds = cms.int32( 10000 ), - DontCountDetsAboveNClusters = cms.untracked.uint32( 20 ), - UpperScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( 300.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) - ), - LowerScintillatorParameters = cms.PSet( - WidthInX = cms.double( 100.0 ), - GlobalX = cms.double( 0.0 ), - GlobalY = cms.double( -100.0 ), - GlobalZ = cms.double( 50.0 ), - LenghtInZ = cms.double( 100.0 ) ) ) process.hltCombinedP5SeedsForCTF = cms.EDProducer( "SeedCombiner", seedCollections = cms.VInputTag( 'hltCombinatorialcosmicseedfinderP5','hltSimpleCosmicBONSeeds' ), - PairCollection = cms.untracked.InputTag( "hltCombinatorialcosmicseedfinderP5" ), - TripletCollection = cms.untracked.InputTag( "hltSimpleCosmicBONSeeds" ) + clusterRemovalInfos = cms.VInputTag( ) ) process.hltCkfTrackCandidatesP5 = cms.EDProducer( "CkfTrackCandidateMaker", cleanTrajectoryAfterInOut = cms.bool( True ), @@ -11798,6 +11834,78 @@ offset = cms.uint32( 0 ), L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) ) +process.hltDatasetVRRandom = cms.EDFilter( "TriggerResultsFilter", + usePathStatus = cms.bool( True ), + hltResults = cms.InputTag( "" ), + l1tResults = cms.InputTag( "" ), + l1tIgnoreMaskAndPrescale = cms.bool( False ), + throw = cms.bool( True ), + triggerConditions = cms.vstring( 'HLT_Random_HighRate_v1' ) +) +process.hltPreDatasetVRRandom0 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 0 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom1 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 1 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom2 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 2 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom3 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 3 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom4 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 4 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom5 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 5 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom6 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 6 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom7 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 7 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom8 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 8 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom9 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 9 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom10 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 10 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom11 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 11 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom12 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 12 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom13 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 13 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom14 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 14 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) +process.hltPreDatasetVRRandom15 = cms.EDFilter( "HLTPrescaler", + offset = cms.uint32( 15 ), + L1GtReadoutRecordTag = cms.InputTag( "hltGtStage2Digis" ) +) process.hltDatasetZeroBias = cms.EDFilter( "TriggerResultsFilter", usePathStatus = cms.bool( True ), hltResults = cms.InputTag( "" ), @@ -12365,6 +12473,7 @@ 'keep *_hltL3NoFiltersNoVtxMuonCandidates_*_*', 'keep *_hltMergedTracks_*_*', 'keep *_hltOnlineBeamSpot_*_*', + 'keep *_hltParticleNetDiscriminatorsJetTags_*_*', 'keep *_hltPixelTracks_*_*', 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelClusters_*_*', @@ -12418,10 +12527,6 @@ ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_DQMGPUvsCPU' ) ), outputCommands = cms.untracked.vstring( 'drop *', - 'keep *Cluster*_hltSiPixelClustersSerialSync_*_*', - 'keep *Cluster*_hltSiPixelClusters_*_*', - 'keep *RecHit*_hltSiPixelRecHitsSerialSync_*_*', - 'keep *RecHit*_hltSiPixelRecHits_*_*', 'keep *_hltEcalDigisSerialSync_*_*', 'keep *_hltEcalDigis_*_*', 'keep *_hltEcalUncalibRecHitSerialSync_*_*', @@ -12430,10 +12535,6 @@ 'keep *_hltHbhereco_*_*', 'keep *_hltParticleFlowClusterHCALSerialSync_*_*', 'keep *_hltParticleFlowClusterHCAL_*_*', - 'keep *_hltPixelTracksSerialSync_*_*', - 'keep *_hltPixelTracks_*_*', - 'keep *_hltPixelVerticesSerialSync_*_*', - 'keep *_hltPixelVertices_*_*', 'keep *_hltSiPixelDigiErrorsSerialSync_*_*', 'keep *_hltSiPixelDigiErrors_*_*' ) ) @@ -13395,6 +13496,142 @@ 'keep edmTriggerResults_*_*_*', 'keep triggerTriggerEvent_*_*_*' ) ) +process.hltOutputPhysicsVRRandom1 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom1.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom2', + 'Dataset_VRRandom3' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom0 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom0.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom0', + 'Dataset_VRRandom1' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom2 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom2.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom4', + 'Dataset_VRRandom5' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom3 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom3.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom6', + 'Dataset_VRRandom7' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom4 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom4.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom8', + 'Dataset_VRRandom9' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom5 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom5.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom10', + 'Dataset_VRRandom11' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom6 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom6.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom12', + 'Dataset_VRRandom13' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) +process.hltOutputPhysicsVRRandom7 = cms.OutputModule( "PoolOutputModule", + fileName = cms.untracked.string( "outputPhysicsVRRandom7.root" ), + compressionAlgorithm = cms.untracked.string( "ZSTD" ), + compressionLevel = cms.untracked.int32( 3 ), + fastCloning = cms.untracked.bool( False ), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string( "" ), + dataTier = cms.untracked.string( "RAW" ) + ), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring( 'Dataset_VRRandom14', + 'Dataset_VRRandom15' ) ), + outputCommands = cms.untracked.vstring( 'drop *', + 'keep FEDRawDataCollection_rawDataCollector_*_*', + 'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*', + 'keep edmTriggerResults_*_*_*', + 'keep triggerTriggerEvent_*_*_*' ) +) process.HLTL1UnpackerSequence = cms.Sequence( process.hltGtStage2Digis + process.hltGtStage2ObjectMap ) process.HLTBeamSpot = cms.Sequence( process.hltOnlineMetaDataDigis + process.hltOnlineBeamSpot ) @@ -13597,6 +13834,22 @@ process.Dataset_RPCMonitor = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetRPCMonitor + process.hltPreDatasetRPCMonitor ) process.Dataset_TestEnablesEcalHcal = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetTestEnablesEcalHcal + process.hltPreDatasetTestEnablesEcalHcal ) process.Dataset_TestEnablesEcalHcalDQM = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetTestEnablesEcalHcalDQM + process.hltPreDatasetTestEnablesEcalHcalDQM ) +process.Dataset_VRRandom0 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom0 ) +process.Dataset_VRRandom1 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom1 ) +process.Dataset_VRRandom2 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom2 ) +process.Dataset_VRRandom3 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom3 ) +process.Dataset_VRRandom4 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom4 ) +process.Dataset_VRRandom5 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom5 ) +process.Dataset_VRRandom6 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom6 ) +process.Dataset_VRRandom7 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom7 ) +process.Dataset_VRRandom8 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom8 ) +process.Dataset_VRRandom9 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom9 ) +process.Dataset_VRRandom10 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom10 ) +process.Dataset_VRRandom11 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom11 ) +process.Dataset_VRRandom12 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom12 ) +process.Dataset_VRRandom13 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom13 ) +process.Dataset_VRRandom14 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom14 ) +process.Dataset_VRRandom15 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetVRRandom + process.hltPreDatasetVRRandom15 ) process.Dataset_ZeroBias = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetZeroBias + process.hltPreDatasetZeroBias ) process.ALCALumiPixelsCountsExpressOutput = cms.FinalPath( process.hltOutputALCALumiPixelsCountsExpress ) process.ALCALumiPixelsCountsGatedOutput = cms.FinalPath( process.hltOutputALCALumiPixelsCountsGated ) @@ -13751,9 +14004,17 @@ process.Dataset_SpecialHLTPhysics17 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetSpecialHLTPhysics + process.hltPreDatasetSpecialHLTPhysics17 ) process.Dataset_SpecialHLTPhysics18 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetSpecialHLTPhysics + process.hltPreDatasetSpecialHLTPhysics18 ) process.Dataset_SpecialHLTPhysics19 = cms.Path( process.HLTDatasetPathBeginSequence + process.hltDatasetSpecialHLTPhysics + process.hltPreDatasetSpecialHLTPhysics19 ) +process.PhysicsVRRandom1Output = cms.FinalPath( process.hltOutputPhysicsVRRandom1 ) +process.PhysicsVRRandom0Output = cms.FinalPath( process.hltOutputPhysicsVRRandom0 ) +process.PhysicsVRRandom2Output = cms.FinalPath( process.hltOutputPhysicsVRRandom2 ) +process.PhysicsVRRandom3Output = cms.FinalPath( process.hltOutputPhysicsVRRandom3 ) +process.PhysicsVRRandom4Output = cms.FinalPath( process.hltOutputPhysicsVRRandom4 ) +process.PhysicsVRRandom5Output = cms.FinalPath( process.hltOutputPhysicsVRRandom5 ) +process.PhysicsVRRandom6Output = cms.FinalPath( process.hltOutputPhysicsVRRandom6 ) +process.PhysicsVRRandom7Output = cms.FinalPath( process.hltOutputPhysicsVRRandom7 ) -process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_EcalEtaEBonly_v25, process.AlCa_EcalEtaEEonly_v25, process.AlCa_EcalPi0EBonly_v25, process.AlCa_EcalPi0EEonly_v25, process.AlCa_RPCMuonNormalisation_v23, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DQM_Random_v1, process.DQM_ZeroBias_v3, process.DST_ZeroBias_v11, process.DST_Physics_v16, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Alignment_v8, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_IsolatedBunches_v12, process.HLT_ZeroBias_FirstBXAfterTrain_v10, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_ZeroBias_FirstCollisionInTrain_v11, process.HLT_ZeroBias_LastCollisionInTrain_v10, process.HLT_HT300_Beamspot_v23, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_L1SingleMuCosmics_v8, process.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, process.HLT_L2Mu10_NoVertex_NoBPTX_v15, process.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, process.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_PPSMaxTracksPerArm1_v9, process.HLT_PPSMaxTracksPerRP4_v9, process.HLT_PPSRandom_v1, process.HLT_SpecialHLTPhysics_v7, process.AlCa_LumiPixelsCounts_RandomHighRate_v4, process.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, process.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, process.HLT_L1SingleMuOpen_v6, process.HLT_L1SingleMuOpen_DT_v6, process.HLT_L1SingleMu3_v5, process.HLT_L1SingleMu5_v5, process.HLT_L1SingleMu7_v5, process.HLT_L1DoubleMu0_v5, process.HLT_L1SingleJet8erHE_v5, process.HLT_L1SingleJet10erHE_v5, process.HLT_L1SingleJet12erHE_v5, process.HLT_L1SingleJet35_v5, process.HLT_L1SingleJet200_v5, process.HLT_L1SingleEG8er2p5_v4, process.HLT_L1SingleEG10er2p5_v4, process.HLT_L1SingleEG15er2p5_v4, process.HLT_L1SingleEG26er2p5_v4, process.HLT_L1SingleEG28er2p5_v4, process.HLT_L1SingleEG28er2p1_v4, process.HLT_L1SingleEG28er1p5_v4, process.HLT_L1SingleEG34er2p5_v4, process.HLT_L1SingleEG36er2p5_v4, process.HLT_L1SingleEG38er2p5_v4, process.HLT_L1SingleEG40er2p5_v4, process.HLT_L1SingleEG42er2p5_v4, process.HLT_L1SingleEG45er2p5_v4, process.HLT_L1SingleEG50_v4, process.HLT_L1SingleJet60_v4, process.HLT_L1SingleJet90_v4, process.HLT_L1SingleJet120_v4, process.HLT_L1SingleJet180_v4, process.HLT_L1HTT120er_v4, process.HLT_L1HTT160er_v4, process.HLT_L1HTT200er_v4, process.HLT_L1HTT255er_v4, process.HLT_L1HTT280er_v4, process.HLT_L1HTT320er_v4, process.HLT_L1HTT360er_v4, process.HLT_L1HTT400er_v4, process.HLT_L1HTT450er_v4, process.HLT_L1ETM120_v4, process.HLT_L1ETM150_v4, process.HLT_L1EXT_HCAL_LaserMon1_v5, process.HLT_L1EXT_HCAL_LaserMon4_v5, process.HLT_CscCluster_Cosmic_v4, process.HLT_HT60_Beamspot_v22, process.HLT_HT300_Beamspot_PixelClusters_WP2_v7, process.HLT_PixelClusters_WP2_v4, process.HLT_PixelClusters_WP1_v4, process.HLT_BptxOR_v6, process.HLT_L1SingleMuCosmics_EMTF_v4, process.HLT_L1SingleMuCosmics_CosmicTracking_v1, process.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, process.HLT_L1FatEvents_v5, process.HLT_Random_HighRate_v1, process.HLT_ZeroBias_HighRate_v4, process.HLT_ZeroBias_Gated_v4, process.HLT_SpecialZeroBias_v6, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaLumiPixelsCountsPromptHighRate0, process.Dataset_AlCaLumiPixelsCountsPromptHighRate1, process.Dataset_AlCaLumiPixelsCountsPromptHighRate2, process.Dataset_AlCaLumiPixelsCountsPromptHighRate3, process.Dataset_AlCaLumiPixelsCountsPromptHighRate4, process.Dataset_AlCaLumiPixelsCountsPromptHighRate5, process.Dataset_AlCaLumiPixelsCountsGated, process.Dataset_AlCaP0, process.Dataset_AlCaPPSExpress, process.Dataset_AlCaPPSPrompt, process.Dataset_AlCaPhiSym, process.Dataset_Commissioning, process.Dataset_Cosmics, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_DQMPPSRandom, process.Dataset_EcalLaser, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressCosmics, process.Dataset_ExpressPhysics, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_L1Accept, process.Dataset_MinimumBias, process.Dataset_MuonShower, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_RPCMonitor, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_ZeroBias, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsGatedOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCALumiPixelsCountsPromptHighRate0Output, process.ALCALumiPixelsCountsPromptHighRate1Output, process.ALCALumiPixelsCountsPromptHighRate2Output, process.ALCALumiPixelsCountsPromptHighRate3Output, process.ALCALumiPixelsCountsPromptHighRate4Output, process.ALCALumiPixelsCountsPromptHighRate5Output, process.ALCAP0Output, process.ALCAPHISYMOutput, process.ALCAPPSExpressOutput, process.ALCAPPSPromptOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.DQMPPSRandomOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.ExpressCosmicsOutput, process.HLTMonitorOutput, process.PhysicsCommissioningOutput, process.NanoDSTOutput, process.RPCMONOutput, process.PhysicsSpecialHLTPhysics0Output, process.PhysicsSpecialHLTPhysics1Output, process.PhysicsSpecialHLTPhysics2Output, process.PhysicsSpecialHLTPhysics3Output, process.PhysicsSpecialHLTPhysics4Output, process.PhysicsSpecialHLTPhysics5Output, process.PhysicsSpecialHLTPhysics6Output, process.PhysicsSpecialHLTPhysics7Output, process.PhysicsSpecialHLTPhysics8Output, process.PhysicsSpecialHLTPhysics9Output, process.PhysicsSpecialHLTPhysics10Output, process.PhysicsSpecialHLTPhysics11Output, process.PhysicsSpecialHLTPhysics12Output, process.PhysicsSpecialHLTPhysics13Output, process.PhysicsSpecialHLTPhysics14Output, process.PhysicsSpecialHLTPhysics15Output, process.PhysicsSpecialHLTPhysics16Output, process.PhysicsSpecialHLTPhysics17Output, process.PhysicsSpecialHLTPhysics18Output, process.PhysicsSpecialHLTPhysics19Output, process.PhysicsSpecialRandom0Output, process.PhysicsSpecialRandom1Output, process.PhysicsSpecialRandom2Output, process.PhysicsSpecialRandom3Output, process.PhysicsSpecialRandom4Output, process.PhysicsSpecialRandom5Output, process.PhysicsSpecialRandom6Output, process.PhysicsSpecialRandom7Output, process.PhysicsSpecialRandom8Output, process.PhysicsSpecialRandom9Output, process.PhysicsSpecialZeroBias0Output, process.PhysicsSpecialZeroBias1Output, process.PhysicsSpecialZeroBias2Output, process.PhysicsSpecialZeroBias3Output, process.PhysicsSpecialZeroBias4Output, process.PhysicsSpecialZeroBias5Output, process.PhysicsSpecialZeroBias6Output, process.PhysicsSpecialZeroBias7Output, process.PhysicsSpecialZeroBias8Output, process.PhysicsSpecialZeroBias9Output, process.PhysicsSpecialZeroBias10Output, process.PhysicsSpecialZeroBias11Output, process.PhysicsSpecialZeroBias12Output, process.PhysicsSpecialZeroBias13Output, process.PhysicsSpecialZeroBias14Output, process.PhysicsSpecialZeroBias15Output, process.Dataset_SpecialRandom0, process.Dataset_SpecialRandom1, process.Dataset_SpecialRandom2, process.Dataset_SpecialRandom3, process.Dataset_SpecialRandom4, process.Dataset_SpecialRandom5, process.Dataset_SpecialRandom6, process.Dataset_SpecialRandom7, process.Dataset_SpecialRandom8, process.Dataset_SpecialRandom9, process.Dataset_SpecialRandom10, process.Dataset_SpecialRandom11, process.Dataset_SpecialRandom12, process.Dataset_SpecialRandom13, process.Dataset_SpecialRandom14, process.Dataset_SpecialRandom15, process.Dataset_SpecialRandom16, process.Dataset_SpecialRandom17, process.Dataset_SpecialRandom18, process.Dataset_SpecialRandom19, process.Dataset_SpecialZeroBias0, process.Dataset_SpecialZeroBias1, process.Dataset_SpecialZeroBias2, process.Dataset_SpecialZeroBias3, process.Dataset_SpecialZeroBias4, process.Dataset_SpecialZeroBias5, process.Dataset_SpecialZeroBias6, process.Dataset_SpecialZeroBias7, process.Dataset_SpecialZeroBias8, process.Dataset_SpecialZeroBias9, process.Dataset_SpecialZeroBias10, process.Dataset_SpecialZeroBias11, process.Dataset_SpecialZeroBias12, process.Dataset_SpecialZeroBias13, process.Dataset_SpecialZeroBias14, process.Dataset_SpecialZeroBias15, process.Dataset_SpecialZeroBias16, process.Dataset_SpecialZeroBias17, process.Dataset_SpecialZeroBias18, process.Dataset_SpecialZeroBias19, process.Dataset_SpecialZeroBias20, process.Dataset_SpecialZeroBias21, process.Dataset_SpecialZeroBias22, process.Dataset_SpecialZeroBias23, process.Dataset_SpecialZeroBias24, process.Dataset_SpecialZeroBias25, process.Dataset_SpecialZeroBias26, process.Dataset_SpecialZeroBias27, process.Dataset_SpecialZeroBias28, process.Dataset_SpecialZeroBias29, process.Dataset_SpecialZeroBias30, process.Dataset_SpecialZeroBias31, process.Dataset_SpecialHLTPhysics0, process.Dataset_SpecialHLTPhysics1, process.Dataset_SpecialHLTPhysics2, process.Dataset_SpecialHLTPhysics3, process.Dataset_SpecialHLTPhysics4, process.Dataset_SpecialHLTPhysics5, process.Dataset_SpecialHLTPhysics6, process.Dataset_SpecialHLTPhysics7, process.Dataset_SpecialHLTPhysics8, process.Dataset_SpecialHLTPhysics9, process.Dataset_SpecialHLTPhysics10, process.Dataset_SpecialHLTPhysics11, process.Dataset_SpecialHLTPhysics12, process.Dataset_SpecialHLTPhysics13, process.Dataset_SpecialHLTPhysics14, process.Dataset_SpecialHLTPhysics15, process.Dataset_SpecialHLTPhysics16, process.Dataset_SpecialHLTPhysics17, process.Dataset_SpecialHLTPhysics18, process.Dataset_SpecialHLTPhysics19, )) +process.schedule = cms.Schedule( *(process.HLTriggerFirstPath, process.Status_OnCPU, process.Status_OnGPU, process.AlCa_EcalPhiSym_v20, process.AlCa_EcalEtaEBonly_v25, process.AlCa_EcalEtaEEonly_v25, process.AlCa_EcalPi0EBonly_v25, process.AlCa_EcalPi0EEonly_v25, process.AlCa_RPCMuonNormalisation_v23, process.AlCa_LumiPixelsCounts_Random_v10, process.AlCa_LumiPixelsCounts_ZeroBias_v12, process.DQM_PixelReconstruction_v12, process.DQM_EcalReconstruction_v12, process.DQM_HcalReconstruction_v10, process.DQM_Random_v1, process.DQM_ZeroBias_v3, process.DST_ZeroBias_v11, process.DST_Physics_v16, process.HLT_EcalCalibration_v4, process.HLT_HcalCalibration_v6, process.HLT_HcalNZS_v21, process.HLT_HcalPhiSym_v23, process.HLT_Random_v3, process.HLT_Physics_v14, process.HLT_ZeroBias_v13, process.HLT_ZeroBias_Alignment_v8, process.HLT_ZeroBias_Beamspot_v16, process.HLT_ZeroBias_IsolatedBunches_v12, process.HLT_ZeroBias_FirstBXAfterTrain_v10, process.HLT_ZeroBias_FirstCollisionAfterAbortGap_v12, process.HLT_ZeroBias_FirstCollisionInTrain_v11, process.HLT_ZeroBias_LastCollisionInTrain_v10, process.HLT_HT300_Beamspot_v23, process.HLT_IsoTrackHB_v14, process.HLT_IsoTrackHE_v14, process.HLT_L1SingleMuCosmics_v8, process.HLT_L2Mu10_NoVertex_NoBPTX3BX_v14, process.HLT_L2Mu10_NoVertex_NoBPTX_v15, process.HLT_L2Mu45_NoVertex_3Sta_NoBPTX3BX_v13, process.HLT_L2Mu40_NoVertex_3Sta_NoBPTX3BX_v14, process.HLT_CDC_L2cosmic_10_er1p0_v10, process.HLT_CDC_L2cosmic_5p5_er1p0_v10, process.HLT_PPSMaxTracksPerArm1_v9, process.HLT_PPSMaxTracksPerRP4_v9, process.HLT_PPSRandom_v1, process.HLT_SpecialHLTPhysics_v7, process.AlCa_LumiPixelsCounts_RandomHighRate_v4, process.AlCa_LumiPixelsCounts_ZeroBiasVdM_v4, process.AlCa_LumiPixelsCounts_ZeroBiasGated_v5, process.HLT_L1SingleMuOpen_v6, process.HLT_L1SingleMuOpen_DT_v6, process.HLT_L1SingleMu3_v5, process.HLT_L1SingleMu5_v5, process.HLT_L1SingleMu7_v5, process.HLT_L1DoubleMu0_v5, process.HLT_L1SingleJet8erHE_v5, process.HLT_L1SingleJet10erHE_v5, process.HLT_L1SingleJet12erHE_v5, process.HLT_L1SingleJet35_v5, process.HLT_L1SingleJet200_v5, process.HLT_L1SingleEG8er2p5_v4, process.HLT_L1SingleEG10er2p5_v4, process.HLT_L1SingleEG15er2p5_v4, process.HLT_L1SingleEG26er2p5_v4, process.HLT_L1SingleEG28er2p5_v4, process.HLT_L1SingleEG28er2p1_v4, process.HLT_L1SingleEG28er1p5_v4, process.HLT_L1SingleEG34er2p5_v4, process.HLT_L1SingleEG36er2p5_v4, process.HLT_L1SingleEG38er2p5_v4, process.HLT_L1SingleEG40er2p5_v4, process.HLT_L1SingleEG42er2p5_v4, process.HLT_L1SingleEG45er2p5_v4, process.HLT_L1SingleEG50_v4, process.HLT_L1SingleJet60_v4, process.HLT_L1SingleJet90_v4, process.HLT_L1SingleJet120_v4, process.HLT_L1SingleJet180_v4, process.HLT_L1HTT120er_v4, process.HLT_L1HTT160er_v4, process.HLT_L1HTT200er_v4, process.HLT_L1HTT255er_v4, process.HLT_L1HTT280er_v4, process.HLT_L1HTT320er_v4, process.HLT_L1HTT360er_v4, process.HLT_L1HTT400er_v4, process.HLT_L1HTT450er_v4, process.HLT_L1ETM120_v4, process.HLT_L1ETM150_v4, process.HLT_L1EXT_HCAL_LaserMon1_v5, process.HLT_L1EXT_HCAL_LaserMon4_v5, process.HLT_CscCluster_Cosmic_v4, process.HLT_HT60_Beamspot_v22, process.HLT_HT300_Beamspot_PixelClusters_WP2_v7, process.HLT_PixelClusters_WP2_v4, process.HLT_PixelClusters_WP1_v4, process.HLT_BptxOR_v6, process.HLT_L1SingleMuCosmics_EMTF_v4, process.HLT_L1SingleMuCosmics_CosmicTracking_v1, process.HLT_L1SingleMuCosmics_PointingCosmicTracking_v1, process.HLT_L1FatEvents_v5, process.HLT_Random_HighRate_v1, process.HLT_ZeroBias_HighRate_v4, process.HLT_ZeroBias_Gated_v4, process.HLT_SpecialZeroBias_v6, process.HLTriggerFinalPath, process.HLTAnalyzerEndpath, process.Dataset_AlCaLumiPixelsCountsExpress, process.Dataset_AlCaLumiPixelsCountsPrompt, process.Dataset_AlCaLumiPixelsCountsPromptHighRate0, process.Dataset_AlCaLumiPixelsCountsPromptHighRate1, process.Dataset_AlCaLumiPixelsCountsPromptHighRate2, process.Dataset_AlCaLumiPixelsCountsPromptHighRate3, process.Dataset_AlCaLumiPixelsCountsPromptHighRate4, process.Dataset_AlCaLumiPixelsCountsPromptHighRate5, process.Dataset_AlCaLumiPixelsCountsGated, process.Dataset_AlCaP0, process.Dataset_AlCaPPSExpress, process.Dataset_AlCaPPSPrompt, process.Dataset_AlCaPhiSym, process.Dataset_Commissioning, process.Dataset_Cosmics, process.Dataset_DQMGPUvsCPU, process.Dataset_DQMOnlineBeamspot, process.Dataset_DQMPPSRandom, process.Dataset_EcalLaser, process.Dataset_EventDisplay, process.Dataset_ExpressAlignment, process.Dataset_ExpressCosmics, process.Dataset_ExpressPhysics, process.Dataset_HLTMonitor, process.Dataset_HLTPhysics, process.Dataset_HcalNZS, process.Dataset_L1Accept, process.Dataset_MinimumBias, process.Dataset_MuonShower, process.Dataset_NoBPTX, process.Dataset_OnlineMonitor, process.Dataset_RPCMonitor, process.Dataset_TestEnablesEcalHcal, process.Dataset_TestEnablesEcalHcalDQM, process.Dataset_VRRandom0, process.Dataset_VRRandom1, process.Dataset_VRRandom2, process.Dataset_VRRandom3, process.Dataset_VRRandom4, process.Dataset_VRRandom5, process.Dataset_VRRandom6, process.Dataset_VRRandom7, process.Dataset_VRRandom8, process.Dataset_VRRandom9, process.Dataset_VRRandom10, process.Dataset_VRRandom11, process.Dataset_VRRandom12, process.Dataset_VRRandom13, process.Dataset_VRRandom14, process.Dataset_VRRandom15, process.Dataset_ZeroBias, process.ALCALumiPixelsCountsExpressOutput, process.ALCALumiPixelsCountsGatedOutput, process.ALCALumiPixelsCountsPromptOutput, process.ALCALumiPixelsCountsPromptHighRate0Output, process.ALCALumiPixelsCountsPromptHighRate1Output, process.ALCALumiPixelsCountsPromptHighRate2Output, process.ALCALumiPixelsCountsPromptHighRate3Output, process.ALCALumiPixelsCountsPromptHighRate4Output, process.ALCALumiPixelsCountsPromptHighRate5Output, process.ALCAP0Output, process.ALCAPHISYMOutput, process.ALCAPPSExpressOutput, process.ALCAPPSPromptOutput, process.CalibrationOutput, process.DQMOutput, process.DQMCalibrationOutput, process.DQMEventDisplayOutput, process.DQMGPUvsCPUOutput, process.DQMOnlineBeamspotOutput, process.DQMPPSRandomOutput, process.EcalCalibrationOutput, process.ExpressOutput, process.ExpressAlignmentOutput, process.ExpressCosmicsOutput, process.HLTMonitorOutput, process.PhysicsCommissioningOutput, process.NanoDSTOutput, process.RPCMONOutput, process.PhysicsSpecialHLTPhysics0Output, process.PhysicsSpecialHLTPhysics1Output, process.PhysicsSpecialHLTPhysics2Output, process.PhysicsSpecialHLTPhysics3Output, process.PhysicsSpecialHLTPhysics4Output, process.PhysicsSpecialHLTPhysics5Output, process.PhysicsSpecialHLTPhysics6Output, process.PhysicsSpecialHLTPhysics7Output, process.PhysicsSpecialHLTPhysics8Output, process.PhysicsSpecialHLTPhysics9Output, process.PhysicsSpecialHLTPhysics10Output, process.PhysicsSpecialHLTPhysics11Output, process.PhysicsSpecialHLTPhysics12Output, process.PhysicsSpecialHLTPhysics13Output, process.PhysicsSpecialHLTPhysics14Output, process.PhysicsSpecialHLTPhysics15Output, process.PhysicsSpecialHLTPhysics16Output, process.PhysicsSpecialHLTPhysics17Output, process.PhysicsSpecialHLTPhysics18Output, process.PhysicsSpecialHLTPhysics19Output, process.PhysicsSpecialRandom0Output, process.PhysicsSpecialRandom1Output, process.PhysicsSpecialRandom2Output, process.PhysicsSpecialRandom3Output, process.PhysicsSpecialRandom4Output, process.PhysicsSpecialRandom5Output, process.PhysicsSpecialRandom6Output, process.PhysicsSpecialRandom7Output, process.PhysicsSpecialRandom8Output, process.PhysicsSpecialRandom9Output, process.PhysicsSpecialZeroBias0Output, process.PhysicsSpecialZeroBias1Output, process.PhysicsSpecialZeroBias2Output, process.PhysicsSpecialZeroBias3Output, process.PhysicsSpecialZeroBias4Output, process.PhysicsSpecialZeroBias5Output, process.PhysicsSpecialZeroBias6Output, process.PhysicsSpecialZeroBias7Output, process.PhysicsSpecialZeroBias8Output, process.PhysicsSpecialZeroBias9Output, process.PhysicsSpecialZeroBias10Output, process.PhysicsSpecialZeroBias11Output, process.PhysicsSpecialZeroBias12Output, process.PhysicsSpecialZeroBias13Output, process.PhysicsSpecialZeroBias14Output, process.PhysicsSpecialZeroBias15Output, process.Dataset_SpecialRandom0, process.Dataset_SpecialRandom1, process.Dataset_SpecialRandom2, process.Dataset_SpecialRandom3, process.Dataset_SpecialRandom4, process.Dataset_SpecialRandom5, process.Dataset_SpecialRandom6, process.Dataset_SpecialRandom7, process.Dataset_SpecialRandom8, process.Dataset_SpecialRandom9, process.Dataset_SpecialRandom10, process.Dataset_SpecialRandom11, process.Dataset_SpecialRandom12, process.Dataset_SpecialRandom13, process.Dataset_SpecialRandom14, process.Dataset_SpecialRandom15, process.Dataset_SpecialRandom16, process.Dataset_SpecialRandom17, process.Dataset_SpecialRandom18, process.Dataset_SpecialRandom19, process.Dataset_SpecialZeroBias0, process.Dataset_SpecialZeroBias1, process.Dataset_SpecialZeroBias2, process.Dataset_SpecialZeroBias3, process.Dataset_SpecialZeroBias4, process.Dataset_SpecialZeroBias5, process.Dataset_SpecialZeroBias6, process.Dataset_SpecialZeroBias7, process.Dataset_SpecialZeroBias8, process.Dataset_SpecialZeroBias9, process.Dataset_SpecialZeroBias10, process.Dataset_SpecialZeroBias11, process.Dataset_SpecialZeroBias12, process.Dataset_SpecialZeroBias13, process.Dataset_SpecialZeroBias14, process.Dataset_SpecialZeroBias15, process.Dataset_SpecialZeroBias16, process.Dataset_SpecialZeroBias17, process.Dataset_SpecialZeroBias18, process.Dataset_SpecialZeroBias19, process.Dataset_SpecialZeroBias20, process.Dataset_SpecialZeroBias21, process.Dataset_SpecialZeroBias22, process.Dataset_SpecialZeroBias23, process.Dataset_SpecialZeroBias24, process.Dataset_SpecialZeroBias25, process.Dataset_SpecialZeroBias26, process.Dataset_SpecialZeroBias27, process.Dataset_SpecialZeroBias28, process.Dataset_SpecialZeroBias29, process.Dataset_SpecialZeroBias30, process.Dataset_SpecialZeroBias31, process.Dataset_SpecialHLTPhysics0, process.Dataset_SpecialHLTPhysics1, process.Dataset_SpecialHLTPhysics2, process.Dataset_SpecialHLTPhysics3, process.Dataset_SpecialHLTPhysics4, process.Dataset_SpecialHLTPhysics5, process.Dataset_SpecialHLTPhysics6, process.Dataset_SpecialHLTPhysics7, process.Dataset_SpecialHLTPhysics8, process.Dataset_SpecialHLTPhysics9, process.Dataset_SpecialHLTPhysics10, process.Dataset_SpecialHLTPhysics11, process.Dataset_SpecialHLTPhysics12, process.Dataset_SpecialHLTPhysics13, process.Dataset_SpecialHLTPhysics14, process.Dataset_SpecialHLTPhysics15, process.Dataset_SpecialHLTPhysics16, process.Dataset_SpecialHLTPhysics17, process.Dataset_SpecialHLTPhysics18, process.Dataset_SpecialHLTPhysics19, process.PhysicsVRRandom1Output, process.PhysicsVRRandom0Output, process.PhysicsVRRandom2Output, process.PhysicsVRRandom3Output, process.PhysicsVRRandom4Output, process.PhysicsVRRandom5Output, process.PhysicsVRRandom6Output, process.PhysicsVRRandom7Output, )) # source module (EDM inputs) diff --git a/HLTrigger/Configuration/test/cmsDriver.csh b/HLTrigger/Configuration/test/cmsDriver.csh index 697019d101095..68482166c6d23 100755 --- a/HLTrigger/Configuration/test/cmsDriver.csh +++ b/HLTrigger/Configuration/test/cmsDriver.csh @@ -42,7 +42,7 @@ set InputGenSimSpec3 = $InputGenSimGRun3 set InputLHCRawGRun0 = /store/data/Run2012A/MuEG/RAW/v1/000/191/718/14932935-E289-E111-830C-5404A6388697.root set InputLHCRawGRun1 = /store/data/Run2015D/MuonEG/RAW/v1/000/256/677/00000/80950A90-745D-E511-92FD-02163E011C5D.root set InputLHCRawGRun2 = /store/data/Run2016B/JetHT/RAW/v1/000/272/762/00000/C666CDE2-E013-E611-B15A-02163E011DBE.root -set InputLHCRawGRun3 = /store/data/Run2024H/EphemeralHLTPhysics0/RAW/v1/000/386/071/00000/3a502248-b2ac-4e8a-b9bf-5f98d5c688dd.root +set InputLHCRawGRun3 = /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root set InputLHCRawHIon1 = /store/hidata/HIRun2015/HIHardProbes/RAW/v1/000/263/718/00000/08057733-02A5-E511-9C7D-02163E014606.root set InputLHCRawHIon2 = /store/hidata/HIRun2018A/HIHardProbes/RAW/v1/000/326/479/00000/0E2CC5D5-9D87-7348-9219-B00CD718C847.root set InputLHCRawHIon3 = /store/hidata/HIRun2022A/HITestRaw0/RAW/v1/000/362/321/00000/f467ee64-fc64-47a6-9d8a-7ca73ebca2bd.root diff --git a/HLTrigger/Configuration/test/getFrozenHLT.sh b/HLTrigger/Configuration/test/getFrozenHLT.sh index 0aa53bc38b9ef..abd6d9ccda915 100755 --- a/HLTrigger/Configuration/test/getFrozenHLT.sh +++ b/HLTrigger/Configuration/test/getFrozenHLT.sh @@ -9,10 +9,10 @@ # Configuration/HLT/python/autoCondHLT.py , and # HLTrigger/Configuration/python/Tools/options.py declare -A TABLES=( - ["Fake"]="/dev/CMSSW_14_1_0/Fake" - ["Fake1"]="/dev/CMSSW_14_1_0/Fake1" - ["Fake2"]="/dev/CMSSW_14_1_0/Fake2" - ["2024v14"]="/frozen/2024/2e34/v1.4/CMSSW_14_1_X/HLT" + ["Fake"]="/dev/CMSSW_14_2_0/Fake" + ["Fake1"]="/dev/CMSSW_14_2_0/Fake1" + ["Fake2"]="/dev/CMSSW_14_2_0/Fake2" + ["2024v14"]="/frozen/2024/2e34/v1.4/CMSSW_14_2_X/HLT" ) # command-line arguments diff --git a/HLTrigger/Configuration/test/getHLT.sh b/HLTrigger/Configuration/test/getHLT.sh index 5c3eb7238fcce..59c1e54be91c5 100755 --- a/HLTrigger/Configuration/test/getHLT.sh +++ b/HLTrigger/Configuration/test/getHLT.sh @@ -1,7 +1,7 @@ #!/bin/bash # ConfDB directory hosting the HLT configurations -CONFDBDIR="/dev/CMSSW_14_1_0" +CONFDBDIR="/dev/CMSSW_14_2_0" # ConfDB configurations to use # - if no explicit version, the most recent one is taken diff --git a/HLTrigger/Configuration/test/testAccessToEDMInputsOfHLTTests_filelist.txt b/HLTrigger/Configuration/test/testAccessToEDMInputsOfHLTTests_filelist.txt index a79abbe9c8828..9c286c8b03449 100644 --- a/HLTrigger/Configuration/test/testAccessToEDMInputsOfHLTTests_filelist.txt +++ b/HLTrigger/Configuration/test/testAccessToEDMInputsOfHLTTests_filelist.txt @@ -7,6 +7,7 @@ /store/data/Run2022B/HLTPhysics/RAW/v1/000/355/456/00000/69b26b27-4bd1-4524-bc18-45f7b9b5e076.root /store/data/Run2023D/EphemeralHLTPhysics0/RAW/v1/000/370/293/00000/2ef73d2a-1fb7-4dac-9961-149525f9e887.root /store/data/Run2024H/EphemeralHLTPhysics0/RAW/v1/000/386/071/00000/3a502248-b2ac-4e8a-b9bf-5f98d5c688dd.root +/store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root /store/group/dpg_trigger/comm_trigger/TriggerStudiesGroup/STORM/GEN-SIM/CMSSW_5/143C21CD-E8A2-E311-87BE-0025904C66E8.root /store/group/dpg_trigger/comm_trigger/TriggerStudiesGroup/STORM/GEN-SIM/CMSSW_7/72B2C6B5-9740-E411-8FF7-002618FDA26D.root /store/group/dpg_trigger/comm_trigger/TriggerStudiesGroup/STORM/GEN-SIM/CMSSW_7/8C172C6B-28FD-E311-8A62-0026189438F4.root diff --git a/HLTrigger/HLTanalyzers/test/CreateCFGs.py b/HLTrigger/HLTanalyzers/test/CreateCFGs.py index a4a3fd0f494d2..d386aee906994 100755 --- a/HLTrigger/HLTanalyzers/test/CreateCFGs.py +++ b/HLTrigger/HLTanalyzers/test/CreateCFGs.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # -from __future__ import print_function import sys,string,time,os ### parameters ### diff --git a/HLTrigger/HLTanalyzers/test/CreateFileLists.py b/HLTrigger/HLTanalyzers/test/CreateFileLists.py index 20d142dd6ed55..5daa5825b3841 100755 --- a/HLTrigger/HLTanalyzers/test/CreateFileLists.py +++ b/HLTrigger/HLTanalyzers/test/CreateFileLists.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # -from __future__ import print_function import sys,string,time,os ### parameters ### diff --git a/HLTrigger/HLTanalyzers/test/efficiency.py b/HLTrigger/HLTanalyzers/test/efficiency.py index 29d616b11c729..7a4310e3ac591 100644 --- a/HLTrigger/HLTanalyzers/test/efficiency.py +++ b/HLTrigger/HLTanalyzers/test/efficiency.py @@ -1,4 +1,3 @@ -from __future__ import print_function ### assumes QCD_Pt-.../res/ folders are in current directory ### import glob, os, string diff --git a/HLTrigger/HLTanalyzers/test/fixTrue.py b/HLTrigger/HLTanalyzers/test/fixTrue.py index d43d1aec9399a..0c93e405ad1c4 100644 --- a/HLTrigger/HLTanalyzers/test/fixTrue.py +++ b/HLTrigger/HLTanalyzers/test/fixTrue.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import sys, os, string def usage(): diff --git a/HLTrigger/HLTfilters/plugins/TriggerResultsFilterFromDB.cc b/HLTrigger/HLTfilters/plugins/TriggerResultsFilterFromDB.cc index 0b79f8f269c78..dcc60f12e7ac8 100644 --- a/HLTrigger/HLTfilters/plugins/TriggerResultsFilterFromDB.cc +++ b/HLTrigger/HLTfilters/plugins/TriggerResultsFilterFromDB.cc @@ -67,7 +67,8 @@ void TriggerResultsFilterFromDB::fillDescriptions(edm::ConfigurationDescriptions void TriggerResultsFilterFromDB::parse(const std::vector& expressions) { // parse the logical expressions into functionals if (expressions.empty()) { - edm::LogWarning("Configuration") << "Empty trigger results expression"; + edm::LogWarning("Configuration") << "Empty trigger results expression. Will substitute with *"; + m_expression = triggerExpression::parse("*"); } else if (expressions.size() == 1) { parse(expressions[0]); } else { diff --git a/HLTrigger/JSONMonitoring/plugins/HLTriggerJSONMonitoring.cc b/HLTrigger/JSONMonitoring/plugins/HLTriggerJSONMonitoring.cc index f69c6afb72da0..e2ebf47540fad 100644 --- a/HLTrigger/JSONMonitoring/plugins/HLTriggerJSONMonitoring.cc +++ b/HLTrigger/JSONMonitoring/plugins/HLTriggerJSONMonitoring.cc @@ -429,15 +429,10 @@ void HLTriggerJSONMonitoring::globalEndLuminosityBlockSummary(edm::LuminosityBlo unsigned int ls = lumi.luminosityBlock(); unsigned int run = lumi.run(); - bool writeFiles = true; - if (edm::Service().isAvailable()) { - evf::FastMonitoringService* fms = - (evf::FastMonitoringService*)(edm::Service().operator->()); - if (fms) - writeFiles = fms->shouldWriteFiles(ls); + if (edm::Service().isAvailable()) { + if (!edm::Service()->shouldWriteFiles(ls)) + return; } - if (not writeFiles) - return; unsigned int processed = lumidata->processed.value().at(0); auto const& rundata = *runCache(lumi.getRun().index()); diff --git a/HLTrigger/JSONMonitoring/plugins/L1TriggerJSONMonitoring.cc b/HLTrigger/JSONMonitoring/plugins/L1TriggerJSONMonitoring.cc index 3219f2ccf1670..325d254b4c846 100644 --- a/HLTrigger/JSONMonitoring/plugins/L1TriggerJSONMonitoring.cc +++ b/HLTrigger/JSONMonitoring/plugins/L1TriggerJSONMonitoring.cc @@ -365,15 +365,10 @@ void L1TriggerJSONMonitoring::globalEndLuminosityBlockSummary(edm::LuminosityBlo unsigned int ls = lumi.luminosityBlock(); unsigned int run = lumi.run(); - bool writeFiles = true; if (edm::Service().isAvailable()) { - evf::FastMonitoringService* fms = - (evf::FastMonitoringService*)(edm::Service().operator->()); - if (fms) - writeFiles = fms->shouldWriteFiles(ls); + if (!edm::Service()->shouldWriteFiles(ls)) + return; } - if (not writeFiles) - return; unsigned int processed = lumidata->processed.value().at(0); auto const& rundata = *runCache(lumi.getRun().index()); diff --git a/HLTrigger/Tools/bin/hltDiff.cc b/HLTrigger/Tools/bin/hltDiff.cc index 36a6dc8213190..cef92db1a4fd4 100644 --- a/HLTrigger/Tools/bin/hltDiff.cc +++ b/HLTrigger/Tools/bin/hltDiff.cc @@ -697,7 +697,7 @@ class JsonOutputProducer { // methods JsonOutputProducer(bool _writeJson, std::string _file_name) : writeJson(_writeJson), out_filename_base(std::move(_file_name)) { - useSingleOutFile = out_filename_base.length() > 0; + useSingleOutFile = !out_filename_base.empty(); } JsonEvent& pushEvent(int _run, int _lumi, int _event) { diff --git a/HLTrigger/Tools/python/OnlinePrescaleChecker/Page1Parser.py b/HLTrigger/Tools/python/OnlinePrescaleChecker/Page1Parser.py index 99139c4f267be..b6eea0fd7d909 100644 --- a/HLTrigger/Tools/python/OnlinePrescaleChecker/Page1Parser.py +++ b/HLTrigger/Tools/python/OnlinePrescaleChecker/Page1Parser.py @@ -1,4 +1,3 @@ -from __future__ import print_function from HTMLParser import HTMLParser from urllib2 import urlopen import cPickle as pickle diff --git a/HLTrigger/Tools/python/OnlinePrescaleChecker/PrescaleChecker.py b/HLTrigger/Tools/python/OnlinePrescaleChecker/PrescaleChecker.py index 136966979cf93..173fbfdc7f2f3 100755 --- a/HLTrigger/Tools/python/OnlinePrescaleChecker/PrescaleChecker.py +++ b/HLTrigger/Tools/python/OnlinePrescaleChecker/PrescaleChecker.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import from .Page1Parser import Page1Parser import sys import os diff --git a/HLTrigger/Tools/python/OnlinePrescaleChecker/TablePrint.py b/HLTrigger/Tools/python/OnlinePrescaleChecker/TablePrint.py index 0b2421bdcf7a9..a291b6d88017e 100644 --- a/HLTrigger/Tools/python/OnlinePrescaleChecker/TablePrint.py +++ b/HLTrigger/Tools/python/OnlinePrescaleChecker/TablePrint.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import sys from .colors import * write = sys.stdout.write diff --git a/HLTrigger/Tools/python/getHLTPrescaleColumns.py b/HLTrigger/Tools/python/getHLTPrescaleColumns.py index d2e8af4eb5275..f44dcf65a2559 100755 --- a/HLTrigger/Tools/python/getHLTPrescaleColumns.py +++ b/HLTrigger/Tools/python/getHLTPrescaleColumns.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function -from __future__ import absolute_import from sys import stderr, exit import subprocess diff --git a/HLTrigger/Tools/python/getHLTkey.py b/HLTrigger/Tools/python/getHLTkey.py index f58273089eaba..e383078529bb2 100755 --- a/HLTrigger/Tools/python/getHLTkey.py +++ b/HLTrigger/Tools/python/getHLTkey.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function -from __future__ import absolute_import from sys import stderr, exit diff --git a/HLTrigger/Tools/python/getHLTprescales.py b/HLTrigger/Tools/python/getHLTprescales.py index 00051d8662ff3..3d56d7bf3dca0 100755 --- a/HLTrigger/Tools/python/getHLTprescales.py +++ b/HLTrigger/Tools/python/getHLTprescales.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function -from __future__ import absolute_import from sys import stderr, exit import subprocess diff --git a/HLTrigger/Tools/python/makeHLTPrescaleTable.py b/HLTrigger/Tools/python/makeHLTPrescaleTable.py index f673207a8ebaa..dae5f483e1c24 100755 --- a/HLTrigger/Tools/python/makeHLTPrescaleTable.py +++ b/HLTrigger/Tools/python/makeHLTPrescaleTable.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function -from __future__ import absolute_import from sys import stderr, exit import subprocess, os diff --git a/HLTrigger/Tools/python/queryRR.py b/HLTrigger/Tools/python/queryRR.py index 5dac373ddc961..a35726014c8f3 100644 --- a/HLTrigger/Tools/python/queryRR.py +++ b/HLTrigger/Tools/python/queryRR.py @@ -2,7 +2,6 @@ # https://twiki.cern.ch/twiki/bin/viewauth/CMS/DqmRrApi -from __future__ import absolute_import from sys import stderr, exit import xml.dom.minidom from .rrapi import RRApi, RRApiError diff --git a/HLTrigger/Tools/python/rrapi.py b/HLTrigger/Tools/python/rrapi.py index b26e28209a58d..dbbd05668ee62 100644 --- a/HLTrigger/Tools/python/rrapi.py +++ b/HLTrigger/Tools/python/rrapi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import urllib, re, json, socket """ diff --git a/HLTrigger/Tools/scripts/timingPdfMaker.py b/HLTrigger/Tools/scripts/timingPdfMaker.py index 8bf1c053dd73f..1c144269984bd 100755 --- a/HLTrigger/Tools/scripts/timingPdfMaker.py +++ b/HLTrigger/Tools/scripts/timingPdfMaker.py @@ -17,7 +17,6 @@ ## Imports ############################################ -from __future__ import print_function import os, glob import os.path import operator diff --git a/HLTriggerOffline/Btag/python/helper.py b/HLTriggerOffline/Btag/python/helper.py index 0cd01c64dd633..f76c946f56e7e 100644 --- a/HLTriggerOffline/Btag/python/helper.py +++ b/HLTriggerOffline/Btag/python/helper.py @@ -3,7 +3,6 @@ http://wiki.python.org/moin/ConfigParserExamples http://stackoverflow.com/questions/3220670/read-all-the-contents-in-ini-file-into-dictionary-with-python """ -from __future__ import print_function import configparser as cp diff --git a/HLTriggerOffline/Btag/python/readConfig.py b/HLTriggerOffline/Btag/python/readConfig.py index b5e998838d18c..d6a8e795d687d 100644 --- a/HLTriggerOffline/Btag/python/readConfig.py +++ b/HLTriggerOffline/Btag/python/readConfig.py @@ -1,4 +1,3 @@ -from __future__ import print_function # set up variables #def readConfig(fileName) import FWCore.ParameterSet.Config as cms diff --git a/HLTriggerOffline/Btag/test/compareDQM.py b/HLTriggerOffline/Btag/test/compareDQM.py index f43c81a26e933..f97522d7f81ea 100755 --- a/HLTriggerOffline/Btag/test/compareDQM.py +++ b/HLTriggerOffline/Btag/test/compareDQM.py @@ -6,7 +6,6 @@ # This script compares the plots cointained in two DQM files and save the superimposed plots # -from __future__ import print_function DQMfileOld="/afs/cern.ch/user/s/sdonato/AFSwork/public/DQM_V0001_R000000001__CMSSW_X_Y_Z__RelVal__TrigVal.root" DQMfileNew="/afs/cern.ch/user/s/sdonato/AFSwork/public/DQM_V0001_R000000002__CMSSW_X_Y_Z__RelVal__TrigVal.root" labelNew = "New" diff --git a/HLTriggerOffline/Btag/test/test.py b/HLTriggerOffline/Btag/test/test.py index 4905f940d70c9..942effea60057 100644 --- a/HLTriggerOffline/Btag/test/test.py +++ b/HLTriggerOffline/Btag/test/test.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from DQMServices.Core.DQMEDHarvester import DQMEDHarvester process = cms.Process("HLTBTAG") diff --git a/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py b/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py index a1af4fbd96783..27a9a40f89e26 100644 --- a/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py +++ b/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py @@ -42,11 +42,9 @@ # Temporary Phase-2 configuration # Exclude everything except JetMET for now from Configuration.Eras.Modifier_phase2_common_cff import phase2_common -phase2_common.toReplaceWith(hltpostvalidation, hltpostvalidation.copyAndExclude([HLTMuonPostVal, - HLTTauPostVal, +phase2_common.toReplaceWith(hltpostvalidation, hltpostvalidation.copyAndExclude([HLTTauPostVal, EgammaPostVal, postProcessorHLTgsfTrackingSequence, - postProcessorHLTmuonTrackingSequence, heavyFlavorValidationHarvestingSequence, #JetMETPostVal, #HLTAlCaPostVal, diff --git a/HLTriggerOffline/Common/python/HltComparatorCreateWorkflow.py b/HLTriggerOffline/Common/python/HltComparatorCreateWorkflow.py index 848355b154d6d..e0ca0f5765f4b 100755 --- a/HLTriggerOffline/Common/python/HltComparatorCreateWorkflow.py +++ b/HLTriggerOffline/Common/python/HltComparatorCreateWorkflow.py @@ -5,7 +5,6 @@ # Makes CMSSW config for prompt validation of a given run number, # HLT Key or HLT Config -from __future__ import print_function from optparse import OptionParser import os, time, re diff --git a/HLTriggerOffline/Common/relval/doHarvest.py b/HLTriggerOffline/Common/relval/doHarvest.py index 8edf810790b01..53c949ea66f8a 100755 --- a/HLTriggerOffline/Common/relval/doHarvest.py +++ b/HLTriggerOffline/Common/relval/doHarvest.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import sys import os diff --git a/HLTriggerOffline/Common/relval/harvestRelVal.py b/HLTriggerOffline/Common/relval/harvestRelVal.py index ca051c7f1b182..3a6e6844a8ba3 100755 --- a/HLTriggerOffline/Common/relval/harvestRelVal.py +++ b/HLTriggerOffline/Common/relval/harvestRelVal.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import sys import os diff --git a/HLTriggerOffline/Egamma/python/EgammaHLTValidationUtils.py b/HLTriggerOffline/Egamma/python/EgammaHLTValidationUtils.py index 95677fa4197c0..28ce1bc1685b5 100755 --- a/HLTriggerOffline/Egamma/python/EgammaHLTValidationUtils.py +++ b/HLTriggerOffline/Egamma/python/EgammaHLTValidationUtils.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys, os, re diff --git a/HLTriggerOffline/Egamma/test/egammaHltPrintRelvalEfficiencies.py b/HLTriggerOffline/Egamma/test/egammaHltPrintRelvalEfficiencies.py index 76812d6f6d591..5c0e7b1c9c146 100755 --- a/HLTriggerOffline/Egamma/test/egammaHltPrintRelvalEfficiencies.py +++ b/HLTriggerOffline/Egamma/test/egammaHltPrintRelvalEfficiencies.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import sys, os try: diff --git a/HLTriggerOffline/Egamma/test/egammaHltPrintValidationDQMurl.py b/HLTriggerOffline/Egamma/test/egammaHltPrintValidationDQMurl.py index acadd029400df..c270225a1f8d6 100755 --- a/HLTriggerOffline/Egamma/test/egammaHltPrintValidationDQMurl.py +++ b/HLTriggerOffline/Egamma/test/egammaHltPrintValidationDQMurl.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import sys, os, urllib diff --git a/HLTriggerOffline/Egamma/test/egammaHltValidate.py b/HLTriggerOffline/Egamma/test/egammaHltValidate.py index d43360cebc99a..58fda8d021ffc 100755 --- a/HLTriggerOffline/Egamma/test/egammaHltValidate.py +++ b/HLTriggerOffline/Egamma/test/egammaHltValidate.py @@ -11,7 +11,6 @@ # Michael Anderson # Sept 15, 2009 -from __future__ import print_function import sys, os, shutil #---------------------------------------------------------------------- # parameters diff --git a/HLTriggerOffline/Egamma/test/exampleHLTanalysis.py b/HLTriggerOffline/Egamma/test/exampleHLTanalysis.py index 528e46e9a23d7..065453c5a486a 100644 --- a/HLTriggerOffline/Egamma/test/exampleHLTanalysis.py +++ b/HLTriggerOffline/Egamma/test/exampleHLTanalysis.py @@ -5,7 +5,6 @@ # adapted from PhysicsTools/PatExamples/bin/PatBasicFWLiteAnalyzer.py -from __future__ import print_function import ROOT import sys from DataFormats.FWLite import Events, Handle diff --git a/HLTriggerOffline/Egamma/test/makePerPathConfigFiles.py b/HLTriggerOffline/Egamma/test/makePerPathConfigFiles.py index cf313691bf730..35348d128c2ea 100755 --- a/HLTriggerOffline/Egamma/test/makePerPathConfigFiles.py +++ b/HLTriggerOffline/Egamma/test/makePerPathConfigFiles.py @@ -8,7 +8,6 @@ # see an example file at HLTriggerOffline/Egamma/python/HLT_Ele17_SW_TighterEleIdIsol_L1RDQM_cfi.py #---------------------------------------------------------------------- -from __future__ import print_function import FWCore.ParameterSet.Config as cms import HLTriggerOffline.Egamma.EgammaHLTValidationUtils as EgammaHLTValidationUtils import sys, os diff --git a/HLTriggerOffline/Exotica/test/hltExoticaPostProcessor_cfg.py b/HLTriggerOffline/Exotica/test/hltExoticaPostProcessor_cfg.py index acdc55582a533..9b809c8c7cce0 100644 --- a/HLTriggerOffline/Exotica/test/hltExoticaPostProcessor_cfg.py +++ b/HLTriggerOffline/Exotica/test/hltExoticaPostProcessor_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os,sys diff --git a/HLTriggerOffline/Exotica/test/hltExoticaValidator_cfg.py b/HLTriggerOffline/Exotica/test/hltExoticaValidator_cfg.py index 5c3a0cf169b2e..3771cae485ca6 100644 --- a/HLTriggerOffline/Exotica/test/hltExoticaValidator_cfg.py +++ b/HLTriggerOffline/Exotica/test/hltExoticaValidator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os, sys import FWCore.ParameterSet.Config as cms diff --git a/HLTriggerOffline/HeavyFlavor/test/heavyFlavorValidationHarvesting_cfg.py b/HLTriggerOffline/HeavyFlavor/test/heavyFlavorValidationHarvesting_cfg.py index f7c89b8d51ff9..df2912a34ab20 100644 --- a/HLTriggerOffline/HeavyFlavor/test/heavyFlavorValidationHarvesting_cfg.py +++ b/HLTriggerOffline/HeavyFlavor/test/heavyFlavorValidationHarvesting_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function sampleName = "/RelValJpsiMM/CMSSW_3_5_0_pre2-STARTUP3X_V14-v1/GEN-SIM-RECO" import FWCore.ParameterSet.Config as cms diff --git a/HLTriggerOffline/Muon/test/compareReleases.py b/HLTriggerOffline/Muon/test/compareReleases.py index ffe5fd1421c59..f959cf68a77b4 100755 --- a/HLTriggerOffline/Muon/test/compareReleases.py +++ b/HLTriggerOffline/Muon/test/compareReleases.py @@ -6,7 +6,6 @@ ## ./compareReleases.py -h ## Import python libraries -from __future__ import print_function import sys import optparse import os diff --git a/HeterogeneousCore/AlpakaCore/README.md b/HeterogeneousCore/AlpakaCore/README.md index 43ed5d0778844..acbd00c9cb5c3 100644 --- a/HeterogeneousCore/AlpakaCore/README.md +++ b/HeterogeneousCore/AlpakaCore/README.md @@ -98,7 +98,7 @@ namespace cms::alpakatools { }; } ``` -Note that the destination (device-side) type `TDst` can be different from or the same as the source (host-side) type `TSrc` as far as the framework is concerned. For example, in the `PortableCollection` model the types are different. The `copyAsync()` member function is easiest to implement as a template over `TQueue`. The framework handles the necessary synchronization between the copy function and the consumer (currently the synchronization blocks, but work is ongoing to make it non-blocking). +Note that the destination (device-side) type `TDst` can be different from or the same as the source (host-side) type `TSrc` as far as the framework is concerned. For example, in the `PortableCollection` model the types are different. The `copyAsync()` member function is easiest to implement as a template over `TQueue`. The framework handles the necessary synchronization between the copy function and the consumer in a non-blocking way. The `CopyToDevice` class template is partially specialized for all `PortableCollection` instantiations. @@ -146,7 +146,9 @@ The `...` can in principle be any of the module abilities listed in the linked T New base classes (or other functionality) can be added based on new use cases that come up. -The Alpaka-based ESProducers should use the `ESProducer` base class (`#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h"`). Note that the Alpaka-based ESProducer constructor must pass the argument `edm::ParameterSet` object to the constructor of the `ESProducer` base class. +The Alpaka-based ESProducers should use the `ESProducer` base class (`#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h"`). + +Note that both the Alpaka-based EDProducer and ESProducer constructors must pass the argument `edm::ParameterSet` object to the constructor of their base class. Note that currently Alpaka-based ESSources are not supported. If you need to produce EventSetup data products into a Record for which there is no ESSource yet, use [`EmptyESSource`](https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideEDMParametersForModules#EmptyESSource). @@ -185,6 +187,26 @@ In the [`fillDescriptions()`](https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWG Also note that the `fillDescription()` function must have the same content for all backends, i.e. any backend-specific behavior with e.g. `#ifdef` or `if constexpr` are forbidden. +### Copy e.g. configuration data to all devices in EDProducer + +While the EventSetup can be used to handle copying data to all devices +of an Alpaka backend, for data used only by one EDProducer a simpler +way would be to use one of +* `cms::alpakatools::MoveToDeviceCache` (recommended) + * `#include "HeterogeneousCore/AlpakaCore/interface/MoveToDeviceCache.h"` + * Moves the `THostObject` to all devices using `cms::alpakatools::CopyToDevice` synchronously. On host backends the argument `THostObject` is moved around, but not copied. + * The `THostObject` must not be copyable + * This is to avoid easy mistakes with objects that follow copy semantics of `std::shared_ptr` (that includes Alpaka buffers), that would allow the source memory buffer to be used via another copy during the asynchronous data copy to the device. + * The constructor argument `THostObject` object may not be used, unless it is initialized again e.g. by assigning another `THostObject` into it. + * The corresponding device-side object can be obtained with `get()` member function using either alpaka Device or Queue object. It can be used immediately after the constructor returns. +* `cms::alpakatools::CopyToDeviceCache` (use only if **must** use copyable `THostObject`) + * `#include "HeterogeneousCore/AlpakaCore/interface/CopyToDeviceCache.h"` + * Copies the `THostObject` to all devices using `cms::alpakatools::CopyToDevice` synchronously. Also host backends do a copy. + * The constructor argument `THostObject` object can be used for other purposes immediately after the constructor returns + * The corresponding device-side object can be obtained with `get()` member function using either alpaka Device or Queue object. It can be used immediately after the constructor returns. + +For examples see [`HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerCopyToDeviceCache.cc`](../../HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerCopyToDeviceCache.cc) and [`HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerMoveToDeviceCache.cc`](../../HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerMoveToDeviceCache.cc). + ## Guarantees * All Event data products in the device memory space are guaranteed to be accessible only for operations enqueued in the `Queue` given by `device::Event::queue()` when accessed through the `device::Event`. @@ -217,8 +239,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class ExampleAlpakaProducer : public global::EDProducer<> { public: ExampleAlpakaProducer(edm::ParameterSet const& iConfig) - // produces() must not specify the product type, it is deduced from deviceToken_ - : deviceToken_{produces()}, size_{iConfig.getParameter("size")} {} + : EDProducer<>(iConfig), + // produces() must not specify the product type, it is deduced from deviceToken_ + deviceToken_{produces()}, + size_{iConfig.getParameter("size")} {} // device::Event and device::EventSetup are defined in ALPAKA_ACCELERATOR_NAMESPACE as well void produce(edm::StreamID sid, device::Event& iEvent, device::EventSetup const& iSetup) const override { @@ -459,6 +483,24 @@ process.ProcessAcceleratorAlpaka.setBackend("serial_sync") # or "cuda_async" or process.options.accelerators = ["cpu"] # or "gpu-nvidia" or "gpu-amd" ``` +### Blocking synchronization (for testing) + +While the general approach is to favor asynchronous operations with non-blocking synchronization, for testing purposes it can be useful to synchronize the EDModule's `acquire()` / `produce()` or ESProducer's production functions in a blocking way. Such a blocking synchronization can be specified for individual modules via the `alpaka` `PSet` along +```python +process.producer = cms.EDProducer("ExampleAlpakaProducer@alpaka", + ... + alpaka = cms.untracked.PSet( + synchronize = cms.untracked.bool(True) + ) +) +``` + +The blocking synchronization can be specified for all Alpaka modules via the `ProcessAcceleratorAlpaka` along +```python +process.ProcessAcceleratorAlpaka.setSynchronize(True) +``` +Note that the possible per-module parameter overrides this global setting. + ## Unit tests diff --git a/HeterogeneousCore/AlpakaCore/interface/CopyToDeviceCache.h b/HeterogeneousCore/AlpakaCore/interface/CopyToDeviceCache.h new file mode 100644 index 0000000000000..3e3a04f0c1834 --- /dev/null +++ b/HeterogeneousCore/AlpakaCore/interface/CopyToDeviceCache.h @@ -0,0 +1,104 @@ +#ifndef HeterogeneousCore_AlpakaInterface_interface_CopyToDeviceCache_h +#define HeterogeneousCore_AlpakaInterface_interface_CopyToDeviceCache_h + +#include + +#include "HeterogeneousCore/AlpakaCore/interface/QueueCache.h" +#include "HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h" +#include "HeterogeneousCore/AlpakaInterface/interface/devices.h" + +namespace cms::alpakatools { + namespace detail { + // By default copy the host object with CopyToDevice + // + // Doing with template specialization (rather than + // std::conditional_t and if constexpr) because the + // CopyToDevice::copyAsync() is ill-defined e.g. for + // PortableCollection on host device + template + class CopyToDeviceCacheImpl { + public: + using Device = TDevice; + using Queue = alpaka::Queue; + using HostObject = THostObject; + using Copy = CopyToDevice; + using DeviceObject = decltype(Copy::copyAsync(std::declval(), std::declval())); + + CopyToDeviceCacheImpl(HostObject const& srcObject) { + using Platform = alpaka::Platform; + auto const& devices = cms::alpakatools::devices(); + std::vector> queues; + queues.reserve(devices.size()); + data_.reserve(devices.size()); + for (auto const& dev : devices) { + auto queue = getQueueCache().get(dev); + data_.emplace_back(Copy::copyAsync(*queue, srcObject)); + queues.emplace_back(std::move(queue)); + } + for (auto& queuePtr : queues) { + alpaka::wait(*queuePtr); + } + } + + DeviceObject const& get(size_t i) const { return data_[i]; } + + private: + std::vector data_; + }; + + // For host device, copy the host object directly instead + template + class CopyToDeviceCacheImpl { + public: + using HostObject = THostObject; + using DeviceObject = HostObject; + + CopyToDeviceCacheImpl(HostObject const& srcObject) : data_(srcObject) {} + + DeviceObject const& get(size_t i) const { return data_; } + + private: + HostObject data_; + }; + } // namespace detail + + /** + * This class template implements a cache for data that is moved + * from the host (of type THostObject) to all the devices + * corresponding to the TDevice device type. + * + * The host-side object to be copied is given as an argument to the + * class constructor. The constructor uses the + * CopyToDevice class template to perfom the copy, and + * waits for the data copies to finish, i.e. the constructor is + * synchronous wrt. the data copies. + * + * The device-side object corresponding to the THostObject (actual + * type is the return type of CopyToDevice::copyAsync()) + * can be obtained with get() member function, that has either the + * queue or device argument. + */ + template + requires alpaka::isDevice + class CopyToDeviceCache { + using Device = TDevice; + using HostObject = THostObject; + using Impl = detail::CopyToDeviceCacheImpl; + using DeviceObject = typename Impl::DeviceObject; + + public: + CopyToDeviceCache(THostObject const& srcData) : data_(srcData) {} + + DeviceObject const& get(Device const& dev) const { return data_.get(alpaka::getNativeHandle(dev)); } + + template + DeviceObject const& get(TQueue const& queue) const { + return get(alpaka::getDev(queue)); + } + + private: + Impl data_; + }; +} // namespace cms::alpakatools + +#endif diff --git a/HeterogeneousCore/AlpakaCore/interface/MoveToDeviceCache.h b/HeterogeneousCore/AlpakaCore/interface/MoveToDeviceCache.h new file mode 100644 index 0000000000000..2c66fd384798a --- /dev/null +++ b/HeterogeneousCore/AlpakaCore/interface/MoveToDeviceCache.h @@ -0,0 +1,101 @@ +#ifndef HeterogeneousCore_AlpakaInterface_interface_MoveToDeviceCache_h +#define HeterogeneousCore_AlpakaInterface_interface_MoveToDeviceCache_h + +#include + +#include + +#include "HeterogeneousCore/AlpakaCore/interface/QueueCache.h" +#include "HeterogeneousCore/AlpakaCore/interface/CopyToDeviceCache.h" +#include "HeterogeneousCore/AlpakaInterface/interface/devices.h" + +namespace cms::alpakatools { + namespace detail { + // By default copy the host object with CopyToDevice + // + // Doing with template specialization (rather than + // std::conditional_t and if constexpr) because the + // CopyToDevice::copyAsync() is ill-defined e.g. for + // PortableCollection on host device + template + class MoveToDeviceCacheImpl { + public: + using HostObject = THostObject; + using Impl = CopyToDeviceCacheImpl; + using DeviceObject = typename Impl::DeviceObject; + + MoveToDeviceCacheImpl(HostObject&& srcObject) : impl_(srcObject) {} + + DeviceObject const& get(size_t i) const { return impl_.get(i); } + + private: + Impl impl_; + }; + + // For host device, move the host object instead + template + class MoveToDeviceCacheImpl { + public: + using HostObject = THostObject; + using DeviceObject = HostObject; + + MoveToDeviceCacheImpl(HostObject&& srcObject) : data_(std::move(srcObject)) {} + + DeviceObject const& get(size_t i) const { return data_; } + + private: + HostObject data_; + }; + } // namespace detail + + /** + * This class template implements a cache for data that is moved + * from the host (of type THostObject) to all the devices + * corresponding to the TDevice device type. + * + * The host-side object to be moved is given as an argument to the + * class constructor. The constructor uses the + * CopyToDevice class template to copy the data to the + * devices, and waits for the data copies to finish, i.e. the + * constructor is synchronous wrt. the data copies. The "move" is + * achieved by requiring the constructor argument to be an rvalue + * reference. + * + * Note that the host object type is required to be non-copyable. + * This is to avoid easy mistakes with objects that follow copy + * semantics of std::shared_ptr (that includes Alpaka buffers), that + * would allow the source memory buffer to be used via another copy + * during the asynchronous data copy to the device. + * + * The device-side object corresponding to the THostObject (actual + * type is the return type of CopyToDevice::copyAsync()) + * can be obtained with get() member function, that has either the + * queue or device argument. + */ + template + requires alpaka::isDevice + class MoveToDeviceCache { + public: + using Device = TDevice; + using HostObject = THostObject; + using Impl = detail::MoveToDeviceCacheImpl; + using DeviceObject = typename Impl::DeviceObject; + + static_assert(not(std::is_copy_constructible_v or std::is_copy_assignable_v), + "The data object to be moved to device must not be copyable."); + + MoveToDeviceCache(HostObject&& srcData) : data_(std::move(srcData)) {} + + DeviceObject const& get(Device const& dev) const { return data_.get(alpaka::getNativeHandle(dev)); } + + template + DeviceObject const& get(TQueue const& queue) const { + return get(alpaka::getDev(queue)); + } + + private: + Impl data_; + }; +} // namespace cms::alpakatools + +#endif diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/DeviceProductType.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/DeviceProductType.h index 3df9abcf89459..23004ebf66ee4 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/DeviceProductType.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/DeviceProductType.h @@ -4,24 +4,21 @@ #include "DataFormats/Common/interface/DeviceProduct.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include + namespace ALPAKA_ACCELERATOR_NAMESPACE::detail { + // host synchronous backends can use TProduct directly + // all device and asynchronous backends need to be wrapped + inline constexpr bool useProductDirectly = + std::is_same_v and std::is_same_v; + /** - * This "trait" class abstracts the actual product type put in the + * Type alias for the actual product type put in the * edm::Event. */ template - struct DeviceProductType { -#ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED - // host synchronous backends can use TProduct directly - using type = TProduct; -#else - // all device and asynchronous backends need to be wrapped - using type = edm::DeviceProduct; -#endif - }; + using DeviceProductType = std::conditional_t>; - template - inline constexpr bool useProductDirectly = std::is_same_v::type, TProduct>; } // namespace ALPAKA_ACCELERATOR_NAMESPACE::detail #endif diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDGetToken.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDGetToken.h index 8699cc2b8fdf7..ad1a254f136ec 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDGetToken.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDGetToken.h @@ -23,7 +23,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { */ template class EDGetToken { - using ProductType = typename detail::DeviceProductType::type; + using ProductType = detail::DeviceProductType; public: constexpr EDGetToken() = default; diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataAcquireSentry.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataAcquireSentry.h index 6495d2127ff5e..a8f285372bf77 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataAcquireSentry.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataAcquireSentry.h @@ -16,10 +16,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { public: // TODO: WaitingTaskWithArenaHolder not really needed for host synchronous case // Constructor overload to be called from acquire() - EDMetadataAcquireSentry(edm::StreamID stream, edm::WaitingTaskWithArenaHolder holder); + EDMetadataAcquireSentry(edm::StreamID stream, edm::WaitingTaskWithArenaHolder holder, bool synchronize); // Constructor overload to be called from registerTransformAsync() - EDMetadataAcquireSentry(Device const& device, edm::WaitingTaskWithArenaHolder holder); + EDMetadataAcquireSentry(Device const& device, edm::WaitingTaskWithArenaHolder holder, bool synchronize = false); EDMetadataAcquireSentry(EDMetadataAcquireSentry const&) = delete; EDMetadataAcquireSentry& operator=(EDMetadataAcquireSentry const&) = delete; @@ -40,6 +40,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { std::shared_ptr metadata_; edm::WaitingTaskWithArenaHolder waitingTaskHolder_; + bool const synchronize_; }; } // namespace detail } // namespace ALPAKA_ACCELERATOR_NAMESPACE diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataSentry.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataSentry.h index a56670af92210..11ec11c9ba3d0 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataSentry.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataSentry.h @@ -14,10 +14,11 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class EDMetadataSentry { public: // For normal module - EDMetadataSentry(edm::StreamID stream); + EDMetadataSentry(edm::StreamID stream, bool synchronize); // For ExternalWork-module's produce() - EDMetadataSentry(std::shared_ptr metadata) : metadata_(std::move(metadata)) {} + EDMetadataSentry(std::shared_ptr metadata, bool synchronize) + : metadata_(std::move(metadata)), synchronize_(synchronize) {} EDMetadataSentry(EDMetadataSentry const&) = delete; EDMetadataSentry& operator=(EDMetadataSentry const&) = delete; @@ -31,6 +32,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { private: std::shared_ptr metadata_; + bool const synchronize_; }; } // namespace detail } // namespace ALPAKA_ACCELERATOR_NAMESPACE diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h index 7c390e6e08d72..ddbf12e797a49 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h @@ -17,7 +17,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { */ template class EDPutToken { - using ProductType = typename detail::DeviceProductType::type; + using ProductType = detail::DeviceProductType; public: constexpr EDPutToken() noexcept = default; diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProductType.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProductType.h index 7c91b5dffaa5b..8f3f24750be7a 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProductType.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProductType.h @@ -7,21 +7,16 @@ #include namespace ALPAKA_ACCELERATOR_NAMESPACE::detail { + // host backends can use TProduct directly + // all device backends need to be wrapped + inline constexpr bool useESProductDirectly = std::is_same_v; + /** - * This "trait" class abstracts the actual product type put in an + * Type alias for the actual product type put in an * EventSetup record */ template - struct ESDeviceProductType { - using type = std::conditional_t, - // host backends can use TProduct directly - TProduct, - // all device backends need to be wrapped - ESDeviceProduct>; - }; - - template - inline constexpr bool useESProductDirectly = std::is_same_v::type, TProduct>; + using ESDeviceProductType = std::conditional_t>; } // namespace ALPAKA_ACCELERATOR_NAMESPACE::detail #endif diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h index 01f9c42d6aa10..07a6f2dddad88 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h @@ -32,7 +32,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { auto const& underlyingToken() const { return token_; } - using ProductType = typename detail::ESDeviceProductType::type; + using ProductType = detail::ESDeviceProductType; edm::ESGetToken token_; }; } // namespace ALPAKA_ACCELERATOR_NAMESPACE::device diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h index d4e9f2bb3ba28..6c812cff17253 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h @@ -1,10 +1,10 @@ #ifndef HeterogeneousCore_AlpakaCore_interface_alpaka_ESProducer_h #define HeterogeneousCore_AlpakaCore_interface_alpaka_ESProducer_h -#include "FWCore/Framework/interface/ESProducer.h" +#include "FWCore/Framework/interface/ESProducerExternalWork.h" #include "FWCore/Framework/interface/MakeDataException.h" #include "FWCore/Framework/interface/produce_helpers.h" -#include "HeterogeneousCore/AlpakaCore/interface/module_backend_config.h" +#include "HeterogeneousCore/AlpakaCore/interface/modulePrevalidate.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProduct.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProductType.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/Record.h" @@ -24,13 +24,13 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { * the the usual Record argument. For producing a device product, * the produce funtion should have device::Record argument. */ - class ESProducer : public edm::ESProducer { - using Base = edm::ESProducer; + class ESProducer : public edm::ESProducerExternalWork { + using Base = edm::ESProducerExternalWork; public: static void prevalidate(edm::ConfigurationDescriptions& descriptions) { Base::prevalidate(descriptions); - cms::alpakatools::module_backend_config(descriptions); + cms::alpakatools::modulePrevalidate(descriptions); } protected: @@ -45,7 +45,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { auto setWhatProduced(T* iThis, TReturn (T ::*iMethod)(TRecord const&), edm::es::Label const& label = {}) { auto cc = Base::setWhatProduced(iThis, iMethod, label); using TProduct = typename edm::eventsetup::produce::smart_pointer_traits::type; - if constexpr (not detail::useESProductDirectly) { + if constexpr (not detail::useESProductDirectly) { // for device backends add the copy to device auto tokenPtr = std::make_shared>(); auto ccDev = setWhatProducedDevice( @@ -69,12 +69,16 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { TReturn (T ::*iMethod)(device::Record const&), edm::es::Label const& label = {}) { using TProduct = typename edm::eventsetup::produce::smart_pointer_traits::type; - if constexpr (detail::useESProductDirectly) { + if constexpr (detail::useESProductDirectly) { return Base::setWhatProduced( [iThis, iMethod](TRecord const& record) { auto const& devices = cms::alpakatools::devices(); assert(devices.size() == 1); device::Record const deviceRecord(record, devices.front()); + static_assert(std::is_same_v, + alpaka::Queue>, + "Non-blocking queue when trying to use ES data product directly. This might indicate a " + "need to extend the Alpaka ESProducer base class."); return std::invoke(iMethod, iThis, deviceRecord); }, label); @@ -93,12 +97,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { using TProduct = typename edm::eventsetup::produce::smart_pointer_traits::type; using ProductType = ESDeviceProduct; using ReturnType = detail::ESDeviceProductWithStorage; - return Base::setWhatProduced( - [function = std::forward(func)](TRecord const& record) -> std::unique_ptr { + return Base::setWhatAcquiredProducedWithLambda( + // acquire() part + [function = std::forward(func), synchronize = synchronize_](TRecord const& record, + edm::WaitingTaskWithArenaHolder holder) { // TODO: move the multiple device support into EventSetup system itself auto const& devices = cms::alpakatools::devices(); - std::vector> queues; - queues.reserve(devices.size()); auto ret = std::make_unique(devices.size()); bool allnull = true; bool anynull = false; @@ -111,12 +115,28 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { } else { anynull = true; } - queues.push_back(deviceRecord.queuePtr()); - } - // TODO: to be changed asynchronous later - for (auto& queuePtr : queues) { - alpaka::wait(*queuePtr); + if (synchronize) { + alpaka::wait(deviceRecord.queue()); + } else { + enqueueCallback(deviceRecord.queue(), std::move(holder)); + } + // The Queue is returned to the QueueCache. The same + // Queue may be used for other work before the work + // enqueued here finishes. The only impact would be a + // (slight?) delay in the completion of the other work. + // Given that the ESProducers are expected to be mostly + // for host-to-device data copies, that are serialized + // anyway (at least on current NVIDIA), this should be + // reasonable behavior for now. } + return std::tuple(std::move(ret), allnull, anynull); + }, + // produce() part, called after the asynchronous work in all queues have finished + [](TRecord const& record, auto fromAcquire) -> std::unique_ptr { + auto [ret, allnull, anynull] = std::move(fromAcquire); + // The 'allnull'/'anynull' actions are in produce() + // to keep any destination memory in 'ret' + // alive until the asynchronous work has finished if (allnull) { return nullptr; } else if (anynull) { @@ -128,17 +148,19 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // make the EventSetup system itself aware of multiple // devies (or memory spaces). I hope this exception // would be good-enough until we get there. - ESProducer::throwSomeNullException(); + throwSomeNullException(); } - return ret; + return std::move(ret); }, label); } + static void enqueueCallback(Queue& queue, edm::WaitingTaskWithArenaHolder holder); static void throwSomeNullException(); std::string const moduleLabel_; std::string const appendToDataLabel_; + bool const synchronize_; }; } // namespace ALPAKA_ACCELERATOR_NAMESPACE diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h index 247d4f7a8844b..2d2a4e564485c 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h @@ -70,7 +70,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { template T const& get(device::EDGetToken const& token) const { auto const& deviceProduct = constEvent_.get(token.underlyingToken()); - if constexpr (detail::useProductDirectly) { + if constexpr (detail::useProductDirectly) { return deviceProduct; } else { // try to re-use queue from deviceProduct if our queue has not yet been used @@ -90,7 +90,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { template edm::Handle getHandle(device::EDGetToken const& token) const { auto deviceProductHandle = constEvent_.getHandle(token.underlyingToken()); - if constexpr (detail::useProductDirectly) { + if constexpr (detail::useProductDirectly) { return deviceProductHandle; } else { if (not deviceProductHandle) { @@ -114,7 +114,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { // The idea for Ref-like things in this domain differs from earlier Refs anyway template void emplace(device::EDPutToken const& token, Args&&... args) { - if constexpr (detail::useProductDirectly) { + if constexpr (detail::useProductDirectly) { event_->emplace(token.underlyingToken(), std::forward(args)...); } else { event_->emplace(token.underlyingToken(), metadata_, std::forward(args)...); @@ -130,7 +130,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { template void put(device::EDPutToken const& token, std::unique_ptr product) { - if constexpr (detail::useProductDirectly) { + if constexpr (detail::useProductDirectly) { event_->emplace(token.underlyingToken(), std::move(*product)); } else { event_->emplace(token.underlyingToken(), metadata_, std::move(*product)); diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h index a2bbea9413176..7203f43c8818e 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h @@ -36,7 +36,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { template T const& getData(device::ESGetToken const& iToken) const { auto const& product = setup_.getData(iToken.underlyingToken()); - if constexpr (detail::useESProductDirectly) { + if constexpr (detail::useESProductDirectly) { return product; } else { return product.get(device_); @@ -53,7 +53,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::device { template edm::ESHandle getHandle(device::ESGetToken const& iToken) const { auto handle = setup_.getHandle(iToken.underlyingToken()); - if constexpr (detail::useESProductDirectly) { + if constexpr (detail::useESProductDirectly) { return handle; } else { if (not handle) { diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/ProducerBase.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/ProducerBase.h index a770397765b6f..c751ae0bf2512 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/ProducerBase.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/ProducerBase.h @@ -5,13 +5,12 @@ #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" #include "FWCore/Framework/interface/moduleAbilities.h" #include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/EDPutToken.h" #include "FWCore/Utilities/interface/Transition.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/DeviceProductType.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataAcquireSentry.h" -#include "HeterogeneousCore/AlpakaCore/interface/EventCache.h" -#include "HeterogeneousCore/AlpakaCore/interface/QueueCache.h" -#include "HeterogeneousCore/AlpakaCore/interface/module_backend_config.h" +#include "HeterogeneousCore/AlpakaCore/interface/modulePrevalidate.h" #include "HeterogeneousCore/AlpakaInterface/interface/Backend.h" #include "HeterogeneousCore/AlpakaInterface/interface/CopyToHost.h" @@ -46,7 +45,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { using Base = BaseT; public: + // TODO: default constructor to be removed after all derived classes have been migrated ProducerBase() : backendToken_(Base::produces("backend")) {} + ProducerBase(edm::ParameterSet const& iConfig) + : backendToken_(Base::produces("backend")), + // The 'synchronize' parameter can be unset in Alpaka + // modules specified with the namespace prefix instead if + // '@alpaka' suffix + synchronize_(iConfig.getUntrackedParameter("alpaka").getUntrackedParameter( + "synchronize", false)) {} template [[nodiscard]] auto produces() noexcept { @@ -60,7 +67,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { static void prevalidate(edm::ConfigurationDescriptions& descriptions) { Base::prevalidate(descriptions); - cms::alpakatools::module_backend_config(descriptions); + cms::alpakatools::modulePrevalidate(descriptions); } protected: @@ -68,8 +75,11 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { iEvent.emplace(this->backendToken_, static_cast(kBackend)); } + bool synchronize() const { return synchronize_; } + private: edm::EDPutTokenT const backendToken_; + bool const synchronize_ = false; template friend class ProducerBaseAdaptor; @@ -89,14 +99,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // can think of it later if really needed template edm::EDPutTokenT deviceProduces(std::string instanceName) { - if constexpr (detail::useProductDirectly) { + if constexpr (detail::useProductDirectly) { return Base::template produces(std::move(instanceName)); } else { edm::EDPutTokenT token = Base::template produces(instanceName); using CopyT = cms::alpakatools::CopyToHost; this->registerTransformAsync( token, - [](TToken const& deviceProduct, edm::WaitingTaskWithArenaHolder holder) { + [](edm::StreamID, TToken const& deviceProduct, edm::WaitingTaskWithArenaHolder holder) { auto const& device = alpaka::getDev(deviceProduct.template metadata().queue()); detail::EDMetadataAcquireSentry sentry(device, std::move(holder)); auto metadataPtr = sentry.metadata(); @@ -112,7 +122,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // Wrap possibly move-only type into a copyable type return std::make_shared(std::move(productOnHost), sentry.finish()); }, - [](auto tplPtr) { + [](edm::StreamID, auto tplPtr) { auto& productOnHost = std::get<0>(*tplPtr); if constexpr (requires { CopyT::postCopy(productOnHost); }) { CopyT::postCopy(productOnHost); diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/Record.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/Record.h index 81554f08b502a..b81beed691ca7 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/Record.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/Record.h @@ -47,7 +47,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { template edm::ESHandle getHandle(device::ESGetToken const& iToken) const { auto handle = record_.getHandle(iToken.underlyingToken()); - if constexpr (detail::useESProductDirectly) { + if constexpr (detail::useESProductDirectly) { return handle; } else { if (not handle) { @@ -67,7 +67,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { template edm::ESTransientHandle getTransientHandle(device::ESGetToken const& iToken) const { auto handle = record_.getTransientHandle(iToken.underlyingToken()); - if constexpr (detail::useESProductDirectly) { + if constexpr (detail::useESProductDirectly) { return handle; } else { if (not handle) { @@ -90,7 +90,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { template TProduct const& get(device::ESGetToken const& iToken) const { auto const& product = record_.get(iToken.underlyingToken()); - if constexpr (detail::useESProductDirectly) { + if constexpr (detail::useESProductDirectly) { return product; } else { return product.get(alpaka::getDev(*queue_)); diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h index 374ee0001f376..9a34a90699bbf 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h @@ -15,10 +15,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { static_assert(not edm::CheckAbility::kHasIt, "ALPAKA_ACCELERATOR_NAMESPACE::global::EDProducer may not be used with ExternalWork ability. " "Please use ALPAKA_ACCELERATOR_NAMESPACE::stream::SynchronizingEDProducer instead."); + using Base = ProducerBase; + + protected: + EDProducer() = default; // to be removed in the near future + EDProducer(edm::ParameterSet const iConfig) : Base(iConfig) {} public: void produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& iSetup) const final { - detail::EDMetadataSentry sentry(sid); + detail::EDMetadataSentry sentry(sid, this->synchronize()); device::Event ev(iEvent, sentry.metadata()); device::EventSetup const es(iSetup, ev.device()); produce(sid, ev, es); diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/EDProducer.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/EDProducer.h index 08687b0b804b3..b8297a145aaf6 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/EDProducer.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/EDProducer.h @@ -15,10 +15,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { static_assert(not edm::CheckAbility::kHasIt, "ALPAKA_ACCELERATOR_NAMESPACE::stream::EDProducer may not be used with ExternalWork ability. " "Please use ALPAKA_ACCELERATOR_NAMESPACE::stream::SynchronizingEDProducer instead."); + using Base = ProducerBase; + + protected: + EDProducer() = default; // to be removed in the near future + EDProducer(edm::ParameterSet const iConfig) : Base(iConfig) {} public: void produce(edm::Event& iEvent, edm::EventSetup const& iSetup) final { - detail::EDMetadataSentry sentry(iEvent.streamID()); + detail::EDMetadataSentry sentry(iEvent.streamID(), this->synchronize()); device::Event ev(iEvent, sentry.metadata()); device::EventSetup const es(iSetup, ev.device()); produce(ev, es); diff --git a/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/SynchronizingEDProducer.h b/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/SynchronizingEDProducer.h index 28abd77be20db..e0aa364ef4f51 100644 --- a/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/SynchronizingEDProducer.h +++ b/HeterogeneousCore/AlpakaCore/interface/alpaka/stream/SynchronizingEDProducer.h @@ -18,12 +18,17 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { not edm::CheckAbility::kHasIt, "ExternalWork ability is redundant with ALPAKA_ACCELERATOR_NAMESPACE::stream::SynchronizingEDProducer." "Please remove it."); + using Base = ProducerBase; + + protected: + SynchronizingEDProducer() = default; // to be removed in the near future + SynchronizingEDProducer(edm::ParameterSet const iConfig) : Base(iConfig) {} public: void acquire(edm::Event const& iEvent, edm::EventSetup const& iSetup, edm::WaitingTaskWithArenaHolder holder) final { - detail::EDMetadataAcquireSentry sentry(iEvent.streamID(), std::move(holder)); + detail::EDMetadataAcquireSentry sentry(iEvent.streamID(), std::move(holder), this->synchronize()); device::Event const ev(iEvent, sentry.metadata()); device::EventSetup const es(iSetup, ev.device()); acquire(ev, es); @@ -31,7 +36,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { } void produce(edm::Event& iEvent, edm::EventSetup const& iSetup) final { - detail::EDMetadataSentry sentry(std::move(metadata_)); + detail::EDMetadataSentry sentry(std::move(metadata_), this->synchronize()); device::Event ev(iEvent, sentry.metadata()); device::EventSetup const es(iSetup, ev.device()); produce(ev, es); diff --git a/HeterogeneousCore/AlpakaCore/interface/modulePrevalidate.h b/HeterogeneousCore/AlpakaCore/interface/modulePrevalidate.h new file mode 100644 index 0000000000000..22f2d889421fe --- /dev/null +++ b/HeterogeneousCore/AlpakaCore/interface/modulePrevalidate.h @@ -0,0 +1,10 @@ +#ifndef HeterogeneousCore_AlpakaCore_interface_modulePrevalidate_h +#define HeterogeneousCore_AlpakaCore_interface_modulePrevalidate_h + +#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" + +namespace cms::alpakatools { + void modulePrevalidate(edm::ConfigurationDescriptions& iDesc); +} // namespace cms::alpakatools + +#endif diff --git a/HeterogeneousCore/AlpakaCore/interface/module_backend_config.h b/HeterogeneousCore/AlpakaCore/interface/module_backend_config.h deleted file mode 100644 index 5fc9afb8b60b1..0000000000000 --- a/HeterogeneousCore/AlpakaCore/interface/module_backend_config.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef HeterogeneousCore_AlpakaCore_interface_module_backend_config_h -#define HeterogeneousCore_AlpakaCore_interface_module_backend_config_h - -#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" - -namespace cms::alpakatools { - void module_backend_config(edm::ConfigurationDescriptions& iDesc); -} - -#endif diff --git a/HeterogeneousCore/AlpakaCore/python/ProcessAcceleratorAlpaka.py b/HeterogeneousCore/AlpakaCore/python/ProcessAcceleratorAlpaka.py index 673a479d8eb2b..910f7ecd58ce8 100644 --- a/HeterogeneousCore/AlpakaCore/python/ProcessAcceleratorAlpaka.py +++ b/HeterogeneousCore/AlpakaCore/python/ProcessAcceleratorAlpaka.py @@ -5,7 +5,7 @@ from HeterogeneousCore.Common.PlatformStatus import PlatformStatus class ModuleTypeResolverAlpaka: - def __init__(self, accelerators, backend): + def __init__(self, accelerators, backend, synchronize): # first element is used as the default if nothing is set self._valid_backends = [] if "gpu-nvidia" in accelerators: @@ -23,6 +23,7 @@ def __init__(self, accelerators, backend): if backend != self._valid_backends[0]: self._valid_backends.remove(backend) self._valid_backends.insert(0, backend) + self._synchronize = synchronize def plugin(self): return "ModuleTypeResolverAlpaka" @@ -31,6 +32,11 @@ def setModuleVariant(self, module): if module.type_().endswith("@alpaka"): defaultBackend = self._valid_backends[0] if hasattr(module, "alpaka"): + # Ensure the untrackedness already here, because the + # C++ ModuleTypeResolverAlpaka relies on the + # untrackedness (before the configuration validation) + if module.alpaka.isTracked(): + raise cms.EDMException(cms.edm.errors.Configuration, "The 'alpaka' PSet in module '{}' is tracked, but it should be untracked".format(module.label())) if hasattr(module.alpaka, "backend"): if module.alpaka.backend == "": module.alpaka.backend = defaultBackend @@ -42,6 +48,12 @@ def setModuleVariant(self, module): module.alpaka = cms.untracked.PSet( backend = cms.untracked.string(defaultBackend) ) + isDefaultValue = lambda v: \ + isinstance(v, type(cms.optional.untracked.bool)) \ + and not v.isTracked() \ + and v.isCompatibleCMSType(cms.bool) + if not hasattr(module.alpaka, "synchronize") or isDefaultValue(module.alpaka.synchronize): + module.alpaka.synchronize = cms.untracked.bool(self._synchronize) class ProcessAcceleratorAlpaka(cms.ProcessAccelerator): """ProcessAcceleratorAlpaka itself does not define or inspect @@ -53,14 +65,18 @@ class ProcessAcceleratorAlpaka(cms.ProcessAccelerator): def __init__(self): super(ProcessAcceleratorAlpaka, self).__init__() self._backend = None + self._synchronize = False # User-facing interface def setBackend(self, backend): self._backend = backend + def setSynchronize(self, synchronize): + self._synchronize = synchronize + # Framework-facing interface def moduleTypeResolver(self, accelerators): - return ModuleTypeResolverAlpaka(accelerators, self._backend) + return ModuleTypeResolverAlpaka(accelerators, self._backend, self._synchronize) def apply(self, process, accelerators): # Propagate the AlpakaService messages through the MessageLogger diff --git a/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataAcquireSentry.cc b/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataAcquireSentry.cc index 923c0d52d5cf6..ef1a6472e2a5f 100644 --- a/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataAcquireSentry.cc +++ b/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataAcquireSentry.cc @@ -5,11 +5,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { namespace detail { - EDMetadataAcquireSentry::EDMetadataAcquireSentry(edm::StreamID streamID, edm::WaitingTaskWithArenaHolder holder) - : EDMetadataAcquireSentry(detail::chooseDevice(streamID), std::move(holder)) {} + EDMetadataAcquireSentry::EDMetadataAcquireSentry(edm::StreamID streamID, + edm::WaitingTaskWithArenaHolder holder, + bool synchronize) + : EDMetadataAcquireSentry(detail::chooseDevice(streamID), std::move(holder), synchronize) {} - EDMetadataAcquireSentry::EDMetadataAcquireSentry(Device const& device, edm::WaitingTaskWithArenaHolder holder) - : waitingTaskHolder_(std::move(holder)) { + EDMetadataAcquireSentry::EDMetadataAcquireSentry(Device const& device, + edm::WaitingTaskWithArenaHolder holder, + bool synchronize) + : waitingTaskHolder_(std::move(holder)), synchronize_(synchronize) { #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED // all synchronous backends metadata_ = std::make_shared(cms::alpakatools::getQueueCache().get(device)); @@ -23,7 +27,11 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { #ifndef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED // all asynchronous backends std::shared_ptr EDMetadataAcquireSentry::finish() { - metadata_->enqueueCallback(std::move(waitingTaskHolder_)); + if (synchronize_) { + alpaka::wait(metadata_->queue()); + } else { + metadata_->enqueueCallback(std::move(waitingTaskHolder_)); + } return std::move(metadata_); } #endif diff --git a/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataSentry.cc b/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataSentry.cc index da5e9065e9c12..74dda0811684c 100644 --- a/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataSentry.cc +++ b/HeterogeneousCore/AlpakaCore/src/alpaka/EDMetadataSentry.cc @@ -5,7 +5,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { namespace detail { - EDMetadataSentry::EDMetadataSentry(edm::StreamID streamID) { + EDMetadataSentry::EDMetadataSentry(edm::StreamID streamID, bool synchronize) : synchronize_(synchronize) { auto const& device = detail::chooseDevice(streamID); #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED metadata_ = std::make_shared(cms::alpakatools::getQueueCache().get(device)); @@ -16,12 +16,19 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { } void EDMetadataSentry::finish(bool launchedAsyncWork) { - if (launchedAsyncWork) { + if constexpr (not std::is_same_v>) { + if (launchedAsyncWork and synchronize_) { + alpaka::wait(metadata_->queue()); + } + } + + if (launchedAsyncWork and not synchronize_) { metadata_->recordEvent(); } else { // If we are certain no asynchronous work was launched (i.e. - // the Queue was not used in any way), there is no need to - // synchronize, and the Event can be discarded. + // the Queue was not used in any way), or a blocking + // synchronization was explicitly requested, there is no need + // to synchronize later, and the Event can be discarded. metadata_->discardEvent(); } } diff --git a/HeterogeneousCore/AlpakaCore/src/alpaka/ESProducer.cc b/HeterogeneousCore/AlpakaCore/src/alpaka/ESProducer.cc index c4f7c58a68e1d..028718bc74c85 100644 --- a/HeterogeneousCore/AlpakaCore/src/alpaka/ESProducer.cc +++ b/HeterogeneousCore/AlpakaCore/src/alpaka/ESProducer.cc @@ -1,10 +1,29 @@ +#include "FWCore/Concurrency/interface/Async.h" +#include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/EDMException.h" +#include "HeterogeneousCore/AlpakaCore/interface/EventCache.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h" +#include "HeterogeneousCore/AlpakaInterface/interface/HostOnlyTask.h" namespace ALPAKA_ACCELERATOR_NAMESPACE { ESProducer::ESProducer(edm::ParameterSet const& iConfig) : moduleLabel_(iConfig.getParameter("@module_label")), - appendToDataLabel_(iConfig.getParameter("appendToDataLabel")) {} + appendToDataLabel_(iConfig.getParameter("appendToDataLabel")), + // The 'synchronize' parameter can be unset in Alpaka modules + // specified with the namespace prefix instead if '@alpaka' + // suffix + synchronize_( + iConfig.getUntrackedParameter("alpaka").getUntrackedParameter("synchronize", false)) {} + + void ESProducer::enqueueCallback(Queue& queue, edm::WaitingTaskWithArenaHolder holder) { + edm::Service async; + auto event = cms::alpakatools::getEventCache().get(alpaka::getDev(queue)); + alpaka::enqueue(queue, *event); + async->runAsync( + std::move(holder), + [event = std::move(event)]() mutable { alpaka::wait(*event); }, + []() { return "Enqueued via " EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE) "::ESProducer::enqueueCallback()"; }); + } void ESProducer::throwSomeNullException() { throw edm::Exception(edm::errors::UnimplementedFeature) diff --git a/HeterogeneousCore/AlpakaCore/src/modulePrevalidate.cc b/HeterogeneousCore/AlpakaCore/src/modulePrevalidate.cc new file mode 100644 index 0000000000000..984dd0cc799e4 --- /dev/null +++ b/HeterogeneousCore/AlpakaCore/src/modulePrevalidate.cc @@ -0,0 +1,40 @@ +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "HeterogeneousCore/AlpakaCore/interface/modulePrevalidate.h" + +namespace { + const std::string kPSetName("alpaka"); + const char* const kComment = "PSet allows to override some Alpaka module settings per module instance."; +} // namespace + +namespace cms::alpakatools { + void modulePrevalidate(edm::ConfigurationDescriptions& iDesc) { + edm::ParameterSetDescription descAlpaka; + descAlpaka.addUntracked("backend", "") + ->setComment( + "Set the Alpaka backend for this module instance. This parameter has an effect only when the module class " + "name has '@alpaka' suffix, i.e. it has no effect when the Alpaka backend namespace is used explicitly. " + "Can be empty string (for the global default), 'serial_sync', or - depending on the architecture and " + "available hardware - 'cuda_async', 'rocm_async'"); + // Optional in order to have unset state so that python-side + // ModuleTypeResolverAlpaka can set the global default only if the + // per-module parameter is not set + descAlpaka.addOptionalUntracked("synchronize") + ->setComment( + "On backends with an asynchronous Queue, synchronize the host and device in a blocking way at the end of " + "acquire() and produce() functions. Has no effect on backends with synchronous Queue."); + + if (iDesc.defaultDescription()) { + if (iDesc.defaultDescription()->isLabelUnused(kPSetName)) { + iDesc.defaultDescription() + ->addUntracked(kPSetName, descAlpaka) + ->setComment(kComment); + } + } + for (auto& v : iDesc) { + if (v.second.isLabelUnused(kPSetName)) { + v.second.addUntracked(kPSetName, descAlpaka)->setComment(kComment); + } + } + } +} // namespace cms::alpakatools diff --git a/HeterogeneousCore/AlpakaCore/src/module_backend_config.cc b/HeterogeneousCore/AlpakaCore/src/module_backend_config.cc deleted file mode 100644 index 55b3ee5e11b30..0000000000000 --- a/HeterogeneousCore/AlpakaCore/src/module_backend_config.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" -#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" -#include "HeterogeneousCore/AlpakaCore/interface/module_backend_config.h" - -namespace { - const std::string kPSetName("alpaka"); - const char* const kComment = - "PSet allows to override the Alpaka backend per module instance. Has an effect only when the module class name " - "has '@alpaka' suffix, i.e. has no effect when the Alpaka backend namespace is used explicitly."; -} // namespace - -namespace cms::alpakatools { - void module_backend_config(edm::ConfigurationDescriptions& iDesc) { - // the code below leads to 'alpaka = untracked.PSet(backend = untracked.string)' to be added to the generated cfi files - // TODO: I don't know if this is a desired behavior for HLT - edm::ParameterSetDescription descAlpaka; - descAlpaka.addUntracked("backend", "") - ->setComment( - "Alpaka backend for this module. Can be empty string (for the global default), 'serial_sync', or " - " - depending on the architecture and available hardware - 'cuda_async', 'rocm_async'"); - - if (iDesc.defaultDescription()) { - if (iDesc.defaultDescription()->isLabelUnused(kPSetName)) { - iDesc.defaultDescription() - ->addUntracked(kPSetName, descAlpaka) - ->setComment(kComment); - } - } - for (auto& v : iDesc) { - if (v.second.isLabelUnused(kPSetName)) { - v.second.addUntracked(kPSetName, descAlpaka)->setComment(kComment); - } - } - } -} // namespace cms::alpakatools diff --git a/HeterogeneousCore/AlpakaInterface/README.md b/HeterogeneousCore/AlpakaInterface/README.md index 3d90abdf5a2b5..e6fb83eb41d19 100644 --- a/HeterogeneousCore/AlpakaInterface/README.md +++ b/HeterogeneousCore/AlpakaInterface/README.md @@ -137,7 +137,9 @@ See the previous section for considerations about the use of device-mapped memory. -## A note about copies and synchronisation +## Notes about copies and synchronisation + +### Host-to-device copy When copying data from a host buffer to a device buffer, _e.g._ with ```c++ @@ -163,6 +165,40 @@ std::memset(a_host_buffer.data(), 0x00, size); is likely to overwrite part of the buffer while the copy is still ongoing, resulting in `a_device_buffer` with incomplete and corrupted contents. +### Host-to-device move + +For host data types that are movable and not copyable one can, to +large degree, avoid worrying about the caveats above about avoiding +any operations on the host with the following utility and move semantics +```c++ +#include "HeterogeneousCore/AlpakaInterface/interface/moveToDeviceAsync.h" +// ... +auto device_object = cms::alpakatools::moveToDeviceAsync(queue, std::move(host_object)); +``` + +Here the host-side `host_object` is _moved_ to the +`moveToDeviceAsync()` function, which returns a correponding +device-side `device_object`. In this case any subsequent use of +`host_object` is clearly "use after move", which is easier to catch in +code review or by static analysis tools than the consequences of +`alpaka::mempcy()`. + +The `cms::alpakatools::CopyToDevice` class temlate must have a +specialization for the host data type (otherwise the compilation will fail). + +As mentioned above, the host data type must be movable but not +copyable (the compilation will fail with copyable types). For example, +the `PortableHostCollection` and `PortableHostObject` class templates +can be used, but Alpaka buffers can not be directly used. + +The host data object should manage memory in +[queue-ordered](#allocating-queue-ordered-host-buffers-in-device-mapped-memory) +way. If not, the object must synchronize the device and the host in +its destructor (although such synchronization is undesirable). +Otherwise, the behavior is undefined. + +### Device-to-host copy + When copying data from a device buffer to a host buffer, _e.g._ with ```c++ alpaka::memcpy(queue, a_host_buffer, a_device_buffer); diff --git a/HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h b/HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h index 8fad8d0729f1a..f98d475185ff3 100644 --- a/HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h +++ b/HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h @@ -32,4 +32,35 @@ namespace cms::alpakatools { struct CopyToDevice; } // namespace cms::alpakatools +// specialize to Alpaka buffer +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" +namespace cms::alpakatools { + // Note: can't do partial specializations along + // - CopyToDevice> + // - CopyToDevicee + // because both host_buffer and alpaka::Buf use trait-style + // indirection that prevents template argument type deduction + template + struct CopyToDevice> { + template + static auto copyAsync(TQueue& queue, host_buffer const& src) { + using TDevice = alpaka::Dev; + auto dst = make_device_buffer(queue); + alpaka::memcpy(queue, dst, src); + return dst; + } + }; + + template + struct CopyToDevice> { + template + static auto copyAsync(TQueue& queue, host_buffer const& src) { + using TDevice = alpaka::Dev; + auto dst = make_device_buffer(queue, alpaka::getExtentProduct(src)); + alpaka::memcpy(queue, dst, src); + return dst; + } + }; +} // namespace cms::alpakatools + #endif diff --git a/HeterogeneousCore/AlpakaInterface/interface/moveToDeviceAsync.h b/HeterogeneousCore/AlpakaInterface/interface/moveToDeviceAsync.h new file mode 100644 index 0000000000000..25aab77685163 --- /dev/null +++ b/HeterogeneousCore/AlpakaInterface/interface/moveToDeviceAsync.h @@ -0,0 +1,47 @@ +#ifndef HeterogeneousCore_AlpakaInterface_interface_moveToDeviceAsync_h +#define HeterogeneousCore_AlpakaInterface_interface_moveToDeviceAsync_h + +#include + +#include + +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h" + +namespace cms::alpakatools { + /** + * This function moves the argument hostObject object to the device + * specified by the queue. Here the "move" means that the argument + * host object must not be used in the caller after this function + * has been called. + * + * The CopyToDevice class template is used to define the returned + * device object that corresponds the argument host object. For host + * device the copying is skipped, and the hostData is returned directly. + * + * The host object must either + * - allocate its memory in queue-ordered way (e.g. using make_host_buffer(TQueue, ...)), or + * - synchronize in its destructor (makes this function synchronous, so not preferred) + * If the host object uses non-queue-order-allocated memory, and + * does not synchronize in its destructor, behavior is undefined. + * + * Note that the host object type is required to be non-copyable. + * This is to avoid easy mistakes with objects that follow copy + * semantics of std::shared_ptr (that includes Alpaka buffers), that + * would allow the source memory buffer to be used via another copy + * during the asynchronous data copy to the device. + */ + template >> + auto moveToDeviceAsync(TQueue& queue, THostObject hostObject) { + static_assert(not(std::is_copy_constructible_v or std::is_copy_assignable_v), + "The data object to be moved to device must not be copyable."); + + if constexpr (std::is_same_v, alpaka_common::DevHost>) { + return hostObject; + } else { + return CopyToDevice::copyAsync(queue, hostObject); + } + } +} // namespace cms::alpakatools + +#endif diff --git a/HeterogeneousCore/AlpakaInterface/test/BuildFile.xml b/HeterogeneousCore/AlpakaInterface/test/BuildFile.xml index 426a750e3d0b9..4c0d1ffff0b27 100644 --- a/HeterogeneousCore/AlpakaInterface/test/BuildFile.xml +++ b/HeterogeneousCore/AlpakaInterface/test/BuildFile.xml @@ -19,6 +19,20 @@ + + + + + + + + + + + + + + diff --git a/HeterogeneousCore/AlpakaInterface/test/alpaka/testCopyBufferToDevice.dev.cc b/HeterogeneousCore/AlpakaInterface/test/alpaka/testCopyBufferToDevice.dev.cc new file mode 100644 index 0000000000000..b4bbb2868412e --- /dev/null +++ b/HeterogeneousCore/AlpakaInterface/test/alpaka/testCopyBufferToDevice.dev.cc @@ -0,0 +1,68 @@ +#include + +#define CATCH_CONFIG_MAIN +#include + +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" +#include "HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h" + +// each test binary is built for a single Alpaka backend +using namespace ALPAKA_ACCELERATOR_NAMESPACE; + +namespace { + struct Dummy { + int x, y, z; + }; +} // namespace + +TEST_CASE("Test CopyToDevice for Alpaka buffers for the " EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE) " backend", + "[" EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE) "]") { + SECTION("Buffer of scalar") { + auto buffer_host = cms::alpakatools::make_host_buffer(); + + // run the test on each device + for (auto const& device : cms::alpakatools::devices()) { + auto queue = Queue(device); + using Copy = cms::alpakatools::CopyToDevice; + auto buffer_device = Copy::copyAsync(queue, buffer_host); + alpaka::wait(queue); + } + } + + SECTION("Buffer of array with static size") { + // The buffer itself is really dynamically sized, even if the + // alpakatools API looks like the array would have static size + constexpr int N = 10; + auto buffer_host = cms::alpakatools::make_host_buffer(); + for (int i = 0; i < N; ++i) { + buffer_host[i] = i; + } + + // run the test on each device + for (auto const& device : cms::alpakatools::devices()) { + auto queue = Queue(device); + using Copy = cms::alpakatools::CopyToDevice; + auto buffer_device = Copy::copyAsync(queue, buffer_host); + alpaka::wait(queue); + REQUIRE(alpaka::getExtentProduct(buffer_device) == N); + } + } + + SECTION("Buffer of array with dynamic size") { + constexpr int N = 10; + auto buffer_host = cms::alpakatools::make_host_buffer(N); + for (int i = 0; i < N; ++i) { + buffer_host[i] = i; + } + + // run the test on each device + for (auto const& device : cms::alpakatools::devices()) { + auto queue = Queue(device); + using Copy = cms::alpakatools::CopyToDevice; + auto buffer_device = Copy::copyAsync(queue, buffer_host); + alpaka::wait(queue); + REQUIRE(alpaka::getExtentProduct(buffer_device) == N); + } + } +} diff --git a/HeterogeneousCore/AlpakaInterface/test/alpaka/testMoveToDeviceAsync.dev.cc b/HeterogeneousCore/AlpakaInterface/test/alpaka/testMoveToDeviceAsync.dev.cc new file mode 100644 index 0000000000000..1e3b7f80b318f --- /dev/null +++ b/HeterogeneousCore/AlpakaInterface/test/alpaka/testMoveToDeviceAsync.dev.cc @@ -0,0 +1,121 @@ +#include +#include + +#include + +#define CATCH_CONFIG_MAIN +#include + +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" +#include "HeterogeneousCore/AlpakaInterface/interface/moveToDeviceAsync.h" +#include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" + +// each test binary is built for a single Alpaka backend +using namespace ALPAKA_ACCELERATOR_NAMESPACE; + +namespace { + template + class TestHostBuffer { + public: + using Buffer = cms::alpakatools::host_buffer; + using ConstBuffer = cms::alpakatools::const_host_buffer; + + template + TestHostBuffer(TQueue const& queue, int size) : buffer_(cms::alpakatools::make_host_buffer(queue, size)) {} + + TestHostBuffer(TestHostBuffer const&) = delete; + TestHostBuffer& operator=(TestHostBuffer const&) = delete; + ; + TestHostBuffer(TestHostBuffer&& other) { + buffer_ = std::move(*other.buffer_); + other.buffer_.reset(); + } + TestHostBuffer& operator=(TestHostBuffer& other) { + buffer_ = std::move(*other.buffer_); + other.buffer_.reset(); + return this; + } + + bool has_value() const { return buffer_.has_value(); } + + T* data() { return buffer_->data(); } + + Buffer buffer() { return *buffer_; } + ConstBuffer buffer() const { return *buffer_; } + + private: + std::optional buffer_; + }; + + template + class TestDeviceBuffer { + public: + using Buffer = cms::alpakatools::device_buffer; + + template + TestDeviceBuffer(TQueue const& queue, int size) : buffer_(cms::alpakatools::make_device_buffer(queue, size)) {} + + T* data() { return buffer_.data(); } + + Buffer buffer() { return buffer_; } + + private: + Buffer buffer_; + }; + + template + void fillBuffer(TestHostBuffer& buffer) { + for (int i = 0, size = alpaka::getExtentProduct(buffer.buffer()); i < size; ++i) { + buffer.data()[i] = i; + } + } +} // namespace + +namespace cms::alpakatools { + template + struct CopyToDevice> { + template + static auto copyAsync(TQueue& queue, TestHostBuffer const& hostBuffer) { + TestDeviceBuffer> deviceBuffer(queue, alpaka::getExtentProduct(hostBuffer.buffer())); + alpaka::memcpy(queue, deviceBuffer.buffer(), hostBuffer.buffer()); + return deviceBuffer; + } + }; +} // namespace cms::alpakatools + +TEST_CASE("Test moveToDeviceAsync() for the " EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE) " backend", + "[" EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE) "]") { + // run the test on each device + for (auto const& device : cms::alpakatools::devices()) { + auto queue = Queue(device); + constexpr int size = 32; + TestHostBuffer buffer_host(queue, size); + fillBuffer(buffer_host); + auto const* ptr_host = buffer_host.data(); + + auto buffer_device = cms::alpakatools::moveToDeviceAsync(queue, std::move(buffer_host)); + REQUIRE(not buffer_host.has_value()); + if constexpr (std::is_same_v) { + REQUIRE(buffer_device.data() == ptr_host); + } else { + REQUIRE(buffer_device.data() != ptr_host); + } + alpaka::exec( + queue, + cms::alpakatools::make_workdiv(1, size), + [] ALPAKA_FN_ACC(Acc1D const& acc, int const* data) { + for (int i : cms::alpakatools::uniform_elements(acc)) { + assert(data[i] == i); + } + }, + buffer_device.data()); + alpaka::wait(queue); + + /* the following should not compile + auto buffer2_host = cms::alpakatools::make_host_buffer(); + auto buffer2_device = cms::alpakatools::moveToDeviceAsync(queue, std::move(buffer2_host)); + */ + } +} diff --git a/HeterogeneousCore/AlpakaTest/BuildFile.xml b/HeterogeneousCore/AlpakaTest/BuildFile.xml index 022cd5ecd3e6f..eee6052d26e2d 100644 --- a/HeterogeneousCore/AlpakaTest/BuildFile.xml +++ b/HeterogeneousCore/AlpakaTest/BuildFile.xml @@ -1,14 +1,6 @@ - - diff --git a/HeterogeneousCore/AlpakaTest/plugins/BuildFile.xml b/HeterogeneousCore/AlpakaTest/plugins/BuildFile.xml index a4058755409f7..53652048838f7 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/BuildFile.xml +++ b/HeterogeneousCore/AlpakaTest/plugins/BuildFile.xml @@ -19,6 +19,7 @@ The dependency on "DataFormats/PortableTestObjects" automatically expands to include the host-only library (if it exists) and the corresponding Alpaka libraries (if they exist) --> + diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.dev.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.dev.cc index 3afbc3d9d8103..53d7318c907df 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.dev.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.dev.cc @@ -176,6 +176,23 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { output[i] = {x, input[i].y(), input[i].z(), input[i].id(), input[i].flags(), input[i].m()}; } } + + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + portabletest::TestDeviceCollection::ConstView input, + TestAlgo::UpdateInfo const* updateInfo, + portabletest::TestDeviceCollection::View output) const { + // set this only once in the whole kernel grid + if (once_per_grid(acc)) { + output.r() = input.r(); + } + + // make a strided loop over the kernel grid, covering up to "size" elements + for (int32_t i : uniform_elements(acc, output.metadata().size())) { + double x = input[i].x(); + x += updateInfo->x; + output[i] = {x, input[i].y(), input[i].z(), input[i].id(), input[i].flags(), input[i].m()}; + } + } }; class TestAlgoKernelUpdateMulti2 { @@ -209,6 +226,31 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { output2[i] = {x2, input2[i].y2(), input2[i].z2(), input2[i].id2(), input2[i].m2()}; } } + + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + portabletest::TestSoA::ConstView input, + portabletest::TestSoA2::ConstView input2, + TestAlgo::UpdateInfo const* updateInfo, + portabletest::TestSoA::View output, + portabletest::TestSoA2::View output2) const { + // set this only once in the whole kernel grid + if (once_per_grid(acc)) { + output.r() = input.r(); + output2.r2() = input2.r2(); + } + + // make a strided loop over the kernel grid, covering up to "size" elements + for (int32_t i : uniform_elements(acc, output.metadata().size())) { + double x = input[i].x(); + x += updateInfo->x; + output[i] = {x, input[i].y(), input[i].z(), input[i].id(), input[i].flags(), input[i].m()}; + } + for (int32_t i : uniform_elements(acc, output2.metadata().size())) { + double x2 = input2[i].x2(); + x2 += updateInfo->x; + output2[i] = {x2, input2[i].y2(), input2[i].z2(), input2[i].id2(), input2[i].m2()}; + } + } }; class TestAlgoKernelUpdateMulti3 { @@ -254,6 +296,41 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { output3[i] = {x3, input3[i].y3(), input3[i].z3(), input3[i].id3(), input3[i].m3()}; } } + + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + portabletest::TestSoA::ConstView input, + portabletest::TestSoA2::ConstView input2, + portabletest::TestSoA3::ConstView input3, + TestAlgo::UpdateInfo const* updateInfo, + portabletest::TestSoA::View output, + portabletest::TestSoA2::View output2, + portabletest::TestSoA3::View output3) const { + // set this only once in the whole kernel grid + if (once_per_grid(acc)) { + output.r() = input.r(); + output2.r2() = input2.r2(); + output3.r3() = input3.r3(); + } + + // make a strided loop over the kernel grid, covering up to "size" elements + for (int32_t i : uniform_elements(acc, output.metadata().size())) { + double x = input[i].x(); + x += updateInfo->x; + if (0 == i) + printf("Setting x[0] to %f\n", x); + output[i] = {x, input[i].y(), input[i].z(), input[i].id(), input[i].flags(), input[i].m()}; + } + for (int32_t i : uniform_elements(acc, output2.metadata().size())) { + double x2 = input2[i].x2(); + x2 += updateInfo->x; + output2[i] = {x2, input2[i].y2(), input2[i].z2(), input2[i].id2(), input2[i].m2()}; + } + for (int32_t i : uniform_elements(acc, output3.metadata().size())) { + double x3 = input3[i].x3(); + x3 += updateInfo->x; + output3[i] = {x3, input3[i].y3(), input3[i].z3(), input3[i].id3(), input3[i].m3()}; + } + } }; portabletest::TestDeviceCollection TestAlgo::update(Queue& queue, @@ -337,6 +414,87 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { return collection; } + portabletest::TestDeviceCollection TestAlgo::update(Queue& queue, + portabletest::TestDeviceCollection const& input, + UpdateInfo const* d_updateInfo) const { + portabletest::TestDeviceCollection collection{input->metadata().size(), queue}; + + // use 64 items per group (this value is arbitrary, but it's a reasonable starting point) + uint32_t items = 64; + + // use as many groups as needed to cover the whole problem + uint32_t groups = divide_up_by(collection->metadata().size(), items); + + // map items to + // - threads with a single element per thread on a GPU backend + // - elements within a single thread on a CPU backend + auto workDiv = make_workdiv(groups, items); + + alpaka::exec(queue, workDiv, TestAlgoKernelUpdate{}, input.view(), d_updateInfo, collection.view()); + + return collection; + } + + portabletest::TestDeviceMultiCollection2 TestAlgo::updateMulti2(Queue& queue, + portabletest::TestDeviceMultiCollection2 const& input, + UpdateInfo const* d_updateInfo) const { + portabletest::TestDeviceMultiCollection2 collection{input.sizes(), queue}; + + // use 64 items per group (this value is arbitrary, but it's a reasonable starting point) + uint32_t items = 64; + + // use as many groups as needed to cover the whole problem + auto sizes = collection.sizes(); + uint32_t groups = divide_up_by(*std::max_element(sizes.begin(), sizes.end()), items); + + // map items to + // - threads with a single element per thread on a GPU backend + // - elements within a single thread on a CPU backend + auto workDiv = make_workdiv(groups, items); + + alpaka::exec(queue, + workDiv, + TestAlgoKernelUpdateMulti2{}, + input.view(), + input.view(), + d_updateInfo, + collection.view(), + collection.view()); + + return collection; + } + + portabletest::TestDeviceMultiCollection3 TestAlgo::updateMulti3(Queue& queue, + portabletest::TestDeviceMultiCollection3 const& input, + UpdateInfo const* d_updateInfo) const { + portabletest::TestDeviceMultiCollection3 collection{input.sizes(), queue}; + + // use 64 items per group (this value is arbitrary, but it's a reasonable starting point) + uint32_t items = 64; + + // use as many groups as needed to cover the whole problem + auto sizes = collection.sizes(); + uint32_t groups = divide_up_by(*std::max_element(sizes.begin(), sizes.end()), items); + + // map items to + // - threads with a single element per thread on a GPU backend + // - elements within a single thread on a CPU backend + auto workDiv = make_workdiv(groups, items); + + alpaka::exec(queue, + workDiv, + TestAlgoKernelUpdateMulti3{}, + input.view(), + input.view(), + input.view(), + d_updateInfo, + collection.view(), + collection.view(), + collection.view()); + + return collection; + } + class TestZeroCollectionKernel { public: template >> diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.h b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.h index f943eacddd1c3..dbebf60e898b5 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.h +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlgo.h @@ -17,6 +17,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { portabletest::TestDeviceCollection update(Queue& queue, portabletest::TestDeviceCollection const& input, AlpakaESTestDataEDevice const& esData) const; + portabletest::TestDeviceMultiCollection2 updateMulti2(Queue& queue, portabletest::TestDeviceMultiCollection2 const& input, AlpakaESTestDataEDevice const& esData) const; @@ -24,6 +25,19 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { portabletest::TestDeviceMultiCollection3 const& input, AlpakaESTestDataEDevice const& esData) const; + struct UpdateInfo { + int x, y, z; + }; + portabletest::TestDeviceCollection update(Queue& queue, + portabletest::TestDeviceCollection const& input, + UpdateInfo const* d_updateInfo) const; + portabletest::TestDeviceMultiCollection2 updateMulti2(Queue& queue, + portabletest::TestDeviceMultiCollection2 const& input, + UpdateInfo const* d_updateInfo) const; + portabletest::TestDeviceMultiCollection3 updateMulti3(Queue& queue, + portabletest::TestDeviceMultiCollection3 const& input, + UpdateInfo const* d_updateInfo) const; + void fillMulti2(Queue& queue, portabletest::TestDeviceMultiCollection2& collection, double xvalue = 0.) const; void fillMulti3(Queue& queue, portabletest::TestDeviceMultiCollection3& collection, double xvalue = 0.) const; diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducer.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducer.cc index 19340231732b8..58dac53421a4e 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducer.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducer.cc @@ -21,7 +21,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaGlobalProducer : public global::EDProducer<> { public: TestAlpakaGlobalProducer(edm::ParameterSet const& config) - : esToken_(esConsumes(config.getParameter("eventSetupSource"))), + : EDProducer<>(config), + esToken_(esConsumes(config.getParameter("eventSetupSource"))), esMultiToken_(esConsumes(config.getParameter("eventSetupSourceMulti"))), deviceToken_{produces()}, deviceTokenMulti2_{produces()}, diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerCopyToDeviceCache.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerCopyToDeviceCache.cc new file mode 100644 index 0000000000000..8d8ea5b7ac181 --- /dev/null +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerCopyToDeviceCache.cc @@ -0,0 +1,83 @@ +#include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceCollection.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h" +#include "HeterogeneousCore/AlpakaCore/interface/CopyToDeviceCache.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +#include "TestAlgo.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + /** + * This class demonstrates a global EDProducer that + * - uses a CopyToDeviceCache to copy some host-side data to the devices of the backend. + * - produces a device EDProduct (that can get transferred to host automatically) + */ + class TestAlpakaGlobalProducerCopyToDeviceCache : public global::EDProducer<> { + public: + TestAlpakaGlobalProducerCopyToDeviceCache(edm::ParameterSet const& config) + : getToken_(consumes(config.getParameter("source"))), + getTokenMulti2_(consumes(config.getParameter("source"))), + getTokenMulti3_(consumes(config.getParameter("source"))), + putToken_{produces()}, + putTokenMulti2_{produces()}, + putTokenMulti3_{produces()}, + // create host-side object that gets implicitly copied to all devices of the backend + deviceCache_{[&config]() { + auto buffer = cms::alpakatools::make_host_buffer(); + *buffer = TestAlgo::UpdateInfo{config.getParameter("x"), + config.getParameter("y"), + config.getParameter("z")}; + return buffer; + }()} {} + + void produce(edm::StreamID, device::Event& iEvent, device::EventSetup const& iSetup) const override { + auto const& input = iEvent.get(getToken_); + auto const& inputMulti2 = iEvent.get(getTokenMulti2_); + auto const& inputMulti3 = iEvent.get(getTokenMulti3_); + + // get the object corresponding to the Device the Event is being processed on + auto const& infoBuffer = deviceCache_.get(iEvent.queue()); + + // run the algorithm, potentially asynchronously + auto deviceProduct = algo_.update(iEvent.queue(), input, infoBuffer.data()); + auto deviceProductMulti2 = algo_.updateMulti2(iEvent.queue(), inputMulti2, infoBuffer.data()); + auto deviceProductMulti3 = algo_.updateMulti3(iEvent.queue(), inputMulti3, infoBuffer.data()); + + iEvent.emplace(putToken_, std::move(deviceProduct)); + iEvent.emplace(putTokenMulti2_, std::move(deviceProductMulti2)); + iEvent.emplace(putTokenMulti3_, std::move(deviceProductMulti3)); + } + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + + desc.add("source", edm::InputTag{}); + desc.add("x", 0); + desc.add("y", 1); + desc.add("z", 2); + + descriptions.addWithDefaultLabel(desc); + } + + private: + const device::EDGetToken getToken_; + const device::EDGetToken getTokenMulti2_; + const device::EDGetToken getTokenMulti3_; + const device::EDPutToken putToken_; + const device::EDPutToken putTokenMulti2_; + const device::EDPutToken putTokenMulti3_; + + // implementation of the algorithm + TestAlgo algo_; + + cms::alpakatools::CopyToDeviceCache> deviceCache_; + }; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/MakerMacros.h" +DEFINE_FWK_ALPAKA_MODULE(TestAlpakaGlobalProducerCopyToDeviceCache); diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerE.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerE.cc index 253b8dcad8988..8012dac2b20a2 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerE.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerE.cc @@ -22,7 +22,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaGlobalProducerE : public global::EDProducer<> { public: TestAlpakaGlobalProducerE(edm::ParameterSet const& config) - : esToken_(esConsumes(config.getParameter("eventSetupSource"))), + : EDProducer<>(config), + esToken_(esConsumes(config.getParameter("eventSetupSource"))), getToken_(consumes(config.getParameter("source"))), getTokenMulti2_(consumes(config.getParameter("source"))), getTokenMulti3_(consumes(config.getParameter("source"))), diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerMoveToDeviceCache.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerMoveToDeviceCache.cc new file mode 100644 index 0000000000000..6c8fe100f0ec5 --- /dev/null +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerMoveToDeviceCache.cc @@ -0,0 +1,82 @@ +#include "DataFormats/Portable/interface/PortableObject.h" +#include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceCollection.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h" +#include "HeterogeneousCore/AlpakaCore/interface/MoveToDeviceCache.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +#include "TestAlgo.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + /** + * This class demonstrates a global EDProducer that + * - uses a MoveToDeviceCache to copy some host-side data to the devices of the backend. + * - produces a device EDProduct (that can get transferred to host automatically) + */ + class TestAlpakaGlobalProducerMoveToDeviceCache : public global::EDProducer<> { + public: + TestAlpakaGlobalProducerMoveToDeviceCache(edm::ParameterSet const& config) + : getToken_(consumes(config.getParameter("source"))), + getTokenMulti2_(consumes(config.getParameter("source"))), + getTokenMulti3_(consumes(config.getParameter("source"))), + putToken_{produces()}, + putTokenMulti2_{produces()}, + putTokenMulti3_{produces()}, + // create host-side object that gets implicitly copied to all devices of the backend + deviceCache_{ + PortableHostObject{cms::alpakatools::host(), + TestAlgo::UpdateInfo{config.getParameter("x"), + config.getParameter("y"), + config.getParameter("z")}}} {} + + void produce(edm::StreamID, device::Event& iEvent, device::EventSetup const& iSetup) const override { + auto const& input = iEvent.get(getToken_); + auto const& inputMulti2 = iEvent.get(getTokenMulti2_); + auto const& inputMulti3 = iEvent.get(getTokenMulti3_); + + // get the object corresponding to the Device the Event is being processed on + auto const& infoObj = deviceCache_.get(iEvent.queue()); + + // run the algorithm, potentially asynchronously + auto deviceProduct = algo_.update(iEvent.queue(), input, infoObj.data()); + auto deviceProductMulti2 = algo_.updateMulti2(iEvent.queue(), inputMulti2, infoObj.data()); + auto deviceProductMulti3 = algo_.updateMulti3(iEvent.queue(), inputMulti3, infoObj.data()); + + iEvent.emplace(putToken_, std::move(deviceProduct)); + iEvent.emplace(putTokenMulti2_, std::move(deviceProductMulti2)); + iEvent.emplace(putTokenMulti3_, std::move(deviceProductMulti3)); + } + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + + desc.add("source", edm::InputTag{}); + desc.add("x", 0); + desc.add("y", 1); + desc.add("z", 2); + + descriptions.addWithDefaultLabel(desc); + } + + private: + const device::EDGetToken getToken_; + const device::EDGetToken getTokenMulti2_; + const device::EDGetToken getTokenMulti3_; + const device::EDPutToken putToken_; + const device::EDPutToken putTokenMulti2_; + const device::EDPutToken putTokenMulti3_; + + // implementation of the algorithm + TestAlgo algo_; + + cms::alpakatools::MoveToDeviceCache> deviceCache_; + }; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/MakerMacros.h" +DEFINE_FWK_ALPAKA_MODULE(TestAlpakaGlobalProducerMoveToDeviceCache); diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNoOutput.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNoOutput.cc index d7d361b6ab8d1..37f219413a081 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNoOutput.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNoOutput.cc @@ -16,7 +16,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaGlobalProducerNoOutput : public global::EDProducer<> { public: TestAlpakaGlobalProducerNoOutput(edm::ParameterSet const& config) - : getToken_(consumes(config.getParameter("source"))) {} + : EDProducer<>(config), getToken_(consumes(config.getParameter("source"))) {} void produce(edm::StreamID, device::Event& iEvent, device::EventSetup const& iSetup) const override { [[maybe_unused]] auto const& input = iEvent.get(getToken_); diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNullES.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNullES.cc index d8ae5ac5f366e..42a08d0e8e81b 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNullES.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerNullES.cc @@ -15,7 +15,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaGlobalProducerNullES : public global::EDProducer<> { public: TestAlpakaGlobalProducerNullES(edm::ParameterSet const& config) - : esTokenA_(esConsumes(config.getParameter("eventSetupSource"))), + : EDProducer<>(config), + esTokenA_(esConsumes(config.getParameter("eventSetupSource"))), esTokenC_(esConsumes(config.getParameter("eventSetupSource"))), esTokenCNotExist_(esConsumes(edm::ESInputTag("", "doesNotExist"))) {} diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerOffset.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerOffset.cc index 2e2637d050fe0..689da8e77467d 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerOffset.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerOffset.cc @@ -22,7 +22,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaGlobalProducerOffset : public global::EDProducer<> { public: TestAlpakaGlobalProducerOffset(edm::ParameterSet const& config) - : esToken_(esConsumes()), + : EDProducer<>(config), + esToken_(esConsumes()), deviceToken_{produces()}, x_(config.getParameter("xvalue").getParameter( EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE))) {} diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerWithPtr.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerWithPtr.cc index e09bccb50a712..ad6fc518ea465 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerWithPtr.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaGlobalProducerWithPtr.cc @@ -19,7 +19,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaGlobalProducerWithPtr : public global::EDProducer<> { public: TestAlpakaGlobalProducerWithPtr(edm::ParameterSet const& config) - : token_{produces()}, size_{config.getParameter("size")} {} + : EDProducer<>(config), token_{produces()}, size_{config.getParameter("size")} {} static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaProducer.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaProducer.cc index 27013ffb72c7a..3f29ff8b88b9f 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaProducer.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaProducer.cc @@ -19,7 +19,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaProducer : public global::EDProducer<> { public: TestAlpakaProducer(edm::ParameterSet const& config) - : objectToken_{produces()}, + : EDProducer<>(config), + objectToken_{produces()}, collectionToken_{produces()}, deviceTokenMulti2_{produces()}, deviceTokenMulti3_{produces()}, diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamProducer.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamProducer.cc index 74cd08e39f56a..f5998ed980ba4 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamProducer.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamProducer.cc @@ -24,7 +24,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaStreamProducer : public stream::EDProducer<> { public: TestAlpakaStreamProducer(edm::ParameterSet const& config) - : size_{config.getParameter("size").getParameter( + : EDProducer<>(config), + size_{config.getParameter("size").getParameter( EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE))}, size2_{config.getParameter("size").getParameter( EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE))}, diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducer.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducer.cc index 613c31498746a..3badb1bb75b45 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducer.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducer.cc @@ -25,7 +25,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaStreamSynchronizingProducer : public stream::SynchronizingEDProducer<> { public: TestAlpakaStreamSynchronizingProducer(edm::ParameterSet const& iConfig) - : esTokenDevice_(esConsumes()), + : SynchronizingEDProducer<>(iConfig), + esTokenDevice_(esConsumes()), putToken_{produces()}, putTokenMulti2_{produces()}, putTokenMulti3_{produces()}, diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducerToDevice.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducerToDevice.cc index 913636f686805..67a972a7b9163 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducerToDevice.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestAlpakaStreamSynchronizingProducerToDevice.cc @@ -19,7 +19,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class TestAlpakaStreamSynchronizingProducerToDevice : public stream::SynchronizingEDProducer<> { public: TestAlpakaStreamSynchronizingProducerToDevice(edm::ParameterSet const& iConfig) - : putToken_{produces()}, + : SynchronizingEDProducer<>(iConfig), + putToken_{produces()}, size_{iConfig.getParameter("size").getParameter( EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE))} {} diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.cc b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.cc index aa4c26e4c93bd..8de494e37430f 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.cc +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.cc @@ -23,8 +23,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { hostProductMulti2_ = portabletest::TestHostMultiCollection2{deviceProductMulti2.sizes(), iEvent.queue()}; hostProductMulti3_ = portabletest::TestHostMultiCollection3{deviceProductMulti3.sizes(), iEvent.queue()}; - alpaka::memcpy(iEvent.queue(), hostProduct_.buffer(), deviceProduct.const_buffer()); - alpaka::memcpy(iEvent.queue(), hostProductMulti2_.buffer(), deviceProductMulti2.const_buffer()); - alpaka::memcpy(iEvent.queue(), hostProductMulti3_.buffer(), deviceProductMulti3.const_buffer()); + alpaka::memcpy(iEvent.queue(), hostProduct_->buffer(), deviceProduct.const_buffer()); + alpaka::memcpy(iEvent.queue(), hostProductMulti2_->buffer(), deviceProductMulti2.const_buffer()); + alpaka::memcpy(iEvent.queue(), hostProductMulti3_->buffer(), deviceProductMulti3.const_buffer()); } } // namespace ALPAKA_ACCELERATOR_NAMESPACE diff --git a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.h b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.h index d592fb40b4210..c369e78fc639a 100644 --- a/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.h +++ b/HeterogeneousCore/AlpakaTest/plugins/alpaka/TestHelperClass.h @@ -1,6 +1,8 @@ #ifndef HeterogeneousCore_AlpakaTest_plugins_alpaka_TestHelperClass_h #define HeterogeneousCore_AlpakaTest_plugins_alpaka_TestHelperClass_h +#include + #include "DataFormats/PortableTestObjects/interface/TestHostCollection.h" #include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceCollection.h" #include "FWCore/Framework/interface/ConsumesCollector.h" @@ -23,9 +25,23 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { void makeAsync(device::Event const& iEvent, device::EventSetup const& iSetup); - portabletest::TestHostCollection moveFrom() { return std::move(hostProduct_); } - portabletest::TestHostMultiCollection2 moveFromMulti2() { return std::move(hostProductMulti2_); } - portabletest::TestHostMultiCollection3 moveFromMulti3() { return std::move(hostProductMulti3_); } + portabletest::TestHostCollection moveFrom() { + auto product = std::move(*hostProduct_); + hostProduct_.reset(); + return product; + } + + portabletest::TestHostMultiCollection2 moveFromMulti2() { + auto product = std::move(*hostProductMulti2_); + hostProductMulti2_.reset(); + return product; + } + + portabletest::TestHostMultiCollection3 moveFromMulti3() { + auto product = std::move(*hostProductMulti3_); + hostProductMulti3_.reset(); + return product; + } private: const device::EDGetToken getToken_; @@ -35,9 +51,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { const device::ESGetToken esTokenDevice_; // hold the output product between acquire() and produce() - portabletest::TestHostCollection hostProduct_; - portabletest::TestHostMultiCollection2 hostProductMulti2_; - portabletest::TestHostMultiCollection3 hostProductMulti3_; + std::optional hostProduct_; + std::optional hostProductMulti2_; + std::optional hostProductMulti3_; }; } // namespace ALPAKA_ACCELERATOR_NAMESPACE diff --git a/HeterogeneousCore/AlpakaTest/test/testAlpakaModules.sh b/HeterogeneousCore/AlpakaTest/test/testAlpakaModules.sh index e0e6c8f1db96d..b3f8e62488930 100755 --- a/HeterogeneousCore/AlpakaTest/test/testAlpakaModules.sh +++ b/HeterogeneousCore/AlpakaTest/test/testAlpakaModules.sh @@ -59,6 +59,8 @@ function runForGPU { runSuccess "--processAcceleratorBackend=$BACKEND --moduleBackend=serial_sync --expectBackend=serial_sync" runSuccess "--processAcceleratorBackend=serial_sync --moduleBackend=$BACKEND --expectBackend=$BACKEND" + runSuccess "--moduleSynchronize --expectBackend=$BACKEND" + runSuccess "--processAcceleratorSynchronize --expectBackend=$BACKEND" runFailure "--accelerators=$ACCELERATOR --processAcceleratorBackend=serial_sync --expectBackend=serial_sync" runFailure "--accelerators=$ACCELERATOR --moduleBackend=serial_sync --expectBackend=serial_sync" @@ -78,6 +80,8 @@ runSuccess "--moduleBackend=serial_sync --expectBackend=serial_sync" if [ "${TARGET}" == "cpu" ]; then runSuccess "--expectBackend=serial_sync" + runSuccess "--moduleSynchronize --expectBackend=serial_sync" + runSuccess "--processAcceleratorSynchronize --expectBackend=serial_sync" runFailure "--accelerators=gpu-nvidia --expectBackend=cuda_async" runFailure "--processAcceleratorBackend=cuda_async --expectBackend=cuda_async" diff --git a/HeterogeneousCore/AlpakaTest/test/testAlpakaModules_cfg.py b/HeterogeneousCore/AlpakaTest/test/testAlpakaModules_cfg.py index 62279b26b3010..42028d9f9ddc3 100644 --- a/HeterogeneousCore/AlpakaTest/test/testAlpakaModules_cfg.py +++ b/HeterogeneousCore/AlpakaTest/test/testAlpakaModules_cfg.py @@ -8,6 +8,8 @@ parser.add_argument("--moduleBackend", type=str, help="Set Alpaka backend via module instances", default="") parser.add_argument("--processAcceleratorBackend", type=str, help="Set Alpaka backend via ProcessAcceleratorAlpaka", default="") parser.add_argument("--expectBackend", type=str, help="Expect this backend to run") +parser.add_argument("--moduleSynchronize", action="store_true", help="Set synchronize parameter via module instances", default="") +parser.add_argument("--processAcceleratorSynchronize", action="store_true", help="Set synchronize parameter via ProcessAcceleratorAlpaka", default="") parser.add_argument("--run", type=int, help="Run number (default: 1)", default=1) args = parser.parse_args() @@ -78,6 +80,18 @@ process.alpakaGlobalProducerE = cms.EDProducer("TestAlpakaGlobalProducerE@alpaka", source = cms.InputTag("alpakaGlobalProducer") ) +process.alpakaGlobalProducerCopyToDeviceCache = cms.EDProducer("TestAlpakaGlobalProducerCopyToDeviceCache@alpaka", + source = cms.InputTag("alpakaGlobalProducer"), + x = cms.int32(3), + y = cms.int32(4), + z = cms.int32(5), +) +process.alpakaGlobalProducerMoveToDeviceCache = cms.EDProducer("TestAlpakaGlobalProducerMoveToDeviceCache@alpaka", + source = cms.InputTag("alpakaGlobalProducer"), + x = cms.int32(32), + y = cms.int32(42), + z = cms.int32(52), +) process.alpakaStreamProducer = cms.EDProducer("TestAlpakaStreamProducer@alpaka", source = cms.InputTag("intProduct"), eventSetupSource = cms.ESInputTag("alpakaESProducerB", "explicitLabel"), @@ -122,6 +136,14 @@ source = "alpakaGlobalProducerE", expectXvalues = cms.vdouble([(i%2)*10+1 + abs(27)+i*2 for i in range(0,5)] + [0]*5) ) +process.alpakaGlobalConsumerCopyToDeviceCache = process.alpakaGlobalConsumer.clone( + source = "alpakaGlobalProducerCopyToDeviceCache", + expectXvalues = cms.vdouble([3]*10) +) +process.alpakaGlobalConsumerMoveToDeviceCache = process.alpakaGlobalConsumer.clone( + source = "alpakaGlobalProducerMoveToDeviceCache", + expectXvalues = cms.vdouble([32]*10) +) process.alpakaStreamConsumer = cms.EDAnalyzer("TestAlpakaAnalyzer", source = cms.InputTag("alpakaStreamProducer"), expectSize = cms.int32(5), @@ -148,19 +170,21 @@ eventSetupSource = cms.ESInputTag("", "null") ) +_postfixes = ["ESProducerA", "ESProducerB", "ESProducerC", "ESProducerD", "ESProducerE", "ESProducerAMulti", + "ESProducerNull", + "GlobalProducer", "GlobalProducerE", + "GlobalProducerCopyToDeviceCache", "GlobalProducerMoveToDeviceCache", + "StreamProducer", "StreamInstanceProducer", + "StreamSynchronizingProducer", "StreamSynchronizingProducerToDevice", + "GlobalDeviceConsumer", "StreamDeviceConsumer", + "StreamSynchronizingProducerToDeviceDeviceConsumer1", "StreamSynchronizingProducerToDeviceDeviceConsumer2", + "NullESConsumer"] +alpakaModules = ["alpaka"+x for x in _postfixes] if args.processAcceleratorBackend != "": process.ProcessAcceleratorAlpaka.setBackend(args.processAcceleratorBackend) if args.moduleBackend != "": - for name in ["ESProducerA", "ESProducerB", "ESProducerC", "ESProducerD", "ESProducerE", "ESProducerAMulti", - "ESProducerNull", - "GlobalProducer", "GlobalProducerE", - "StreamProducer", "StreamInstanceProducer", - "StreamSynchronizingProducer", "StreamSynchronizingProducerToDevice", - "GlobalDeviceConsumer", "StreamDeviceConsumer", - "StreamSynchronizingProducerToDeviceDeviceConsumer1", "StreamSynchronizingProducerToDeviceDeviceConsumer2", - "NullESConsumer"]: - mod = getattr(process, "alpaka"+name) - mod.alpaka = cms.untracked.PSet(backend = cms.untracked.string(args.moduleBackend)) + for name in alpakaModules: + getattr(process, name).alpaka = cms.untracked.PSet(backend = cms.untracked.string(args.moduleBackend)) if args.expectBackend == "cuda_async": def setExpect(m, size): m.expectSize = size @@ -168,6 +192,10 @@ def setExpect(m, size): setExpect(process.alpakaGlobalConsumer, size=20) setExpect(process.alpakaGlobalConsumerE, size=20) process.alpakaGlobalConsumerE.expectXvalues.extend([0]*(20-10)) + setExpect(process.alpakaGlobalConsumerCopyToDeviceCache, size=20) + process.alpakaGlobalConsumerCopyToDeviceCache.expectXvalues = [3]*20 + setExpect(process.alpakaGlobalConsumerMoveToDeviceCache, size=20) + process.alpakaGlobalConsumerMoveToDeviceCache.expectXvalues = [32]*20 setExpect(process.alpakaStreamConsumer, size=25) setExpect(process.alpakaStreamInstanceConsumer, size=36) setExpect(process.alpakaStreamSynchronizingConsumer, size=20) @@ -178,10 +206,24 @@ def setExpect(m, size): setExpect(process.alpakaGlobalConsumer, size = 30) setExpect(process.alpakaGlobalConsumerE, size = 30) process.alpakaGlobalConsumerE.expectXvalues.extend([0]*(30-10)) + setExpect(process.alpakaGlobalConsumerCopyToDeviceCache, size = 30) + process.alpakaGlobalConsumerCopyToDeviceCache.expectXvalues = [3]*30 + setExpect(process.alpakaGlobalConsumerMoveToDeviceCache, size = 30) + process.alpakaGlobalConsumerMoveToDeviceCache.expectXvalues = [32]*30 setExpect(process.alpakaStreamConsumer, size = 125) setExpect(process.alpakaStreamInstanceConsumer, size = 216) setExpect(process.alpakaStreamSynchronizingConsumer, size = 30) +if args.processAcceleratorSynchronize: + process.ProcessAcceleratorAlpaka.setSynchronize(True) +if args.moduleSynchronize: + for name in alpakaModules: + mod = getattr(process, name) + if hasattr(mod, "alpaka"): + mod.alpaka = dict(synchronize = cms.untracked.bool(True)) + else: + mod.alpaka = cms.untracked.PSet(synchronize = cms.untracked.bool(True)) + process.output = cms.OutputModule('PoolOutputModule', fileName = cms.untracked.string('testAlpaka.root'), outputCommands = cms.untracked.vstring( @@ -196,6 +238,8 @@ def setExpect(m, size): process.intProduct, process.alpakaGlobalProducer, process.alpakaGlobalProducerE, + process.alpakaGlobalProducerCopyToDeviceCache, + process.alpakaGlobalProducerMoveToDeviceCache, process.alpakaStreamProducer, process.alpakaStreamInstanceProducer, process.alpakaStreamSynchronizingProducer, @@ -205,6 +249,8 @@ def setExpect(m, size): process.alpakaGlobalConsumer+ process.alpakaGlobalDeviceConsumer+ process.alpakaGlobalConsumerE+ + process.alpakaGlobalConsumerCopyToDeviceCache+ + process.alpakaGlobalConsumerMoveToDeviceCache+ process.alpakaStreamConsumer+ process.alpakaStreamDeviceConsumer+ process.alpakaStreamInstanceConsumer+ diff --git a/HeterogeneousCore/CUDAServices/scripts/cudaPreallocate.py b/HeterogeneousCore/CUDAServices/scripts/cudaPreallocate.py index 462b4f528ecde..8777dabe0af64 100755 --- a/HeterogeneousCore/CUDAServices/scripts/cudaPreallocate.py +++ b/HeterogeneousCore/CUDAServices/scripts/cudaPreallocate.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import re import sys import argparse diff --git a/HeterogeneousCore/SonicTriton/interface/TritonClient.h b/HeterogeneousCore/SonicTriton/interface/TritonClient.h index 4661c3e57c54c..df8f9b559427c 100644 --- a/HeterogeneousCore/SonicTriton/interface/TritonClient.h +++ b/HeterogeneousCore/SonicTriton/interface/TritonClient.h @@ -3,6 +3,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ServiceRegistry/interface/ServiceToken.h" #include "HeterogeneousCore/SonicCore/interface/SonicClient.h" #include "HeterogeneousCore/SonicTriton/interface/TritonData.h" #include "HeterogeneousCore/SonicTriton/interface/TritonService.h" @@ -86,6 +87,7 @@ class TritonClient : public SonicClient { std::unique_ptr client_; //stores timeout, model name and version std::vector options_; + edm::ServiceToken token_; private: friend TritonInputData; diff --git a/HeterogeneousCore/SonicTriton/src/TritonClient.cc b/HeterogeneousCore/SonicTriton/src/TritonClient.cc index c2f68025a7691..ddcdff83448d0 100644 --- a/HeterogeneousCore/SonicTriton/src/TritonClient.cc +++ b/HeterogeneousCore/SonicTriton/src/TritonClient.cc @@ -63,6 +63,13 @@ TritonClient::TritonClient(const edm::ParameterSet& params, const std::string& d options_.emplace_back(params.getParameter("modelName")); //get appropriate server for this model edm::Service ts; + + // We save the token to be able to notify the service in case of an exception in the evaluate method. + // The evaluate method can be called outside the frameworks TBB threadpool in the case of a retry. In + // this case the context is not setup to access the service registry, we need the service token to + // create the context. + token_ = edm::ServiceRegistry::instance().presentToken(); + const auto& server = ts->serverInfo(options_[0].model_name_, params.getUntrackedParameter("preferredServer")); serverType_ = server.type; @@ -363,6 +370,9 @@ void TritonClient::getResults(const std::vector void TritonClient::evaluate() { //undo previous signal from TritonException if (tries_ > 0) { + // If we are retrying then the evaluate method is called outside the frameworks TBB thread pool. + // So we need to setup the service token for the current thread to access the service registry. + edm::ServiceRegistry::Operate op(token_); edm::Service ts; ts->notifyCallStatus(true); } diff --git a/IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h b/IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h index 4a66bd16c3adc..ccd5aac7b3eb2 100644 --- a/IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h @@ -6,6 +6,7 @@ #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/Utilities/interface/EDGetToken.h" +#include "Math/Vector4D.h" #include "TMatrixD.h" namespace HepMC { @@ -18,7 +19,8 @@ namespace CLHEP { namespace edm { class HepMCProduct; -} + class HepMC3Product; +} // namespace edm class BaseEvtVtxGenerator : public edm::stream::EDProducer<> { public: @@ -28,17 +30,13 @@ class BaseEvtVtxGenerator : public edm::stream::EDProducer<> { void produce(edm::Event&, const edm::EventSetup&) override; - virtual HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const = 0; - /** This method - and the comment - is a left-over from COBRA-OSCAR time : - * return the last generated event vertex. - * If no vertex has been generated yet, a NULL pointer is returned. */ - //virtual CLHEP::Hep3Vector* lastVertex() { return fVertex; } - //virtual HepMC::FourVector* lastVertex() { return fVertex; } + virtual ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const = 0; virtual TMatrixD const* GetInvLorentzBoost() const = 0; private: edm::EDGetTokenT sourceToken; + edm::EDGetTokenT sourceToken3; }; #endif diff --git a/IOMC/EventVertexGenerators/interface/BeamProfileVtxGenerator.h b/IOMC/EventVertexGenerators/interface/BeamProfileVtxGenerator.h index d952a5c79b4ae..d770e9d5db816 100644 --- a/IOMC/EventVertexGenerators/interface/BeamProfileVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/BeamProfileVtxGenerator.h @@ -26,8 +26,7 @@ class BeamProfileVtxGenerator : public BaseEvtVtxGenerator { ~BeamProfileVtxGenerator() override; /// return a new event vertex - //virtual CLHEP::Hep3Vector * newVertex(); - HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override; + ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override; TMatrixD const* GetInvLorentzBoost() const override { return nullptr; } diff --git a/IOMC/EventVertexGenerators/interface/BetafuncEvtVtxGenerator.h b/IOMC/EventVertexGenerators/interface/BetafuncEvtVtxGenerator.h index 2e1703d760548..53141e548331a 100644 --- a/IOMC/EventVertexGenerators/interface/BetafuncEvtVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/BetafuncEvtVtxGenerator.h @@ -43,8 +43,7 @@ class BetafuncEvtVtxGenerator : public BaseEvtVtxGenerator { void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; /// return a new event vertex - //virtual CLHEP::Hep3Vector * newVertex(); - HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override; + ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override; TMatrixD const* GetInvLorentzBoost() const override; diff --git a/IOMC/EventVertexGenerators/interface/FlatEvtVtxGenerator.h b/IOMC/EventVertexGenerators/interface/FlatEvtVtxGenerator.h index 25a976a4e8b3f..9c58a4cae90e1 100644 --- a/IOMC/EventVertexGenerators/interface/FlatEvtVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/FlatEvtVtxGenerator.h @@ -29,8 +29,7 @@ class FlatEvtVtxGenerator : public BaseEvtVtxGenerator { ~FlatEvtVtxGenerator() override; /// return a new event vertex - //virtual CLHEP::Hep3Vector* newVertex(); - HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override; + ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override; const TMatrixD* GetInvLorentzBoost() const override { return nullptr; } diff --git a/IOMC/EventVertexGenerators/interface/GaussEvtVtxGenerator.h b/IOMC/EventVertexGenerators/interface/GaussEvtVtxGenerator.h index b0a05ddb5b647..1f98a1f450eb7 100644 --- a/IOMC/EventVertexGenerators/interface/GaussEvtVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/GaussEvtVtxGenerator.h @@ -32,8 +32,7 @@ class GaussEvtVtxGenerator : public BaseEvtVtxGenerator { void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; /// return a new event vertex - //virtual CLHEP::Hep3Vector* newVertex(); - HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override; + ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override; TMatrixD const* GetInvLorentzBoost() const override { return nullptr; } diff --git a/IOMC/EventVertexGenerators/interface/HLLHCEvtVtxGenerator.h b/IOMC/EventVertexGenerators/interface/HLLHCEvtVtxGenerator.h index e966791a03a07..eacede70b5fe7 100644 --- a/IOMC/EventVertexGenerators/interface/HLLHCEvtVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/HLLHCEvtVtxGenerator.h @@ -44,7 +44,7 @@ class HLLHCEvtVtxGenerator : public BaseEvtVtxGenerator { static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); /// return a new event vertex - HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override; + ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override; TMatrixD const* GetInvLorentzBoost() const override { return nullptr; }; diff --git a/IOMC/EventVertexGenerators/interface/PassThroughEvtVtxGenerator.h b/IOMC/EventVertexGenerators/interface/PassThroughEvtVtxGenerator.h index 956998b04c931..e8925aba734a7 100644 --- a/IOMC/EventVertexGenerators/interface/PassThroughEvtVtxGenerator.h +++ b/IOMC/EventVertexGenerators/interface/PassThroughEvtVtxGenerator.h @@ -4,37 +4,24 @@ */ #include "IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/Utilities/interface/EDGetToken.h" #include "TMatrixD.h" -namespace HepMC { - class FourVector; -} - namespace CLHEP { class HepRandomEngine; } -namespace edm { - class HepMCProduct; -} - class PassThroughEvtVtxGenerator : public BaseEvtVtxGenerator { public: // ctor & dtor explicit PassThroughEvtVtxGenerator(const edm::ParameterSet&); ~PassThroughEvtVtxGenerator() override; - void produce(edm::Event&, const edm::EventSetup&) override; - - HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override; + ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override; TMatrixD const* GetInvLorentzBoost() const override { return nullptr; }; private: - edm::EDGetTokenT sourceToken; }; #endif diff --git a/IOMC/EventVertexGenerators/src/BaseEvtVtxGenerator.cc b/IOMC/EventVertexGenerators/src/BaseEvtVtxGenerator.cc index 4257db6beb953..0cd58f8ff1c1a 100644 --- a/IOMC/EventVertexGenerators/src/BaseEvtVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/BaseEvtVtxGenerator.cc @@ -1,4 +1,3 @@ - /* */ @@ -8,7 +7,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMC3Product.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/RandomNumberGenerator.h" @@ -18,13 +17,8 @@ #include "DataFormats/Provenance/interface/Provenance.h" #include "FWCore/Utilities/interface/EDMException.h" -//#include "HepMC/GenEvent.h" -// #include "CLHEP/Vector/ThreeVector.h" -// #include "HepMC/SimpleVector.h" - using namespace edm; using namespace CLHEP; -//using namespace HepMC; BaseEvtVtxGenerator::BaseEvtVtxGenerator(const ParameterSet& pset) { Service rng; @@ -35,7 +29,9 @@ BaseEvtVtxGenerator::BaseEvtVtxGenerator(const ParameterSet& pset) { "in the configuration file or remove the modules that require it."; } + sourceToken3 = consumes(pset.getParameter("src")); sourceToken = consumes(pset.getParameter("src")); + produces(); produces(); } @@ -47,20 +43,57 @@ void BaseEvtVtxGenerator::produce(Event& evt, const EventSetup&) { Handle HepUnsmearedMCEvt; - evt.getByToken(sourceToken, HepUnsmearedMCEvt); + bool found = evt.getByToken(sourceToken, HepUnsmearedMCEvt); + + if (found) { // HepMC event exists + + // Make a copy + HepMC::GenEvent* genevt = new HepMC::GenEvent(*HepUnsmearedMCEvt->GetEvent()); + + std::unique_ptr HepMCEvt(new edm::HepMCProduct(genevt)); + // generate new vertex & apply the shift + // + ROOT::Math::XYZTVector VertexShift = vertexShift(engine); + HepMCEvt->applyVtxGen(HepMC::FourVector(VertexShift.x(), VertexShift.y(), VertexShift.z(), VertexShift.t())); - // Copy the HepMC::GenEvent - HepMC::GenEvent* genevt = new HepMC::GenEvent(*HepUnsmearedMCEvt->GetEvent()); - std::unique_ptr HepMCEvt(new edm::HepMCProduct(genevt)); - // generate new vertex & apply the shift - // - HepMCEvt->applyVtxGen(newVertex(engine)); + HepMCEvt->boostToLab(GetInvLorentzBoost(), "vertex"); + HepMCEvt->boostToLab(GetInvLorentzBoost(), "momentum"); - //HepMCEvt->LorentzBoost( 0., 142.e-6 ); - HepMCEvt->boostToLab(GetInvLorentzBoost(), "vertex"); - HepMCEvt->boostToLab(GetInvLorentzBoost(), "momentum"); + evt.put(std::move(HepMCEvt)); - evt.put(std::move(HepMCEvt)); + } else { // no HepMC event, try to get HepMC3 event + + Handle HepUnsmearedMCEvt3; + found = evt.getByToken(sourceToken3, HepUnsmearedMCEvt3); + + if (!found) + throw cms::Exception("ProductAbsent") << "No HepMCProduct, tried to get HepMC3Product, but it is also absent."; + + HepMC3::GenEvent* genevt3 = new HepMC3::GenEvent(); + genevt3->read_data(*HepUnsmearedMCEvt3->GetEvent()); + HepMC3Product* productcopy3 = new HepMC3Product(genevt3); + ROOT::Math::XYZTVector VertexShift = vertexShift(engine); + productcopy3->applyVtxGen(HepMC3::FourVector(VertexShift.x(), VertexShift.y(), VertexShift.z(), VertexShift.t())); + + if (GetInvLorentzBoost() != nullptr) { + TMatrixD tmplorentz(*GetInvLorentzBoost()); + TMatrixD p4(4, 1); + p4(0, 0) = 1.; + p4(1, 0) = 1.; + p4(2, 0) = 1.; + p4(3, 0) = 1.; // Check if the boost matrix is not trivial + TMatrixD p4lab(4, 1); + p4lab = tmplorentz * p4; + if (p4lab(0, 0) - p4(0, 0) != 0. || p4lab(1, 0) - p4(1, 0) != 0. || p4lab(2, 0) - p4(2, 0) != 0. || + p4lab(3, 0) - p4(3, 0) != 0.) { // not trivial: + productcopy3->boostToLab(GetInvLorentzBoost(), "vertex"); + productcopy3->boostToLab(GetInvLorentzBoost(), "momentum"); + } + } + + std::unique_ptr HepMC3Evt(productcopy3); + evt.put(std::move(HepMC3Evt)); + } return; } diff --git a/IOMC/EventVertexGenerators/src/BeamProfileVtxGenerator.cc b/IOMC/EventVertexGenerators/src/BeamProfileVtxGenerator.cc index 453b96df669e6..30ab8a27c47bc 100644 --- a/IOMC/EventVertexGenerators/src/BeamProfileVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/BeamProfileVtxGenerator.cc @@ -11,7 +11,6 @@ #include #include #include -#include "HepMC/SimpleVector.h" #include #include @@ -80,8 +79,7 @@ BeamProfileVtxGenerator::BeamProfileVtxGenerator(const edm::ParameterSet& p) : B BeamProfileVtxGenerator::~BeamProfileVtxGenerator() {} -//Hep3Vector * BeamProfileVtxGenerator::newVertex() { -HepMC::FourVector BeamProfileVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine) const { +ROOT::Math::XYZTVector BeamProfileVtxGenerator::vertexShift(CLHEP::HepRandomEngine* engine) const { double aX, aY; if (ffile) { double r1 = engine->flat(); @@ -121,10 +119,11 @@ HepMC::FourVector BeamProfileVtxGenerator::newVertex(CLHEP::HepRandomEngine* eng /* static const double kRadToDeg ( 180./M_PI ) ; std::cout<<"theta = "< #include #include -#include "HepMC/SimpleVector.h" using CLHEP::cm; using CLHEP::ns; @@ -72,7 +71,7 @@ void BetafuncEvtVtxGenerator::update(const edm::EventSetup& iEventSetup) { } } -HepMC::FourVector BetafuncEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine) const { +ROOT::Math::XYZTVector BetafuncEvtVtxGenerator::vertexShift(CLHEP::HepRandomEngine* engine) const { double X, Y, Z; double tmp_sigz = CLHEP::RandGaussQ::shoot(engine, 0., fSigmaZ); @@ -91,7 +90,7 @@ HepMC::FourVector BetafuncEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* eng double tmp_sigt = CLHEP::RandGaussQ::shoot(engine, 0., fSigmaZ); double T = tmp_sigt + fTimeOffset; - return HepMC::FourVector(X, Y, Z, T); + return ROOT::Math::XYZTVector(X, Y, Z, T); } double BetafuncEvtVtxGenerator::BetaFunction(double z, double z0) const { diff --git a/IOMC/EventVertexGenerators/src/FlatEvtVtxGenerator.cc b/IOMC/EventVertexGenerators/src/FlatEvtVtxGenerator.cc index d2996dd97ef34..bb7a6d2939a87 100644 --- a/IOMC/EventVertexGenerators/src/FlatEvtVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/FlatEvtVtxGenerator.cc @@ -9,8 +9,6 @@ #include #include #include -//#include "CLHEP/Vector/ThreeVector.h" -#include "HepMC/SimpleVector.h" using CLHEP::cm; using CLHEP::ns; @@ -48,8 +46,7 @@ FlatEvtVtxGenerator::FlatEvtVtxGenerator(const edm::ParameterSet& p) : BaseEvtVt FlatEvtVtxGenerator::~FlatEvtVtxGenerator() {} -//Hep3Vector * FlatEvtVtxGenerator::newVertex() { -HepMC::FourVector FlatEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine) const { +ROOT::Math::XYZTVector FlatEvtVtxGenerator::vertexShift(CLHEP::HepRandomEngine* engine) const { double aX, aY, aZ, aT; aX = CLHEP::RandFlat::shoot(engine, fMinX, fMaxX); aY = CLHEP::RandFlat::shoot(engine, fMinY, fMaxY); @@ -59,7 +56,7 @@ HepMC::FourVector FlatEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine) edm::LogVerbatim("FlatEvtVtx") << "FlatEvtVtxGenerator Vertex at [" << aX << ", " << aY << ", " << aZ << ", " << aT << "]"; - return HepMC::FourVector(aX, aY, aZ, aT); + return ROOT::Math::XYZTVector(aX, aY, aZ, aT); } void FlatEvtVtxGenerator::minX(double min) { fMinX = min; } diff --git a/IOMC/EventVertexGenerators/src/GaussEvtVtxGenerator.cc b/IOMC/EventVertexGenerators/src/GaussEvtVtxGenerator.cc index 14fc79b65a285..b81834942ebda 100644 --- a/IOMC/EventVertexGenerators/src/GaussEvtVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/GaussEvtVtxGenerator.cc @@ -5,7 +5,6 @@ #include #include #include -#include "HepMC/SimpleVector.h" using CLHEP::cm; using CLHEP::ns; @@ -58,14 +57,14 @@ void GaussEvtVtxGenerator::update(const edm::EventSetup& iEventSetup) { } } -HepMC::FourVector GaussEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine) const { +ROOT::Math::XYZTVector GaussEvtVtxGenerator::vertexShift(CLHEP::HepRandomEngine* engine) const { double X, Y, Z, T; X = CLHEP::RandGaussQ::shoot(engine, fMeanX, fSigmaX); Y = CLHEP::RandGaussQ::shoot(engine, fMeanY, fSigmaY); Z = CLHEP::RandGaussQ::shoot(engine, fMeanZ, fSigmaZ); T = CLHEP::RandGaussQ::shoot(engine, fTimeOffset, fSigmaZ); - return HepMC::FourVector(X, Y, Z, T); + return ROOT::Math::XYZTVector(X, Y, Z, T); } void GaussEvtVtxGenerator::sigmaX(double s) { diff --git a/IOMC/EventVertexGenerators/src/HLLHCEvtVtxGenerator.cc b/IOMC/EventVertexGenerators/src/HLLHCEvtVtxGenerator.cc index f363f88732c68..796e48cf8a3d4 100644 --- a/IOMC/EventVertexGenerators/src/HLLHCEvtVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/HLLHCEvtVtxGenerator.cc @@ -11,7 +11,6 @@ #include #include #include -#include "HepMC/SimpleVector.h" using namespace std; @@ -119,7 +118,7 @@ void HLLHCEvtVtxGenerator::update(const edm::EventSetup& iEventSetup) { } } -HepMC::FourVector HLLHCEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine) const { +ROOT::Math::XYZTVector HLLHCEvtVtxGenerator::vertexShift(CLHEP::HepRandomEngine* engine) const { double imax = intensity(0., 0., 0., 0.); double x(0.), y(0.), z(0.), t(0.), i(0.); @@ -155,7 +154,7 @@ HepMC::FourVector HLLHCEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine* engine z += fMeanZ; t += fTimeOffset_c_light; - return HepMC::FourVector(x, y, z, t); + return ROOT::Math::XYZTVector(x, y, z, t); } double HLLHCEvtVtxGenerator::sigma(double z, double epsilon, double beta, double betagamma) const { diff --git a/IOMC/EventVertexGenerators/src/PassThroughEvtVtxGenerator.cc b/IOMC/EventVertexGenerators/src/PassThroughEvtVtxGenerator.cc index 39ff10512fc2d..16ce3bc72251d 100644 --- a/IOMC/EventVertexGenerators/src/PassThroughEvtVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/PassThroughEvtVtxGenerator.cc @@ -4,58 +4,20 @@ #include "IOMC/EventVertexGenerators/interface/PassThroughEvtVtxGenerator.h" -#include "FWCore/Framework/interface/Event.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" - #include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/RandomNumberGenerator.h" - #include "FWCore/Utilities/interface/Exception.h" -#include "DataFormats/Provenance/interface/Provenance.h" -#include "FWCore/Utilities/interface/EDMException.h" - -//#include "HepMC/GenEvent.h" -// #include "CLHEP/Vector/ThreeVector.h" -// #include "HepMC/SimpleVector.h" - using namespace edm; -using namespace CLHEP; -//using namespace HepMC; PassThroughEvtVtxGenerator::PassThroughEvtVtxGenerator(const ParameterSet& pset) : BaseEvtVtxGenerator(pset) { Service rng; - if (!rng.isAvailable()) { - throw cms::Exception("Configuration") - << "The PassThroughEvtVtxGenerator requires the RandomNumberGeneratorService\n" - "which is not present in the configuration file. \n" - "You must add the service\n" - "in the configuration file or remove the modules that require it."; - } - sourceToken = consumes(pset.getParameter("src")); } PassThroughEvtVtxGenerator::~PassThroughEvtVtxGenerator() {} -HepMC::FourVector PassThroughEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine*) const { - return HepMC::FourVector(0., 0., 0., 0); -} - -void PassThroughEvtVtxGenerator::produce(Event& evt, const EventSetup&) { - edm::Service rng; - - Handle HepUnsmearedMCEvt; - - evt.getByToken(sourceToken, HepUnsmearedMCEvt); - - // Copy the HepMC::GenEvent - HepMC::GenEvent* genevt = new HepMC::GenEvent(*HepUnsmearedMCEvt->GetEvent()); - std::unique_ptr HepMCEvt(new edm::HepMCProduct(genevt)); - - evt.put(std::move(HepMCEvt)); - - return; +ROOT::Math::XYZTVector PassThroughEvtVtxGenerator::vertexShift(CLHEP::HepRandomEngine*) const { + return ROOT::Math::XYZTVector(0., 0., 0., 0.); } diff --git a/IOMC/EventVertexGenerators/test/calculate_beamwidth.py b/IOMC/EventVertexGenerators/test/calculate_beamwidth.py index e129a60f91b46..d51d7a859a797 100755 --- a/IOMC/EventVertexGenerators/test/calculate_beamwidth.py +++ b/IOMC/EventVertexGenerators/test/calculate_beamwidth.py @@ -13,7 +13,6 @@ at Z = 0 """ -from __future__ import print_function import math diff --git a/IOMC/Input/test/hepmc2gen.py b/IOMC/Input/test/hepmc2gen.py index 30d3dbc8f9c72..375122b1d414c 100644 --- a/IOMC/Input/test/hepmc2gen.py +++ b/IOMC/Input/test/hepmc2gen.py @@ -1,4 +1,3 @@ -from __future__ import print_function #!/usr/bin/env cmsRun ## Original Author: Andrea Carlo Marini diff --git a/IOMC/ParticleGuns/src/BeamMomentumGunProducer.cc b/IOMC/ParticleGuns/src/BeamMomentumGunProducer.cc index 5c8e05ba146e6..4193fec6e73b6 100644 --- a/IOMC/ParticleGuns/src/BeamMomentumGunProducer.cc +++ b/IOMC/ParticleGuns/src/BeamMomentumGunProducer.cc @@ -47,7 +47,7 @@ namespace edm { << "Beam vertex offset (cm) " << xoff_ << ":" << yoff_ << " and z position " << zpos_; edm::FileInPath fp = pgun_params.getParameter("FileName"); - std::string infileName = fp.fullPath(); + const std::string& infileName = fp.fullPath(); fFile_ = new TFile(infileName.c_str()); fFile_->GetObject("EventTree", fTree_); diff --git a/IOMC/ParticleGuns/src/FileRandomKEThetaGunProducer.cc b/IOMC/ParticleGuns/src/FileRandomKEThetaGunProducer.cc index f262c37a5128f..d6c7ab9c0362d 100644 --- a/IOMC/ParticleGuns/src/FileRandomKEThetaGunProducer.cc +++ b/IOMC/ParticleGuns/src/FileRandomKEThetaGunProducer.cc @@ -23,7 +23,7 @@ FileRandomKEThetaGunProducer::FileRandomKEThetaGunProducer(const edm::ParameterS edm::ParameterSet pgun_params = pset.getParameter("PGunParameters"); edm::FileInPath fp = pgun_params.getParameter("File"); - std::string file = fp.fullPath(); + const std::string& file = fp.fullPath(); particleN = pgun_params.getParameter("Particles"); if (particleN <= 0) particleN = 1; diff --git a/IOMC/ParticleGuns/src/FileRandomMultiParticlePGunProducer.cc b/IOMC/ParticleGuns/src/FileRandomMultiParticlePGunProducer.cc index 0b254951ab2f5..6557424d10dbe 100644 --- a/IOMC/ParticleGuns/src/FileRandomMultiParticlePGunProducer.cc +++ b/IOMC/ParticleGuns/src/FileRandomMultiParticlePGunProducer.cc @@ -24,7 +24,7 @@ FileRandomMultiParticlePGunProducer::FileRandomMultiParticlePGunProducer(const P fMinP_ = pgunParams.getParameter("MinP"); fMaxP_ = pgunParams.getParameter("MaxP"); edm::FileInPath fp = pgunParams.getParameter("FileName"); - std::string file = fp.fullPath(); + const std::string& file = fp.fullPath(); produces("unsmeared"); produces(); diff --git a/IOMC/RandomEngine/python/RandomServiceHelper.py b/IOMC/RandomEngine/python/RandomServiceHelper.py index c271f7f91ac77..7474099ca9506 100644 --- a/IOMC/RandomEngine/python/RandomServiceHelper.py +++ b/IOMC/RandomEngine/python/RandomServiceHelper.py @@ -1,7 +1,6 @@ #!/usr/bin/env python -from __future__ import print_function from FWCore.ParameterSet.Config import Service import FWCore.ParameterSet.Types as CfgTypes diff --git a/IOPool/Input/test/BuildFile.xml b/IOPool/Input/test/BuildFile.xml index 609b2ad691586..16f8aea45fcab 100644 --- a/IOPool/Input/test/BuildFile.xml +++ b/IOPool/Input/test/BuildFile.xml @@ -25,7 +25,6 @@ - - + diff --git a/IOPool/Input/test/testNoParentDictionary.sh b/IOPool/Input/test/testNoParentDictionary.sh index d512b5aa52cc7..70afd3c52eb5b 100755 --- a/IOPool/Input/test/testNoParentDictionary.sh +++ b/IOPool/Input/test/testNoParentDictionary.sh @@ -11,11 +11,16 @@ cd $SCRAM_TEST_NAME NEW_CMSSW_BASE=$(/bin/pwd -P)/$CMSSW_VERSION scram -a $SCRAM_ARCH project $CMSSW_VERSION pushd $CMSSW_VERSION/src +mkdir DataFormats + +# Copy DataFormats/Common if it was modified locally +if [ -d ${CMSSW_BASE}/src/DataFormats/Common ]; then + cp -Lr ${CMSSW_BASE}/src/DataFormats/Common DataFormats/ +fi # Copy DataFormats/TestObjects code to be able to edit it to make ROOT header parsing to fail for DIR in ${CMSSW_BASE} ${CMSSW_RELEASE_BASE} ${CMSSW_FULL_RELEASE_BASE} ; do if [ -d ${DIR}/src/DataFormats/TestObjects ]; then - mkdir DataFormats cp -Lr ${DIR}/src/DataFormats/TestObjects DataFormats/ break fi diff --git a/IOPool/Input/test/run_TestRefProductIDMetadataConsistencyRoot.sh b/IOPool/Input/test/testRefProductIDMetadataConsistencyRoot.sh similarity index 99% rename from IOPool/Input/test/run_TestRefProductIDMetadataConsistencyRoot.sh rename to IOPool/Input/test/testRefProductIDMetadataConsistencyRoot.sh index bf678e5568088..230a854dc9c0c 100755 --- a/IOPool/Input/test/run_TestRefProductIDMetadataConsistencyRoot.sh +++ b/IOPool/Input/test/testRefProductIDMetadataConsistencyRoot.sh @@ -9,6 +9,5 @@ function runSuccess { runSuccess ${SCRAM_TEST_PATH}/testRefProductIDMetadataConsistencyRoot_cfg.py runSuccess ${SCRAM_TEST_PATH}/testRefProductIDMetadataConsistencyRoot_cfg.py --enableOther - runSuccess ${SCRAM_TEST_PATH}/testRefProductIDMetadataConsistencyRootMerge_cfg.py runSuccess ${SCRAM_TEST_PATH}/testRefProductIDMetadataConsistencyRootTest_cfg.py diff --git a/IOPool/Streamer/src/StreamerInputSource.cc b/IOPool/Streamer/src/StreamerInputSource.cc index 160d3698ec993..d82f78ce11841 100644 --- a/IOPool/Streamer/src/StreamerInputSource.cc +++ b/IOPool/Streamer/src/StreamerInputSource.cc @@ -334,13 +334,12 @@ namespace edm::streamer { std::optional productProvenance{std::in_place, spitem.branchID(), *spitem.parents()}; if (spitem.prod() != nullptr) { FDEBUG(10) << "addproduct next " << spitem.branchID() << std::endl; - eventPrincipal.putOnRead(branchDesc, - std::unique_ptr(const_cast(spitem.prod())), - std::move(productProvenance)); + eventPrincipal.putOnRead( + branchDesc, std::unique_ptr(const_cast(spitem.prod())), productProvenance); FDEBUG(10) << "addproduct done" << std::endl; } else { FDEBUG(10) << "addproduct empty next " << spitem.branchID() << std::endl; - eventPrincipal.putOnRead(branchDesc, std::unique_ptr(), std::move(productProvenance)); + eventPrincipal.putOnRead(branchDesc, std::unique_ptr(), productProvenance); FDEBUG(10) << "addproduct empty done" << std::endl; } } else { diff --git a/IORawData/CSCCommissioning/src/CSCFileDumper.cc b/IORawData/CSCCommissioning/src/CSCFileDumper.cc index a97d224ae3bb2..da86b015cc59e 100644 --- a/IORawData/CSCCommissioning/src/CSCFileDumper.cc +++ b/IORawData/CSCCommissioning/src/CSCFileDumper.cc @@ -45,7 +45,7 @@ CSCFileDumper::CSCFileDumper(edm::ParameterSet const &pset) { } */ - if (events.length()) { + if (!events.empty()) { for (size_t pos1 = 0, pos2 = events.find(',');; pos1 = pos2 + 1, pos2 = events.find(',', pos2 + 1)) { if (pos2 != std::string::npos) { long event = 0; diff --git a/JetMETCorrections/Modules/plugins/ChainedJetCorrectorProducer.cc b/JetMETCorrections/Modules/plugins/ChainedJetCorrectorProducer.cc index 3b32ab7deb7fc..3936f3a427210 100644 --- a/JetMETCorrections/Modules/plugins/ChainedJetCorrectorProducer.cc +++ b/JetMETCorrections/Modules/plugins/ChainedJetCorrectorProducer.cc @@ -122,14 +122,6 @@ class ChainedJetCorrectorProducer : public edm::stream::EDProducer<> { std::vector> correctorTokens_; }; -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - // // constructors and destructor // @@ -169,11 +161,9 @@ void ChainedJetCorrectorProducer::produce(edm::Event& iEvent, const edm::EventSe // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void ChainedJetCorrectorProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - //The following says we do not know what parameters are allowed so do no validation - // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; - desc.add>("correctors"); - descriptions.addDefault(desc); + desc.add>("correctors", {}); + descriptions.addWithDefaultLabel(desc); } //define this as a plug-in diff --git a/JetMETCorrections/Modules/test/uploadConstants.py b/JetMETCorrections/Modules/test/uploadConstants.py index 884a270784180..9bf32bc02cf49 100644 --- a/JetMETCorrections/Modules/test/uploadConstants.py +++ b/JetMETCorrections/Modules/test/uploadConstants.py @@ -1,5 +1,4 @@ #! /usr/bin/env python -from __future__ import print_function import os import re import sys diff --git a/L1Trigger/CSCTriggerPrimitives/test/runL1CSCTPEmulatorConfigAnalyzer_cfg.py b/L1Trigger/CSCTriggerPrimitives/test/runL1CSCTPEmulatorConfigAnalyzer_cfg.py index 435cf2a4d2a4e..5bd8e846ddcaa 100644 --- a/L1Trigger/CSCTriggerPrimitives/test/runL1CSCTPEmulatorConfigAnalyzer_cfg.py +++ b/L1Trigger/CSCTriggerPrimitives/test/runL1CSCTPEmulatorConfigAnalyzer_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import os diff --git a/L1Trigger/Configuration/python/L1Trigger_EventContent_cff.py b/L1Trigger/Configuration/python/L1Trigger_EventContent_cff.py index dd24349b56e03..a5ee86d334285 100644 --- a/L1Trigger/Configuration/python/L1Trigger_EventContent_cff.py +++ b/L1Trigger/Configuration/python/L1Trigger_EventContent_cff.py @@ -251,7 +251,7 @@ def _appendPhase2Digis(obj): 'keep *_TTClustersFromPhase2TrackerDigis_*_*', 'keep *_l1tTTTracksFromExtendedTrackletEmulation_*_*', 'keep *_l1tTTTracksFromTrackletEmulation_*_*', - 'keep *_l1tTkStubsGmt_*_*', + 'keep *_l1tStubsGmt_*_*', 'keep *_l1tTkMuonsGmt_*_*', 'keep *_l1tSAMuonsGmt_*_*', 'keep *_l1tTkMuonsGmtLowPtFix_*_*', # in the long run this should be removed, but these fix objects will be used for now. diff --git a/L1Trigger/Configuration/python/L1Trigger_custom.py b/L1Trigger/Configuration/python/L1Trigger_custom.py index 586fac6db66c3..5085056c7f352 100644 --- a/L1Trigger/Configuration/python/L1Trigger_custom.py +++ b/L1Trigger/Configuration/python/L1Trigger_custom.py @@ -1,4 +1,3 @@ -from __future__ import print_function # customization fragments to be used with cmsDriver and hltGetConfiguration # # V.M. Ghete 2010-06-09 initial version diff --git a/L1Trigger/Configuration/python/customiseReEmul.py b/L1Trigger/Configuration/python/customiseReEmul.py index 802295278863a..c31ef4412cd54 100644 --- a/L1Trigger/Configuration/python/customiseReEmul.py +++ b/L1Trigger/Configuration/python/customiseReEmul.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger diff --git a/L1Trigger/Configuration/python/customiseSettings.py b/L1Trigger/Configuration/python/customiseSettings.py index 68de90356ebb6..bfb5e3cc508e0 100644 --- a/L1Trigger/Configuration/python/customiseSettings.py +++ b/L1Trigger/Configuration/python/customiseSettings.py @@ -1,9 +1,8 @@ -from __future__ import print_function import os.path import FWCore.ParameterSet.Config as cms -def L1TSettingsToCaloParamsHI_2024_v0_2(process): - process.load("L1Trigger.L1TCalorimeter.caloParamsHI_2024_v0_2_cfi") +def L1TSettingsToCaloParamsHI_2024_v0_1(process): + process.load("L1Trigger.L1TCalorimeter.caloParamsHI_2024_v0_1_cfi") return process def L1TSettingsToCaloParams_2024_v0_2(process): diff --git a/L1Trigger/Configuration/python/customiseUtils.py b/L1Trigger/Configuration/python/customiseUtils.py index b49648a9b20d4..ce3aa8f51f9b1 100644 --- a/L1Trigger/Configuration/python/customiseUtils.py +++ b/L1Trigger/Configuration/python/customiseUtils.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import os diff --git a/L1Trigger/Configuration/test/L1GlobalTagTest_cfg.py b/L1Trigger/Configuration/test/L1GlobalTagTest_cfg.py index 9040c325bf3da..0c481fcfada46 100644 --- a/L1Trigger/Configuration/test/L1GlobalTagTest_cfg.py +++ b/L1Trigger/Configuration/test/L1GlobalTagTest_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to print the content of # L1 trigger records from a global tag diff --git a/L1Trigger/DTTriggerPhase2/src/MPCoincidenceFilter.cc b/L1Trigger/DTTriggerPhase2/src/MPCoincidenceFilter.cc index 0a37fe9c717dd..e82a7abb84ab4 100644 --- a/L1Trigger/DTTriggerPhase2/src/MPCoincidenceFilter.cc +++ b/L1Trigger/DTTriggerPhase2/src/MPCoincidenceFilter.cc @@ -58,9 +58,9 @@ std::vector MPCoincidenceFilter::filter(std::vector MPCoincidenceFilter::filter(std::vector qcut) @@ -120,15 +120,15 @@ std::vector MPCoincidenceFilter::filter(std::vector MPCoincidenceFilter::filter(std::vector MPCoincidenceFilter::filter(std::vector 0.9) { - co_found = 1; + co_found = true; break; } else if (wheel == -2 && k < -0.9) { - co_found = 1; + co_found = true; break; } } @@ -180,7 +180,7 @@ std::vector MPCoincidenceFilter::filter(std::vectorsetEtaBin(ieta); m_jetEtCalibLuts.push_back(nextLut); - nextLut.reset(new L1GctJetEtCalibrationLut()); + nextLut = std::make_shared(); } // Setup the tau algorithm parameters diff --git a/L1Trigger/GlobalCaloTrigger/plugins/L1GctPrintLuts.cc b/L1Trigger/GlobalCaloTrigger/plugins/L1GctPrintLuts.cc index 2929a354357aa..72952db6c83ad 100644 --- a/L1Trigger/GlobalCaloTrigger/plugins/L1GctPrintLuts.cc +++ b/L1Trigger/GlobalCaloTrigger/plugins/L1GctPrintLuts.cc @@ -16,8 +16,9 @@ #include "L1Trigger/GlobalCaloTrigger/interface/L1GctHfEtSumsLut.h" #include "L1Trigger/GlobalCaloTrigger/interface/L1GlobalCaloTrigger.h" -#include #include +#include +#include #include L1GctPrintLuts::L1GctPrintLuts(const edm::ParameterSet& iConfig) @@ -33,7 +34,7 @@ L1GctPrintLuts::L1GctPrintLuts(const edm::ParameterSet& iConfig) for (unsigned ieta = 0; ieta < L1GctJetFinderBase::COL_OFFSET; ieta++) { nextLut->setEtaBin(ieta); m_jetEtCalibLuts.push_back(nextLut); - nextLut.reset(new L1GctJetEtCalibrationLut()); + nextLut = std::make_shared(); } m_jfParsToken = esConsumes(); m_etScaleToken = esConsumes(); diff --git a/L1Trigger/GlobalTriggerAnalyzer/python/UserOptions_cff.py b/L1Trigger/GlobalTriggerAnalyzer/python/UserOptions_cff.py index adfdb1d4e646b..8a359be41f0a1 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/python/UserOptions_cff.py +++ b/L1Trigger/GlobalTriggerAnalyzer/python/UserOptions_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # configuration file fragment containing user choices # for release to run, sample and data type to use in diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtAnalyzer_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtAnalyzer_cfg.py index 766f2f072ebcf..f7be5bd06d0dc 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtAnalyzer_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtAnalyzer_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run the L1 GT test analyzer according to # the options set in "user choices" diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtBeamModeFilter_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtBeamModeFilter_cfg.py index 53164868863dc..31c0d78c1ac90 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtBeamModeFilter_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtBeamModeFilter_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to test L1GtBeamModeFilter # it requires as input: diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtEmulTrigReport_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtEmulTrigReport_cfg.py index 356e990b315a6..af56941181343 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtEmulTrigReport_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtEmulTrigReport_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run L1 Global Trigger emulator on a file containing the output of the # GCT system and GMT system ("digi"), followed by the L1 trigger report diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPackUnpackAnalyzer_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPackUnpackAnalyzer_cfg.py index d3366cef88655..ca8d8fdaadc22 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPackUnpackAnalyzer_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPackUnpackAnalyzer_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to pack (DigiToRaw) a GT DAQ record, unpack (RawToDigi) it back # and compare the two set of digis diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPatternGenerator_overrideL1Menu_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPatternGenerator_overrideL1Menu_cfg.py index 78095b340cb8f..e9415640f7d9f 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPatternGenerator_overrideL1Menu_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtPatternGenerator_overrideL1Menu_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # L1 Pattern Generator # ==================== diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTechTrigL1GtEmulTrigReport_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTechTrigL1GtEmulTrigReport_cfg.py index 552960c3a54fe..26530045e9bce 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTechTrigL1GtEmulTrigReport_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTechTrigL1GtEmulTrigReport_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run some technical trigger emulators/simulation, L1 Global Trigger emulator # on a file containing the output of the GCT system and GMT system ("digi"), followed by diff --git a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTrigReport_cfg.py b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTrigReport_cfg.py index afeb3aa676497..269726085e34a 100644 --- a/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTrigReport_cfg.py +++ b/L1Trigger/GlobalTriggerAnalyzer/test/L1GtTrigReport_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # cfg file to run L1GtTrigReport on GT output file containing # the readout record L1GlobalTriggerReadoutRecord diff --git a/L1Trigger/L1CaloTrigger/python/l1tPhase1JetProducer_cfi.py b/L1Trigger/L1CaloTrigger/python/l1tPhase1JetProducer_cfi.py index 318ce07897bdf..bbd997534f745 100644 --- a/L1Trigger/L1CaloTrigger/python/l1tPhase1JetProducer_cfi.py +++ b/L1Trigger/L1CaloTrigger/python/l1tPhase1JetProducer_cfi.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from math import pi diff --git a/L1Trigger/L1CaloTrigger/test/Phase1L1TJetHwEmuComp.py b/L1Trigger/L1CaloTrigger/test/Phase1L1TJetHwEmuComp.py index 52c5baab09414..340539b6fe605 100644 --- a/L1Trigger/L1CaloTrigger/test/Phase1L1TJetHwEmuComp.py +++ b/L1Trigger/L1CaloTrigger/test/Phase1L1TJetHwEmuComp.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os import sys import math diff --git a/L1Trigger/L1CaloTrigger/test/generatePatternPF.py b/L1Trigger/L1CaloTrigger/test/generatePatternPF.py index 7166d63a2c187..3ac217eb1e76f 100644 --- a/L1Trigger/L1CaloTrigger/test/generatePatternPF.py +++ b/L1Trigger/L1CaloTrigger/test/generatePatternPF.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1GctAnalyzer/test/gctLUTGenerator_cfg.py b/L1Trigger/L1GctAnalyzer/test/gctLUTGenerator_cfg.py index b2da09e9d2f9d..fdf4588183e01 100644 --- a/L1Trigger/L1GctAnalyzer/test/gctLUTGenerator_cfg.py +++ b/L1Trigger/L1GctAnalyzer/test/gctLUTGenerator_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys diff --git a/L1Trigger/L1TCaloLayer1/plugins/L1TCaloSummary.cc b/L1Trigger/L1TCaloLayer1/plugins/L1TCaloSummary.cc index 3ee5b3f9b132f..d9a7f67fea010 100644 --- a/L1Trigger/L1TCaloLayer1/plugins/L1TCaloSummary.cc +++ b/L1Trigger/L1TCaloLayer1/plugins/L1TCaloSummary.cc @@ -202,7 +202,7 @@ void L1TCaloSummary::produce(edm::Event& iEvent, const edm::Event edm::LogError("L1TCaloSummary") << "UCT: Failed to get regions from region collection!"; iEvent.getByToken(regionToken, regionCollection); - if (regionCollection->size() == 0) { + if (regionCollection->empty()) { iEvent.getByToken(backupRegionToken, regionCollection); edm::LogWarning("L1TCaloSummary") << "Switched to emulated regions since data regions was empty.\n"; } @@ -285,7 +285,7 @@ void L1TCaloSummary::produce(edm::Event& iEvent, const edm::Event std::list> boostedJetObjs = summaryCard.getBoostedJetObjs(); for (std::list>::const_iterator i = boostedJetObjs.begin(); i != boostedJetObjs.end(); i++) { - const std::shared_ptr object = *i; + const std::shared_ptr& object = *i; pt = ((double)object->et()) * caloScaleFactor * boostedJetPtFactor; eta = g.getUCTTowerEta(object->iEta()); phi = g.getUCTTowerPhi(object->iPhi()); diff --git a/L1Trigger/L1TCaloLayer1/test/testL1TCaloLayer1.py b/L1Trigger/L1TCaloLayer1/test/testL1TCaloLayer1.py index 56ff1638e3e9a..2fc4162f42c6d 100644 --- a/L1Trigger/L1TCaloLayer1/test/testL1TCaloLayer1.py +++ b/L1Trigger/L1TCaloLayer1/test/testL1TCaloLayer1.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import FWCore.ParameterSet.Config as cms diff --git a/L1Trigger/L1TCalorimeter/python/caloParamsHI_2024_v0_0_cfi.py b/L1Trigger/L1TCalorimeter/python/caloParamsHI_2024_v0_0_cfi.py new file mode 100644 index 0000000000000..4eaa25359d61a --- /dev/null +++ b/L1Trigger/L1TCalorimeter/python/caloParamsHI_2024_v0_0_cfi.py @@ -0,0 +1,128 @@ +import FWCore.ParameterSet.Config as cms + +from L1Trigger.L1TCalorimeter.caloParams_cfi import caloParamsSource +import L1Trigger.L1TCalorimeter.caloParams_cfi +caloStage2Params = L1Trigger.L1TCalorimeter.caloParams_cfi.caloParams.clone( + + # EG + egEtaCut = 24, + egHcalThreshold = 0., + egTrimmingLUTFile = "L1Trigger/L1TCalorimeter/data/egTrimmingLUT_10_v16.01.19.txt", + egHOverEcutBarrel = 1, + egHOverEcutEndcap = 1, + egBypassExtHOverE = 1, + egBypassShape = 1, + egBypassECALFG = 1, + + egMaxHOverELUTFile = "L1Trigger/L1TCalorimeter/data/HoverEIdentification_0.995_v15.12.23.txt", + egCompressShapesLUTFile = "L1Trigger/L1TCalorimeter/data/egCompressLUT_v4.txt", + egShapeIdType = "compressed", + egShapeIdLUTFile = "L1Trigger/L1TCalorimeter/data/shapeIdentification_adapt0.99_compressedieta_compressedE_compressedshape_v15.12.08.txt", #Not used any more in the current emulator version, merged with calibration LUT + + egIsolationType = "compressed", + egIsoLUTFile = "L1Trigger/L1TCalorimeter/data/EG_Iso_LUT_Flat_WP_v2_Tight1358_20p0_0p7_40p0_v1_APR23.txt", + egIsoLUTFile2 = "L1Trigger/L1TCalorimeter/data/EG_Iso_LUT_Flat_WP_v2_Loose610_10p0_0p7_40p0_v1_APR23.txt", + + egIsoVetoNrTowersPhi = 2, + egPUSParams = cms.vdouble(1,4,32), #Isolation window in firmware goes up to abs(ieta)=32 for now + egCalibrationType = "compressed", + egCalibrationVersion = 0, + egCalibrationLUTFile = "L1Trigger/L1TCalorimeter/data/EG_Calibration_LUT_correctedEtCalibLUT_v1_APR2023.txt", + + # Tau + isoTauEtaMax = 25, + tauSeedThreshold = 0., + tauIsoLUTFile = "L1Trigger/L1TCalorimeter/data/Tau_Iso_LUT_2023_calibThr1p7_V2gs_effMin0p9_eMin16_eMax60.txt", + tauIsoLUTFile2 = "L1Trigger/L1TCalorimeter/data/Tau_Iso_LUT_2023_calibThr1p7_V2gs_effMin0p9_eMin16_eMax60.txt", + tauCalibrationLUTFile = "L1Trigger/L1TCalorimeter/data/Tau_Cal_LUT_2023_calibThr1p7_V2.txt", + tauCompressLUTFile = "L1Trigger/L1TCalorimeter/data/tauCompressAllLUT_12bit_v3.txt", + tauPUSParams = [1,4,32], + + # jets + jetSeedThreshold = 2.5, + jetPUSType = "PhiRing1", + jetPUSUsePhiRing = 1, + + # Calibration options + jetCalibrationType = "LUT", + jetCompressPtLUTFile = "L1Trigger/L1TCalorimeter/data/lut_pt_compress_2017v1.txt", + jetCompressEtaLUTFile = "L1Trigger/L1TCalorimeter/data/lut_eta_compress_2017v1.txt", + jetCalibrationLUTFile = "L1Trigger/L1TCalorimeter/data/lut_calib_2023v0_ECALZS_PhiRing.txt", + + + # sums: 0=ET, 1=HT, 2=MET, 3=MHT + etSumEtaMin = [1, 1, 1, 1, 1], + etSumEtaMax = [28, 26, 28, 26, 28], + etSumEtThreshold = [0., 30., 0., 30., 0.], # only 2nd (HT) and 4th (MHT) values applied + etSumMetPUSType = "LUT", # et threshold from this LUT supercedes et threshold in line above + etSumBypassEttPUS = 1, + etSumBypassEcalSumPUS = 1, + + etSumMetPUSLUTFile = "L1Trigger/L1TCalorimeter/data/metPumLUT_2023v0_puppiMet_fit.txt", + + etSumCentralityUpper = [12.0, 62.0, 313.0, 776.0, 1498.0, 7000.0, 7000.0, 65535.0], + etSumCentralityLower = [5.0, 12.0, 50.0, 257.0, 658.0, 5855.0, 6039.0, 65535.0], + + # Layer 1 SF + layer1ECalScaleETBins = cms.vint32([3, 6, 9, 12, 15, 20, 25, 30, 35, 40, 45, 55, 70, 256]), + layer1ECalScaleFactors = cms.vdouble([ + 1.12, 1.13, 1.13, 1.12, 1.12, 1.12, 1.13, 1.12, 1.13, 1.12, 1.13, 1.13, 1.14, 1.13, 1.13, 1.13, 1.14, 1.26, 1.11, 1.20, 1.21, 1.22, 1.19, 1.20, 1.19, 0.00, 0.00, 0.00, + 1.12, 1.13, 1.13, 1.12, 1.12, 1.12, 1.13, 1.12, 1.13, 1.12, 1.13, 1.13, 1.14, 1.13, 1.13, 1.13, 1.14, 1.26, 1.11, 1.20, 1.21, 1.22, 1.19, 1.20, 1.19, 1.22, 0.00, 0.00, + 1.08, 1.09, 1.08, 1.08, 1.11, 1.08, 1.09, 1.09, 1.09, 1.09, 1.15, 1.09, 1.10, 1.10, 1.10, 1.10, 1.10, 1.23, 1.07, 1.15, 1.14, 1.16, 1.14, 1.14, 1.15, 1.14, 1.14, 0.00, + 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.07, 1.07, 1.07, 1.07, 1.07, 1.08, 1.07, 1.09, 1.08, 1.17, 1.06, 1.11, 1.10, 1.13, 1.10, 1.10, 1.11, 1.11, 1.11, 1.09, + 1.04, 1.05, 1.04, 1.05, 1.04, 1.05, 1.06, 1.06, 1.05, 1.05, 1.05, 1.06, 1.06, 1.06, 1.06, 1.06, 1.07, 1.15, 1.04, 1.09, 1.09, 1.10, 1.09, 1.09, 1.10, 1.10, 1.10, 1.08, + 1.04, 1.03, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.05, 1.06, 1.04, 1.05, 1.05, 1.13, 1.03, 1.07, 1.08, 1.08, 1.08, 1.07, 1.07, 1.09, 1.08, 1.07, + 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.04, 1.05, 1.05, 1.05, 1.05, 1.05, 1.12, 1.03, 1.06, 1.06, 1.08, 1.07, 1.07, 1.06, 1.08, 1.07, 1.06, + 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.04, 1.04, 1.04, 1.04, 1.03, 1.10, 1.02, 1.05, 1.06, 1.06, 1.06, 1.06, 1.05, 1.06, 1.06, 1.06, + 1.02, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.03, 1.03, 1.02, 1.07, 1.02, 1.04, 1.04, 1.05, 1.06, 1.05, 1.05, 1.06, 1.06, 1.05, + 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.09, 1.02, 1.04, 1.05, 1.05, 1.05, 1.05, 1.04, 1.05, 1.06, 1.05, + 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.08, 1.01, 1.04, 1.04, 1.05, 1.05, 1.04, 1.04, 1.05, 1.06, 1.05, + 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.02, 1.01, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.06, 1.01, 1.04, 1.04, 1.05, 1.04, 1.03, 1.03, 1.04, 1.05, 1.04, + 1.01, 1.00, 1.01, 1.01, 1.01, 1.01, 1.01, 1.00, 1.01, 1.02, 1.01, 1.01, 1.02, 1.02, 1.02, 1.02, 1.03, 1.04, 1.01, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.00, 1.01, + 1.02, 1.00, 1.00, 1.02, 1.00, 1.01, 1.01, 1.00, 1.00, 1.02, 1.01, 1.01, 1.02, 1.02, 1.02, 1.02, 1.02, 1.04, 1.01, 1.03, 1.03, 1.03, 1.03, 1.02, 1.02, 1.02, 1.00, 1.01 + ]), + + layer1HCalScaleETBins = cms.vint32([1, 6, 9, 12, 15, 20, 25, 30, 35, 40, 45, 55, 70, 256]), + layer1HCalScaleFactors = cms.vdouble([ + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, # ZERO-SUPPRESS <1GeV (i.e. 0.5GeV) IN THE BARREL ONLY (ieta<=15 == eta<=1.305) + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + ]), + + layer1HFScaleETBins = cms.vint32([6, 9, 12, 15, 20, 25, 30, 35, 40, 45, 55, 70, 256]), + layer1HFScaleFactors = cms.vdouble([ + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + ]), + + # HCal FB LUT + layer1HCalFBLUTUpper = cms.vuint32([ + 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, + ]), + + layer1HCalFBLUTLower = cms.vuint32([ + 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, + ]) +) diff --git a/L1Trigger/L1TCalorimeter/python/caloParamsHI_2024_v0_1_cfi.py b/L1Trigger/L1TCalorimeter/python/caloParamsHI_2024_v0_1_cfi.py new file mode 100644 index 0000000000000..8605409759b01 --- /dev/null +++ b/L1Trigger/L1TCalorimeter/python/caloParamsHI_2024_v0_1_cfi.py @@ -0,0 +1,127 @@ +import FWCore.ParameterSet.Config as cms + +from L1Trigger.L1TCalorimeter.caloParams_cfi import caloParamsSource +import L1Trigger.L1TCalorimeter.caloParams_cfi +caloStage2Params = L1Trigger.L1TCalorimeter.caloParams_cfi.caloParams.clone( + + # EG + egEtaCut = 24, + egHcalThreshold = 0., + egTrimmingLUTFile = "L1Trigger/L1TCalorimeter/data/egTrimmingLUT_10_v16.01.19.txt", + egHOverEcutBarrel = 1, + egHOverEcutEndcap = 1, + egBypassExtHOverE = 1, + egBypassShape = 1, + egBypassECALFG = 1, + + egMaxHOverELUTFile = "L1Trigger/L1TCalorimeter/data/HoverEIdentification_0.995_v15.12.23.txt", + egCompressShapesLUTFile = "L1Trigger/L1TCalorimeter/data/egCompressLUT_v4.txt", + egShapeIdType = "compressed", + egShapeIdLUTFile = "L1Trigger/L1TCalorimeter/data/shapeIdentification_adapt0.99_compressedieta_compressedE_compressedshape_v15.12.08.txt", #Not used any more in the current emulator version, merged with calibration LUT + + egIsolationType = "compressed", + egIsoLUTFile = "L1Trigger/L1TCalorimeter/data/EG_Iso_LUT_Flat_WP_v2_Tight1358_20p0_0p7_40p0_v1_APR23.txt", + egIsoLUTFile2 = "L1Trigger/L1TCalorimeter/data/EG_Iso_LUT_Flat_WP_v2_Loose610_10p0_0p7_40p0_v1_APR23.txt", + + egIsoVetoNrTowersPhi = 2, + egPUSParams = cms.vdouble(1,4,32), #Isolation window in firmware goes up to abs(ieta)=32 for now + egCalibrationType = "compressed", + egCalibrationVersion = 0, + egCalibrationLUTFile = "L1Trigger/L1TCalorimeter/data/EG_Calibration_LUT_correctedEtCalibLUT_v1_APR2023.txt", + + # Tau + isoTauEtaMax = 25, + tauSeedThreshold = 0., + tauIsoLUTFile = "L1Trigger/L1TCalorimeter/data/Tau_Iso_LUT_2023_calibThr1p7_V2gs_effMin0p9_eMin16_eMax60.txt", + tauIsoLUTFile2 = "L1Trigger/L1TCalorimeter/data/Tau_Iso_LUT_2023_calibThr1p7_V2gs_effMin0p9_eMin16_eMax60.txt", + tauCalibrationLUTFile = "L1Trigger/L1TCalorimeter/data/Tau_Cal_LUT_2023_calibThr1p7_V2.txt", + tauCompressLUTFile = "L1Trigger/L1TCalorimeter/data/tauCompressAllLUT_12bit_v3.txt", + tauPUSParams = [1,4,32], + + # jets + jetSeedThreshold = 2.5, + jetPUSType = "PhiRing1", + jetPUSUsePhiRing = 1, + + # Calibration options + jetCalibrationType = "LUT", + jetCompressPtLUTFile = "L1Trigger/L1TCalorimeter/data/lut_pt_compress_2017v1.txt", + jetCompressEtaLUTFile = "L1Trigger/L1TCalorimeter/data/lut_eta_compress_2017v1.txt", + jetCalibrationLUTFile = "L1Trigger/L1TCalorimeter/data/lut_calib_2023v0_ECALZS_PhiRing.txt", + + + # sums: 0=ET, 1=HT, 2=MET, 3=MHT + etSumEtaMin = [1, 1, 1, 1, 1], + etSumEtaMax = [28, 26, 28, 26, 28], + etSumEtThreshold = [0., 30., 0., 30., 0.], # only 2nd (HT) and 4th (MHT) values applied + etSumMetPUSType = "LUT", # et threshold from this LUT supercedes et threshold in line above + etSumBypassEttPUS = 1, + etSumBypassEcalSumPUS = 1, + + etSumMetPUSLUTFile = "L1Trigger/L1TCalorimeter/data/metPumLUT_2023v0_puppiMet_fit.txt", + + etSumCentralityUpper = [13.0, 72.0, 357.0, 824.0, 1503.0, 7000.0, 7000.0, 65535.0], + etSumCentralityLower = [6.0, 13.0, 58.0, 295.0, 703.0, 5373.0, 5648.0, 65535.0], + # Layer 1 SF + layer1ECalScaleETBins = cms.vint32([3, 6, 9, 12, 15, 20, 25, 30, 35, 40, 45, 55, 70, 256]), + layer1ECalScaleFactors = cms.vdouble([ + 1.12, 1.13, 1.13, 1.12, 1.12, 1.12, 1.13, 1.12, 1.13, 1.12, 1.13, 1.13, 1.14, 1.13, 1.13, 1.13, 1.14, 1.26, 1.11, 1.20, 1.21, 1.22, 1.19, 1.20, 1.19, 0.00, 0.00, 0.00, + 1.12, 1.13, 1.13, 1.12, 1.12, 1.12, 1.13, 1.12, 1.13, 1.12, 1.13, 1.13, 1.14, 1.13, 1.13, 1.13, 1.14, 1.26, 1.11, 1.20, 1.21, 1.22, 1.19, 1.20, 1.19, 1.22, 0.00, 0.00, + 1.08, 1.09, 1.08, 1.08, 1.11, 1.08, 1.09, 1.09, 1.09, 1.09, 1.15, 1.09, 1.10, 1.10, 1.10, 1.10, 1.10, 1.23, 1.07, 1.15, 1.14, 1.16, 1.14, 1.14, 1.15, 1.14, 1.14, 0.00, + 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.07, 1.07, 1.07, 1.07, 1.07, 1.08, 1.07, 1.09, 1.08, 1.17, 1.06, 1.11, 1.10, 1.13, 1.10, 1.10, 1.11, 1.11, 1.11, 1.09, + 1.04, 1.05, 1.04, 1.05, 1.04, 1.05, 1.06, 1.06, 1.05, 1.05, 1.05, 1.06, 1.06, 1.06, 1.06, 1.06, 1.07, 1.15, 1.04, 1.09, 1.09, 1.10, 1.09, 1.09, 1.10, 1.10, 1.10, 1.08, + 1.04, 1.03, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.05, 1.06, 1.04, 1.05, 1.05, 1.13, 1.03, 1.07, 1.08, 1.08, 1.08, 1.07, 1.07, 1.09, 1.08, 1.07, + 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.04, 1.05, 1.05, 1.05, 1.05, 1.05, 1.12, 1.03, 1.06, 1.06, 1.08, 1.07, 1.07, 1.06, 1.08, 1.07, 1.06, + 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.04, 1.04, 1.04, 1.04, 1.03, 1.10, 1.02, 1.05, 1.06, 1.06, 1.06, 1.06, 1.05, 1.06, 1.06, 1.06, + 1.02, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.03, 1.03, 1.02, 1.07, 1.02, 1.04, 1.04, 1.05, 1.06, 1.05, 1.05, 1.06, 1.06, 1.05, + 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.09, 1.02, 1.04, 1.05, 1.05, 1.05, 1.05, 1.04, 1.05, 1.06, 1.05, + 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.08, 1.01, 1.04, 1.04, 1.05, 1.05, 1.04, 1.04, 1.05, 1.06, 1.05, + 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.02, 1.01, 1.02, 1.02, 1.02, 1.02, 1.03, 1.03, 1.03, 1.03, 1.03, 1.06, 1.01, 1.04, 1.04, 1.05, 1.04, 1.03, 1.03, 1.04, 1.05, 1.04, + 1.01, 1.00, 1.01, 1.01, 1.01, 1.01, 1.01, 1.00, 1.01, 1.02, 1.01, 1.01, 1.02, 1.02, 1.02, 1.02, 1.03, 1.04, 1.01, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.00, 1.01, + 1.02, 1.00, 1.00, 1.02, 1.00, 1.01, 1.01, 1.00, 1.00, 1.02, 1.01, 1.01, 1.02, 1.02, 1.02, 1.02, 1.02, 1.04, 1.01, 1.03, 1.03, 1.03, 1.03, 1.02, 1.02, 1.02, 1.00, 1.01 + ]), + + layer1HCalScaleETBins = cms.vint32([1, 6, 9, 12, 15, 20, 25, 30, 35, 40, 45, 55, 70, 256]), + layer1HCalScaleFactors = cms.vdouble([ + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, # ZERO-SUPPRESS <1GeV (i.e. 0.5GeV) IN THE BARREL ONLY (ieta<=15 == eta<=1.305) + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + ]), + + layer1HFScaleETBins = cms.vint32([6, 9, 12, 15, 20, 25, 30, 35, 40, 45, 55, 70, 256]), + layer1HFScaleFactors = cms.vdouble([ + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + ]), + + # HCal FB LUT + layer1HCalFBLUTUpper = cms.vuint32([ + 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, + ]), + + layer1HCalFBLUTLower = cms.vuint32([ + 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, 0xBBBABBBA, + ]) +) diff --git a/L1Trigger/L1TCalorimeter/python/convertParamsToOnlineFormat.py b/L1Trigger/L1TCalorimeter/python/convertParamsToOnlineFormat.py index 9b36d308b2ab6..8dc4438c40f4b 100644 --- a/L1Trigger/L1TCalorimeter/python/convertParamsToOnlineFormat.py +++ b/L1Trigger/L1TCalorimeter/python/convertParamsToOnlineFormat.py @@ -1,6 +1,5 @@ #!/bin/env python3 -from __future__ import print_function import argparse import FWCore.ParameterSet.Config as cms from importlib import import_module diff --git a/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT.py b/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT.py index 374983d3af102..ba05d914b3fdd 100644 --- a/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT.py +++ b/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os import sys import math diff --git a/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT_excl30.py b/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT_excl30.py index 3a8bff63ce05b..2601f6d746657 100644 --- a/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT_excl30.py +++ b/L1Trigger/L1TCalorimeter/python/generateTowerEtThresholdLUT_excl30.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os import sys import math diff --git a/L1Trigger/L1TCalorimeter/python/studyJets.py b/L1Trigger/L1TCalorimeter/python/studyJets.py index c0129a68bafa1..8038fe94d3122 100644 --- a/L1Trigger/L1TCalorimeter/python/studyJets.py +++ b/L1Trigger/L1TCalorimeter/python/studyJets.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os import sys import math diff --git a/L1Trigger/L1TCalorimeter/test/generatePattern-Stage2MP.py b/L1Trigger/L1TCalorimeter/test/generatePattern-Stage2MP.py index da2a143c541fa..f43d88db8a35c 100644 --- a/L1Trigger/L1TCalorimeter/test/generatePattern-Stage2MP.py +++ b/L1Trigger/L1TCalorimeter/test/generatePattern-Stage2MP.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1TCommon/python/customiseDemo.py b/L1Trigger/L1TCommon/python/customiseDemo.py index e89c43eabdb42..1c1c5f946537c 100644 --- a/L1Trigger/L1TCommon/python/customiseDemo.py +++ b/L1Trigger/L1TCommon/python/customiseDemo.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/L1Trigger/L1TCommon/scripts/optionsL1T.py b/L1Trigger/L1TCommon/scripts/optionsL1T.py index a73ae05947ddf..c57fe7f3f3753 100644 --- a/L1Trigger/L1TCommon/scripts/optionsL1T.py +++ b/L1Trigger/L1TCommon/scripts/optionsL1T.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # L1T Command Line Options: # diff --git a/L1Trigger/L1TCommon/test/parse_dump_l1t_configs.py b/L1Trigger/L1TCommon/test/parse_dump_l1t_configs.py index efde44d78e4fa..6dfbed5c8276e 100644 --- a/L1Trigger/L1TCommon/test/parse_dump_l1t_configs.py +++ b/L1Trigger/L1TCommon/test/parse_dump_l1t_configs.py @@ -1,5 +1,4 @@ #!/bin/python -from __future__ import print_function import sys # Parse the output of dump_l1t_configs.py, printing the nonempty records and hash values diff --git a/L1Trigger/L1TCommon/test/reEmul.py b/L1Trigger/L1TCommon/test/reEmul.py index ce2f0d31affd6..0be3787615635 100644 --- a/L1Trigger/L1TCommon/test/reEmul.py +++ b/L1Trigger/L1TCommon/test/reEmul.py @@ -1,4 +1,3 @@ -from __future__ import print_function # # reEmul.py configurable test of L1T re-emulation # diff --git a/L1Trigger/L1TCommon/test/runStandardSequences.py b/L1Trigger/L1TCommon/test/runStandardSequences.py index 57e28bb46882f..04b688f8bd92e 100644 --- a/L1Trigger/L1TCommon/test/runStandardSequences.py +++ b/L1Trigger/L1TCommon/test/runStandardSequences.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosESProducer.cc b/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosESProducer.cc index 77c57e7bbf5ac..2d4825b32bf42 100644 --- a/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosESProducer.cc +++ b/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosESProducer.cc @@ -103,16 +103,16 @@ L1TGlobalPrescalesVetosESProducer::L1TGlobalPrescalesVetosESProducer(const edm:: // Full path edm::FileInPath f1_prescale("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + prescalesFileName); - std::string m_prescaleFile = f1_prescale.fullPath(); + const std::string& m_prescaleFile = f1_prescale.fullPath(); edm::FileInPath f1_mask_algobx("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + algobxmaskFileName); - std::string m_algobxmaskFile = f1_mask_algobx.fullPath(); + const std::string& m_algobxmaskFile = f1_mask_algobx.fullPath(); edm::FileInPath f1_mask_finor("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + finormaskFileName); - std::string m_finormaskFile = f1_mask_finor.fullPath(); + const std::string& m_finormaskFile = f1_mask_finor.fullPath(); edm::FileInPath f1_mask_veto("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + vetomaskFileName); - std::string m_vetomaskFile = f1_mask_veto.fullPath(); + const std::string& m_vetomaskFile = f1_mask_veto.fullPath(); // XML payloads std::string xmlPayload_prescale; diff --git a/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosFractESProducer.cc b/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosFractESProducer.cc index 9cfc8993931e5..be4c7876fdb64 100644 --- a/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosFractESProducer.cc +++ b/L1Trigger/L1TGlobal/plugins/L1TGlobalPrescalesVetosFractESProducer.cc @@ -103,16 +103,16 @@ L1TGlobalPrescalesVetosFractESProducer::L1TGlobalPrescalesVetosFractESProducer(c // Full path edm::FileInPath f1_prescale("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + prescalesFileName); - std::string m_prescaleFile = f1_prescale.fullPath(); + const std::string& m_prescaleFile = f1_prescale.fullPath(); edm::FileInPath f1_mask_algobx("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + algobxmaskFileName); - std::string m_algobxmaskFile = f1_mask_algobx.fullPath(); + const std::string& m_algobxmaskFile = f1_mask_algobx.fullPath(); edm::FileInPath f1_mask_finor("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + finormaskFileName); - std::string m_finormaskFile = f1_mask_finor.fullPath(); + const std::string& m_finormaskFile = f1_mask_finor.fullPath(); edm::FileInPath f1_mask_veto("L1Trigger/L1TGlobal/data/Luminosity/" + menuDir + "/" + vetomaskFileName); - std::string m_vetomaskFile = f1_mask_veto.fullPath(); + const std::string& m_vetomaskFile = f1_mask_veto.fullPath(); // XML payloads std::string xmlPayload_prescale; diff --git a/L1Trigger/L1TGlobal/plugins/TriggerMenuParser.cc b/L1Trigger/L1TGlobal/plugins/TriggerMenuParser.cc index 264cc1579f94c..fc8c2198aed0a 100644 --- a/L1Trigger/L1TGlobal/plugins/TriggerMenuParser.cc +++ b/L1Trigger/L1TGlobal/plugins/TriggerMenuParser.cc @@ -2849,7 +2849,7 @@ bool l1t::TriggerMenuParser::parseAXOL1TL(L1TUtmCondition condAXOL1TL, unsigned } // check model version is not empty - if (model == "") { + if (model.empty()) { edm::LogError("TriggerMenuParser") << " Error: AXOL1TL movel version is empty" << std::endl; return false; } diff --git a/L1Trigger/L1TGlobal/test/Raw2Digi_uGTEmulation.py b/L1Trigger/L1TGlobal/test/Raw2Digi_uGTEmulation.py index 16d6d4209139d..84ea81dc26962 100644 --- a/L1Trigger/L1TGlobal/test/Raw2Digi_uGTEmulation.py +++ b/L1Trigger/L1TGlobal/test/Raw2Digi_uGTEmulation.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1TGlobal/test/TTBarRelVal_Stage2uGT_TestVectors.py b/L1Trigger/L1TGlobal/test/TTBarRelVal_Stage2uGT_TestVectors.py index 514fb3ad8f5f7..c5c17c478fc10 100644 --- a/L1Trigger/L1TGlobal/test/TTBarRelVal_Stage2uGT_TestVectors.py +++ b/L1Trigger/L1TGlobal/test/TTBarRelVal_Stage2uGT_TestVectors.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import sys """ diff --git a/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromDigi.py b/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromDigi.py index 8b114c8185dee..221098d6f814a 100644 --- a/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromDigi.py +++ b/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromDigi.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromRAW.py b/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromRAW.py index 1fec6f153351a..7bf07121dcfaf 100644 --- a/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromRAW.py +++ b/L1Trigger/L1TGlobal/test/l1tGlobalEmulation_FromRAW.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1TGlobal/test/runGTSummary.py b/L1Trigger/L1TGlobal/test/runGTSummary.py index 7648746913cd6..1e9661fa22ad3 100644 --- a/L1Trigger/L1TGlobal/test/runGTSummary.py +++ b/L1Trigger/L1TGlobal/test/runGTSummary.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import FWCore.ParameterSet.Config as cms from Configuration.Eras.Era_Run2_2016_cff import Run2_2016 diff --git a/L1Trigger/L1TGlobal/test/runGlobalFakeInputProducer.py b/L1Trigger/L1TGlobal/test/runGlobalFakeInputProducer.py index 562c42c4a6e78..0dd29713b1e1e 100644 --- a/L1Trigger/L1TGlobal/test/runGlobalFakeInputProducer.py +++ b/L1Trigger/L1TGlobal/test/runGlobalFakeInputProducer.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import sys """ diff --git a/L1Trigger/L1TGlobal/test/testVectorCode_data.py b/L1Trigger/L1TGlobal/test/testVectorCode_data.py index 0331764a1631d..1572b5ad484b1 100644 --- a/L1Trigger/L1TGlobal/test/testVectorCode_data.py +++ b/L1Trigger/L1TGlobal/test/testVectorCode_data.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import sys """ diff --git a/L1Trigger/L1TGlobal/test/unpackBuffers-CaloStage2_uGTEmulation.py b/L1Trigger/L1TGlobal/test/unpackBuffers-CaloStage2_uGTEmulation.py index 658b5dd6117de..5f2de58664f84 100644 --- a/L1Trigger/L1TGlobal/test/unpackBuffers-CaloStage2_uGTEmulation.py +++ b/L1Trigger/L1TGlobal/test/unpackBuffers-CaloStage2_uGTEmulation.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/L1Trigger/L1THGCal/python/customCalibration.py b/L1Trigger/L1THGCal/python/customCalibration.py index 5c6311ef1d609..314df054c3143 100644 --- a/L1Trigger/L1THGCal/python/customCalibration.py +++ b/L1Trigger/L1THGCal/python/customCalibration.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from . import hgcalLayersCalibrationCoefficients_cfi as layercalibparam diff --git a/L1Trigger/L1THGCal/python/l1tHGCalBackEndLayer1Producer_cfi.py b/L1Trigger/L1THGCal/python/l1tHGCalBackEndLayer1Producer_cfi.py index 1bef6460c6ae8..cfb81fad86605 100644 --- a/L1Trigger/L1THGCal/python/l1tHGCalBackEndLayer1Producer_cfi.py +++ b/L1Trigger/L1THGCal/python/l1tHGCalBackEndLayer1Producer_cfi.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms import SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi as digiparam diff --git a/L1Trigger/L1THGCal/python/l1tHGCalVFEProducer_cfi.py b/L1Trigger/L1THGCal/python/l1tHGCalVFEProducer_cfi.py index f465d82bc29a6..5d83b3fb6df66 100644 --- a/L1Trigger/L1THGCal/python/l1tHGCalVFEProducer_cfi.py +++ b/L1Trigger/L1THGCal/python/l1tHGCalVFEProducer_cfi.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms import SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi as digiparam diff --git a/L1Trigger/L1THGCalUtilities/python/hgcalTriggerNtuples_cfi.py b/L1Trigger/L1THGCalUtilities/python/hgcalTriggerNtuples_cfi.py index a55380002da25..9d3085d99a8a5 100644 --- a/L1Trigger/L1THGCalUtilities/python/hgcalTriggerNtuples_cfi.py +++ b/L1Trigger/L1THGCalUtilities/python/hgcalTriggerNtuples_cfi.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms import SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi as digiparam diff --git a/L1Trigger/L1TMuonBarrel/src/L1MuBMTEtaPatternLut.cc b/L1Trigger/L1TMuonBarrel/src/L1MuBMTEtaPatternLut.cc index 19fa92897800f..c55b8e17c1715 100644 --- a/L1Trigger/L1TMuonBarrel/src/L1MuBMTEtaPatternLut.cc +++ b/L1Trigger/L1TMuonBarrel/src/L1MuBMTEtaPatternLut.cc @@ -79,7 +79,7 @@ int L1MuBMTEtaPatternLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + eau_dir + "ETFPatternList.lut")); - string etf_file = lut_f.fullPath(); + const string& etf_file = lut_f.fullPath(); // open file L1TriggerLutFile file(etf_file); diff --git a/L1Trigger/L1TMuonBarrel/src/L1MuBMTQualPatternLut.cc b/L1Trigger/L1TMuonBarrel/src/L1MuBMTQualPatternLut.cc index db556a77f6dfe..915b172ea4a2b 100644 --- a/L1Trigger/L1TMuonBarrel/src/L1MuBMTQualPatternLut.cc +++ b/L1Trigger/L1TMuonBarrel/src/L1MuBMTQualPatternLut.cc @@ -86,7 +86,7 @@ int L1MuBMTQualPatternLut::load() { // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + eau_dir + emu_str + ".lut")); - string emu_file = lut_f.fullPath(); + const string& emu_file = lut_f.fullPath(); // open file L1TriggerLutFile file(emu_file); diff --git a/L1Trigger/L1TMuonBarrel/src/L1TMuonBarrelParamsHelper.cc b/L1Trigger/L1TMuonBarrel/src/L1TMuonBarrelParamsHelper.cc index 3e7ba1cf2f1ba..67d2b5c5a54d8 100644 --- a/L1Trigger/L1TMuonBarrel/src/L1TMuonBarrelParamsHelper.cc +++ b/L1Trigger/L1TMuonBarrel/src/L1TMuonBarrelParamsHelper.cc @@ -399,7 +399,7 @@ int L1TMuonBarrelParamsHelper::load_pt(std::vector& pta_lut, // assemble file name const string& lutpath = AssLUTpath; edm::FileInPath lut_f = edm::FileInPath(string(lutpath + pta_str + ".lut")); - string pta_file = lut_f.fullPath(); + const string& pta_file = lut_f.fullPath(); // open file L1TriggerLutFile file(pta_file); @@ -476,7 +476,7 @@ int L1TMuonBarrelParamsHelper::load_phi(std::vector& phi_lut, // assemble file name edm::FileInPath lut_f = edm::FileInPath(string(AssLUTpath + phi_str + ".lut")); - string phi_file = lut_f.fullPath(); + const string& phi_file = lut_f.fullPath(); // open file L1TriggerLutFile file(phi_file); @@ -599,7 +599,7 @@ int L1TMuonBarrelParamsHelper::load_ext(std::vector(); xmlConfigReader.readConfig(omtfParams.get()); //getPatternsVersion() parses the entire patterns xml - si it is very inefficient diff --git a/L1Trigger/L1TMuonOverlapPhase1/src/Tools/EmulationObserverBase.cc b/L1Trigger/L1TMuonOverlapPhase1/src/Tools/EmulationObserverBase.cc index 2b7ebb884bcd8..107321f386eac 100644 --- a/L1Trigger/L1TMuonOverlapPhase1/src/Tools/EmulationObserverBase.cc +++ b/L1Trigger/L1TMuonOverlapPhase1/src/Tools/EmulationObserverBase.cc @@ -5,6 +5,8 @@ * Author: kbunkow */ +#include + #include "L1Trigger/L1TMuonOverlapPhase1/interface/Tools/EmulationObserverBase.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" @@ -65,7 +67,7 @@ void EmulationObserverBase::observeProcesorEmulation(unsigned int iProcessor, } void EmulationObserverBase::observeEventBegin(const edm::Event& iEvent) { - omtfCand.reset(new AlgoMuon()); + omtfCand = std::make_shared(); candProcIndx = 0xffff; simMuon = findSimMuon(iEvent); diff --git a/L1Trigger/L1TNtuples/plugins/L1UpgradeTfMuonTreeProducer.cc b/L1Trigger/L1TNtuples/plugins/L1UpgradeTfMuonTreeProducer.cc index 7cb566c8b5ac2..36c346ef5b3b5 100644 --- a/L1Trigger/L1TNtuples/plugins/L1UpgradeTfMuonTreeProducer.cc +++ b/L1Trigger/L1TNtuples/plugins/L1UpgradeTfMuonTreeProducer.cc @@ -257,7 +257,7 @@ unsigned L1UpgradeTfMuonTreeProducer::getAlgoFwVersion() { if (!packet.payload().empty()) { auto payload64 = (packet.payload().at(0)).data(); - const uint32_t* start = (const uint32_t*)payload64.get(); + const uint32_t* start = reinterpret_cast(&payload64.front()); const uint32_t* end = start + (packet.payload().at(0).size() * 2); l1t::MP7Payload payload(start, end, false); diff --git a/L1Trigger/L1TTrackMatch/Readme.md b/L1Trigger/L1TTrackMatch/Readme.md new file mode 100644 index 0000000000000..c1385b26eaef9 --- /dev/null +++ b/L1Trigger/L1TTrackMatch/Readme.md @@ -0,0 +1,142 @@ +# Global Track Trigger +This section describes several componenets of the Global Track Trigger, the CMS subsystem downstream of Level-1 Track Finding, which performs Level-1 vertex-finding for the L1 Correlator Layer 1 (for PF Candidate / PUPPI reconstruction) and globally builds track-only objects such as Jets, HT, MET, mesons (including $\phi$ and $\rho$), etc to be sent to the Global Trigger. + +## Data Flow Overview + +The current design of the GTT involves several steps. Universally, a GTTInputConversion step which performs such conversions as $\frac{1}{R}$ to $p_T$ and $tan(\lambda)$ to $\eta$, occurs first. Currently in emulation, this takes information from the 96-bit [TrackWord](https://github.com/cms-sw/cmssw/blob/master/DataFormats/L1TrackTrigger/interface/TTTrack_TrackWord.h) and overwrites the corresponding fields with the GTT converted values, leaving the Track in a non-canonical state. In [firmware](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/DataFormats/Track?ref_type=heads), the HLS code for the Track [struct](https://gitlab.cern.ch/GTT/LibHLS/-/blob/master/DataFormats/Track/interface/Track.h?ref_type=heads) represents this non-canonical state as separate fields, rather than a single 96-bit word. Afterward InputConversion, multiple TrackSelection (TS) modules are configured/instantiated, potentially 1 for each downstream algorithm, such as VertexFinding (VF), Displaced Vertexing, TrackJets (and thus TrackHT/TrackMissingHT), TrackMET, mesons, $W~\it{to}~3\pi$, and so on. The VertexFinder takes selected tracks and uses (as baseline/extension) a histogramming method to identify the Primary Vertex (PV), weighted either with track $p_T$ (baseline) or a Neural Net score (extended). Downstream, multiple modules of TrackVertexAssociation (TVA) are run (in the baseline, a simple cut-based algo, and in extended algorithm/E2E, a track-association network discriminant cut), taking selected tracks from an appropriate TS modules, the PV from VF, and outputting vertex-associated tracks. These are inputs to JetFinding (JF), meson finding, MET, and other algorithms. In firmware, the outputs from vertex-finding are streamed to the L1 Correlator Layer 1, and all algorithms (including vertex-finding) outputs are sent to the L1 Global Trigger. + +### GTT Input Conversion +Input conversion handles the change from 1/R (really q/R) to $p_T$ and $tan(\lambda)$ to $\eta$. In LibHLS, this is controlled with a few constants that denote how many integer and fixed-float bits should be used. In emulation, constants are located inside the GTT plugin under ConversionBitWidths. +LibHLS $\eta$ [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/ConversionEta?ref_type=heads) and $p_T$ [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/ConversionPt?ref_type=heads) +CMSSW [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1GTTInputProducer.cc) + +#### Status (October 2024) +The Input conversion in Firmware centrally stores conversion constants and consistently uses the central GTT format (struct) for tracks. Meanwhile, the emulator is in a somewhat different spot, with a low-granularity conversion of $p_T$ with 7 integer bits and 3 float bits (currently consistent with firmware). For reading the $p_T$ back, different algorithms make different assumptions about the width of the datatype, either the actual ap_fixed<10,7> with 7 integer bits, or ap_fixed<14,9>. This works because of a bit-shift that 0-pads the 2 least significant bits of the actual ap_fixed<10,7> data stored in the previoius canonical L1T $\frac{1}{R}$ word; ergo the least significant integer bits are aligned under either interpretation. The $p_T$ conversion also uses an 10-bit LUT to map track values from the ap_int datatype to ap_fixed, which means that the least significant bits are ignored, dropping 2**2 in resolution. Because of the non-linear conversion, this produces strong discretization of high $p_T$ tracks. A possible remediation of this would involve either splitting the LUT so that a more granular version is applied to high $p_T$ tracks, or equivalently residual/correction-LUTs to adjust the response where needed. Either approach should require a modest increase in LUT resources but improve the conversion loss. Additionally, studies on $\phi$ mesons and reconstructing $B_s$ from them indicates that the $\eta$ conversion is a significant source of error, but also the $p_T$ appears to have biases (which may have a charge dependence). The latter indicates that there may be an inconsistent use of half-bin shifting in calculations somewhere. The $\eta$ conversion uses a 128-sized LUT (7 bits, owing to symmetry in the transform, it's cut in half relative to a simple calculation), into an ap_fixed<8,3> datatype; the LUT should be increased by a factor of 2^3 at least to ap_fixed<11,3>, improving the granularity significantly for $\phi$ meson reconstruction. + +### Vertex Finder (VF) +#### FastHisto (FH) - Baseline Algorithm +This version of the algorithm serves as the baseline from TDR studies. This uses a histogram (256 bins as of 2023) which is filled with track $p_T$ as weights. A single vertex is chosen by a sliding-window algorithm which finds the consecutive bins (currently 3) containing the maximum $p_T$-sum (using a flat kernel). An inversion LUT which is built to store the mapping from $p_T$ to $\frac{1}{p_T}$ is used in combination with a window-bin-indexed weighted-sum of per-bin $p_T$-sums is used to calculate the $p_T$-weighted location of the peak, and this is stored as the vertex $z_0$ position. The $p_T$-sum from the window is denoted as the sumPt of the vertex. +LibHLS [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/Vertex?ref_type=heads) +VertexFinder class [interface](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/VertexFinder/interface/VertexFinder.h), [src](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/VertexFinder/src/VertexFinder.cc), and [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/VertexFinder/plugins/VertexProducer.cc) with CMSSW default configuration [here](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/VertexFinder/python/l1tVertexProducer_cfi.py). The Simulation tag is 'l1tVertexFinder' whereas the emulator is usually grabbed via 'l1tVertexFinderEmulator.' +#### End-to-end Neural Network (E2E) - Extended Algorithm +The End-to-end Neural Network is a beyond-baseline version of the algorithm. It uses the same structure as FastHisto, but replaces weighting tracks by their $p_T$ with a DNN discriminant score. This produces an improved vertex-finding efficiency and resolution over FH. This is trained in tandem with TrackAssociationNetworks to replace the cut-based TrackVertexAssociation algorithm typically paired with FH. + +#### Status as of October 2024 +The FastHisto (Emulation) algorithm has bit-level agreement with the firmware using several thousand events from $t\bar{t}$ simulation (200 PileUp). The algorithm can handle mulitple vertices. In LibHLS/firmware, only one vertex is enabled to reduce resource usage. An implementation detail is that the $p_T$ sum per bin is calculated untruncated in both firmware and emulation, but prior to the vertex-finding portion (sliding window algo), the precision is reduced. Of the fields proposed for the vertex, only the valid bit, the sumPt, and the $z_0$ position are filled; all other fields, including the quality field, the nTracks in/out PV are 0-filled. A design shortcoming is that the number of bins is a compile-time constant, but runtime-configurable constants passed into the configuration as `FH_HistogramParameters` indicate the minimum and maximum $z$ position for the histogram, and the 3rd parameter must divide this range appropriately to match the number of bins in firmware. For example, `FH_HistogramParameters = cms.vdouble(-20.46912512, 20.46912512, 0.15991504)` is appropriate for 256 bins as currently used. + +### Track Selection (TS) + +In CMSSW GTT emulation the [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TrackSelectionProducer.cc) is defined within the L1TTrackMatch subpackage, and configured with default settings [here](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/python/l1tTrackSelectionProducer_cfi.py). In firmware, the HLS code is concentrated in this LibHLS [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/TrackSelection?ref_type=heads) + +#### Status as of October 2024 +The TrackSelection is partially desynchronized with the Firmware at HLS level. The firmware currently runs 3 duplicates of TS for VF, JF, and MET. The emulation default is not necessarily synchronized (per algorithm), and some of the capabilities in Emulation are not yet propagated back to HLS firmware code, notably for any track MVA quality cuts. + +### Track Vertex Association (TVA) - Baseline (cut-based) Implementation +CMSSW [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TrackVertexAssociationProducer.cc) +CMSSW [config](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/python/l1tTrackVertexAssociationProducer_cfi.py) +LibHLS [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/TrackVertexAssociation?ref_type=heads) + +#### Status as of October 2024 +The Baseline TVA module is extremely simple, primarily cutting on the $\Delta~z$ between the PV and the selected tracks from the upstream TS module. + +### Jet Finding (JF) +Jet finding uses a 2-layer clustering algorithm. The firmware is written in Verilog, and the emulator can be found in CMSSW in the central [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TrackJetEmulatorProducer.cc), [configuration](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/python/l1tTrackJetsEmulation_cfi.py), and common [header](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TrackJetClustering.h) + +#### Status as of October 2024 +The output of the emulator does not exactly match the firmware currently. An ongoing PR exists to fix several discrepancies, including a missing valid bit in emulation, and the binning of the $\eta-\phi$ plane. + +### HT and Missing HT (HT) +The HT / Missing HT modules only exist in Emulation currently, with plans for an HLS implementation in Firmware in the near future. The CMSSW [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TkHTMissEmulatorProducer.cc) and associated [configuration](https://github.com/cms-sw/cmssw/tree/master/L1Trigger/L1TTrackMatch/python) + +#### Status as of October 2024 +The (Missing)HT Emulator currently uses a centrally defined [data format](https://github.com/cms-sw/cmssw/blob/master/DataFormats/L1Trigger/interface/EtSum.h) which only permits storing either the scalar or vector-sum in a (potentially) bit-accurate way. In other subsystems (e.g. L1Calo), this is addressed by storing two variations of the datatype, one where the scalar sum is stored in a hardware-accurate way, and another with the vector sum. Currently GTT only stores one copy, and the vector sum is stored as a float, while the scalar sum, phi, and number of jets are stored as integers. + +### MET +CMSSW [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TrackerEtMissEmulatorProducer.cc) +CMSSW [configuration](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/python/l1tTrackerEmuEtMiss_cfi.py) +LibHLS [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/MET?ref_type=heads) + +#### Status as of October 2024 +The MET module has bit-accurate agreement between firmware and emulation. The LUT converting the track global $\phi$ value to a $cos(\phi)$ or $sin(\phi)$ value was reduced to a size of 1024 in order to meet firmware timing constraints. This is accomplished with a single LUT in combination with trigonometric identities to avoid separate $cos(\phi)$ and $sin(\phi)$ LUTs. Similar to the (Missing)HT module, only part of the output is stored in a potentially bit-accurate way in emulation (in this case, the vector sum, being the true MET, along with the phi and number of tracks) + +### Phi and Rho Meson Finding +These currently exist as simulation+emulation studies in private CMSSW branches, with ongoing work to create HLS-based firmware modules. + +### $W~\it{to}~3\pi$ (W3pi) +CMSSW [TkTriplet](https://github.com/cms-sw/cmssw/blob/master/DataFormats/L1TCorrelator/interface/TkTriplet.h) +CMSSW [plugin](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/plugins/L1TrackTripletEmulatorProducer.cc) +CMSSW [configuration](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/L1TTrackMatch/python/l1tTrackTripletEmulation_cfi.py) +LibHLS [module](https://gitlab.cern.ch/GTT/LibHLS/-/tree/master/Modules/WtoThreePi?ref_type=heads) + +### GTTFileReader, GTTFileWriter +[reader](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/plugins/GTTFileReader.cc) +[writer](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/plugins/GTTFileWriter.cc) +These plugins make use of the subsystem-agnostic BoardDataReader and BoardDataWriter classes, respectively, specified in the reader's [interface](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/interface/BoardDataReader.h) and [src](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/src/BoardDataReader.cc) files, and likewise for the writer [interface](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/interface/BoardDataWriter.h) and [src](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/src/BoardDataWriter.cc) +The GTT configuration constants are mostly gathered in the [GTTInterface.h](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/interface/GTTInterface.h) which specifies how link inputs/frames map to given collections of objects for pattern-buffer writing and reading. For example, whether vertices are placed in link 3 or link 0 to GT for a given board, and at which starting frame they may appear, is encoded in these maps. Similarly other collections like jets, displaced jets, MET, HT link and frame position encoding are specified in this file. + +## Emulation Pattern (Buffer) Files + +A git [submodule](https://gitlab.cern.ch/GTT/Data) stores fixed copies of the emulation buffer / pattern files for use in [LibHLS](https://gitlab.cern.ch/GTT/LibHLS/), using git [LFS](https://git-lfs.com/) + +### Generating pattern files +A script in the CMSSW L1Trigger/DemonstratorTools/test/gtt folder contains a configuration to export and import pattern file buffers into CMSSW. +[script](https://github.com/cms-sw/cmssw/blob/master/L1Trigger/DemonstratorTools/test/gtt/createFirmwareInputFiles_cfg.py). +Typical usage looks like: +``` +cmsRun createFirmwareInputFiles_cfg.py maxEvents=1008 format=APx inputFiles=L1Trigger/DemonstratorTools/python/TT_TuneCP5_14TeV-powheg-pythia8_Phase2Spring23DIGIRECOMiniAOD-PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1_GEN-SIM-DIGI-RAW-MINIAOD_APxBuffers_cff.py +``` +An example configuration as referred to via the `inputFiles` kwarg can be found below, in this README. + +### Loading tracks and vertices from pattern files +Two input kwargs, `tracks` and `vertices` can be passed 3 options each, `donotload`, `load`, and `overwrite` to modify the behavior of patter-file writing. For each collection, the option `donotload` implies that the appropriate collection will be generated or read in from CMSSW collections (this is the default mode). The `load` option instead dictates that pattern files' contents, specified in the inputFiles configuration python file, will be decoded (verifying they can be read back via BoardDataReader class, as configured via GTTFileReader), but then ignored: the final collections will still be read/generated from CMSSW collections generated upstream in TrackFinding, as in the default mode. The final option, `overwrite,` decodes the objects from pattern files and makes these the corresponding collection used in subsequent steps. That is, if `tracks=overwrite` is used, then the tracks passed into the GTTInputConversion and downstream TS, VF, JF, etc. will come from pattern files written in the appropriate `readerformat` (APx, EMPv2, ...). As long as vertices is not set to `overwrite` as well, this will calculate new vertices from these pattern-buffer loaded tracks instead of those from the source root files or generated by the TrackFinder upstream. Similarly, if `vertices=overwrite,` the vertices collection will be read from the pattern files and upstream tracks (regardless of source and `tracks=X` option selected) will be ignored. The readerformat should specify whether the inputs are `APx` or `EMPv2` encoded. +``` +cmsRun createFirmwareInputFiles_cfg.py maxEvents=1008 format=APx inputFiles=L1Trigger/DemonstratorTools/python/TT_TuneCP5_14TeV-powheg-pythia8_Phase2Spring23DIGIRECOMiniAOD-PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1_GEN-SIM-DIGI-RAW-MINIAOD_APxBuffers_cff.py tracks=overwrite vertices=donotload readerformat=APx +``` + +An example of the `inputFiles` configuration including pointers to buffer files follows (the pointers to pattern files can be dropped for workflows that only need to generate buffer files from the default CMSSW collections or upstream TrackFinder): + +``` +import FWCore.ParameterSet.Config as cms + +maxEvents = cms.untracked.PSet( input = cms.untracked.int32(-1) ) +readFiles = cms.untracked.vstring() +secFiles = cms.untracked.vstring() +source = cms.Source ("PoolSource",fileNames = readFiles, secondaryFileNames = secFiles) +readFiles.extend( [ + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/005bc30b-cf79-4b3b-9ec1-a80e13072afd.root', + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/009bd7ba-4295-46ef-a5bc-9eb3d2cd3cf7.root', + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/017a99d2-4636-4584-97d0-d5499c3b453c.root', + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/02020287-a16f-41db-8021-f9bcd272f6c9.root', + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/02ca41cb-9638-4703-88b7-799c30fd2656.root', + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/03171e00-8880-4c09-807a-0c1d5bac2797.root', + '/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_L1TFix_Trk1GeV_131X_mcRun4_realistic_v9-v1/50000/04c836c3-66f4-44d5-a8fd-2faf5e4aa623.root', +] ) +correlator_source = cms.Source ("PoolSource", + fileNames = cms.untracked.vstring( + 'APx/L1GTTOutputToCorrelatorFile_0.txt', + 'APx/L1GTTOutputToCorrelatorFile_1.txt', + 'APx/L1GTTOutputToCorrelatorFile_2.txt', + 'APx/L1GTTOutputToCorrelatorFile_3.txt', + 'APx/L1GTTOutputToCorrelatorFile_4.txt', + ..., + 'APx/L1GTTOutputToCorrelatorFile_54.txt', + 'APx/L1GTTOutputToCorrelatorFile_55.txt', + ) +) +track_source = cms.Source ("PoolSource", + fileNames = cms.untracked.vstring( + 'APx/L1GTTInputFile_0.txt', + 'APx/L1GTTInputFile_1.txt', + 'APx/L1GTTInputFile_2.txt', + 'APx/L1GTTInputFile_3.txt', + ..., + 'APx/L1GTTInputFile_60.txt', + 'APx/L1GTTInputFile_61.txt', + 'APx/L1GTTInputFile_62.txt', + ) +) +``` +For loading tracks or vertices from buffers, the outputs from the `createFirmwareInputFiles_cfg.py` should be placed in a subfolder labeled `APx` relative to that same script. + +### Sidebands in different formats +The APx and EMPv2 have different sideband codes. In LibHLS a script exists which can strip the APx sideband codes from pattern files and write these out as new txt files can be found [here](https://gitlab.cern.ch/GTT/Data/-/blob/master/Scripts/APx/turn_off_sideband.py) \ No newline at end of file diff --git a/L1Trigger/Phase2L1GMT/test/makeTrackConversionLUTs.py b/L1Trigger/Phase2L1GMT/test/makeTrackConversionLUTs.py index 8f7f2c1b17d47..3549cfd1a089a 100644 --- a/L1Trigger/Phase2L1GMT/test/makeTrackConversionLUTs.py +++ b/L1Trigger/Phase2L1GMT/test/makeTrackConversionLUTs.py @@ -8,7 +8,6 @@ # # Description : -from __future__ import division import math import numpy as np from collections import defaultdict, Counter diff --git a/L1Trigger/Phase2L1GT/plugins/L1GTObjectBoardWriter.cc b/L1Trigger/Phase2L1GT/plugins/L1GTObjectBoardWriter.cc index 6059c3b474f62..ca14093c56347 100644 --- a/L1Trigger/Phase2L1GT/plugins/L1GTObjectBoardWriter.cc +++ b/L1Trigger/Phase2L1GT/plugins/L1GTObjectBoardWriter.cc @@ -296,7 +296,7 @@ static std::vector> packCollection(const std::vector& collection) packed.emplace_back(0); } } else if constexpr (std::is_same_v) { - if (packed.size() < 1) { + if (packed.empty()) { packed.emplace_back(0); } } diff --git a/L1Trigger/Phase2L1GT/plugins/L1GTProducer.cc b/L1Trigger/Phase2L1GT/plugins/L1GTProducer.cc index 6da0d5766cb81..b0671a5771180 100644 --- a/L1Trigger/Phase2L1GT/plugins/L1GTProducer.cc +++ b/L1Trigger/Phase2L1GT/plugins/L1GTProducer.cc @@ -229,7 +229,7 @@ namespace l1t { void L1GTProducer::produceGTTPromptHtSum(edm::Event &event) const { std::unique_ptr outputCollection = std::make_unique(); const std::vector &collection = event.get(gttPromptHtSumToken_); - if (collection.size() > 0) { + if (!collection.empty()) { const l1t::EtSum &obj = collection[0]; l1tmhtemu::EtMiss htMiss; htMiss.Et = obj.p4().energy(); @@ -251,7 +251,7 @@ namespace l1t { void L1GTProducer::produceGTTDisplacedHtSum(edm::Event &event) const { std::unique_ptr outputCollection = std::make_unique(); const std::vector &collection = event.get(gttDisplacedHtSumToken_); - if (collection.size() > 0) { + if (!collection.empty()) { const l1t::EtSum &obj = collection[0]; l1tmhtemu::EtMiss htMiss; htMiss.Et = obj.p4().energy(); @@ -273,7 +273,7 @@ namespace l1t { void L1GTProducer::produceGTTEtSum(edm::Event &event) const { std::unique_ptr outputCollection = std::make_unique(); const std::vector &collection = event.get(gttEtSumToken_); - if (collection.size() > 0) { + if (!collection.empty()) { const l1t::EtSum &obj = collection[0]; P2GTCandidate gtObj( 0, reco::ParticleState::PolarLorentzVector(scales_.to_pT(obj.hwPt()), 0, scales_.to_phi(obj.hwPhi()), 0)); diff --git a/L1Trigger/TrackFindingTracklet/src/TrackletCalculatorDisplaced.cc b/L1Trigger/TrackFindingTracklet/src/TrackletCalculatorDisplaced.cc index 9138bf16a9145..471519f60447b 100644 --- a/L1Trigger/TrackFindingTracklet/src/TrackletCalculatorDisplaced.cc +++ b/L1Trigger/TrackFindingTracklet/src/TrackletCalculatorDisplaced.cc @@ -8,6 +8,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/Utilities/interface/Exception.h" +#include "FWCore/Utilities/interface/isFinite.h" #include "DataFormats/Math/interface/deltaPhi.h" using namespace std; @@ -937,10 +938,8 @@ bool TrackletCalculatorDisplaced::DDLSeeding(const Stub* innerFPGAStub, edm::LogVerbatim("Tracklet") << "d0approx: " << d0approx << " d0: " << d0 << endl; edm::LogVerbatim("Tracklet") << "tapprox: " << tapprox << " t: " << t << endl; edm::LogVerbatim("Tracklet") << "z0approx: " << z0approx << " z0: " << z0 << endl; - } - for (unsigned int i = 0; i < toR_.size(); ++i) { - if (settings_.debugTracklet()) { + for (unsigned int i = 0; i < toR_.size(); ++i) { edm::LogVerbatim("Tracklet") << "phiprojapprox[" << i << "]: " << phiprojapprox[i] << " phiproj[" << i << "]: " << phiproj[i] << endl; edm::LogVerbatim("Tracklet") << "zprojapprox[" << i << "]: " << zprojapprox[i] << " zproj[" << i @@ -950,10 +949,8 @@ bool TrackletCalculatorDisplaced::DDLSeeding(const Stub* innerFPGAStub, edm::LogVerbatim("Tracklet") << "zderapprox[" << i << "]: " << zderapprox[i] << " zder[" << i << "]: " << zder[i] << endl; } - } - for (unsigned int i = 0; i < toZ_.size(); ++i) { - if (settings_.debugTracklet()) { + for (unsigned int i = 0; i < toZ_.size(); ++i) { edm::LogVerbatim("Tracklet") << "phiprojdiskapprox[" << i << "]: " << phiprojdiskapprox[i] << " phiprojdisk[" << i << "]: " << phiprojdisk[i] << endl; edm::LogVerbatim("Tracklet") << "rprojdiskapprox[" << i << "]: " << rprojdiskapprox[i] << " rprojdisk[" << i @@ -991,7 +988,7 @@ bool TrackletCalculatorDisplaced::DDLSeeding(const Stub* innerFPGAStub, iz0 = z0approx / kz0; bool success = true; - if (std::abs(rinvapprox) > settings_.rinvcut()) { + if ((std::abs(rinvapprox) > settings_.rinvcut()) || (!edm::isFinite(rinvapprox))) { if (settings_.debugTracklet()) edm::LogVerbatim("Tracklet") << "TrackletCalculator::DDL Seeding irinv too large: " << rinvapprox << "(" << irinv << ")"; @@ -1002,7 +999,7 @@ bool TrackletCalculatorDisplaced::DDLSeeding(const Stub* innerFPGAStub, edm::LogVerbatim("Tracklet") << "Failed tracklet z0 cut " << z0approx; success = false; } - if (std::abs(d0approx) > settings_.maxd0()) { + if ((std::abs(d0approx) > settings_.maxd0()) || (!edm::isFinite(d0approx))) { if (settings_.debugTracklet()) edm::LogVerbatim("Tracklet") << "Failed tracklet approx d0 cut " << d0approx; success = false; diff --git a/L1Trigger/TrackTrigger/python/TkOnlyDigi_cff.py b/L1Trigger/TrackTrigger/python/TkOnlyDigi_cff.py index 00846878389fa..04d674e1353a3 100644 --- a/L1Trigger/TrackTrigger/python/TkOnlyDigi_cff.py +++ b/L1Trigger/TrackTrigger/python/TkOnlyDigi_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms def TkOnlyDigi(process): diff --git a/L1Trigger/TrackTrigger/test/SLHC_MBIAS_TkOnly.py b/L1Trigger/TrackTrigger/test/SLHC_MBIAS_TkOnly.py index f37c631013fa2..ab82d532ea072 100644 --- a/L1Trigger/TrackTrigger/test/SLHC_MBIAS_TkOnly.py +++ b/L1Trigger/TrackTrigger/test/SLHC_MBIAS_TkOnly.py @@ -1,4 +1,3 @@ -from __future__ import print_function ######################### # # Configuration file for simple MBias events diff --git a/L1Trigger/TrackTrigger/test/SLHC_PGUN_TkOnly.py b/L1Trigger/TrackTrigger/test/SLHC_PGUN_TkOnly.py index 44aa66a1006ec..4d36c95b78210 100644 --- a/L1Trigger/TrackTrigger/test/SLHC_PGUN_TkOnly.py +++ b/L1Trigger/TrackTrigger/test/SLHC_PGUN_TkOnly.py @@ -1,4 +1,3 @@ -from __future__ import print_function ######################### # # Configuration file for simple PGUN events diff --git a/L1Trigger/TrackTrigger/test/SLHC_PU_TkOnly.py b/L1Trigger/TrackTrigger/test/SLHC_PU_TkOnly.py index 1b9f63b524810..5d7702e763180 100644 --- a/L1Trigger/TrackTrigger/test/SLHC_PU_TkOnly.py +++ b/L1Trigger/TrackTrigger/test/SLHC_PU_TkOnly.py @@ -1,4 +1,3 @@ -from __future__ import print_function ######################### # # Configuration file for PileUp events diff --git a/L1TriggerConfig/CSCTFConfigProducers/src/CSCTFConfigProducer.cc b/L1TriggerConfig/CSCTFConfigProducers/src/CSCTFConfigProducer.cc index 32169429da84b..c596eb566ad1c 100644 --- a/L1TriggerConfig/CSCTFConfigProducers/src/CSCTFConfigProducer.cc +++ b/L1TriggerConfig/CSCTFConfigProducers/src/CSCTFConfigProducer.cc @@ -58,7 +58,7 @@ std::unique_ptr CSCTFConfigProducer::produceL1MuCSCPtLutRcd(const std::unique_ptr pt_lut = std::make_unique(); - if (ptLUT_path.length()) { + if (!ptLUT_path.empty()) { readLUT(ptLUT_path, (unsigned short*)pt_lut->pt_lut, 1 << 21); //CSCBitWidths::kPtAddressWidth } else { throw cms::Exception("Undefined pT LUT") diff --git a/L1TriggerConfig/GMTConfigProducers/test/writeLUTsAndRegs_cfg.py b/L1TriggerConfig/GMTConfigProducers/test/writeLUTsAndRegs_cfg.py index 6505785493ec2..679af8cd27b86 100644 --- a/L1TriggerConfig/GMTConfigProducers/test/writeLUTsAndRegs_cfg.py +++ b/L1TriggerConfig/GMTConfigProducers/test/writeLUTsAndRegs_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms # LUT generator process diff --git a/L1TriggerConfig/GctConfigProducers/test/test-config-print.py b/L1TriggerConfig/GctConfigProducers/test/test-config-print.py index 8dc00ba6ff3c0..3f97584af8541 100644 --- a/L1TriggerConfig/GctConfigProducers/test/test-config-print.py +++ b/L1TriggerConfig/GctConfigProducers/test/test-config-print.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms # options diff --git a/L1TriggerConfig/L1GtConfigProducers/src/L1GtVhdlTemplateFile.cc b/L1TriggerConfig/L1GtConfigProducers/src/L1GtVhdlTemplateFile.cc index 5aad609338f54..822af2a61c0d4 100644 --- a/L1TriggerConfig/L1GtConfigProducers/src/L1GtVhdlTemplateFile.cc +++ b/L1TriggerConfig/L1GtConfigProducers/src/L1GtVhdlTemplateFile.cc @@ -120,7 +120,7 @@ bool L1GtVhdlTemplateFile::open(const std::string &fileName, bool internal) { //remove empty lines iter = lines_.begin(); while (iter != lines_.end()) { - if ((*iter).empty() || (*iter).length() == 0 || (*iter) == " ") + if ((*iter).empty() || (*iter).empty() || (*iter) == " ") lines_.erase(iter); else iter++; @@ -293,7 +293,7 @@ bool L1GtVhdlTemplateFile::removeEmptyLines() { std::vector::iterator iter = lines_.begin(); while (iter != lines_.end()) { - if ((*iter).empty() || (*iter).length() == 0 || (*iter) == " ") + if ((*iter).empty() || (*iter).empty() || (*iter) == " ") lines_.erase(iter); else iter++; diff --git a/L1TriggerConfig/L1GtConfigProducers/test/L1GtTester_cfg.py b/L1TriggerConfig/L1GtConfigProducers/test/L1GtTester_cfg.py index 96f9d2474b13d..f6500bf4d9997 100644 --- a/L1TriggerConfig/L1GtConfigProducers/test/L1GtTester_cfg.py +++ b/L1TriggerConfig/L1GtConfigProducers/test/L1GtTester_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # cfg file to test L1 GT records # # V M Ghete 2008 - 2010 - 2012 diff --git a/L1TriggerConfig/L1GtConfigProducers/test/L1GtTriggerMenuOnlineTest_cfg.py b/L1TriggerConfig/L1GtConfigProducers/test/L1GtTriggerMenuOnlineTest_cfg.py index c5b3dc060e8af..561a253329d1c 100644 --- a/L1TriggerConfig/L1GtConfigProducers/test/L1GtTriggerMenuOnlineTest_cfg.py +++ b/L1TriggerConfig/L1GtConfigProducers/test/L1GtTriggerMenuOnlineTest_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # cfg file to test the online producer of L1GtTriggerMenuRcd import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/L1TConfigProducers/src/OnlineDBqueryHelper.cc b/L1TriggerConfig/L1TConfigProducers/src/OnlineDBqueryHelper.cc index 7a7371fe3d384..499ec9c61f008 100644 --- a/L1TriggerConfig/L1TConfigProducers/src/OnlineDBqueryHelper.cc +++ b/L1TriggerConfig/L1TConfigProducers/src/OnlineDBqueryHelper.cc @@ -4,7 +4,7 @@ std::map l1t::OnlineDBqueryHelper::fetch(const std::ve const std::string &table, const std::string &key, l1t::OMDSReader &m_omdsReader) { - if (queryColumns.empty() || table.length() == 0) + if (queryColumns.empty() || table.empty()) return std::map(); l1t::OMDSReader::QueryResults queryResult = diff --git a/L1TriggerConfig/RPCTriggerConfig/src/RPCTriggerConfig.cc b/L1TriggerConfig/RPCTriggerConfig/src/RPCTriggerConfig.cc index 3521dbf5672d5..066deeb8c3899 100644 --- a/L1TriggerConfig/RPCTriggerConfig/src/RPCTriggerConfig.cc +++ b/L1TriggerConfig/RPCTriggerConfig/src/RPCTriggerConfig.cc @@ -74,7 +74,7 @@ RPCTriggerConfig::RPCTriggerConfig(const edm::ParameterSet& iConfig) { std::string dataDir = iConfig.getUntrackedParameter("filedir"); edm::FileInPath fp(dataDir + "pacPat_t0sc0sg0.xml"); - std::string patternsDirNameUnstriped = fp.fullPath(); + const std::string& patternsDirNameUnstriped = fp.fullPath(); m_patternsDir = patternsDirNameUnstriped.substr(0, patternsDirNameUnstriped.find_last_of('/') + 1); } diff --git a/L1TriggerConfig/Utilities/test/bmtfDump.py b/L1TriggerConfig/Utilities/test/bmtfDump.py index ce94a7d1c09a7..b0383a23a6ffe 100644 --- a/L1TriggerConfig/Utilities/test/bmtfDump.py +++ b/L1TriggerConfig/Utilities/test/bmtfDump.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import os, sys, shutil import subprocess diff --git a/L1TriggerConfig/Utilities/test/caloL1Dump.py b/L1TriggerConfig/Utilities/test/caloL1Dump.py index 250aa97820e75..cba870181afdf 100644 --- a/L1TriggerConfig/Utilities/test/caloL1Dump.py +++ b/L1TriggerConfig/Utilities/test/caloL1Dump.py @@ -1,4 +1,3 @@ -from __future__ import print_function # select CALOL1_KEY from CMS_TRG_L1_CONF.L1_TRG_CONF_KEYS where ID='collisions2016_TSC/v206' ; import re import os, sys, shutil diff --git a/L1TriggerConfig/Utilities/test/caloL2Dump.py b/L1TriggerConfig/Utilities/test/caloL2Dump.py index c977c11f6a489..7f1202d49c5e9 100644 --- a/L1TriggerConfig/Utilities/test/caloL2Dump.py +++ b/L1TriggerConfig/Utilities/test/caloL2Dump.py @@ -1,4 +1,3 @@ -from __future__ import print_function # select CALOL2_KEY from CMS_TRG_L1_CONF.L1_TRG_CONF_KEYS where ID='collisions2016_TSC/v206' ; import re import os, sys, shutil diff --git a/L1TriggerConfig/Utilities/test/dumpL1TCaloParams.py b/L1TriggerConfig/Utilities/test/dumpL1TCaloParams.py index a80881e3529ea..5519083126ca6 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TCaloParams.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TCaloParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TGlobalPrescalesVetos.py b/L1TriggerConfig/Utilities/test/dumpL1TGlobalPrescalesVetos.py index cefd2493675e1..c449412b6214a 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TGlobalPrescalesVetos.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TGlobalPrescalesVetos.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TMuonBarrelParams.py b/L1TriggerConfig/Utilities/test/dumpL1TMuonBarrelParams.py index 4bd078392d42d..c373f598af45a 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TMuonBarrelParams.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TMuonBarrelParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TMuonEndCapParams.py b/L1TriggerConfig/Utilities/test/dumpL1TMuonEndCapParams.py index 43db60d9b4284..713c88af4c390 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TMuonEndCapParams.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TMuonEndCapParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TMuonGlobalParams.py b/L1TriggerConfig/Utilities/test/dumpL1TMuonGlobalParams.py index 4cddfa87f517c..81d61b34a906b 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TMuonGlobalParams.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TMuonGlobalParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapFwVersion.py b/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapFwVersion.py index d2734c02269b2..9a5f0298d5b1c 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapFwVersion.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapFwVersion.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapParams.py b/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapParams.py index f850fb45d7f29..3dd8d2a0b73d5 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapParams.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TMuonOverlapParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/dumpL1TUtmTriggerMenu.py b/L1TriggerConfig/Utilities/test/dumpL1TUtmTriggerMenu.py index 744812e3eac3a..6f1efe576cb3f 100644 --- a/L1TriggerConfig/Utilities/test/dumpL1TUtmTriggerMenu.py +++ b/L1TriggerConfig/Utilities/test/dumpL1TUtmTriggerMenu.py @@ -1,4 +1,3 @@ -from __future__ import print_function # to test the communication with DBS and produce the csctf configuration import FWCore.ParameterSet.Config as cms diff --git a/L1TriggerConfig/Utilities/test/emtfDump.py b/L1TriggerConfig/Utilities/test/emtfDump.py index 33fc66d942717..442319ec864ef 100644 --- a/L1TriggerConfig/Utilities/test/emtfDump.py +++ b/L1TriggerConfig/Utilities/test/emtfDump.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import os, sys, shutil import subprocess diff --git a/L1TriggerConfig/Utilities/test/omtfDump.py b/L1TriggerConfig/Utilities/test/omtfDump.py index 3662e21dc70e8..37b8eea901fc7 100644 --- a/L1TriggerConfig/Utilities/test/omtfDump.py +++ b/L1TriggerConfig/Utilities/test/omtfDump.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import os, sys, shutil import subprocess diff --git a/L1TriggerConfig/Utilities/test/ugmtDump.py b/L1TriggerConfig/Utilities/test/ugmtDump.py index a7e91c32de006..ad2fb72892a4b 100644 --- a/L1TriggerConfig/Utilities/test/ugmtDump.py +++ b/L1TriggerConfig/Utilities/test/ugmtDump.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import os, sys, shutil import subprocess diff --git a/L1TriggerConfig/Utilities/test/ugtDump.py b/L1TriggerConfig/Utilities/test/ugtDump.py index d126967e7c151..4f32f07cf59d8 100644 --- a/L1TriggerConfig/Utilities/test/ugtDump.py +++ b/L1TriggerConfig/Utilities/test/ugtDump.py @@ -1,4 +1,3 @@ -from __future__ import print_function import re import os, sys, shutil import subprocess diff --git a/L1TriggerConfig/Utilities/test/viewCaloParams.py b/L1TriggerConfig/Utilities/test/viewCaloParams.py index 20f6f36888109..c429f36e729f6 100644 --- a/L1TriggerConfig/Utilities/test/viewCaloParams.py +++ b/L1TriggerConfig/Utilities/test/viewCaloParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewECpar.py b/L1TriggerConfig/Utilities/test/viewECpar.py index 7ab215bf5524b..b7ff4c1cb29f1 100644 --- a/L1TriggerConfig/Utilities/test/viewECpar.py +++ b/L1TriggerConfig/Utilities/test/viewECpar.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewGlobalMuon.py b/L1TriggerConfig/Utilities/test/viewGlobalMuon.py index 306590483fbbf..2add20e9fcb19 100644 --- a/L1TriggerConfig/Utilities/test/viewGlobalMuon.py +++ b/L1TriggerConfig/Utilities/test/viewGlobalMuon.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewKBmtfParams.py b/L1TriggerConfig/Utilities/test/viewKBmtfParams.py index b63c6fb202a0c..feaf3e769831d 100644 --- a/L1TriggerConfig/Utilities/test/viewKBmtfParams.py +++ b/L1TriggerConfig/Utilities/test/viewKBmtfParams.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewMenu.py b/L1TriggerConfig/Utilities/test/viewMenu.py index 0eab96ce70816..02cef5145d552 100644 --- a/L1TriggerConfig/Utilities/test/viewMenu.py +++ b/L1TriggerConfig/Utilities/test/viewMenu.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewOmtfFwVersion.py b/L1TriggerConfig/Utilities/test/viewOmtfFwVersion.py index 00328d27479f9..8d78cd6744779 100644 --- a/L1TriggerConfig/Utilities/test/viewOmtfFwVersion.py +++ b/L1TriggerConfig/Utilities/test/viewOmtfFwVersion.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewOverPar.py b/L1TriggerConfig/Utilities/test/viewOverPar.py index 145282241e26f..fc3eb6ddc6077 100644 --- a/L1TriggerConfig/Utilities/test/viewOverPar.py +++ b/L1TriggerConfig/Utilities/test/viewOverPar.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewPrescalesVetos.py b/L1TriggerConfig/Utilities/test/viewPrescalesVetos.py index 61a4a46f49b5e..99263124089f0 100644 --- a/L1TriggerConfig/Utilities/test/viewPrescalesVetos.py +++ b/L1TriggerConfig/Utilities/test/viewPrescalesVetos.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewTKE.py b/L1TriggerConfig/Utilities/test/viewTKE.py index b9becc392030b..6cdba3ccaf3a5 100644 --- a/L1TriggerConfig/Utilities/test/viewTKE.py +++ b/L1TriggerConfig/Utilities/test/viewTKE.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerConfig/Utilities/test/viewTKLE.py b/L1TriggerConfig/Utilities/test/viewTKLE.py index f20105361001a..cbc509aef8e9e 100644 --- a/L1TriggerConfig/Utilities/test/viewTKLE.py +++ b/L1TriggerConfig/Utilities/test/viewTKLE.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("tester") diff --git a/L1TriggerScouting/OnlineProcessing/plugins/FinalBxSelector.cc b/L1TriggerScouting/OnlineProcessing/plugins/FinalBxSelector.cc index f17e950ba3e79..30267b29bcaf2 100644 --- a/L1TriggerScouting/OnlineProcessing/plugins/FinalBxSelector.cc +++ b/L1TriggerScouting/OnlineProcessing/plugins/FinalBxSelector.cc @@ -22,7 +22,7 @@ class FinalBxSelector : public edm::stream::EDFilter<> { public: explicit FinalBxSelector(const edm::ParameterSet&); - ~FinalBxSelector() {} + ~FinalBxSelector() override {} static void fillDescriptions(edm::ConfigurationDescriptions&); private: diff --git a/L1TriggerScouting/OnlineProcessing/plugins/JetBxSelector.cc b/L1TriggerScouting/OnlineProcessing/plugins/JetBxSelector.cc index a05f2acc21fe9..a6f3e9c6fb08d 100644 --- a/L1TriggerScouting/OnlineProcessing/plugins/JetBxSelector.cc +++ b/L1TriggerScouting/OnlineProcessing/plugins/JetBxSelector.cc @@ -26,7 +26,7 @@ using namespace l1ScoutingRun3; class JetBxSelector : public edm::stream::EDProducer<> { public: explicit JetBxSelector(const edm::ParameterSet&); - ~JetBxSelector() {} + ~JetBxSelector() override {} static void fillDescriptions(edm::ConfigurationDescriptions&); private: diff --git a/L1TriggerScouting/OnlineProcessing/plugins/MaskOrbitBx.cc b/L1TriggerScouting/OnlineProcessing/plugins/MaskOrbitBx.cc index 4c571358c9d4e..0a2176b6c2c6a 100644 --- a/L1TriggerScouting/OnlineProcessing/plugins/MaskOrbitBx.cc +++ b/L1TriggerScouting/OnlineProcessing/plugins/MaskOrbitBx.cc @@ -27,7 +27,7 @@ template class MaskOrbitBx : public edm::stream::EDProducer<> { public: explicit MaskOrbitBx(const edm::ParameterSet&); - ~MaskOrbitBx() {} + ~MaskOrbitBx() override {} static void fillDescriptions(edm::ConfigurationDescriptions&); private: diff --git a/L1TriggerScouting/OnlineProcessing/plugins/MuBxSelector.cc b/L1TriggerScouting/OnlineProcessing/plugins/MuBxSelector.cc index 4a78fb4029e1b..a8bc511c4b80b 100644 --- a/L1TriggerScouting/OnlineProcessing/plugins/MuBxSelector.cc +++ b/L1TriggerScouting/OnlineProcessing/plugins/MuBxSelector.cc @@ -26,7 +26,7 @@ using namespace l1ScoutingRun3; class MuBxSelector : public edm::stream::EDProducer<> { public: explicit MuBxSelector(const edm::ParameterSet&); - ~MuBxSelector() {} + ~MuBxSelector() override {} static void fillDescriptions(edm::ConfigurationDescriptions&); private: diff --git a/L1TriggerScouting/OnlineProcessing/plugins/MuTagJetBxSelector.cc b/L1TriggerScouting/OnlineProcessing/plugins/MuTagJetBxSelector.cc index 27f386ed77572..630aa335337c4 100644 --- a/L1TriggerScouting/OnlineProcessing/plugins/MuTagJetBxSelector.cc +++ b/L1TriggerScouting/OnlineProcessing/plugins/MuTagJetBxSelector.cc @@ -31,7 +31,7 @@ using namespace l1ScoutingRun3; class MuTagJetBxSelector : public edm::stream::EDProducer<> { public: explicit MuTagJetBxSelector(const edm::ParameterSet&); - ~MuTagJetBxSelector() {} + ~MuTagJetBxSelector() override {} static void fillDescriptions(edm::ConfigurationDescriptions&); private: diff --git a/MagneticField/Engine/test/regression.py b/MagneticField/Engine/test/regression.py index b6c703e9f1934..54a8f1d59c299 100644 --- a/MagneticField/Engine/test/regression.py +++ b/MagneticField/Engine/test/regression.py @@ -1,5 +1,4 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import sys diff --git a/MagneticField/Interpolation/test/BinaryTablesGeneration/convertTables.py b/MagneticField/Interpolation/test/BinaryTablesGeneration/convertTables.py index 5e8d32e09c586..027d5eb827967 100755 --- a/MagneticField/Interpolation/test/BinaryTablesGeneration/convertTables.py +++ b/MagneticField/Interpolation/test/BinaryTablesGeneration/convertTables.py @@ -1,6 +1,5 @@ #!/bin/env python -from __future__ import print_function import os # Path of the input tables diff --git a/Mixing/Base/src/BMixingModule.cc b/Mixing/Base/src/BMixingModule.cc index 5a9dfce8c2bf0..c626c19b3eff4 100644 --- a/Mixing/Base/src/BMixingModule.cc +++ b/Mixing/Base/src/BMixingModule.cc @@ -43,7 +43,7 @@ namespace { //in case of DB access, do not try to load anything from the PSet, but wait for beginRun. edm::LogError("BMixingModule") << "Will read from DB: reset to a dummy PileUp object."; std::unique_ptr h; - pileupconfig.reset(new edm::PileUpConfig(sourceName, 0.0, h, playback)); + pileupconfig = std::make_shared(sourceName, 0.0, h, playback); return pileupconfig; } if (type_ != "none") { @@ -51,7 +51,7 @@ namespace { edm::ParameterSet psin_average = psin.getParameter("nbPileupEvents"); if (psin_average.exists("averageNumber")) { averageNumber = psin_average.getParameter("averageNumber"); - pileupconfig.reset(new edm::PileUpConfig(sourceName, averageNumber, h, playback)); + pileupconfig = std::make_shared(sourceName, averageNumber, h, playback); edm::LogInfo("MixingModule") << " Created source " << sourceName << " with averageNumber " << averageNumber; } else if (psin_average.exists("fileName") && psin_average.exists("histoName")) { std::string histoFileName = psin_average.getUntrackedParameter("fileName"); @@ -79,7 +79,7 @@ namespace { // Get the averageNumber from the histo averageNumber = h->GetMean(); - pileupconfig.reset(new edm::PileUpConfig(sourceName, averageNumber, h, playback)); + pileupconfig = std::make_shared(sourceName, averageNumber, h, playback); edm::LogInfo("MixingModule") << " Created source " << sourceName << " with averageNumber " << averageNumber; } else if (psin_average.exists("probFunctionVariable") && psin_average.exists("probValue") && @@ -155,14 +155,14 @@ namespace { outfile->Close(); outfile->Delete(); - pileupconfig.reset(new edm::PileUpConfig(sourceName, averageNumber, hprob, playback)); + pileupconfig = std::make_shared(sourceName, averageNumber, hprob, playback); edm::LogInfo("MixingModule") << " Created source " << sourceName << " with averageNumber " << averageNumber; } //special for pileup input else if (sourceName == "input" && psin_average.exists("Lumi") && psin_average.exists("sigmaInel")) { averageNumber = psin_average.getParameter("Lumi") * psin_average.getParameter("sigmaInel") * ps.getParameter("bunchspace") / 1000 * 3564. / 2808.; //FIXME - pileupconfig.reset(new edm::PileUpConfig(sourceName, averageNumber, h, playback)); + pileupconfig = std::make_shared(sourceName, averageNumber, h, playback); edm::LogInfo("MixingModule") << " Created source " << sourceName << " with minBunch,maxBunch " << minb << " " << maxb; edm::LogInfo("MixingModule") << " Luminosity configuration, average number used is " << averageNumber; diff --git a/Mixing/Base/src/PileUp.cc b/Mixing/Base/src/PileUp.cc index 9f9778b217ce2..1075b8ee1d7f1 100644 --- a/Mixing/Base/src/PileUp.cc +++ b/Mixing/Base/src/PileUp.cc @@ -210,7 +210,7 @@ namespace edm { void PileUp::beginStream(edm::StreamID) { auto iID = eventPrincipal_->streamID(); // each producer has its own workermanager, so use default streamid - streamContext_.reset(new StreamContext(iID, processContext_.get())); + streamContext_ = std::make_shared(iID, processContext_.get()); streamContext_->setTransition(StreamContext::Transition::kBeginStream); if (provider_.get() != nullptr) { edm::ServiceRegistry::Operate guard(*serviceToken_); @@ -245,7 +245,7 @@ namespace edm { void PileUp::beginRun(const edm::Run& run, const edm::EventSetup& setup) { if (provider_.get() != nullptr) { - runPrincipal_.reset(new RunPrincipal(productRegistry_, *processConfiguration_, nullptr, 0)); + runPrincipal_ = std::make_shared(productRegistry_, *processConfiguration_, nullptr, 0); runPrincipal_->setAux(run.runAuxiliary()); edm::ServiceRegistry::Operate guard(*serviceToken_); streamContext_->setTransition(StreamContext::Transition::kBeginRun); @@ -254,7 +254,7 @@ namespace edm { } void PileUp::beginLuminosityBlock(const edm::LuminosityBlock& lumi, const edm::EventSetup& setup) { if (provider_.get() != nullptr) { - lumiPrincipal_.reset(new LuminosityBlockPrincipal(productRegistry_, *processConfiguration_, nullptr, 0)); + lumiPrincipal_ = std::make_shared(productRegistry_, *processConfiguration_, nullptr, 0); lumiPrincipal_->setAux(lumi.luminosityBlockAuxiliary()); lumiPrincipal_->setRunPrincipal(runPrincipal_); setRandomEngine(lumi); @@ -348,7 +348,7 @@ namespace edm { edm::LogInfo("MixingModule") << "An histogram will be created with " << numBins << " bins in the range (" << xmin << "," << xmax << ")." << std::endl; - histo_.reset(new TH1F("h", "Histo from the user's probability function", numBins, xmin, xmax)); + histo_ = std::make_shared("h", "Histo from the user's probability function", numBins, xmin, xmax); LogDebug("MixingModule") << "Filling histogram with the following data:" << std::endl; diff --git a/MuonAnalysis/MomentumScaleCalibration/plugins/DBReader.cc b/MuonAnalysis/MomentumScaleCalibration/plugins/DBReader.cc index 3982db4ba43de..1426db1c18413 100644 --- a/MuonAnalysis/MomentumScaleCalibration/plugins/DBReader.cc +++ b/MuonAnalysis/MomentumScaleCalibration/plugins/DBReader.cc @@ -1,6 +1,7 @@ // system include files #include #include +#include #include #include #include @@ -71,11 +72,11 @@ void DBReader::initialize(const edm::EventSetup& iSetup) { // This string is one of: scale, resolution, background. // Create the corrector and set the parameters if (type_ == "scale") - corrector_.reset(new MomentumScaleCorrector(dbObject)); + corrector_ = std::make_shared(dbObject); else if (type_ == "resolution") - resolution_.reset(new ResolutionFunction(dbObject)); + resolution_ = std::make_shared(dbObject); else if (type_ == "background") - background_.reset(new BackgroundFunction(dbObject)); + background_ = std::make_shared(dbObject); else { edm::LogPrint("DBReader") << "Error: unrecognized type. Use one of those: 'scale', 'resolution', 'background'" << std::endl; diff --git a/MuonAnalysis/MomentumScaleCalibration/plugins/MuScleFitMuonProducer.cc b/MuonAnalysis/MomentumScaleCalibration/plugins/MuScleFitMuonProducer.cc index ed6e61e80fad3..b63aa11575d2b 100644 --- a/MuonAnalysis/MomentumScaleCalibration/plugins/MuScleFitMuonProducer.cc +++ b/MuonAnalysis/MomentumScaleCalibration/plugins/MuScleFitMuonProducer.cc @@ -104,7 +104,7 @@ void MuScleFitMuonProducer::produce(edm::Event& iEvent, const edm::EventSetup& i //std::cout << "parameters size from dbObject = " << dbObject_->parameters.size() << std::endl;; // Create the corrector and set the parameters - corrector_.reset(new MomentumScaleCorrector(dbObject_.product())); + corrector_ = std::make_shared(dbObject_.product()); if (patMuons_ == true) { edm::Handle allMuons; diff --git a/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_8E29_cff.py b/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_8E29_cff.py index 6cb28818387f9..4486eb5646ed8 100644 --- a/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_8E29_cff.py +++ b/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_8E29_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("MuonAnalysis.MuonAssociators.patMuonsWithTrigger_8E29_cff is deprecated.\nUse use MuonAnalysis.MuonAssociators.patMuonsWithTrigger_cff instead.\n") from MuonAnalysis.MuonAssociators.patMuonsWithTrigger_cff import * diff --git a/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_cff.py b/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_cff.py index 6fa1cdefcb803..fad71d7c4826c 100644 --- a/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_cff.py +++ b/MuonAnalysis/MuonAssociators/python/patMuonsWithTrigger_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms ## __ __ _ ____ _ _____ __ __ diff --git a/OnlineDB/EcalCondDB/bin/cmsecal_rootplot.cpp b/OnlineDB/EcalCondDB/bin/cmsecal_rootplot.cpp index 15c41fd1c6e86..9b50a2faddfd1 100644 --- a/OnlineDB/EcalCondDB/bin/cmsecal_rootplot.cpp +++ b/OnlineDB/EcalCondDB/bin/cmsecal_rootplot.cpp @@ -744,7 +744,7 @@ int main(int argc, char* argv[]) { string line; ifstream* finput = (ifstream*)&cin; - if (file.length() > 0) { + if (!file.empty()) { finput = new ifstream(file.c_str()); } while (getline(*finput, line) && finput->good() && !finput->eof()) { @@ -757,7 +757,7 @@ int main(int argc, char* argv[]) { finput->close(); - if (file.length() > 0) { + if (!file.empty()) { delete finput; } rootplot.draw(); diff --git a/OnlineDB/EcalCondDB/src/LMFDat.cc b/OnlineDB/EcalCondDB/src/LMFDat.cc index 1d59f42481e27..269cfb3cb6561 100644 --- a/OnlineDB/EcalCondDB/src/LMFDat.cc +++ b/OnlineDB/EcalCondDB/src/LMFDat.cc @@ -131,7 +131,7 @@ std::string LMFDat::buildSelectSql(int logic_id, int direction) { std::stringstream sql; int count = 1; if (getLMFRunIOVID() > 0) { - if (_where.length() > 0) { + if (!_where.empty()) { // check if this is an expert query. If so, add a WHERE clause _where = " AND " + _where; } diff --git a/OnlineDB/EcalCondDB/src/LMFRunTag.cc b/OnlineDB/EcalCondDB/src/LMFRunTag.cc index a659a4a3d20e5..878e6a6fe441f 100644 --- a/OnlineDB/EcalCondDB/src/LMFRunTag.cc +++ b/OnlineDB/EcalCondDB/src/LMFRunTag.cc @@ -79,7 +79,7 @@ bool LMFRunTag::isValid() { if (getVersion() <= 0) { ret = false; } - if (getGeneralTag().length() <= 0) { + if (getGeneralTag().empty()) { ret = false; } return ret; diff --git a/OnlineDB/EcalCondDB/src/LMFSeqDat.cc b/OnlineDB/EcalCondDB/src/LMFSeqDat.cc index 36a3e82a28074..2bb357188bcfb 100644 --- a/OnlineDB/EcalCondDB/src/LMFSeqDat.cc +++ b/OnlineDB/EcalCondDB/src/LMFSeqDat.cc @@ -129,7 +129,7 @@ bool LMFSeqDat::isValid() const { if (getSequenceStart().isNull()) { ret = false; } - if ((getSequenceStop().str().length() > 0) && (getSequenceStop().microsTime() < getSequenceStart().microsTime())) { + if ((!getSequenceStop().str().empty()) && (getSequenceStop().microsTime() < getSequenceStart().microsTime())) { ret = false; } if (getSequenceStop() == Tm().plusInfinity()) { @@ -147,7 +147,7 @@ std::string LMFSeqDat::writeDBSql(Statement *stmt) { throw(std::runtime_error("LMFSeqDat::writeDB: not valid")); } - if (getSequenceStop().str().length() == 0) { + if (getSequenceStop().str().empty()) { setSequenceStop(dh.getPlusInfTm()); } int runIOVID = m_runIOV.getID(); diff --git a/PerfTools/AllocMonitor/README.md b/PerfTools/AllocMonitor/README.md index 02a51dbe44b12..4236cf0178ccc 100644 --- a/PerfTools/AllocMonitor/README.md +++ b/PerfTools/AllocMonitor/README.md @@ -85,8 +85,8 @@ This service is multi-thread safe. Note that when run multi-threaded the maximum This service registers a monitor when the service is created (after python parsing is finished but before any modules have been loaded into cmsRun) and prints its accumulated information to the specified file at specified intervals. Both the file name and interval are specified by setting parameters of the service in the configuration. The parameters are -- filename: name of file to which to write reports -- millisecondsPerMeasurement: number of milliseconds to wait between making each report +- `filename`: name of file to which to write reports +- `millisecondsPerMeasurement`: number of milliseconds to wait between making each report The output file contains the following information on each line - The time, in milliseconds, since the service was created @@ -108,10 +108,27 @@ This service registers a monitor when the service is created (after python parsi have been loaded into cmsRun) and writes module related information to the specified file. The file name, an optional list of module names, and an optional number of initial events to skip are specified by setting parameters of the service in the configuration. The parameters are -- filename: name of file to which to write reports -- moduleNames: list of modules which should have their information added to the file. An empty list specifies all modules should be included. -- nEventsToSkip: the number of initial events that must be processed before reporting happens. +- `filename`: name of file to which to write reports +- `moduleNames`: list of modules which should have their information added to the file. An empty list specifies all modules should be included. +- `nEventsToSkip`: the number of initial events that must be processed before reporting happens. The beginning of the file contains a description of the structure and contents of the file. -This service is multi-thread safe. \ No newline at end of file +This service is multi-thread safe. + + +### ModuleEventAllocMonitor +This service registers a monitor when the service is created (after python parsing is finished but before any modules +have been loaded into cmsRun) and writes event based module related information to the specified file. The service +keeps track of the address of each allocation requested during an event from each module and pairs them with any +deallocation using the same address. The list of addresses are kept until the event data products are deleted at which +time the dallocations are paired with allocations done in a module. The list of addresses are then cleared (to keep memory usage down) but the amount of unassociated deallocations for each module is recorded per event. +The file name, an optional list of module names, and an optional number of initial events to skip are specified by setting parameters of the +service in the configuration. The parameters are +- `filename`: name of file to which to write reports +- `moduleNames`: list of modules which should have their information added to the file. An empty list specifies all modules should be included. +- `nEventsToSkip`: the number of initial events that must be processed before reporting happens. + +The beginning of the file contains a description of the structure and contents of the file. The file can be analyzed with the helper script `edmModuleEventAllocMonitorAnalyze.py`. The script can be used to find modules where the memory is being retained between Events as well as modules where the memory appears to be growing Event to Event. Use `--help` with the script for a full description. + +This service is multi-thread safe. diff --git a/PerfTools/AllocMonitor/plugins/ModuleAllocMonitor.cc b/PerfTools/AllocMonitor/plugins/ModuleAllocMonitor.cc index e6fb72ccefb70..014f25df18f2c 100644 --- a/PerfTools/AllocMonitor/plugins/ModuleAllocMonitor.cc +++ b/PerfTools/AllocMonitor/plugins/ModuleAllocMonitor.cc @@ -32,106 +32,10 @@ #include "moduleAlloc_setupFile.h" #include "ThreadAllocInfo.h" +#include "ThreadTracker.h" namespace { - inline auto thread_id() { -#if defined(ALLOC_USE_PTHREADS) - /*NOTE: if use pthread_self, the values returned by linux had - lots of hash collisions when using a simple % hash. Worked - better if first divided value by 0x700 and then did %. - [test done on el8] - */ - return pthread_self(); -#else - return syscall(SYS_gettid); -#endif - } - - struct ThreadTracker { - static constexpr unsigned int kHashedEntries = 128; - static constexpr unsigned int kExtraEntries = 128; - static constexpr unsigned int kTotalEntries = kHashedEntries + kExtraEntries; - using entry_type = decltype(thread_id()); - static constexpr entry_type kUnusedEntry = ~entry_type(0); - std::array, kHashedEntries> hashed_threads_; - std::array, kExtraEntries> extra_threads_; - - ThreadTracker() { - //put a value which will not match the % used when looking up the entry - entry_type entry = 0; - for (auto& v : hashed_threads_) { - v = ++entry; - } - //assume kUsedEntry is not a valid thread-id - for (auto& v : extra_threads_) { - v = kUnusedEntry; - } - } - - std::size_t thread_index() { - auto id = thread_id(); - auto index = thread_index_guess(id); - auto used_id = hashed_threads_[index].load(); - - if (id == used_id) { - return index; - } - //try to be first thread to grab the index - auto expected = entry_type(index + 1); - if (used_id == expected) { - if (hashed_threads_[index].compare_exchange_strong(expected, id)) { - return index; - } else { - //another thread just beat us so have to go to non-hash storage - return find_new_index(id); - } - } - //search in non-hash storage - return find_index(id); - } - - private: - std::size_t thread_index_guess(entry_type id) const { -#if defined(ALLOC_USE_PTHREADS) - return (id / 0x700) % kHashedEntries; -#else - return id % kHashedEntries; -#endif - } - - std::size_t find_new_index(entry_type id) { - std::size_t index = 0; - for (auto& v : extra_threads_) { - entry_type expected = kUnusedEntry; - if (v == expected) { - if (v.compare_exchange_strong(expected, id)) { - return index + kHashedEntries; - } - } - ++index; - } - //failed to find an open entry - abort(); - return 0; - } - - std::size_t find_index(entry_type id) { - std::size_t index = 0; - for (auto const& v : extra_threads_) { - if (v == id) { - return index + kHashedEntries; - } - ++index; - } - return find_new_index(id); - } - }; - - static ThreadTracker& getTracker() { - static ThreadTracker s_tracker; - return s_tracker; - } - + using namespace cms::perftools::allocMon; using namespace edm::service::moduleAlloc; class MonitorAdaptor : public cms::perftools::AllocMonitorBase { public: @@ -149,7 +53,7 @@ namespace { private: static ThreadAllocInfo& threadAllocInfo() { static ThreadAllocInfo s_info[ThreadTracker::kTotalEntries]; - return s_info[getTracker().thread_index()]; + return s_info[ThreadTracker::instance().thread_index()]; } void allocCalled(size_t iRequested, size_t iActual, void const*) final { auto& allocInfo = threadAllocInfo(); diff --git a/PerfTools/AllocMonitor/plugins/ModuleEventAllocMonitor.cc b/PerfTools/AllocMonitor/plugins/ModuleEventAllocMonitor.cc new file mode 100644 index 0000000000000..227f1b1d22f7d --- /dev/null +++ b/PerfTools/AllocMonitor/plugins/ModuleEventAllocMonitor.cc @@ -0,0 +1,453 @@ +// -*- C++ -*- +// +// Package: PerfTools/AllocMonitor +// Class : ModuleEventAllocMonitor +// +// Implementation: +// [Notes on implementation] +// +// Original Author: Christopher Jones +// Created: Mon, 21 Aug 2023 20:31:57 GMT +// + +// system include files +#include +#include + +// user include files +#include "PerfTools/AllocMonitor/interface/AllocMonitorBase.h" +#include "PerfTools/AllocMonitor/interface/AllocMonitorRegistry.h" +#include "FWCore/Framework/interface/ComponentDescription.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ServiceRegistry/interface/ServiceRegistry.h" +#include "FWCore/ServiceRegistry/interface/ServiceMaker.h" +#include "FWCore/ServiceRegistry/interface/SystemBounds.h" +#include "FWCore/ServiceRegistry/interface/ModuleCallingContext.h" +#include "DataFormats/Provenance/interface/ModuleDescription.h" +#include "FWCore/Concurrency/interface/ThreadSafeOutputFileStream.h" +#include "FWCore/Utilities/interface/thread_safety_macros.h" + +#include "monitor_file_utilities.h" +#include "mea_AllocMap.h" +#include "ThreadTracker.h" + +#define DEBUGGER_BREAK + +#if defined(DEBUGGER_BREAK) +extern "C" { +void break_on_unmatched_dealloc() {} +} +#endif +namespace { + using namespace edm::service::moduleEventAlloc; + using namespace edm::moduleAlloc::monitor_file_utilities; + + struct ThreadAllocInfo { + AllocMap allocMap_; + std::vector unmatched_; + + //corresponds to temporary memory used + std::size_t totalMatchedDeallocSize_ = 0; + //corresponds to memory held over from previous allocation + std::size_t totalUnmatchedDealloc_ = 0; + std::size_t numMatchedDeallocs_ = 0; + std::size_t numUnmatchedDeallocs_ = 0; + + bool active_ = false; + void alloc(void const* iAddress, std::size_t iSize) { allocMap_.insert(iAddress, iSize); } + + void dealloc(void const* iAddress, std::size_t iSize) { + auto size = allocMap_.erase(iAddress); + if (size == 0) { +#if defined(DEBUGGER_BREAK) + break_on_unmatched_dealloc(); +#endif + totalUnmatchedDealloc_ += iSize; + ++numUnmatchedDeallocs_; + unmatched_.push_back(iAddress); + } else { + totalMatchedDeallocSize_ += iSize; + ++numMatchedDeallocs_; + } + } + + void reset() { + totalMatchedDeallocSize_ = 0; + totalUnmatchedDealloc_ = 0; + numMatchedDeallocs_ = 0; + numUnmatchedDeallocs_ = 0; + allocMap_.clear(); + unmatched_.clear(); + active_ = true; + } + + void reset(AllocMap const& iBefore) { + totalMatchedDeallocSize_ = 0; + totalUnmatchedDealloc_ = 0; + numMatchedDeallocs_ = 0; + numUnmatchedDeallocs_ = 0; + //Need to call this before active_ = true + allocMap_ = iBefore; + unmatched_.clear(); + active_ = true; + } + + void deactivate() { active_ = false; } + }; + class MonitorAdaptor : public cms::perftools::AllocMonitorBase { + public: + static void startOnThread() { threadAllocInfo().reset(); } + static void startOnThread(AllocMap const& iBefore) { threadAllocInfo().reset(iBefore); } + + static ThreadAllocInfo const& stopOnThread() { + auto& t = threadAllocInfo(); + if (not t.active_) { + t.reset(); + } else { + t.deactivate(); + } + return t; + } + + private: + static ThreadAllocInfo& threadAllocInfo() { + using namespace cms::perftools::allocMon; + CMS_THREAD_SAFE static ThreadAllocInfo s_info[ThreadTracker::kTotalEntries]; + return s_info[ThreadTracker::instance().thread_index()]; + } + void allocCalled(size_t iRequested, size_t iActual, void const* iAddress) final { + auto& allocInfo = threadAllocInfo(); + if (not allocInfo.active_) { + return; + } + allocInfo.alloc(iAddress, iActual); + } + void deallocCalled(size_t iActual, void const* iAddress) final { + auto& allocInfo = threadAllocInfo(); + if (not allocInfo.active_) { + return; + } + + allocInfo.dealloc(iAddress, iActual); + } + }; + + class Filter { + public: + //a negative module id corresponds to an ES module + Filter(std::vector const* moduleIDs); + //returns true if should keep this + //F has an operator() that returns a AllocMap + template + bool startOnThread(int moduleID, F&&) const; + const ThreadAllocInfo* stopOnThread(int moduleID) const; + + bool startOnThread() const; + const ThreadAllocInfo* stopOnThread() const; + + void setGlobalKeep(bool iShouldKeep); + bool globalKeep() const { return globalKeep_.load(); } + + bool keepModuleInfo(int moduleID) const; + + private: + std::atomic globalKeep_ = true; + std::vector const* moduleIDs_ = nullptr; + }; + + Filter::Filter(std::vector const* moduleIDs) : moduleIDs_{moduleIDs} {} + + template + bool Filter::startOnThread(int moduleID, F&& iInfoFunctor) const { + if (not globalKeep_.load()) { + return false; + } + if (keepModuleInfo(moduleID)) { + MonitorAdaptor::startOnThread(iInfoFunctor()); + return true; + } + return false; + } + + const ThreadAllocInfo* Filter::stopOnThread(int moduleID) const { + if (not globalKeep_.load()) { + return nullptr; + } + + if (keepModuleInfo(moduleID)) { + return &MonitorAdaptor::stopOnThread(); + } + return nullptr; + } + + bool Filter::startOnThread() const { + if (not globalKeep_.load()) { + return false; + } + MonitorAdaptor::startOnThread(); + return true; + } + + const ThreadAllocInfo* Filter::stopOnThread() const { + if (not globalKeep_.load()) { + return nullptr; + } + return &MonitorAdaptor::stopOnThread(); + } + + void Filter::setGlobalKeep(bool iShouldKeep) { globalKeep_.store(iShouldKeep); } + + bool Filter::keepModuleInfo(int moduleID) const { + if ((nullptr == moduleIDs_) or (moduleIDs_->empty()) or + (std::binary_search(moduleIDs_->begin(), moduleIDs_->end(), moduleID))) { + return true; + } + return false; + } +} // namespace + +class ModuleEventAllocMonitor { +public: + ModuleEventAllocMonitor(edm::ParameterSet const& iPS, edm::ActivityRegistry& iAR) + : moduleNames_(iPS.getUntrackedParameter>("moduleNames")), + nEventsToSkip_(iPS.getUntrackedParameter("nEventsToSkip")), + filter_(&moduleIDs_) { + (void)cms::perftools::AllocMonitorRegistry::instance().createAndRegisterMonitor(); + + if (nEventsToSkip_ > 0) { + filter_.setGlobalKeep(false); + } + auto file = std::make_shared(iPS.getUntrackedParameter("fileName")); + { + std::stringstream s; + s << "#Format\n" + "# --------\n" + "# prefixes\n" + "# #: comment\n" + "# @: module info\n" + "# A: memory info for call to 'acquire'\n" + "# M: memory info for standard module method (i.e. produce, analyze or filter)\n" + "# D: memory reclaimed when Event products are being deleted at end of Event processing\n" + "# --------\n" + "# line formats\n" + "#@ \n" + "#A <# temp allocations> <# unmatched deallocations> <# " + "unmatched allocations [also copied]>\n" + "#M <# temp allocations> <# unmatched deallocations> <# unmatched allocations>\n" + "#D <# matched deallocations>\n"; + file->write(s.str()); + } + if (not moduleNames_.empty()) { + iAR.watchPreModuleConstruction([this, file](auto const& description) { + auto found = std::find(moduleNames_.begin(), moduleNames_.end(), description.moduleLabel()); + if (found != moduleNames_.end()) { + moduleIDs_.push_back(description.id()); + nModules_ = moduleIDs_.size(); + std::sort(moduleIDs_.begin(), moduleIDs_.end()); + std::stringstream s; + s << "@ " << description.moduleLabel() << " " << description.moduleName() << " " << description.id() << "\n"; + file->write(s.str()); + } + }); + } else { + iAR.watchPreModuleConstruction([this, file](auto const& description) { + if (description.id() + 1 > nModules_) { + nModules_ = description.id() + 1; + } + std::stringstream s; + s << "@ " << description.moduleLabel() << " " << description.moduleName() << " " << description.id() << "\n"; + file->write(s.str()); + }); + } + if (nEventsToSkip_ > 0) { + iAR.watchPreSourceEvent([this](auto) { + ++nEventsStarted_; + if (nEventsStarted_ > nEventsToSkip_) { + filter_.setGlobalKeep(true); + } + }); + } + iAR.watchPreallocate([this](auto const& alloc) { nStreams_ = alloc.maxNumberOfStreams(); }); + iAR.watchPreBeginJob([this](auto const&, auto const&) { + streamModuleAllocs_.resize(nStreams_ * nModules_); + streamModuleInAcquire_ = std::vector>(nStreams_ * nModules_); + streamModuleFinishOrder_ = std::vector(nStreams_ * nModules_); + streamNFinishedModules_ = std::vector>(nStreams_); + streamSync_ = std::vector>(nStreams_); + }); + + iAR.watchPreModuleEvent([this](auto const& iStream, auto const& iMod) { + auto mod_id = module_id(iMod); + auto acquireInfo = [this, iStream, mod_id]() { + //acquire might have started stuff + streamSync_[iStream.streamID().value()].load(); + auto index = moduleIndex(mod_id); + auto const& inAcquire = streamModuleInAcquire_[nModules_ * iStream.streamID().value() + index]; + while (inAcquire.load()) + ; + return streamModuleAllocs_[nModules_ * iStream.streamID().value() + index]; + }; + filter_.startOnThread(mod_id, acquireInfo); + }); + iAR.watchPostModuleEvent([this, file](auto const& iStream, auto const& iMod) { + auto mod_id = module_id(iMod); + auto info = filter_.stopOnThread(mod_id); + if (info) { + auto v = std::accumulate(info->allocMap_.allocationSizes().begin(), info->allocMap_.allocationSizes().end(), 0); + std::stringstream s; + s << "M " << mod_id << " " << iStream.streamID().value() << " " << info->totalMatchedDeallocSize_ << " " + << info->numMatchedDeallocs_ << " " << info->totalUnmatchedDealloc_ << " " << info->numUnmatchedDeallocs_ + << " " << v << " " << info->allocMap_.allocationSizes().size() << "\n"; + file->write(s.str()); + auto index = moduleIndex(mod_id); + auto finishedOrder = streamNFinishedModules_[iStream.streamID().value()]++; + streamModuleFinishOrder_[finishedOrder + nModules_ * iStream.streamID().value()] = + nModules_ * iStream.streamID().value() + index; + streamModuleAllocs_[nModules_ * iStream.streamID().value() + index] = info->allocMap_; + ++streamSync_[iStream.streamID().value()]; + } + }); + + iAR.watchPreModuleEventAcquire([this](auto const& iStream, auto const& iMod) { + auto index = moduleIndex(module_id(iMod)); + auto acquireInfo = [index, this, iStream]() { + streamModuleInAcquire_[nModules_ * iStream.streamID().value() + index].store(true); + return AllocMap(); + }; + filter_.startOnThread(module_id(iMod), acquireInfo); + }); + iAR.watchPostModuleEventAcquire([this, file](auto const& iStream, auto const& iMod) { + auto mod_id = module_id(iMod); + auto info = filter_.stopOnThread(mod_id); + if (info) { + assert(info->allocMap_.allocationSizes().size() == info->allocMap_.size()); + auto v = std::accumulate(info->allocMap_.allocationSizes().begin(), info->allocMap_.allocationSizes().end(), 0); + std::stringstream s; + s << "A " << mod_id << " " << iStream.streamID().value() << " " << info->totalMatchedDeallocSize_ << " " + << info->numMatchedDeallocs_ << " " << info->totalUnmatchedDealloc_ << " " << info->numUnmatchedDeallocs_ + << " " << v << " " << info->allocMap_.allocationSizes().size() << "\n"; + file->write(s.str()); + auto index = mod_id; + if (not moduleIDs_.empty()) { + auto it = std::lower_bound(moduleIDs_.begin(), moduleIDs_.end(), mod_id); + index = it - moduleIDs_.begin(); + } + { + auto const& alloc = streamModuleAllocs_[nModules_ * iStream.streamID().value() + index]; + assert(alloc.size() == alloc.allocationSizes().size()); + } + streamModuleAllocs_[nModules_ * iStream.streamID().value() + index] = info->allocMap_; + { + auto const& alloc = streamModuleAllocs_[nModules_ * iStream.streamID().value() + index]; + assert(alloc.size() == alloc.allocationSizes().size()); + } + ++streamSync_[iStream.streamID().value()]; + streamModuleInAcquire_[nModules_ * iStream.streamID().value() + index].store(false); + } + }); + //NOTE: the following watch points may need to be used in the future if allocations occurring during these + // transition points are confusing the findings. + /* + iRegistry.watchPreModuleEventDelayedGet( + StreamEDModuleState(logFile, beginTime, iFilter)); + iRegistry.watchPostModuleEventDelayedGet( + StreamEDModuleState(logFile, beginTime, iFilter)); + iRegistry.watchPreEventReadFromSource( + StreamEDModuleState(logFile, beginTime, iFilter)); + iRegistry.watchPostEventReadFromSource( + StreamEDModuleState(logFile, beginTime, iFilter)); + */ + iAR.watchPreClearEvent([this](auto const& iStream) { filter_.startOnThread(); }); + iAR.watchPostClearEvent([this, file](auto const& iStream) { + auto info = filter_.stopOnThread(); + if (info) { + streamSync_[iStream.streamID().value()].load(); + //search for associated allocs to deallocs in reverse order that modules finished + auto nRan = streamNFinishedModules_[iStream.streamID().value()].load(); + auto itBegin = streamModuleFinishOrder_.cbegin() + nModules_ - nRan; + auto const itEnd = itBegin + nRan; + streamNFinishedModules_[iStream.streamID().value()].store(0); + { + std::vector moduleDeallocSize(nModules_); + std::vector moduleDeallocCount(nModules_); + for (auto& address : info->unmatched_) { + decltype(streamModuleAllocs_[0].findOffset(address)) offset; + auto found = std::find_if(itBegin, itEnd, [&address, &offset, this](auto const& index) { + auto const& elem = streamModuleAllocs_[index]; + return elem.size() != 0 and (offset = elem.findOffset(address)) != elem.size(); + }); + if (found != itEnd) { + auto index = *found - nModules_ * iStream.streamID().value(); + moduleDeallocSize[index] += streamModuleAllocs_[*found].allocationSizes()[offset]; + moduleDeallocCount[index] += 1; + } + } + for (unsigned int index = 0; index < nModules_; ++index) { + if (moduleDeallocCount[index] != 0) { + auto id = moduleIDs_.empty() ? index : moduleIDs_[index]; + std::stringstream s; + s << "D " << id << " " << iStream.streamID().value() << " " << moduleDeallocSize[index] << " " + << moduleDeallocCount[index] << "\n"; + file->write(s.str()); + } + } + } + + { + auto itBegin = streamModuleAllocs_.begin() + nModules_ * iStream.streamID().value(); + auto itEnd = itBegin + nModules_; + for (auto it = itBegin; it != itEnd; ++it) { + it->clear(); + } + } + } + }); + } + + static void fillDescriptions(edm::ConfigurationDescriptions& iDesc) { + edm::ParameterSetDescription ps; + ps.addUntracked("fileName")->setComment("Name of file to write allocation info."); + ps.addUntracked>("moduleNames", std::vector()) + ->setComment( + "Module labels for modules which should have their allocations monitored. If empty all modules will be " + "monitored."); + ps.addUntracked("nEventsToSkip", 0) + ->setComment( + "Number of events to skip before turning on monitoring. If used in a multi-threaded application, " + "monitoring may be started for previous events which are still running at the time this threshold is " + "reached."); + iDesc.addDefault(ps); + } + +private: + unsigned int moduleIndex(unsigned int mod_id) const { + auto index = mod_id; + if (not moduleIDs_.empty()) { + auto it = std::lower_bound(moduleIDs_.begin(), moduleIDs_.end(), mod_id); + index = it - moduleIDs_.begin(); + } + return index; + } + + bool forThisModule(unsigned int iID) const { + return (moduleNames_.empty() or std::binary_search(moduleIDs_.begin(), moduleIDs_.end(), iID)); + } + //The size is (#streams)*(#modules) + CMS_THREAD_GUARD(streamSync_) std::vector streamModuleAllocs_; + CMS_THREAD_GUARD(streamSync_) std::vector> streamModuleInAcquire_; + //This holds the index into the streamModuleAllocs_ for the module which finished + CMS_THREAD_GUARD(streamSync_) std::vector streamModuleFinishOrder_; + std::vector> streamNFinishedModules_; + std::vector> streamSync_; + std::vector moduleNames_; + std::vector moduleIDs_; + unsigned int nStreams_ = 0; + unsigned int nModules_ = 0; + unsigned int nEventsToSkip_ = 0; + std::atomic nEventsStarted_{0}; + Filter filter_; +}; + +DEFINE_FWK_SERVICE(ModuleEventAllocMonitor); diff --git a/PerfTools/AllocMonitor/plugins/ThreadTracker.cc b/PerfTools/AllocMonitor/plugins/ThreadTracker.cc new file mode 100644 index 0000000000000..f5ab9e9801faa --- /dev/null +++ b/PerfTools/AllocMonitor/plugins/ThreadTracker.cc @@ -0,0 +1,32 @@ +// -*- C++ -*- +// +// Package: PerfTools/AllocMonitor +// Class : ThreadTracker +// +// Implementation: +// [Notes on implementation] +// +// Original Author: Christopher Jones +// Created: Mon, 11 Nov 2024 22:54:23 GMT +// + +// system include files +#include "FWCore/Utilities/interface/thread_safety_macros.h" + +// user include files +#include "ThreadTracker.h" + +// +// constants, enums and typedefs +// + +// +// static data member definitions +// + +namespace cms::perftools::allocMon { + ThreadTracker& ThreadTracker::instance() { + CMS_THREAD_SAFE static ThreadTracker s_tracker; + return s_tracker; + } +} // namespace cms::perftools::allocMon diff --git a/PerfTools/AllocMonitor/plugins/ThreadTracker.h b/PerfTools/AllocMonitor/plugins/ThreadTracker.h new file mode 100644 index 0000000000000..40d8d81e143d2 --- /dev/null +++ b/PerfTools/AllocMonitor/plugins/ThreadTracker.h @@ -0,0 +1,132 @@ +#ifndef PerfTools_AllocMonitor_ThreadTracker_h +#define PerfTools_AllocMonitor_ThreadTracker_h +// -*- C++ -*- +// +// Package: PerfTools/AllocMonitor +// Class : ThreadTracker +// +/**\class ThreadTracker ThreadTracker.h "ThreadTracker.h" + + Description: [one line class summary] + + Usage: + + +*/ +// +// Original Author: Christopher Jones +// Created: Mon, 11 Nov 2024 22:54:21 GMT +// + +// system include files +#if defined(ALLOC_USE_PTHREADS) +#include +#else +#include +#include +#endif + +#include +#include +#include +// user include files + +// forward declarations + +namespace cms::perftools::allocMon { + inline auto thread_id() { +#if defined(ALLOC_USE_PTHREADS) + /*NOTE: if use pthread_self, the values returned by linux had + lots of hash collisions when using a simple % hash. Worked + better if first divided value by 0x700 and then did %. + [test done on el8] + */ + return pthread_self(); +#else + return syscall(SYS_gettid); +#endif + } + + struct ThreadTracker { + static constexpr unsigned int kHashedEntries = 128; + static constexpr unsigned int kExtraEntries = 128; + static constexpr unsigned int kTotalEntries = kHashedEntries + kExtraEntries; + using entry_type = decltype(thread_id()); + static constexpr entry_type kUnusedEntry = ~entry_type(0); + std::array, kHashedEntries> hashed_threads_; + std::array, kExtraEntries> extra_threads_; + + std::size_t thread_index() { + auto id = thread_id(); + auto index = thread_index_guess(id); + auto used_id = hashed_threads_[index].load(); + + if (id == used_id) { + return index; + } + //try to be first thread to grab the index + auto expected = entry_type(index + 1); + if (used_id == expected) { + if (hashed_threads_[index].compare_exchange_strong(expected, id)) { + return index; + } else { + //another thread just beat us so have to go to non-hash storage + return find_new_index(id); + } + } + //search in non-hash storage + return find_index(id); + } + + static ThreadTracker& instance(); + + private: + ThreadTracker() { + //put a value which will not match the % used when looking up the entry + entry_type entry = 0; + for (auto& v : hashed_threads_) { + v = ++entry; + } + //assume kUsedEntry is not a valid thread-id + for (auto& v : extra_threads_) { + v = kUnusedEntry; + } + } + + std::size_t thread_index_guess(entry_type id) const { +#if defined(ALLOC_USE_PTHREADS) + return (id / 0x700) % kHashedEntries; +#else + return id % kHashedEntries; +#endif + } + + std::size_t find_new_index(entry_type id) { + std::size_t index = 0; + for (auto& v : extra_threads_) { + entry_type expected = kUnusedEntry; + if (v == expected) { + if (v.compare_exchange_strong(expected, id)) { + return index + kHashedEntries; + } + } + ++index; + } + //failed to find an open entry + abort(); + return 0; + } + + std::size_t find_index(entry_type id) { + std::size_t index = 0; + for (auto const& v : extra_threads_) { + if (v == id) { + return index + kHashedEntries; + } + ++index; + } + return find_new_index(id); + } + }; +} // namespace cms::perftools::allocMon +#endif diff --git a/PerfTools/AllocMonitor/plugins/mea_AllocMap.h b/PerfTools/AllocMonitor/plugins/mea_AllocMap.h new file mode 100644 index 0000000000000..ec827e0db6952 --- /dev/null +++ b/PerfTools/AllocMonitor/plugins/mea_AllocMap.h @@ -0,0 +1,98 @@ +#ifndef PerfTools_AllocMonitor_mea_AllocMap_h +#define PerfTools_AllocMonitor_mea_AllocMap_h +// -*- C++ -*- +// +// Package: PerfTools/AllocMonitor +// Class : AllocMap +// +/**\class mea_AllocMap mea_AllocMap.h "PerfTools/AllocMonitor/interface/mea_AllocMap.h" + + Description: [one line class summary] + + Usage: + + +*/ +// +// Original Author: Christopher Jones +// Created: Fri, 11 Oct 2024 19:15:46 GMT +// + +// system include files +#include +#include + +// user include files + +// forward declarations + +namespace edm::service::moduleEventAlloc { + class AllocMap { + public: + AllocMap() = default; + AllocMap(AllocMap const&) = default; + AllocMap& operator=(AllocMap const&) = default; + AllocMap(AllocMap&&) = default; + AllocMap& operator=(AllocMap&&) = default; + + // ---------- const member functions --------------------- + std::size_t size() const { return keys_.size(); } + + //returns size() if not here + std::size_t findOffset(void const* iKey) const { + auto bound = std::lower_bound(keys_.begin(), keys_.end(), iKey); + if (bound == keys_.end() or *bound != iKey) { + return size(); + } + return bound - keys_.begin(); + } + + std::vector const& allocationSizes() const { return values_; } + // ---------- static member functions -------------------- + + // ---------- member functions --------------------------- + void insert(void const* iKey, std::size_t iValue) { + auto offset = insertOffset(iKey); + if (offset != size() and keys_[offset] == iKey) { + values_[offset] = iValue; + return; + } + keys_.insert(keys_.begin() + offset, iKey); + values_.insert(values_.begin() + offset, iValue); + } + //returns 0 if not here else returns allocation size + std::size_t erase(void const* iKey) { + assert(keys_.size() == values_.size()); + auto offset = findOffset(iKey); + if (offset == size()) { + return 0; + } + auto v = values_[offset]; + values_.erase(values_.begin() + offset); + keys_.erase(keys_.begin() + offset); + + return v; + } + void clearSizes() { + values_.clear(); + values_.shrink_to_fit(); + } + + void clear() { + clearSizes(); + keys_.clear(); + keys_.shrink_to_fit(); + } + + private: + // ---------- member data -------------------------------- + std::size_t insertOffset(void const* key) const { + auto bound = std::lower_bound(keys_.begin(), keys_.end(), key); + return bound - keys_.begin(); + } + + std::vector keys_; + std::vector values_; + }; +} // namespace edm::service::moduleEventAlloc +#endif diff --git a/PerfTools/AllocMonitor/scripts/edmModuleEventAllocMonitorAnalyze.py b/PerfTools/AllocMonitor/scripts/edmModuleEventAllocMonitorAnalyze.py new file mode 100755 index 0000000000000..df4032c3cd126 --- /dev/null +++ b/PerfTools/AllocMonitor/scripts/edmModuleEventAllocMonitorAnalyze.py @@ -0,0 +1,245 @@ +#!/usr/bin/env python3 +class ModuleInfo(object): + def __init__(self, label, type_): + self._label = label + self._type = type_ + self._streamInfo = dict() + self._eventInfo = list() + def __repr__(self): + return self._label+" "+self._type+" "+str(self._eventInfo) +class ModuleCall(object): + def __init__(self, data): + self._temp = data[0] + self._nTemp = data[1] + self._unmatched = data[2] + self._nUnmatched = data[3] + self._new = data[4] + self._nNew = data[5] + +class ModuleEventInfo(object): + def __init__(self, modCall, data, streamID): + self._temp = modCall._temp + self._nTemp = modCall._nTemp + self._unmatched = modCall._unmatched + self._nUnmatched = modCall._nUnmatched + self._dataProdAlloc = data[0] + self._nDataProdAlloc = data[1] + self._new = modCall._new - self._dataProdAlloc + self._nNew = modCall._nNew - self._nDataProdAlloc + self._streamID = streamID + def __repr__(self): + return "temp("+str(self._temp)+","+str(self._nTemp)+") un("+str(self._unmatched)+","+str(self._nUnmatched)+") prod("+str(self._dataProdAlloc)+","+str(self._nDataProdAlloc)+") new("+str(self._new)+","+str(self._nNew)+")" +class FileParser(object): + def __init__(self): + self.modules = dict() + self.acquires = dict() + self.nStreams = 0 + pass + def parse(self,file): + for l in file: + self._parseLine(l[:-1]) + def _parseLine(self, line): + if len(line) == 0: + return + if line[0] == '#': + return + if line[0] == '@': + self.addModule(line[2:]) + if line[0] == 'M': + self.moduleCall(line[2:]) + if line[0] == 'A': + self.moduleAcquireCall(line[2:]) + if line[0] == 'D': + self.eventDeallocCall(line[2:]) + def addModule(self, l): + d = l.split(" ") + name, type_, index = d[0:3] + self.modules[int(index)] = ModuleInfo(name,type_) + def moduleCall(self, l): + d = [int(x) for x in l.split(" ")] + m = ModuleCall(d[2:]) + moduleName, streamID = d[0:2] + if streamID+1 > self.nStreams: + self.nStreams = streamID + 1 + self.modules[moduleName]._streamInfo[streamID] = m + if d[0] in self.acquires: + a = self.acquires[moduleName][streamID] + m._temp += a._temp + m._nTemp += a._nTemp + m._unmatched += a._unmatched + m._nUnmatched += a._nUnmatched + def moduleAcquireCall(self,l): + d = [int(x) for x in l.split(" ")] + moduleName, streamID = d[0:2] + m = self.modules[moduleName] + self.acquires.setdefault(moduleName,dict())[streamID] = ModuleCall(d[2:]) + pass + def eventDeallocCall(self,l): + d = [int(x) for x in l.split(" ")] + moduleName, streamID = d[0:2] + streamInfo = self.modules[moduleName]._streamInfo[streamID] + del self.modules[moduleName]._streamInfo[streamID] + self.modules[moduleName]._eventInfo.append(ModuleEventInfo(streamInfo,d[2:],streamID)) + +def reportModulesWithMemoryGrowth(fileParser, showEvents): + ret = [] + for m in fileParser.modules.values(): + mem = 0 + if len(m._eventInfo): + l = list() + previousNewInStream = [0]*fileParser.nStreams + #skip first event as they often have initialization memory + for e in m._eventInfo: + l.append((previousNewInStream[e._streamID], e._unmatched)) + mem += previousNewInStream[e._streamID] - e._unmatched + previousNewInStream[e._streamID] = e._new + if mem and mem > m._eventInfo[0]._new: + increment = [] + for n,u in l: + if len(increment): + increment[-1] -= u + increment.append(n) + if showEvents: + ret.append((m._label,m._type, mem,increment)) + else: + ret.append((m._label, m._type, mem)) + return ret + +def reportModuleDataProductMemory(fileParser, showEvents): + ret = [] + for m in fileParser.modules.values(): + l = list() + retained = False + sum = 0 + for e in m._eventInfo: + l.append(e._dataProdAlloc) + if e._dataProdAlloc > 0: + sum += e._dataProdAlloc + retained = True + if retained: + if showEvents: + ret.append((m._label, m._type, float(sum)/len(l), l)) + else: + ret.append((m._label, m._type, float(sum)/len(l))) + return ret + +def reportModuleRetainingMemory(fileParser, showEvents): + ret =[] + for m in fileParser.modules.values(): + l = list() + retained = False + sum = 0 + for e in m._eventInfo[1:]: + l.append(e._new) + if e._new > 0: + sum += e._new + retained = True + if retained: + if showEvents: + ret.append((m._label, m._type, float(sum)/len(l), l)) + else: + ret.append((m._label, m._type, float(sum)/len(l))) + return ret + +def reportModuleTemporary(fileParser, showEvents): + ret = [] + for m in fileParser.modules.values(): + l = list() + retained = False + sum = 0 + for e in m._eventInfo: + l.append(e._temp) + if e._temp > 0: + sum += e._temp + retained = True + if retained: + if showEvents: + ret.append((m._label, m._type, float(sum)/len(l), l)) + else: + ret.append((m._label, m._type, float(sum)/len(l))) + return ret + +def reportModuleNTemporary(fileParser, showEvents): + ret = [] + for m in fileParser.modules.values(): + l = list() + retained = False + sum = 0 + for e in m._eventInfo: + l.append(e._nTemp) + if e._temp > 0: + sum += e._nTemp + retained = True + if retained: + if showEvents: + ret.append((m._label, m._type, float(sum)/len(l), l)) + else: + ret.append((m._label, m._type, float(sum)/len(l))) + return ret + + +def printReport(values, showEvents, summary, eventSummary, maxColumn): + values.sort(key=lambda x: x[2]) + label = "module label" + classType = "module class type" + if maxColumn == 0: + columnWidths = [len(label),len(classType),len(summary)] + for v in values: + for c in (0,1,2): + if c == 2: + width = len(f"{v[c]}:.2f") + else: + width = len(v[c]) + if width > columnWidths[c]: + columnWidths[c] = width + else: + columnWidths = [maxColumn, maxColumn, maxColumn] + label = label[:maxColumn] + classType = classType[:maxColumn] + print(f"{label:{columnWidths[0]}} {classType:{columnWidths[1]}} {summary:{columnWidths[2]}}") + if showEvents: + print(f" [{eventSummary}]") + + for v in values: + label = v[0] + classType = v[1] + if maxColumn: + label = label[:maxColumn] + classType = classType[:maxColumn] + print(f"{label:{columnWidths[0]}} {classType:{columnWidths[1]}} {v[2]:{columnWidths[2]}.2f}") + if showEvents: + print(f" {v[3]}") + +if __name__=="__main__": + import argparse + + parser = argparse.ArgumentParser(description='Parses files generated from ModuleEventAlloc service') + parser.add_argument('filename', + type=argparse.FileType('r'), # open file + help='file to process') + parser.add_argument('--grew', help='report which modules retained more memory over the job', action='store_true') + parser.add_argument('--retained', help='report which modules retained memory between events (might be deleted at begin of next event)', action='store_true') + parser.add_argument('--product', help="report how much memory each module put into the Event as data products", action='store_true') + parser.add_argument('--tempSize', help="report how much temporary allocated memory each module used when processing the Event", action='store_true') + parser.add_argument('--nTemp', help="report number of temporary allocations each module used when processing the Event", action='store_true') + + parser.add_argument('--eventData', help='for each report, show the per event data associated to the report', action='store_true') + parser.add_argument('--maxColumn', type=int, help='maximum column width for report, 0 for no constraint', default=0) + args = parser.parse_args() + + inputfile = args.filename + + fileParser = FileParser() + fileParser.parse(inputfile) + + if args.grew: + printReport(reportModulesWithMemoryGrowth(fileParser, args.eventData), args.eventData, "total memory growth", "growth each event", args.maxColumn) + if args.retained: + printReport(reportModuleRetainingMemory(fileParser, args.eventData), args.eventData, "average retained", "retained each event", args.maxColumn) + if args.product: + printReport(reportModuleDataProductMemory(fileParser, args.eventData), args.eventData, "average data products size", "data products size each event", args.maxColumn) + if args.tempSize: + printReport(reportModuleTemporary(fileParser, args.eventData), args.eventData, "average temporary allocation size", "temporary allocation size each event", args.maxColumn) + if args.nTemp: + printReport(reportModuleNTemporary(fileParser, args.eventData), args.eventData, "average # of temporary allocation", "# of temporary allocations each event", args.maxColumn) + #print(fileParser.modules) diff --git a/PerfTools/AllocMonitor/test/test_catch2_allocmap.cc b/PerfTools/AllocMonitor/test/test_catch2_allocmap.cc new file mode 100644 index 0000000000000..cec2b237e07c2 --- /dev/null +++ b/PerfTools/AllocMonitor/test/test_catch2_allocmap.cc @@ -0,0 +1,81 @@ +#include "catch.hpp" + +#include "PerfTools/AllocMonitor/plugins/mea_AllocMap.h" + +using namespace edm::service::moduleEventAlloc; + +namespace { + void* address(int i) { return reinterpret_cast(i); } +} // namespace + +TEST_CASE("Test ema::AllocMap", "[AllocMap]") { + SECTION("empty") { + AllocMap map; + CHECK(map.size() == 0); + CHECK(map.findOffset(nullptr) == 0); + CHECK(map.allocationSizes().empty()); + } + + SECTION("insert in order") { + AllocMap map; + map.insert(address(1), 1); + CHECK(map.size() == 1); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.allocationSizes() == std::vector({1})); + map.insert(address(2), 2); + CHECK(map.size() == 2); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.findOffset(address(2)) == 1); + CHECK(map.allocationSizes() == std::vector({1, 2})); + map.insert(address(3), 3); + CHECK(map.size() == 3); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.findOffset(address(2)) == 1); + CHECK(map.findOffset(address(3)) == 2); + CHECK(map.allocationSizes() == std::vector({1, 2, 3})); + + SECTION("missing find in front") { CHECK(map.findOffset(nullptr) == map.size()); } + SECTION("missing find off end") { CHECK(map.findOffset(address(4)) == map.size()); } + SECTION("overwrite value") { + map.insert(address(2), 4); + CHECK(map.allocationSizes() == std::vector({1, 4, 3})); + } + } + SECTION("insert in reverse order") { + AllocMap map; + map.insert(address(3), 3); + CHECK(map.size() == 1); + CHECK(map.findOffset(address(3)) == 0); + CHECK(map.allocationSizes() == std::vector({3})); + map.insert(address(2), 2); + CHECK(map.size() == 2); + CHECK(map.findOffset(address(2)) == 0); + CHECK(map.findOffset(address(3)) == 1); + CHECK(map.allocationSizes() == std::vector({2, 3})); + map.insert(address(1), 1); + CHECK(map.size() == 3); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.findOffset(address(2)) == 1); + CHECK(map.findOffset(address(3)) == 2); + CHECK(map.allocationSizes() == std::vector({1, 2, 3})); + } + SECTION("insert in middle") { + AllocMap map; + map.insert(address(1), 1); + CHECK(map.size() == 1); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.allocationSizes() == std::vector({1})); + map.insert(address(3), 3); + CHECK(map.size() == 2); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.findOffset(address(3)) == 1); + CHECK(map.allocationSizes() == std::vector({1, 3})); + SECTION("missing findOffset") { CHECK(map.findOffset(address(2)) == map.size()); } + map.insert(address(2), 2); + CHECK(map.size() == 3); + CHECK(map.findOffset(address(1)) == 0); + CHECK(map.findOffset(address(2)) == 1); + CHECK(map.findOffset(address(3)) == 2); + CHECK(map.allocationSizes() == std::vector({1, 2, 3})); + } +} diff --git a/PerfTools/AllocMonitorPreload/src/memory_proxies.cc b/PerfTools/AllocMonitorPreload/src/memory_proxies.cc index 9c6ac64350393..3516053a10a19 100644 --- a/PerfTools/AllocMonitorPreload/src/memory_proxies.cc +++ b/PerfTools/AllocMonitorPreload/src/memory_proxies.cc @@ -148,7 +148,7 @@ namespace { } }; - static ThreadTracker& getTracker() { + ThreadTracker& getTracker() { static ThreadTracker s_tracker; return s_tracker; } diff --git a/PhysicsTools/FWLite/scripts/newFWLiteAna.py b/PhysicsTools/FWLite/scripts/newFWLiteAna.py index 3612b46d46a90..27a70553addf7 100755 --- a/PhysicsTools/FWLite/scripts/newFWLiteAna.py +++ b/PhysicsTools/FWLite/scripts/newFWLiteAna.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter import os import sys diff --git a/PhysicsTools/FWLite/src/CommandLineParser.cc b/PhysicsTools/FWLite/src/CommandLineParser.cc index 519abd8548cf5..99e0223d7c807 100644 --- a/PhysicsTools/FWLite/src/CommandLineParser.cc +++ b/PhysicsTools/FWLite/src/CommandLineParser.cc @@ -102,7 +102,7 @@ void CommandLineParser::parseArguments(int argc, char **argv, bool returnArgs) { } void CommandLineParser::help() { - if (m_usageString.length()) { + if (!m_usageString.empty()) { cout << m_argv0 << " - " << m_usageString << endl; } cout << "--help - This screen" << endl @@ -138,7 +138,7 @@ void CommandLineParser::split(SVec &retval, string line, string match, bool igno } string part = line.substr(pos, current - last - 1); // don't bother adding 0 length strings - if (part.length()) { + if (!part.empty()) { retval.push_back(part); } last = current; @@ -208,7 +208,7 @@ void CommandLineParser::printOptionValues() { for (SIMapConstIter iter = m_integerMap.begin(); m_integerMap.end() != iter; ++iter) { const string &description = m_variableDescriptionMap[iter->first]; cout << " " << setw(14) << iter->first << " = " << setw(14) << iter->second; - if (description.length()) { + if (!description.empty()) { cout << " - " << description; } cout << endl; @@ -221,7 +221,7 @@ void CommandLineParser::printOptionValues() { for (SDMapConstIter iter = m_doubleMap.begin(); m_doubleMap.end() != iter; ++iter) { const string &description = m_variableDescriptionMap[iter->first]; cout << " " << setw(14) << iter->first << " = " << setw(14) << iter->second; - if (description.length()) { + if (!description.empty()) { cout << " - " << description; } cout << endl; @@ -239,7 +239,7 @@ void CommandLineParser::printOptionValues() { } else { cout << "false"; } - if (description.length()) { + if (!description.empty()) { cout << " - " << description; } cout << endl; @@ -254,7 +254,7 @@ void CommandLineParser::printOptionValues() { cout << " " << setw(14) << iter->first << " = "; const string value = "'" + iter->second + "'"; cout << setw(14) << ""; - if (description.length()) { + if (!description.empty()) { cout << " - " << description; } cout << endl << " " << value << endl; @@ -269,7 +269,7 @@ void CommandLineParser::printOptionValues() { cout << " " << setw(14) << iter->first << " = "; dumpSTL(iter->second); cout << endl; - if (description.length()) { + if (!description.empty()) { cout << " - " << description; } cout << endl; @@ -284,7 +284,7 @@ void CommandLineParser::printOptionValues() { cout << " " << setw(14) << iter->first << " = "; dumpSTL(iter->second); cout << endl; - if (description.length()) { + if (!description.empty()) { cout << " - " << description; } cout << endl; @@ -299,7 +299,7 @@ void CommandLineParser::printOptionValues() { for (SSVecMapConstIter iter = m_stringVecMap.begin(); m_stringVecMap.end() != iter; ++iter) { const string &description = m_variableDescriptionMap[iter->first]; cout << " " << setw(14) << iter->first << " = "; - if (description.length()) { + if (!description.empty()) { cout << setw(14) << "" << " - " << description; } @@ -601,7 +601,7 @@ void CommandLineParser::_finishDefaultOptions(std::string tag) { // Store lfn to pfn // ////////////////////// const string &kStorePrepend = stringValue("storePrepend"); - if (kStorePrepend.length()) { + if (!kStorePrepend.empty()) { string match = "/store/"; int matchLen = match.length(); SVec tempVec; @@ -623,7 +623,7 @@ void CommandLineParser::_finishDefaultOptions(std::string tag) { // //////////////////////////// // ////////////////////////////////// string outputFile = stringValue("outputFile"); - bool modifyOutputFile = (outputFile.length()); + bool modifyOutputFile = (!outputFile.empty()); outputFile = removeEnding(outputFile, ".root"); outputFile += tag; if (integerValue("maxEvents")) { @@ -632,7 +632,7 @@ void CommandLineParser::_finishDefaultOptions(std::string tag) { if (integerValue("jobID") >= 0) { outputFile += Form("_jobID%03d", integerValue("jobID")); } - if (stringValue("tag").length()) { + if (!stringValue("tag").empty()) { outputFile += "_" + stringValue("tag"); } diff --git a/PhysicsTools/FWLite/src/TH1Store.cc b/PhysicsTools/FWLite/src/TH1Store.cc index befeb181e1886..91b3c70949770 100644 --- a/PhysicsTools/FWLite/src/TH1Store.cc +++ b/PhysicsTools/FWLite/src/TH1Store.cc @@ -40,7 +40,7 @@ void TH1Store::add(TH1 *histPtr, const std::string &directory) { } m_ptrMap[name] = histPtr; histPtr->SetDirectory(nullptr); - if (directory.length()) { + if (!directory.empty()) { m_nameDirMap[name] = directory; } } diff --git a/PhysicsTools/HepMCCandAlgos/plugins/GenParticleProducer.cc b/PhysicsTools/HepMCCandAlgos/plugins/GenParticleProducer.cc index e0f06928f57f7..9c48fbb2ba91f 100644 --- a/PhysicsTools/HepMCCandAlgos/plugins/GenParticleProducer.cc +++ b/PhysicsTools/HepMCCandAlgos/plugins/GenParticleProducer.cc @@ -196,11 +196,15 @@ void GenParticleProducer::produce(StreamID, Event& evt, const EventSetup& es) co LogDebug("GenParticleProducer") << "totalSize : " << totalSize << endl; } else { Handle mcp; - evt.getByToken(srcToken_, mcp); - mc = mcp->GetEvent(); - if (mc == nullptr) - throw edm::Exception(edm::errors::InvalidReference) << "HepMC has null pointer to GenEvent" << endl; - totalSize = mc->particles_size(); + bool found = evt.getByToken(srcToken_, mcp); + if (found) { + mc = mcp->GetEvent(); + if (mc == nullptr) + throw edm::Exception(edm::errors::InvalidReference) << "HepMC has null pointer to GenEvent" << endl; + totalSize = mc->particles_size(); + } else { + totalSize = 0; + } } // initialise containers @@ -281,28 +285,30 @@ void GenParticleProducer::produce(StreamID, Event& evt, const EventSetup& es) co offset += num_particles; } } else { - auto origin = (*mc->vertices_begin())->position(); - xyz0Ptr->SetXYZ(origin.x() * mmToCm, origin.y() * mmToCm, origin.z() * mmToCm); - *t0Ptr = origin.t() * mmToNs; - fillIndices(mc, particles, *barCodeVector, 0, barcodes); - - // fill output collection and save association - for (size_t i = 0; i < particles.size(); ++i) { - const HepMC::GenParticle* part = particles[i]; - reco::GenParticle& cand = cands[i]; - // convert HepMC::GenParticle to new reco::GenParticle - convertParticle(cand, part, id2Charge); - cand.resetDaughters(ref.id()); - } + if (totalSize) { + auto origin = (*mc->vertices_begin())->position(); + xyz0Ptr->SetXYZ(origin.x() * mmToCm, origin.y() * mmToCm, origin.z() * mmToCm); + *t0Ptr = origin.t() * mmToNs; + fillIndices(mc, particles, *barCodeVector, 0, barcodes); - // fill references to daughters - for (size_t d = 0; d < cands.size(); ++d) { - const HepMC::GenParticle* part = particles[d]; - const GenVertex* productionVertex = part->production_vertex(); - // search barcode map and attach daughters - if (productionVertex != nullptr) - fillDaughters(cands, part, ref, d, barcodes); - cands[d].setCollisionId(0); + // fill output collection and save association + for (size_t i = 0; i < particles.size(); ++i) { + const HepMC::GenParticle* part = particles[i]; + reco::GenParticle& cand = cands[i]; + // convert HepMC::GenParticle to new reco::GenParticle + convertParticle(cand, part, id2Charge); + cand.resetDaughters(ref.id()); + } + + // fill references to daughters + for (size_t d = 0; d < cands.size(); ++d) { + const HepMC::GenParticle* part = particles[d]; + const GenVertex* productionVertex = part->production_vertex(); + // search barcode map and attach daughters + if (productionVertex != nullptr) + fillDaughters(cands, part, ref, d, barcodes); + cands[d].setCollisionId(0); + } } } @@ -353,7 +359,6 @@ bool GenParticleProducer::fillDaughters(reco::GenParticleCollection& cands, cands[index].addMother(GenParticleRef(ref, m)); } } - return true; } diff --git a/PhysicsTools/Heppy/python/analyzers/core/Analyzer.py b/PhysicsTools/Heppy/python/analyzers/core/Analyzer.py index 328d884a6270a..bebaddddcdd09 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/Analyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/core/Analyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import logging diff --git a/PhysicsTools/Heppy/python/analyzers/core/AutoHandle.py b/PhysicsTools/Heppy/python/analyzers/core/AutoHandle.py index 02ec275ec0c19..05a5b853474cf 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/AutoHandle.py +++ b/PhysicsTools/Heppy/python/analyzers/core/AutoHandle.py @@ -1,4 +1,3 @@ -from __future__ import print_function #ROOTTOOLS from DataFormats.FWLite import Events, Handle diff --git a/PhysicsTools/Heppy/python/analyzers/core/EventSelector.py b/PhysicsTools/Heppy/python/analyzers/core/EventSelector.py index 34fbece883d2e..419d1129ca044 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/EventSelector.py +++ b/PhysicsTools/Heppy/python/analyzers/core/EventSelector.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.HeppyCore.framework.analyzer import Analyzer diff --git a/PhysicsTools/Heppy/python/analyzers/core/ProvenanceAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/core/ProvenanceAnalyzer.py index ab61f6b1bc819..68c0fd9a24a07 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/ProvenanceAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/core/ProvenanceAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import itertools diff --git a/PhysicsTools/Heppy/python/analyzers/core/SkimAnalyzerCount.py b/PhysicsTools/Heppy/python/analyzers/core/SkimAnalyzerCount.py index f705c51665ca8..f43b635ad72ec 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/SkimAnalyzerCount.py +++ b/PhysicsTools/Heppy/python/analyzers/core/SkimAnalyzerCount.py @@ -1,4 +1,3 @@ -from __future__ import print_function import itertools from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer diff --git a/PhysicsTools/Heppy/python/analyzers/core/TreeAnalyzerNumpy.py b/PhysicsTools/Heppy/python/analyzers/core/TreeAnalyzerNumpy.py index 722044946e6c7..36318789aed17 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/TreeAnalyzerNumpy.py +++ b/PhysicsTools/Heppy/python/analyzers/core/TreeAnalyzerNumpy.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer from PhysicsTools.HeppyCore.statistics.tree import Tree as Tree from ROOT import TFile diff --git a/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py index 5cbc62e741c10..88fada3786029 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer diff --git a/PhysicsTools/Heppy/python/analyzers/core/TriggerMatchAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/core/TriggerMatchAnalyzer.py index f3f79e08e08dc..3bf49c5d5bf13 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/TriggerMatchAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/core/TriggerMatchAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer diff --git a/PhysicsTools/Heppy/python/analyzers/examples/MetAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/examples/MetAnalyzer.py index fece5fd6ecde2..7e6b31228e895 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/MetAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/MetAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import copy from PhysicsTools.HeppyCore.framework.analyzer import Analyzer from PhysicsTools.Heppy.analyzers.AutoHandle import AutoHandle diff --git a/PhysicsTools/Heppy/python/analyzers/examples/SimpleTreeAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/examples/SimpleTreeAnalyzer.py index 9c44cfc3eec0c..5b162eba8d200 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/SimpleTreeAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/SimpleTreeAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from PhysicsTools.Heppy.analyzers.core.TreeAnalyzerNumpy import TreeAnalyzerNumpy from . import ntuple diff --git a/PhysicsTools/Heppy/python/analyzers/examples/TriggerAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/examples/TriggerAnalyzer.py index 71b9ac203379c..91d1e7b169f43 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/TriggerAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/TriggerAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.HeppyCore.framework.analyzer import Analyzer from PhysicsTools.Heppy.analyzers.AutoHandle import AutoHandle from PhysicsTools.HeppyCore.statistics.counter import Counter diff --git a/PhysicsTools/Heppy/python/analyzers/examples/ZEleEleAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/examples/ZEleEleAnalyzer.py index ba449924928f2..f4ae8bda6dece 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/ZEleEleAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/ZEleEleAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.Heppy.analyzers.DiLeptonAnalyzer import DiLeptonAnalyzer from PhysicsTools.Heppy.analyzers.AutoHandle import AutoHandle from PhysicsTools.Heppy.physicsobjects.DiObject import DiElectron diff --git a/PhysicsTools/Heppy/python/analyzers/examples/ZJetsTreeAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/examples/ZJetsTreeAnalyzer.py index e652aa3358a31..801e711dece79 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/ZJetsTreeAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/ZJetsTreeAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from PhysicsTools.Heppy.analyzers.core.TreeAnalyzerNumpy import TreeAnalyzerNumpy from . import ntuple diff --git a/PhysicsTools/Heppy/python/analyzers/examples/ZMuMuAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/examples/ZMuMuAnalyzer.py index c567c63c964cd..0e32296803421 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/ZMuMuAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/ZMuMuAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.Heppy.analyzers.DiLeptonAnalyzer import DiLeptonAnalyzer from PhysicsTools.Heppy.analyzers.AutoHandle import AutoHandle from PhysicsTools.Heppy.physicsobjects.DiObject import DiMuon diff --git a/PhysicsTools/Heppy/python/analyzers/examples/ntuple.py b/PhysicsTools/Heppy/python/analyzers/examples/ntuple.py index 9b398d8717702..e28f57cdacb17 100644 --- a/PhysicsTools/Heppy/python/analyzers/examples/ntuple.py +++ b/PhysicsTools/Heppy/python/analyzers/examples/ntuple.py @@ -1,5 +1,4 @@ #!/bin/env python -from __future__ import print_function def var( tree, varName, type=float ): tree.var(varName, type) diff --git a/PhysicsTools/Heppy/python/analyzers/gen/GeneratorAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/gen/GeneratorAnalyzer.py index 64ff16a6f9798..6836a76506f33 100644 --- a/PhysicsTools/Heppy/python/analyzers/gen/GeneratorAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/gen/GeneratorAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer from PhysicsTools.Heppy.analyzers.core.AutoHandle import AutoHandle diff --git a/PhysicsTools/Heppy/python/analyzers/objects/IsoTrackAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/objects/IsoTrackAnalyzer.py index 9aef59928ed18..f79cc7dff61b1 100755 --- a/PhysicsTools/Heppy/python/analyzers/objects/IsoTrackAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/objects/IsoTrackAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import operator import itertools import copy diff --git a/PhysicsTools/Heppy/python/analyzers/objects/JetAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/objects/JetAnalyzer.py index ca8c82ec25554..f2e360965acd1 100644 --- a/PhysicsTools/Heppy/python/analyzers/objects/JetAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/objects/JetAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import math, os from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer diff --git a/PhysicsTools/Heppy/python/analyzers/objects/LeptonAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/objects/LeptonAnalyzer.py index 5560f7eca56f2..2e4fe7e6c37d2 100644 --- a/PhysicsTools/Heppy/python/analyzers/objects/LeptonAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/objects/LeptonAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer from PhysicsTools.Heppy.analyzers.core.AutoHandle import AutoHandle diff --git a/PhysicsTools/Heppy/python/analyzers/objects/PhotonAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/objects/PhotonAnalyzer.py index b00a7af7eb5d7..ee8691f1416e7 100644 --- a/PhysicsTools/Heppy/python/analyzers/objects/PhotonAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/objects/PhotonAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import operator import itertools import copy diff --git a/PhysicsTools/Heppy/python/analyzers/objects/VertexAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/objects/VertexAnalyzer.py index c7dbac7ad4526..416c9ba224c8e 100644 --- a/PhysicsTools/Heppy/python/analyzers/objects/VertexAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/objects/VertexAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function import itertools from PhysicsTools.Heppy.analyzers.core.VertexHistograms import VertexHistograms diff --git a/PhysicsTools/Heppy/python/loadlibs.py b/PhysicsTools/Heppy/python/loadlibs.py index ce42f92fb3787..cf3ed186bc18e 100644 --- a/PhysicsTools/Heppy/python/loadlibs.py +++ b/PhysicsTools/Heppy/python/loadlibs.py @@ -1,4 +1,3 @@ -from __future__ import print_function from ROOT import gROOT,gSystem def load_libs(): diff --git a/PhysicsTools/Heppy/python/physicsobjects/Photon.py b/PhysicsTools/Heppy/python/physicsobjects/Photon.py index 52dedba80e524..c28d6eabf8694 100644 --- a/PhysicsTools/Heppy/python/physicsobjects/Photon.py +++ b/PhysicsTools/Heppy/python/physicsobjects/Photon.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.Heppy.physicsobjects.PhysicsObject import * from math import exp import re diff --git a/PhysicsTools/Heppy/python/physicsutils/BTagSF.py b/PhysicsTools/Heppy/python/physicsutils/BTagSF.py index 0ad6fb33661b1..04ffd980cde3a 100644 --- a/PhysicsTools/Heppy/python/physicsutils/BTagSF.py +++ b/PhysicsTools/Heppy/python/physicsutils/BTagSF.py @@ -1,4 +1,3 @@ -from __future__ import print_function # importing the python binding to the C++ class from ROOT from ROOT import heppy diff --git a/PhysicsTools/Heppy/python/physicsutils/BTagWeightCalculator.py b/PhysicsTools/Heppy/python/physicsutils/BTagWeightCalculator.py index cd8067ce8b494..01193fbd9b1c8 100644 --- a/PhysicsTools/Heppy/python/physicsutils/BTagWeightCalculator.py +++ b/PhysicsTools/Heppy/python/physicsutils/BTagWeightCalculator.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT import numpy as np diff --git a/PhysicsTools/Heppy/python/physicsutils/EnergyCorrector.py b/PhysicsTools/Heppy/python/physicsutils/EnergyCorrector.py index 932006ffbbbfc..c76ab30acbeee 100644 --- a/PhysicsTools/Heppy/python/physicsutils/EnergyCorrector.py +++ b/PhysicsTools/Heppy/python/physicsutils/EnergyCorrector.py @@ -1,4 +1,3 @@ -from __future__ import print_function from ROOT import TH1F, TH2F, TFile diff --git a/PhysicsTools/Heppy/python/physicsutils/JetReCalibrator.py b/PhysicsTools/Heppy/python/physicsutils/JetReCalibrator.py index e2bb4911af36d..3332d2520fa42 100644 --- a/PhysicsTools/Heppy/python/physicsutils/JetReCalibrator.py +++ b/PhysicsTools/Heppy/python/physicsutils/JetReCalibrator.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT import os, types diff --git a/PhysicsTools/Heppy/python/physicsutils/QGLikelihoodCalculator.py b/PhysicsTools/Heppy/python/physicsutils/QGLikelihoodCalculator.py index 3adc2fab81510..3ee615905a56a 100644 --- a/PhysicsTools/Heppy/python/physicsutils/QGLikelihoodCalculator.py +++ b/PhysicsTools/Heppy/python/physicsutils/QGLikelihoodCalculator.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import ROOT import math diff --git a/PhysicsTools/Heppy/python/physicsutils/TauDecayModes.py b/PhysicsTools/Heppy/python/physicsutils/TauDecayModes.py index a443957c4b4f6..a8f60cfc534d7 100644 --- a/PhysicsTools/Heppy/python/physicsutils/TauDecayModes.py +++ b/PhysicsTools/Heppy/python/physicsutils/TauDecayModes.py @@ -1,4 +1,3 @@ -from __future__ import print_function class TauDecayModes( object ): diff --git a/PhysicsTools/Heppy/python/utils/cmsswPreprocessor.py b/PhysicsTools/Heppy/python/utils/cmsswPreprocessor.py index 9fa4287c1c30b..7db006b2824f8 100644 --- a/PhysicsTools/Heppy/python/utils/cmsswPreprocessor.py +++ b/PhysicsTools/Heppy/python/utils/cmsswPreprocessor.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import sys import re diff --git a/PhysicsTools/Heppy/python/utils/miniAodFiles.py b/PhysicsTools/Heppy/python/utils/miniAodFiles.py index ae86ac7033dfc..c8c268da203ef 100644 --- a/PhysicsTools/Heppy/python/utils/miniAodFiles.py +++ b/PhysicsTools/Heppy/python/utils/miniAodFiles.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.Heppy.utils.cmsswRelease import cmsswRelease, releaseNumber def miniAodFiles(): diff --git a/PhysicsTools/Heppy/python/utils/rltinfo.py b/PhysicsTools/Heppy/python/utils/rltinfo.py index 16c0da8719806..63b689061da29 100644 --- a/PhysicsTools/Heppy/python/utils/rltinfo.py +++ b/PhysicsTools/Heppy/python/utils/rltinfo.py @@ -1,4 +1,3 @@ -from __future__ import print_function from ROOT import TFile from PhysicsTools.HeppyCore.statistics.tree import Tree as Tree diff --git a/PhysicsTools/Heppy/scripts/cmsBatch.py b/PhysicsTools/Heppy/scripts/cmsBatch.py index 5e3151ef59ec9..44d407a333921 100755 --- a/PhysicsTools/Heppy/scripts/cmsBatch.py +++ b/PhysicsTools/Heppy/scripts/cmsBatch.py @@ -2,7 +2,6 @@ # Colin # batch mode for cmsRun, March 2009 -from __future__ import print_function from builtins import range import os, sys, imp, re, pprint, string, time,shutil,copy,pickle,math from optparse import OptionParser diff --git a/PhysicsTools/Heppy/scripts/cmsStageWithFailover.py b/PhysicsTools/Heppy/scripts/cmsStageWithFailover.py index 925654979dc5d..ca40114d141ce 100755 --- a/PhysicsTools/Heppy/scripts/cmsStageWithFailover.py +++ b/PhysicsTools/Heppy/scripts/cmsStageWithFailover.py @@ -2,7 +2,6 @@ #this script runs cmsStage multiple times in the case where it failes for some reason -from __future__ import print_function from builtins import range if __name__ == '__main__': diff --git a/PhysicsTools/Heppy/scripts/heppy_report.py b/PhysicsTools/Heppy/scripts/heppy_report.py index ff63e2e5df708..9e27cd05ac080 100755 --- a/PhysicsTools/Heppy/scripts/heppy_report.py +++ b/PhysicsTools/Heppy/scripts/heppy_report.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range from optparse import OptionParser import json diff --git a/PhysicsTools/Heppy/test/crab/heppy_crab_script.py b/PhysicsTools/Heppy/test/crab/heppy_crab_script.py index 906474c12894f..b57063b1ba011 100755 --- a/PhysicsTools/Heppy/test/crab/heppy_crab_script.py +++ b/PhysicsTools/Heppy/test/crab/heppy_crab_script.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function from builtins import range import os # probably easier to fetch everything without subdirs, but that's up to user preferences diff --git a/PhysicsTools/Heppy/test/example_autofill_multipleTrees.py b/PhysicsTools/Heppy/test/example_autofill_multipleTrees.py index 64152c8e72e46..906f202f01c20 100644 --- a/PhysicsTools/Heppy/test/example_autofill_multipleTrees.py +++ b/PhysicsTools/Heppy/test/example_autofill_multipleTrees.py @@ -3,7 +3,6 @@ # In particular here we create a second tree producer containing only information and then, # cloning it in two copies, we store it both in the same file as the main tree and in separate file -from __future__ import print_function import ROOT import PhysicsTools.HeppyCore.framework.config as cfg # avoid creating subdirs, in case subdirs are wanted the treeProducer should have different names (set name="blabla" in the config) diff --git a/PhysicsTools/Heppy/test/simple_example_cfg.py b/PhysicsTools/Heppy/test/simple_example_cfg.py index be8950881f5af..45671d0d34716 100644 --- a/PhysicsTools/Heppy/test/simple_example_cfg.py +++ b/PhysicsTools/Heppy/test/simple_example_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import PhysicsTools.HeppyCore.framework.config as cfg from PhysicsTools.Heppy.utils.miniAodFiles import miniAodFiles diff --git a/PhysicsTools/HeppyCore/python/analyzers/CMSTestAnalyzer.py b/PhysicsTools/HeppyCore/python/analyzers/CMSTestAnalyzer.py index 5ee4abd954cc1..983a1a0953921 100644 --- a/PhysicsTools/HeppyCore/python/analyzers/CMSTestAnalyzer.py +++ b/PhysicsTools/HeppyCore/python/analyzers/CMSTestAnalyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.HeppyCore.framework.analyzer import Analyzer class CMSTestAnalyzer(Analyzer): diff --git a/PhysicsTools/HeppyCore/python/analyzers/Printer.py b/PhysicsTools/HeppyCore/python/analyzers/Printer.py index 20b2fd77ef30c..32ff7951809ea 100644 --- a/PhysicsTools/HeppyCore/python/analyzers/Printer.py +++ b/PhysicsTools/HeppyCore/python/analyzers/Printer.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.HeppyCore.framework.analyzer import Analyzer class Printer(Analyzer): diff --git a/PhysicsTools/HeppyCore/python/framework/analyzer.py b/PhysicsTools/HeppyCore/python/framework/analyzer.py index c09eaf5936de0..ef89fefd9e322 100644 --- a/PhysicsTools/HeppyCore/python/framework/analyzer.py +++ b/PhysicsTools/HeppyCore/python/framework/analyzer.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE diff --git a/PhysicsTools/HeppyCore/python/framework/chain_test.py b/PhysicsTools/HeppyCore/python/framework/chain_test.py index a059a9416a4ea..cfe16eaa699c3 100644 --- a/PhysicsTools/HeppyCore/python/framework/chain_test.py +++ b/PhysicsTools/HeppyCore/python/framework/chain_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest import os import shutil diff --git a/PhysicsTools/HeppyCore/python/framework/config.py b/PhysicsTools/HeppyCore/python/framework/config.py index a3663451cb89f..3f7259dae947a 100644 --- a/PhysicsTools/HeppyCore/python/framework/config.py +++ b/PhysicsTools/HeppyCore/python/framework/config.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE diff --git a/PhysicsTools/HeppyCore/python/framework/config_test.py b/PhysicsTools/HeppyCore/python/framework/config_test.py index 8d665c30acd00..ee28df920c7d4 100644 --- a/PhysicsTools/HeppyCore/python/framework/config_test.py +++ b/PhysicsTools/HeppyCore/python/framework/config_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest import os import shutil diff --git a/PhysicsTools/HeppyCore/python/framework/eventsfwlite.py b/PhysicsTools/HeppyCore/python/framework/eventsfwlite.py index af1711609c22a..7fc79eecf6f83 100644 --- a/PhysicsTools/HeppyCore/python/framework/eventsfwlite.py +++ b/PhysicsTools/HeppyCore/python/framework/eventsfwlite.py @@ -1,4 +1,3 @@ -from __future__ import print_function from DataFormats.FWLite import Events as FWLiteEvents from ROOT import gROOT, gSystem, AutoLibraryLoader diff --git a/PhysicsTools/HeppyCore/python/framework/eventstfile_test.py b/PhysicsTools/HeppyCore/python/framework/eventstfile_test.py index fa969b5a2a2bc..cc2d7d8324535 100644 --- a/PhysicsTools/HeppyCore/python/framework/eventstfile_test.py +++ b/PhysicsTools/HeppyCore/python/framework/eventstfile_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest from .eventstfile import Events diff --git a/PhysicsTools/HeppyCore/python/framework/heppy_loop.py b/PhysicsTools/HeppyCore/python/framework/heppy_loop.py index 4e8bceae7ce20..1d82b63711471 100755 --- a/PhysicsTools/HeppyCore/python/framework/heppy_loop.py +++ b/PhysicsTools/HeppyCore/python/framework/heppy_loop.py @@ -2,7 +2,6 @@ # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE -from __future__ import print_function from builtins import range import os import shutil diff --git a/PhysicsTools/HeppyCore/python/framework/looper.py b/PhysicsTools/HeppyCore/python/framework/looper.py index d8415f4c3a590..3b4969f3bb67c 100644 --- a/PhysicsTools/HeppyCore/python/framework/looper.py +++ b/PhysicsTools/HeppyCore/python/framework/looper.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE diff --git a/PhysicsTools/HeppyCore/python/framework/services/service_test.py b/PhysicsTools/HeppyCore/python/framework/services/service_test.py index 9c7943eb905dc..f0b5be0416f4a 100644 --- a/PhysicsTools/HeppyCore/python/framework/services/service_test.py +++ b/PhysicsTools/HeppyCore/python/framework/services/service_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest import os import shutil diff --git a/PhysicsTools/HeppyCore/python/framework/weight.py b/PhysicsTools/HeppyCore/python/framework/weight.py index 0bf53ba308317..64c700a176b9b 100644 --- a/PhysicsTools/HeppyCore/python/framework/weight.py +++ b/PhysicsTools/HeppyCore/python/framework/weight.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE diff --git a/PhysicsTools/HeppyCore/python/statistics/average_test.py b/PhysicsTools/HeppyCore/python/statistics/average_test.py index 650591d67236f..d6721efced933 100644 --- a/PhysicsTools/HeppyCore/python/statistics/average_test.py +++ b/PhysicsTools/HeppyCore/python/statistics/average_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest from .average import Average diff --git a/PhysicsTools/HeppyCore/python/statistics/counter_test.py b/PhysicsTools/HeppyCore/python/statistics/counter_test.py index d2891db92f434..05b9f64f2ab9d 100644 --- a/PhysicsTools/HeppyCore/python/statistics/counter_test.py +++ b/PhysicsTools/HeppyCore/python/statistics/counter_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest import os import shutil diff --git a/PhysicsTools/HeppyCore/python/statistics/tree_test.py b/PhysicsTools/HeppyCore/python/statistics/tree_test.py index a6e1e69294a18..3b90a2ec1dc17 100644 --- a/PhysicsTools/HeppyCore/python/statistics/tree_test.py +++ b/PhysicsTools/HeppyCore/python/statistics/tree_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest from ROOT import TFile from .tree import Tree diff --git a/PhysicsTools/HeppyCore/python/statistics/value_test.py b/PhysicsTools/HeppyCore/python/statistics/value_test.py index 3a78914c729ec..f3f58f3c6e96b 100644 --- a/PhysicsTools/HeppyCore/python/statistics/value_test.py +++ b/PhysicsTools/HeppyCore/python/statistics/value_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest import math from .value import Value diff --git a/PhysicsTools/HeppyCore/python/utils/addToDatasets.py b/PhysicsTools/HeppyCore/python/utils/addToDatasets.py index 24b7d0837f293..7e725f18d5295 100644 --- a/PhysicsTools/HeppyCore/python/utils/addToDatasets.py +++ b/PhysicsTools/HeppyCore/python/utils/addToDatasets.py @@ -2,7 +2,6 @@ # Colin # additional layer, on top of cmsBatch.py -from __future__ import absolute_import import os from .castorBaseDir import getUserAndArea diff --git a/PhysicsTools/HeppyCore/python/utils/batchmanager.py b/PhysicsTools/HeppyCore/python/utils/batchmanager.py index 03dc86ff4a0fc..418984b7ada33 100644 --- a/PhysicsTools/HeppyCore/python/utils/batchmanager.py +++ b/PhysicsTools/HeppyCore/python/utils/batchmanager.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import from datetime import datetime from optparse import OptionParser diff --git a/PhysicsTools/HeppyCore/python/utils/castorBaseDir.py b/PhysicsTools/HeppyCore/python/utils/castorBaseDir.py index cb17990a7167d..eca6c161e2a3e 100755 --- a/PhysicsTools/HeppyCore/python/utils/castorBaseDir.py +++ b/PhysicsTools/HeppyCore/python/utils/castorBaseDir.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import import os, sys from . import eostools as castortools diff --git a/PhysicsTools/HeppyCore/python/utils/das.py b/PhysicsTools/HeppyCore/python/utils/das.py index f59cb70d40a31..b963c294619ab 100644 --- a/PhysicsTools/HeppyCore/python/utils/das.py +++ b/PhysicsTools/HeppyCore/python/utils/das.py @@ -4,7 +4,6 @@ """ DAS command line tool """ -from __future__ import print_function __author__ = "Valentin Kuznetsov" import sys diff --git a/PhysicsTools/HeppyCore/python/utils/dataset.py b/PhysicsTools/HeppyCore/python/utils/dataset.py index 2fabf260cad42..317f6d1e16112 100644 --- a/PhysicsTools/HeppyCore/python/utils/dataset.py +++ b/PhysicsTools/HeppyCore/python/utils/dataset.py @@ -1,7 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function -from __future__ import absolute_import from builtins import range import os import pprint diff --git a/PhysicsTools/HeppyCore/python/utils/datasetToSource.py b/PhysicsTools/HeppyCore/python/utils/datasetToSource.py index 4740178c0a126..923c8bc0276e6 100644 --- a/PhysicsTools/HeppyCore/python/utils/datasetToSource.py +++ b/PhysicsTools/HeppyCore/python/utils/datasetToSource.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import os from .dataset import Dataset, CMSDataset, LocalDataset, createDataset, PrivateDataset, createMyDataset diff --git a/PhysicsTools/HeppyCore/python/utils/dataset_test.py b/PhysicsTools/HeppyCore/python/utils/dataset_test.py index 1ceec0aa34ce7..5e28e1d0bbdc6 100644 --- a/PhysicsTools/HeppyCore/python/utils/dataset_test.py +++ b/PhysicsTools/HeppyCore/python/utils/dataset_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from builtins import range from .dataset import * diff --git a/PhysicsTools/HeppyCore/python/utils/diclist_test.py b/PhysicsTools/HeppyCore/python/utils/diclist_test.py index 2e64f03859861..f3ff4849d6180 100644 --- a/PhysicsTools/HeppyCore/python/utils/diclist_test.py +++ b/PhysicsTools/HeppyCore/python/utils/diclist_test.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import unittest from .diclist import diclist diff --git a/PhysicsTools/HeppyCore/python/utils/edmIntegrityCheck.py b/PhysicsTools/HeppyCore/python/utils/edmIntegrityCheck.py index 9f231f5497254..eb29e7ba6d96d 100644 --- a/PhysicsTools/HeppyCore/python/utils/edmIntegrityCheck.py +++ b/PhysicsTools/HeppyCore/python/utils/edmIntegrityCheck.py @@ -2,8 +2,6 @@ """ Classes to check that a set of ROOT files are OK and publish a report """ -from __future__ import print_function -from __future__ import absolute_import from builtins import range import datetime, fnmatch, json, os, shutil, sys, tempfile, time diff --git a/PhysicsTools/HeppyCore/python/utils/eostools.py b/PhysicsTools/HeppyCore/python/utils/eostools.py index dbe1e9528a905..6f93c259f5f2e 100644 --- a/PhysicsTools/HeppyCore/python/utils/eostools.py +++ b/PhysicsTools/HeppyCore/python/utils/eostools.py @@ -2,7 +2,6 @@ """ A module to manipulate files on EOS or on the local file system. Intended to have the same interface as castortools.py. """ -from __future__ import print_function import sys import os import re diff --git a/PhysicsTools/HeppyCore/python/utils/logger.py b/PhysicsTools/HeppyCore/python/utils/logger.py index f4b75ca3d2bda..dfb979ef6a5b0 100644 --- a/PhysicsTools/HeppyCore/python/utils/logger.py +++ b/PhysicsTools/HeppyCore/python/utils/logger.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from optparse import OptionParser import sys,os, re, subprocess, datetime diff --git a/PhysicsTools/HeppyCore/python/utils/production_tasks.py b/PhysicsTools/HeppyCore/python/utils/production_tasks.py index 1cb348fa2b92b..0a396db47c48f 100644 --- a/PhysicsTools/HeppyCore/python/utils/production_tasks.py +++ b/PhysicsTools/HeppyCore/python/utils/production_tasks.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from builtins import range import copy, datetime, inspect, fnmatch, os, re, subprocess, sys, tempfile, time diff --git a/PhysicsTools/HeppyCore/python/utils/testtree.py b/PhysicsTools/HeppyCore/python/utils/testtree.py index 4b4bc2164a9eb..f58d67606af4c 100644 --- a/PhysicsTools/HeppyCore/python/utils/testtree.py +++ b/PhysicsTools/HeppyCore/python/utils/testtree.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range from ROOT import TFile from PhysicsTools.HeppyCore.statistics.tree import Tree diff --git a/PhysicsTools/HeppyCore/scripts/edmIntegrityCheck.py b/PhysicsTools/HeppyCore/scripts/edmIntegrityCheck.py index 28f7765cf5810..9d7c422cbd7b5 100755 --- a/PhysicsTools/HeppyCore/scripts/edmIntegrityCheck.py +++ b/PhysicsTools/HeppyCore/scripts/edmIntegrityCheck.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from PhysicsTools.HeppyCore.utils.edmIntegrityCheck import PublishToFileSystem, IntegrityCheck import das diff --git a/PhysicsTools/HeppyCore/scripts/heppy_batch.py b/PhysicsTools/HeppyCore/scripts/heppy_batch.py index 93c8dc51d0fac..1c65e9c8d90ee 100755 --- a/PhysicsTools/HeppyCore/scripts/heppy_batch.py +++ b/PhysicsTools/HeppyCore/scripts/heppy_batch.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import sys import imp diff --git a/PhysicsTools/HeppyCore/scripts/heppy_check.py b/PhysicsTools/HeppyCore/scripts/heppy_check.py index 66d4fad81a54f..6323b88ffc9f9 100755 --- a/PhysicsTools/HeppyCore/scripts/heppy_check.py +++ b/PhysicsTools/HeppyCore/scripts/heppy_check.py @@ -2,7 +2,6 @@ # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE -from __future__ import print_function import sys import re import os diff --git a/PhysicsTools/HeppyCore/scripts/heppy_hadd.py b/PhysicsTools/HeppyCore/scripts/heppy_hadd.py index faf2ef406f954..374a3c7658dfb 100755 --- a/PhysicsTools/HeppyCore/scripts/heppy_hadd.py +++ b/PhysicsTools/HeppyCore/scripts/heppy_hadd.py @@ -2,7 +2,6 @@ # Copyright (C) 2014 Colin Bernet # https://github.com/cbernet/heppy/blob/master/LICENSE -from __future__ import print_function import os import pprint import pickle diff --git a/PhysicsTools/IsolationAlgos/python/boostedElectronIsolation_cff.py b/PhysicsTools/IsolationAlgos/python/boostedElectronIsolation_cff.py index 29f9213419dfd..ef3616634400c 100644 --- a/PhysicsTools/IsolationAlgos/python/boostedElectronIsolation_cff.py +++ b/PhysicsTools/IsolationAlgos/python/boostedElectronIsolation_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from CommonTools.ParticleFlow.Isolation.pfElectronIsolation_cff import * diff --git a/PhysicsTools/IsolationAlgos/python/boostedMuonIsolation_cff.py b/PhysicsTools/IsolationAlgos/python/boostedMuonIsolation_cff.py index 46e6afee67b36..e2702ba5cec65 100644 --- a/PhysicsTools/IsolationAlgos/python/boostedMuonIsolation_cff.py +++ b/PhysicsTools/IsolationAlgos/python/boostedMuonIsolation_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from RecoMuon.MuonIsolation.muonPFIsolation_cff import * diff --git a/PhysicsTools/JetMCAlgos/test/testttHFGenFilter.py b/PhysicsTools/JetMCAlgos/test/testttHFGenFilter.py index 10b1083d78d2d..b1ba750949bd7 100644 --- a/PhysicsTools/JetMCAlgos/test/testttHFGenFilter.py +++ b/PhysicsTools/JetMCAlgos/test/testttHFGenFilter.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask diff --git a/PhysicsTools/NanoAOD/interface/SimpleFlatTableProducer.h b/PhysicsTools/NanoAOD/interface/SimpleFlatTableProducer.h index b93ace3c45387..edf00a8f8e18a 100644 --- a/PhysicsTools/NanoAOD/interface/SimpleFlatTableProducer.h +++ b/PhysicsTools/NanoAOD/interface/SimpleFlatTableProducer.h @@ -14,6 +14,7 @@ #include "CommonTools/Utils/interface/StringCutObjectSelector.h" #include "CommonTools/Utils/interface/StringObjectFunction.h" +#include "CommonTools/Utils/interface/TypedStringObjectMethodCaller.h" #include #include @@ -73,6 +74,55 @@ class FuncVariable : public Variable { StringFunctor precisionFunc_; }; +// Collection variables: i.e. variables that is variable-size collection, e.g. std::vector +template +class CollectionVariable : public VariableBase { +public: + CollectionVariable(const std::string &aname, const edm::ParameterSet &cfg) : VariableBase(aname, cfg) {} + virtual std::unique_ptr> getCounts(std::vector &selobjs) const = 0; + virtual void fill(std::vector &selobjs, nanoaod::FlatTable &out) const = 0; +}; + +template +class FuncCollectionVariable : public CollectionVariable { +public: + FuncCollectionVariable(const std::string &aname, const edm::ParameterSet &cfg) + : CollectionVariable(aname, cfg), + func_(cfg.getParameter("expr"), cfg.getUntrackedParameter("lazyEval")), + precisionFunc_(cfg.existsAs("precision") ? cfg.getParameter("precision") : "23", + cfg.getUntrackedParameter("lazyEval")) {} + ~FuncCollectionVariable() override {} + + std::unique_ptr> getCounts(std::vector &selobjs) const override { + auto counts = std::make_unique>(); + for (auto const &obj : selobjs) + counts->push_back(func_(*obj).size()); + return counts; + } + + void fill(std::vector &selobjs, nanoaod::FlatTable &out) const override { + std::vector vals; + for (unsigned int i = 0; i < selobjs.size(); ++i) { + for (ValType val : func_(*selobjs[i])) { + if constexpr (std::is_same()) { + if (this->precision_ == -2) { + auto prec = precisionFunc_(*selobjs[i]); + if (prec > 0) { + val = MiniFloatConverter::reduceMantissaToNbitsRounding(val, prec); + } + } + } + vals.push_back(val); + } + } + out.template addColumn(this->name_, vals, this->doc_, this->precision_); + } + +protected: + CollectionStringFunctor func_; // functor to get collection objects + PrecisionStringFunctor precisionFunc_; // functor to get output precision +}; + // External variables: i.e. variables that are not member or methods of the object template class ExtVariable : public VariableBase { @@ -486,6 +536,186 @@ class SimpleTypedExternalFlatTableProducer : public SimpleFlatTableProducer { typedef TypedValueMapVariable, uint16_t> UInt16TypedExtVar; }; +template +class SimpleCollectionFlatTableProducer : public SimpleFlatTableProducer { +public: + SimpleCollectionFlatTableProducer(edm::ParameterSet const ¶ms) : SimpleFlatTableProducer(params) { + if (params.existsAs("collectionVariables")) { + edm::ParameterSet const &collectionVarsPSet = params.getParameter("collectionVariables"); + for (const std::string &coltablename : + collectionVarsPSet.getParameterNamesForType()) { // tables of variables + const auto &coltablePSet = collectionVarsPSet.getParameter(coltablename); + CollectionVariableTableInfo coltable; + coltable.name = + coltablePSet.existsAs("name") ? coltablePSet.getParameter("name") : coltablename; + coltable.doc = coltablePSet.getParameter("doc"); + coltable.useCount = coltablePSet.getParameter("useCount"); + coltable.useOffset = coltablePSet.getParameter("useOffset"); + const auto &colvarsPSet = coltablePSet.getParameter("variables"); + for (const std::string &colvarname : colvarsPSet.getParameterNamesForType()) { // variables + const auto &colvarPSet = colvarsPSet.getParameter(colvarname); + const std::string &type = colvarPSet.getParameter("type"); + if (type == "int") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else if (type == "uint") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else if (type == "float") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else if (type == "double") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else if (type == "uint8") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else if (type == "int16") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else if (type == "uint16") + coltable.colvars.push_back(std::make_unique(colvarname, colvarPSet)); + else + throw cms::Exception("Configuration", + "unsupported type " + type + " for variable " + colvarname + " in " + coltablename); + } + this->coltables.push_back(std::move(coltable)); + edm::stream::EDProducer<>::produces(coltables.back().name + "Table"); + } + } + } + + ~SimpleCollectionFlatTableProducer() override {} + + static void fillDescriptions(edm::ConfigurationDescriptions &descriptions) { + edm::ParameterSetDescription desc = SimpleFlatTableProducer::baseDescriptions(); + edm::ParameterSetDescription colvariable; + colvariable.add("expr")->setComment( + "a function to define the content of the branch in the flat table"); + colvariable.add("doc")->setComment("few words of self documentation"); + colvariable.addUntracked("lazyEval", false) + ->setComment("if true, can use methods of inheriting classes in `expr`. Can cause problems with threading."); + colvariable.ifValue(edm::ParameterDescription( + "type", "int", true, edm::Comment("the c++ type of the branch in the flat table")), + edm::allowedValues("int", "uint", "float", "double", "uint8", "int16", "uint16")); + colvariable.addOptionalNode( + edm::ParameterDescription( + "precision", true, edm::Comment("the precision with which to store the value in the flat table")) xor + edm::ParameterDescription( + "precision", true, edm::Comment("the precision with which to store the value in the flat table")), + false); + edm::ParameterSetDescription colvariables; + colvariables.setComment("a parameters set to define all variable to fill the flat table"); + colvariables.addNode( + edm::ParameterWildcard("*", edm::RequireAtLeastOne, true, colvariable)); + + edm::ParameterSetDescription coltable; + coltable.addOptional("name")->setComment( + "name of the branch in the flat table containing flatten collections of variables"); + coltable.add("doc")->setComment( + "few words description of the table containing flatten collections of variables"); + coltable.add("useCount", true) + ->setComment("whether to use count for the main table to index table with flatten collections of variables"); + coltable.add("useOffset", false) + ->setComment("whether to use offset for the main table to index table with flatten collections of variables"); + coltable.add("variables", colvariables); + + edm::ParameterSetDescription coltables; + coltables.setComment("a parameters set to define variables to be flatten to fill the table"); + coltables.addOptionalNode( + edm::ParameterWildcard("*", edm::RequireZeroOrMore, true, coltable), false); + desc.addOptional("collectionVariables", coltables); + + descriptions.addWithDefaultLabel(desc); + } + + void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override { + // same as SimpleFlatTableProducer + edm::Handle> prod; + iEvent.getByToken(this->src_, prod); + + std::vector selobjs; + std::vector> selptrs; // for external variables + if (prod.isValid() || !(this->skipNonExistingSrc_)) { + if (this->singleton_) { + assert(prod->size() == 1); + selobjs.push_back(&(*prod)[0]); + if (!this->extvars_.empty() || !this->typedextvars_.empty()) + selptrs.emplace_back(prod->ptrAt(0)); + } else { + for (unsigned int i = 0, n = prod->size(); i < n; ++i) { + const auto &obj = (*prod)[i]; + if (this->cut_(obj)) { + selobjs.push_back(&obj); + if (!this->extvars_.empty() || !this->typedextvars_.empty()) + selptrs.emplace_back(prod->ptrAt(i)); + } + if (selobjs.size() >= this->maxLen_) + break; + } + } + } + + auto out = std::make_unique(selobjs.size(), this->name_, this->singleton_, this->extension_); + for (const auto &var : this->vars_) + var->fill(selobjs, *out); + for (const auto &var : this->extvars_) + var->fill(iEvent, selptrs, *out); + for (const auto &var : this->typedextvars_) + var->fill(iEvent, selptrs, *out); + + // collection variable tables + for (const auto &coltable : this->coltables) { + std::unique_ptr> counts = coltable.colvars[0]->getCounts(selobjs); + // compute size + unsigned int coltablesize = 0; + for (auto const &count : *counts) + coltablesize += count; + // add count branch if requested + if (coltable.useCount) + out->template addColumn("n" + coltable.name, *counts, "counts for " + coltable.name); + // add offset branch if requested + if (coltable.useOffset) { + unsigned int offset = 0; + std::vector offsets; + for (auto const &count : *counts) { + offsets.push_back(offset); + offset += count; + } + out->template addColumn("o" + coltable.name, offsets, "offsets for " + coltable.name); + } + + std::unique_ptr outcoltable = + std::make_unique(coltablesize, coltable.name, false, false); + for (const auto &colvar : coltable.colvars) { + colvar->fill(selobjs, *outcoltable); + } + outcoltable->setDoc(coltable.doc); + iEvent.put(std::move(outcoltable), coltable.name + "Table"); + } + + // put the main table into the event + out->setDoc(this->doc_); + iEvent.put(std::move(out)); + } + +protected: + template + using VectorVar = + FuncCollectionVariable>, StringObjectFunction, R>; + + using IntVectorVar = VectorVar; + using UIntVectorVar = VectorVar; + using FloatVectorVar = VectorVar; + using DoubleVectorVar = VectorVar; + using UInt8VectorVar = VectorVar; + using Int16VectorVar = VectorVar; + using UInt16VectorVar = VectorVar; + + struct CollectionVariableTableInfo { + std::string name; + std::string doc; + bool useCount; + bool useOffset; + std::vector>> colvars; + }; + std::vector coltables; +}; + template class BXVectorSimpleFlatTableProducer : public SimpleFlatTableProducerBase> { public: diff --git a/PhysicsTools/NanoAOD/plugins/SimpleFlatTableProducerPlugins.cc b/PhysicsTools/NanoAOD/plugins/SimpleFlatTableProducerPlugins.cc index c3c3b1e769575..aa12667124e13 100644 --- a/PhysicsTools/NanoAOD/plugins/SimpleFlatTableProducerPlugins.cc +++ b/PhysicsTools/NanoAOD/plugins/SimpleFlatTableProducerPlugins.cc @@ -3,6 +3,8 @@ #include "DataFormats/Candidate/interface/Candidate.h" typedef SimpleFlatTableProducer SimpleCandidateFlatTableProducer; +typedef SimpleCollectionFlatTableProducer SimpleCandidateCollectionFlatTableProducer; + #include "DataFormats/TrackReco/interface/Track.h" typedef SimpleFlatTableProducer SimpleTrackFlatTableProducer; @@ -50,6 +52,7 @@ typedef EventSingletonSimpleFlatTableProducer SimpleBeamspotFlat #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(SimpleCandidateFlatTableProducer); +DEFINE_FWK_MODULE(SimpleCandidateCollectionFlatTableProducer); DEFINE_FWK_MODULE(SimpleTrackFlatTableProducer); DEFINE_FWK_MODULE(SimpleSuperclusterFlatTableProducer); DEFINE_FWK_MODULE(SimplePFJetFlatTableProducer); diff --git a/PhysicsTools/NanoAOD/plugins/TauSpinnerTableProducer.cc b/PhysicsTools/NanoAOD/plugins/TauSpinnerTableProducer.cc index bdca5918478fc..d92c19e6a6d15 100644 --- a/PhysicsTools/NanoAOD/plugins/TauSpinnerTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/TauSpinnerTableProducer.cc @@ -60,10 +60,10 @@ class TauSpinnerTableProducer : public edm::one::EDProducer 15"), + cut = cms.string("pt > 10"), name= cms.string("GenDressedLepton"), doc = cms.string("Dressed leptons from Rivet-based ParticleLevelProducer"), externalVariables = cms.PSet( diff --git a/PhysicsTools/NanoAOD/python/photons_cff.py b/PhysicsTools/NanoAOD/python/photons_cff.py index ca6dc18e1307a..dace9e46ad192 100644 --- a/PhysicsTools/NanoAOD/python/photons_cff.py +++ b/PhysicsTools/NanoAOD/python/photons_cff.py @@ -221,12 +221,12 @@ def make_bitmapVID_docstring(id_modules_working_points_pset): ecalPFClusterIso = Var("ecalPFClusterIso()",float,doc="sum pt of ecal clusters, vetoing clusters part of photon", precision=10), hcalPFClusterIso = Var("hcalPFClusterIso()",float,doc="sum pt of hcal clusters, vetoing clusters part of photon", precision=10), pfPhoIso03 = Var("photonIso()",float,doc="PF absolute isolation dR=0.3, photon component (uncorrected)"), - pfChargedIso = Var("chargedHadronIso()",float,doc="PF absolute isolation dR=0.3, charged component with dxy,dz match to PV", precision=8), + pfChargedIso = Var("chargedHadronIso()",float,doc="PF absolute isolation dR=0.3, charged component with dxy,dz match to PV", precision=10), pfChargedIsoPFPV = Var("chargedHadronPFPVIso()",float,doc="PF absolute isolation dR=0.3, charged component (PF PV only)"), pfChargedIsoWorstVtx = Var("chargedHadronWorstVtxIso()",float,doc="PF absolute isolation dR=0.3, charged component (Vertex with largest isolation)"), pfRelIso03_chg_quadratic = Var("userFloat('PFIsoChgQuadratic')/pt",float,doc="PF relative isolation dR=0.3, charged hadron component (with quadraticEA*rho*rho + linearEA*rho Winter22V1 corrections)"), pfRelIso03_all_quadratic = Var("userFloat('PFIsoAllQuadratic')/pt",float,doc="PF relative isolation dR=0.3, total (with quadraticEA*rho*rho + linearEA*rho Winter22V1 corrections)"), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), + hoe = Var("hadronicOverEm()",float,doc="H over E",precision=10), hoe_Tower = Var("hadTowOverEm()",float,doc="H over E Tower based calculation",precision=8), hoe_PUcorr = Var("userFloat('HoverEQuadratic')",float,doc="PU corrected H/E (cone-based with quadraticEA*rho*rho + linearEA*rho Winter22V1 corrections)",precision=8), isScEtaEB = Var("abs(superCluster().eta()) < 1.4442",bool,doc="is supercluster eta within barrel acceptance"), diff --git a/PhysicsTools/NanoAOD/python/run3scouting_cff.py b/PhysicsTools/NanoAOD/python/run3scouting_cff.py index a95fec516b433..3c18e3056f00a 100644 --- a/PhysicsTools/NanoAOD/python/run3scouting_cff.py +++ b/PhysicsTools/NanoAOD/python/run3scouting_cff.py @@ -2,217 +2,296 @@ from PhysicsTools.NanoAOD.common_cff import * from PhysicsTools.NanoAOD.simpleCandidateFlatTableProducer_cfi import simpleCandidateFlatTableProducer -################ -# Scouting photons, electrons, muons, tracks, primary vertices, displaced vertices, jets (clustered at HLT), rho and MET - -photonScoutingTable = cms.EDProducer("SimpleRun3ScoutingPhotonFlatTableProducer", - src = cms.InputTag("hltScoutingEgammaPacker"), - cut = cms.string(""), - name = cms.string("ScoutingPhoton"), - doc = cms.string("Photon scouting information"), - singleton = cms.bool(False), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var('pt', 'float', precision=10, doc='super-cluster (SC) pt'), - eta = Var('eta', 'float', precision=10, doc='SC eta'), - phi = Var('phi', 'float', precision=10, doc='SC phi'), - m = Var('m', 'float', precision=10, doc='SC mass'), - sigmaIetaIeta = Var('sigmaIetaIeta', 'float', precision=10, doc='sigmaIetaIeta of the SC, calculated with full 5x5 region, noise cleaned'), - hOverE = Var('hOverE', 'float', precision=10, doc='Energy in HCAL / Energy in ECAL'), - ecalIso = Var('ecalIso', 'float', precision=10, doc='Isolation of SC in the ECAL'), - hcalIso = Var('hcalIso', 'float', precision=10, doc='Isolation of SC in the HCAL'), - r9 = Var('r9', 'float', precision=10, doc='Photon SC r9 as defined in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideEgammaShowerShape'), - sMin = Var('sMin', 'float', precision=10, doc='minor moment of the SC shower shape'), - sMaj = Var('sMaj', 'float', precision=10, doc='major moment of the SC shower shape'), - seedId = Var('seedId', 'int', doc='ECAL ID of the SC seed'), - ) +##################################### +##### Scouting Original Objects ##### +##################################### +# objects directly from Run3Scouting* formats + +# Scouting Muon +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingMuon.h + +scoutingMuonTable = cms.EDProducer("SimpleRun3ScoutingMuonFlatTableProducer", + src = cms.InputTag("hltScoutingMuonPacker"), + cut = cms.string(""), + name = cms.string("ScoutingMuon"), + doc = cms.string("Scouting Muon"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + pt = Var('pt', 'float', precision=10, doc='pt'), + eta = Var('eta', 'float', precision=10, doc='eta'), + phi = Var('phi', 'float', precision=10, doc='phi'), + m = Var('m', 'float', precision=10, doc='mass'), + type = Var('type', 'int', doc='type of muon'), + charge = Var('charge', 'int', doc='track charge'), + normchi2 = Var('normalizedChi2', 'float', precision=10, doc='normalized chi squared'), + ecalIso = Var('ecalIso', 'float', precision=10, doc='PF ECAL isolation'), + hcalIso = Var('hcalIso', 'float', precision=10, doc='PF HCAL isolation'), + trackIso = Var('trackIso', 'float', precision=10, doc='track isolation'), + nValidStandAloneMuonHits = Var('nValidStandAloneMuonHits', 'int', doc='number of valid standalone muon hits'), + nStandAloneMuonMatchedStations = Var('nStandAloneMuonMatchedStations', 'int', doc='number of muon stations with valid hits'), + nValidRecoMuonHits = Var('nValidRecoMuonHits', 'int', doc='number of valid reco muon hits'), + nRecoMuonChambers = Var('nRecoMuonChambers', 'int', doc='number of reco muon chambers'), + nRecoMuonChambersCSCorDT = Var('nRecoMuonChambersCSCorDT', 'int', doc='number of reco muon chambers CSC or DT'), + nRecoMuonMatches = Var('nRecoMuonMatches', 'int', doc='number of reco muon matches'), + nRecoMuonMatchedStations = Var('nRecoMuonMatchedStations', 'int', doc='number of reco muon matched stations'), + nRecoMuonExpectedMatchedStations = Var('nRecoMuonExpectedMatchedStations', 'int', doc='number of reco muon expected matched stations'), + recoMuonStationMask = Var('recoMuonStationMask', 'int', doc='reco muon station mask'), + nRecoMuonMatchedRPCLayers = Var('nRecoMuonMatchedRPCLayers', 'int', doc='number of reco muon matched RPC layers'), + recoMuonRPClayerMask = Var('recoMuonRPClayerMask', 'int', doc='reco muon RPC layer mask'), + nValidPixelHits = Var('nValidPixelHits', 'int', doc='number of valid pixel hits'), + nValidStripHits = Var('nValidStripHits', 'int', doc='number of valid strip hits'), + nPixelLayersWithMeasurement = Var('nPixelLayersWithMeasurement', 'int', doc='number of pixel layers with measurement'), + nTrackerLayersWithMeasurement = Var('nTrackerLayersWithMeasurement', 'int', doc='number of tracker layer with measurements'), + trk_chi2 = Var('trk_chi2', 'float', precision=10, doc='track chi squared'), + trk_ndof = Var('trk_ndof', 'float', precision=10, doc='track number of degrees of freedom'), + trk_dxy = Var('trk_dxy', 'float', precision=10, doc='track dxy'), + trk_dz = Var('trk_dz', 'float', precision=10, doc='track dz'), + trk_qoverp = Var('trk_qoverp', 'float', precision=10, doc='track qoverp'), + trk_lambda = Var('trk_lambda', 'float', precision=10, doc='track lambda'), + trk_pt = Var('trk_pt', 'float', precision=10, doc='track pt'), + trk_phi = Var('trk_phi', 'float', precision=10, doc='track phi'), + trk_eta = Var('trk_eta', 'float', precision=10, doc='track eta'), + trk_dxyError = Var('trk_dxyError', 'float', precision=10, doc='track dxyError'), + trk_dzError = Var('trk_dzError', 'float', precision=10, doc='tracl dzError'), + trk_qoverpError = Var('trk_qoverpError', 'float', precision=10, doc='track qoverpError'), + trk_lambdaError = Var('trk_lambdaError', 'float', precision=10, doc='track lambdaError'), + trk_phiError = Var('trk_phiError', 'float', precision=10, doc='track phiError'), + trk_dsz = Var('trk_dsz', 'float', precision=10, doc='track dsz'), + trk_dszError = Var('trk_dszError', 'float', precision=10, doc='track dszError'), + trk_qoverp_lambda_cov = Var('trk_qoverp_lambda_cov', 'float', precision=10, doc='track qoverp lambda covariance ((0,1) element of covariance matrix)'), + trk_qoverp_phi_cov = Var('trk_qoverp_phi_cov', 'float', precision=10, doc='track qoverp phi covariance ((0,2) element of covariance matrix)'), + trk_qoverp_dxy_cov = Var('trk_qoverp_dxy_cov', 'float', precision=10, doc='track qoverp dxy covariance ((0,3) element of covariance matrix)'), + trk_qoverp_dsz_cov = Var('trk_qoverp_dsz_cov', 'float', precision=10, doc='track qoverp dsz covariance ((0,4) element of covariance matrix)'), + trk_lambda_phi_cov = Var('trk_lambda_phi_cov', 'float', precision=10, doc='track lambda phi covariance ((1,2) element of covariance matrix)'), + trk_lambda_dxy_cov = Var('trk_lambda_dxy_cov', 'float', precision=10, doc='track lambda dxy covariance ((1,3) element of covariance matrix)'), + trk_lambda_dsz_cov = Var('trk_lambda_dsz_cov', 'float', precision=10, doc='track lambda dsz covariance ((1,4) element of covariance matrix)'), + trk_phi_dxy_cov = Var('trk_phi_dxy_cov', 'float', precision=10, doc='track phi dxy covariance ((2,3) element of covariance matrix)'), + trk_phi_dsz_cov = Var('trk_phi_dsz_cov', 'float', precision=10, doc='track phi dsz covariance ((2,4) element of covariance matrix)'), + trk_dxy_dsz_cov = Var('trk_dxy_dsz_cov', 'float', precision=10, doc='track dxy dsz covariance ((3,4) element of covariance matrix)'), + trk_vx = Var('trk_vx', 'float', precision=10, doc='track vx'), + trk_vy = Var('trk_vy', 'float', precision=10, doc='track vy'), + trk_vz = Var('trk_vz', 'float', precision=10, doc='track vz'), + ), ) -electronScoutingTable = cms.EDProducer("SimpleRun3ScoutingElectronFlatTableProducer", - src = cms.InputTag("hltScoutingEgammaPacker"), - cut = cms.string(""), - name = cms.string("ScoutingElectron"), - doc = cms.string("Electron scouting information"), - singleton = cms.bool(False), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var('pt', 'float', precision=10, doc='super-cluster (SC) pt'), - eta = Var('eta', 'float', precision=10, doc='SC eta'), - phi = Var('phi', 'float', precision=10, doc='SC phi'), - m = Var('m', 'float', precision=10, doc='SC mass'), - dEtaIn = Var('dEtaIn', 'float', precision=10, doc='#Delta#eta(SC seed, track pixel seed)'), - dPhiIn = Var('dPhiIn', 'float', precision=10, doc='#Delta#phi(SC seed, track pixel seed)'), - sigmaIetaIeta = Var('sigmaIetaIeta', 'float', precision=10, doc='sigmaIetaIeta of the SC, calculated with full 5x5 region, noise cleaned'), - hOverE = Var('hOverE', 'float', precision=10, doc='Energy in HCAL / Energy in ECAL'), - ooEMOop = Var('ooEMOop', 'float', precision=10, doc='1/E(SC) - 1/p(track momentum)'), - missingHits = Var('missingHits', 'int', doc='missing hits in the tracker'), - ecalIso = Var('ecalIso', 'float', precision=10, doc='Isolation of SC in the ECAL'), - hcalIso = Var('hcalIso', 'float', precision=10, doc='Isolation of SC in the HCAL'), - trackIso = Var('trackIso', 'float', precision=10, doc='Isolation of electron track in the tracker'), - r9 = Var('r9', 'float', precision=10, doc='ELectron SC r9 as defined in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideEgammaShowerShape'), - sMin = Var('sMin', 'float', precision=10, doc='minor moment of the SC shower shape'), - sMaj = Var('sMaj', 'float', precision=10, doc='major moment of the SC shower shape'), - seedId = Var('seedId', 'int', doc='ECAL ID of the SC seed'), - ) +# Scouting Displaced Vertex (Muon) +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingVertex.h + +scoutingMuonDisplacedVertexTable = cms.EDProducer("SimpleRun3ScoutingVertexFlatTableProducer", + src = cms.InputTag("hltScoutingMuonPacker","displacedVtx"), + cut = cms.string(""), + name = cms.string("ScoutingMuonDisplacedVertex"), + doc = cms.string("Scouting Muon Displaced Vertex"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + x = Var('x', 'float', precision=10, doc='position x coordinate'), + y = Var('y', 'float', precision=10, doc='position y coordinate'), + z = Var('z', 'float', precision=10, doc='position z coordinate'), + xError = Var('xError', 'float', precision=10, doc='x error'), + yError = Var('yError', 'float', precision=10, doc='y error'), + zError = Var('zError', 'float', precision=10, doc='z error'), + tracksSize = Var('tracksSize', 'int', doc='number of tracks'), + chi2 = Var('chi2', 'float', precision=10, doc='chi squared'), + ndof = Var('ndof', 'int', doc='number of degrees of freedom'), + isValidVtx = Var('isValidVtx', 'bool', doc='is valid'), + ), ) -muonScoutingTable = cms.EDProducer("SimpleRun3ScoutingMuonFlatTableProducer", - src = cms.InputTag("hltScoutingMuonPacker"), - cut = cms.string(""), - name = cms.string("ScoutingMuon"), - doc = cms.string("Muon scouting information"), - singleton = cms.bool(False), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var('pt', 'float', precision=10, doc='pt'), - eta = Var('eta', 'float', precision=10, doc='eta'), - phi = Var('phi', 'float', precision=10, doc='phi'), - m = Var('m', 'float', precision=10, doc='mass'), - type = Var('type', 'int', doc='type of muon'), - charge = Var('charge', 'int', doc='track charge'), - normchi2 = Var('normalizedChi2', 'float', precision=10, doc='normalized chi squared'), - ecalIso = Var('ecalIso', 'float', precision=10, doc='PF ECAL isolation'), - hcalIso = Var('hcalIso', 'float', precision=10, doc='PF HCAL isolation'), - trackIso = Var('trackIso', 'float', precision=10, doc='track isolation'), - nValidStandAloneMuonHits = Var('nValidStandAloneMuonHits', 'int', doc='number of valid standalone muon hits'), - nStandAloneMuonMatchedStations = Var('nStandAloneMuonMatchedStations', 'int', doc='number of muon stations with valid hits'), - nValidRecoMuonHits = Var('nValidRecoMuonHits', 'int', doc='number of valid reco muon hits'), - nRecoMuonChambers = Var('nRecoMuonChambers', 'int', doc='number of reco muon chambers'), - nRecoMuonChambersCSCorDT = Var('nRecoMuonChambersCSCorDT', 'int', doc='number of reco muon chambers CSC or DT'), - nRecoMuonMatches = Var('nRecoMuonMatches', 'int', doc='number of reco muon matches'), - nRecoMuonMatchedStations = Var('nRecoMuonMatchedStations', 'int', doc='number of reco muon matched stations'), - nRecoMuonExpectedMatchedStations = Var('nRecoMuonExpectedMatchedStations', 'int', doc='number of reco muon expected matched stations'), - recoMuonStationMask = Var('recoMuonStationMask', 'int', doc='reco muon station mask'), - nRecoMuonMatchedRPCLayers = Var('nRecoMuonMatchedRPCLayers', 'int', doc='number of reco muon matched RPC layers'), - recoMuonRPClayerMask = Var('recoMuonRPClayerMask', 'int', doc='reco muon RPC layer mask'), - nValidPixelHits = Var('nValidPixelHits', 'int', doc='number of valid pixel hits'), - nValidStripHits = Var('nValidStripHits', 'int', doc='number of valid strip hits'), - nPixelLayersWithMeasurement = Var('nPixelLayersWithMeasurement', 'int', doc='number of pixel layers with measurement'), - nTrackerLayersWithMeasurement = Var('nTrackerLayersWithMeasurement', 'int', doc='number of tracker layer with measurements'), - trk_chi2 = Var('trk_chi2', 'float', precision=10, doc='track chi squared'), - trk_ndof = Var('trk_ndof', 'float', precision=10, doc='track number of degrees of freedom'), - trk_dxy = Var('trk_dxy', 'float', precision=10, doc='track dxy'), - trk_dz = Var('trk_dz', 'float', precision=10, doc='track dz'), - trk_qoverp = Var('trk_qoverp', 'float', precision=10, doc='track qoverp'), - trk_lambda = Var('trk_lambda', 'float', precision=10, doc='track lambda'), - trk_pt = Var('trk_pt', 'float', precision=10, doc='track pt'), - trk_phi = Var('trk_phi', 'float', precision=10, doc='track phi'), - trk_eta = Var('trk_eta', 'float', precision=10, doc='track eta'), - trk_dxyError = Var('trk_dxyError', 'float', precision=10, doc='track dxyError'), - trk_dzError = Var('trk_dzError', 'float', precision=10, doc='tracl dzError'), - trk_qoverpError = Var('trk_qoverpError', 'float', precision=10, doc='track qoverpError'), - trk_lambdaError = Var('trk_lambdaError', 'float', precision=10, doc='track lambdaError'), - trk_phiError = Var('trk_phiError', 'float', precision=10, doc='track phiError'), - trk_dsz = Var('trk_dsz', 'float', precision=10, doc='track dsz'), - trk_dszError = Var('trk_dszError', 'float', precision=10, doc='track dszError'), - trk_qoverp_lambda_cov = Var('trk_qoverp_lambda_cov', 'float', precision=10, doc='track qoverp lambda covariance ((0,1) element of covariance matrix)'), - trk_qoverp_phi_cov = Var('trk_qoverp_phi_cov', 'float', precision=10, doc='track qoverp phi covariance ((0,2) element of covariance matrix)'), - trk_qoverp_dxy_cov = Var('trk_qoverp_dxy_cov', 'float', precision=10, doc='track qoverp dxy covariance ((0,3) element of covariance matrix)'), - trk_qoverp_dsz_cov = Var('trk_qoverp_dsz_cov', 'float', precision=10, doc='track qoverp dsz covariance ((0,4) element of covariance matrix)'), - trk_lambda_phi_cov = Var('trk_lambda_phi_cov', 'float', precision=10, doc='track lambda phi covariance ((1,2) element of covariance matrix)'), - trk_lambda_dxy_cov = Var('trk_lambda_dxy_cov', 'float', precision=10, doc='track lambda dxy covariance ((1,3) element of covariance matrix)'), - trk_lambda_dsz_cov = Var('trk_lambda_dsz_cov', 'float', precision=10, doc='track lambda dsz covariance ((1,4) element of covariance matrix)'), - trk_phi_dxy_cov = Var('trk_phi_dxy_cov', 'float', precision=10, doc='track phi dxy covariance ((2,3) element of covariance matrix)'), - trk_phi_dsz_cov = Var('trk_phi_dsz_cov', 'float', precision=10, doc='track phi dsz covariance ((2,4) element of covariance matrix)'), - trk_dxy_dsz_cov = Var('trk_dxy_dsz_cov', 'float', precision=10, doc='track dxy dsz covariance ((3,4) element of covariance matrix)'), - trk_vx = Var('trk_vx', 'float', precision=10, doc='track vx'), - trk_vy = Var('trk_vy', 'float', precision=10, doc='track vy'), - trk_vz = Var('trk_vz', 'float', precision=10, doc='track vz'), - ) + +# from 2024, there are two scouting muon collections + +# muonVtx +scoutingMuonVtxTable = scoutingMuonTable.clone( + src = cms.InputTag("hltScoutingMuonPackerVtx"), + name = cms.string("ScoutingMuonVtx"), + doc = cms.string("Scouting Muon Vtx"), +) +scoutingMuonVtxDisplacedVertexTable = scoutingMuonDisplacedVertexTable.clone( + src = cms.InputTag("hltScoutingMuonPackerVtx", "displacedVtx"), + name = cms.string("ScoutingMuonVtxDisplacedVertex"), + doc = cms.string("Scouting Muon Vtx DisplacedVertex"), ) -trackScoutingTable = cms.EDProducer("SimpleRun3ScoutingTrackFlatTableProducer", - src = cms.InputTag("hltScoutingTrackPacker"), - cut = cms.string(""), - name = cms.string("ScoutingTrack"), - doc = cms.string("Track scouting information"), - singleton = cms.bool(False), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var('tk_pt', 'float', precision=10, doc='pt'), - eta = Var('tk_eta', 'float', precision=10, doc='eta'), - phi = Var('tk_phi', 'float', precision=10, doc='phi'), - chi2 = Var('tk_chi2', 'float', precision=10, doc='chi squared'), - ndof = Var('tk_ndof', 'float', precision=10, doc='number of degrees of freedom'), - charge = Var('tk_charge', 'int', doc='charge'), - dxy = Var('tk_dxy', 'float', precision=10, doc='dxy'), - dz = Var('tk_dz', 'float', precision=10, doc='dz'), - nValidPixelHits = Var('tk_nValidPixelHits', 'int', doc='number of valid pixel hits'), - nValidStripHits = Var('tk_nValidStripHits', 'int', doc='number of valid strip hits'), - nTrackerLayersWithMeasurement = Var('tk_nTrackerLayersWithMeasurement', 'int', doc='number of tracker layers with measurements'), - qoverp = Var('tk_qoverp', 'float', precision=10, doc='qoverp'), - lambda_ = Var('tk_lambda', 'float', precision=10, doc='lambda'), - dxyError = Var('tk_dxy_Error', 'float', precision=10, doc='dxyError'), - dzError = Var('tk_dz_Error', 'float', precision=10, doc='dzError'), - qoverpError = Var('tk_qoverp_Error', 'float', precision=10, doc='qoverpError'), - lambdaError = Var('tk_lambda_Error', 'float', precision=10, doc='lambdaError'), - phiError = Var('tk_phi_Error', 'float', precision=10, doc='phiError'), - dsz = Var('tk_dsz', 'float', precision=10, doc='dsz'), - dszError = Var('tk_dsz_Error', 'float', precision=10, doc='dszError'), - qoverp_lambda_cov = Var('tk_qoverp_lambda_cov', 'float', precision=10, doc='qoverp lambda covariance ((0,1) element of covariance matrix)'), - qoverp_phi_cov = Var('tk_qoverp_phi_cov', 'float', precision=10, doc='qoverp phi covariance ((0,2) element of covariance matrix)'), - qoverp_dxy_cov = Var('tk_qoverp_dxy_cov', 'float', precision=10, doc='qoverp dxy covariance ((0,3) element of covariance matrix)'), - qoverp_dsz_cov = Var('tk_qoverp_dsz_cov', 'float', precision=10, doc='qoverp dsz covariance ((0,4) element of covariance matrix)'), - lambda_phi_cov = Var('tk_lambda_phi_cov', 'float', precision=10, doc='lambda phi covariance ((1,2) element of covariance matrix)'), - lambda_dxy_cov = Var('tk_lambda_dxy_cov', 'float', precision=10, doc='lambda dxy covariance ((1,3) element of covariance matrix)'), - lambda_dsz_cov = Var('tk_lambda_dsz_cov', 'float', precision=10, doc='lambd dsz covariance ((1,4) element of covariance matrix)'), - phi_dxy_cov = Var('tk_phi_dxy_cov', 'float', precision=10, doc='phi dxy covariance ((2,3) element of covariance matrix)'), - phi_dsz_cov = Var('tk_phi_dsz_cov', 'float', precision=10, doc='phi dsz covariance ((2,4) element of covariance matrix)'), - dxy_dsz_cov = Var('tk_dxy_dsz_cov', 'float', precision=10, doc='dxy dsz covariance ((3,4) element of covariance matrix)'), - vtxInd = Var('tk_vtxInd', 'int', doc='vertex index'), - vx = Var('tk_vx', 'float', precision=10, doc='vx'), - vy = Var('tk_vy', 'float', precision=10, doc='vy'), - vz = Var('tk_vz', 'float', precision=10, doc='vz'), - ) +# muonNoVtx +scoutingMuonNoVtxTable = scoutingMuonTable.clone( + src = cms.InputTag("hltScoutingMuonPackerNoVtx"), + name = cms.string("ScoutingMuonNoVtx"), + doc = cms.string("Scouting Muon NoVtx"), +) +scoutingMuonNoVtxDisplacedVertexTable = scoutingMuonDisplacedVertexTable.clone( + src = cms.InputTag("hltScoutingMuonPackerNoVtx", "displacedVtx"), + name = cms.string("ScoutingMuonNoVtxDisplacedVertex"), + doc = cms.string("Scouting Muon NoVtx DisplacedVertex"), ) -primaryvertexScoutingTable = cms.EDProducer("SimpleRun3ScoutingVertexFlatTableProducer", - src = cms.InputTag("hltScoutingPrimaryVertexPacker", "primaryVtx"), - cut = cms.string(""), - name = cms.string("ScoutingPrimaryVertex"), - doc = cms.string("PrimaryVertex scouting information"), - singleton = cms.bool(False), - extension = cms.bool(False), - variables = cms.PSet( - x = Var('x', 'float', precision=10, doc='position x coordinate'), - y = Var('y', 'float', precision=10, doc='position y coordinate'), - z = Var('z', 'float', precision=10, doc='position z coordinate'), - xError = Var('xError', 'float', precision=10, doc='x error'), - yError = Var('yError', 'float', precision=10, doc='y error'), - zError = Var('zError', 'float', precision=10, doc='z error'), - tracksSize = Var('tracksSize', 'int', doc='number of tracks'), - chi2 = Var('chi2', 'float', precision=10, doc='chi squared'), - ndof = Var('ndof', 'int', doc='number of degrees of freedom'), - isValidVtx = Var('isValidVtx', 'bool', doc='is valid'), - ) +# Scouting Electron +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingElectron.h + +scoutingElectronTable = cms.EDProducer("SimpleRun3ScoutingElectronFlatTableProducer", + src = cms.InputTag("hltScoutingEgammaPacker"), + cut = cms.string(""), + name = cms.string("ScoutingElectron"), + doc = cms.string("Scouting Electron"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + pt = Var('pt', 'float', precision=10, doc='super-cluster (SC) pt'), + eta = Var('eta', 'float', precision=10, doc='SC eta'), + phi = Var('phi', 'float', precision=10, doc='SC phi'), + m = Var('m', 'float', precision=10, doc='SC mass'), + dEtaIn = Var('dEtaIn', 'float', precision=10, doc='#Delta#eta(SC seed, track pixel seed)'), + dPhiIn = Var('dPhiIn', 'float', precision=10, doc='#Delta#phi(SC seed, track pixel seed)'), + sigmaIetaIeta = Var('sigmaIetaIeta', 'float', precision=10, doc='sigmaIetaIeta of the SC, calculated with full 5x5 region, noise cleaned'), + hOverE = Var('hOverE', 'float', precision=10, doc='Energy in HCAL / Energy in ECAL'), + ooEMOop = Var('ooEMOop', 'float', precision=10, doc='1/E(SC) - 1/p(track momentum)'), + missingHits = Var('missingHits', 'int', doc='missing hits in the tracker'), + ecalIso = Var('ecalIso', 'float', precision=10, doc='Isolation of SC in the ECAL'), + hcalIso = Var('hcalIso', 'float', precision=10, doc='Isolation of SC in the HCAL'), + trackIso = Var('trackIso', 'float', precision=10, doc='Isolation of electron track in the tracker'), + r9 = Var('r9', 'float', precision=10, doc='ELectron SC r9 as defined in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideEgammaShowerShape'), + sMin = Var('sMin', 'float', precision=10, doc='minor moment of the SC shower shape'), + sMaj = Var('sMaj', 'float', precision=10, doc='major moment of the SC shower shape'), + seedId = Var('seedId', 'int', doc='ECAL ID of the SC seed'), + ), ) -displacedvertexScoutingTable = cms.EDProducer("SimpleRun3ScoutingVertexFlatTableProducer", - src = cms.InputTag("hltScoutingMuonPacker","displacedVtx"), - cut = cms.string(""), - name = cms.string("ScoutingDisplacedVertex"), - doc = cms.string("DisplacedVertex scouting information"), - singleton = cms.bool(False), - extension = cms.bool(False), - variables = cms.PSet( - x = Var('x', 'float', precision=10, doc='position x coordinate'), - y = Var('y', 'float', precision=10, doc='position y coordinate'), - z = Var('z', 'float', precision=10, doc='position z coordinate'), - xError = Var('xError', 'float', precision=10, doc='x error'), - yError = Var('yError', 'float', precision=10, doc='y error'), - zError = Var('zError', 'float', precision=10, doc='z error'), - tracksSize = Var('tracksSize', 'int', doc='number of tracks'), - chi2 = Var('chi2', 'float', precision=10, doc='chi squared'), - ndof = Var('ndof', 'int', doc='number of degrees of freedom'), - isValidVtx = Var('isValidVtx', 'bool', doc='is valid'), - ) +# Scouting Photon +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingPhoton.h + +scoutingPhotonTable = cms.EDProducer("SimpleRun3ScoutingPhotonFlatTableProducer", + src = cms.InputTag("hltScoutingEgammaPacker"), + cut = cms.string(""), + name = cms.string("ScoutingPhoton"), + doc = cms.string("Scouting Photon"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + pt = Var('pt', 'float', precision=10, doc='super-cluster (SC) pt'), + eta = Var('eta', 'float', precision=10, doc='SC eta'), + phi = Var('phi', 'float', precision=10, doc='SC phi'), + m = Var('m', 'float', precision=10, doc='SC mass'), + sigmaIetaIeta = Var('sigmaIetaIeta', 'float', precision=10, doc='sigmaIetaIeta of the SC, calculated with full 5x5 region, noise cleaned'), + hOverE = Var('hOverE', 'float', precision=10, doc='Energy in HCAL / Energy in ECAL'), + ecalIso = Var('ecalIso', 'float', precision=10, doc='Isolation of SC in the ECAL'), + hcalIso = Var('hcalIso', 'float', precision=10, doc='Isolation of SC in the HCAL'), + trkIso = Var('trkIso', 'float', precision=10, doc='Isolation of track in the tracker'), + r9 = Var('r9', 'float', precision=10, doc='Photon SC r9 as defined in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideEgammaShowerShape'), + sMin = Var('sMin', 'float', precision=10, doc='minor moment of the SC shower shape'), + sMaj = Var('sMaj', 'float', precision=10, doc='major moment of the SC shower shape'), + seedId = Var('seedId', 'int', doc='ECAL ID of the SC seed'), + ), +) + +# Scouting Track +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingTrack.h + +scoutingTrackTable = cms.EDProducer("SimpleRun3ScoutingTrackFlatTableProducer", + src = cms.InputTag("hltScoutingTrackPacker"), + cut = cms.string(""), + name = cms.string("ScoutingTrack"), + doc = cms.string("Scouting Track"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + pt = Var('tk_pt', 'float', precision=10, doc='pt'), + eta = Var('tk_eta', 'float', precision=10, doc='eta'), + phi = Var('tk_phi', 'float', precision=10, doc='phi'), + chi2 = Var('tk_chi2', 'float', precision=10, doc='chi squared'), + ndof = Var('tk_ndof', 'float', precision=10, doc='number of degrees of freedom'), + charge = Var('tk_charge', 'int', doc='charge'), + dxy = Var('tk_dxy', 'float', precision=10, doc='dxy'), + dz = Var('tk_dz', 'float', precision=10, doc='dz'), + nValidPixelHits = Var('tk_nValidPixelHits', 'int', doc='number of valid pixel hits'), + nValidStripHits = Var('tk_nValidStripHits', 'int', doc='number of valid strip hits'), + nTrackerLayersWithMeasurement = Var('tk_nTrackerLayersWithMeasurement', 'int', doc='number of tracker layers with measurements'), + qoverp = Var('tk_qoverp', 'float', precision=10, doc='qoverp'), + lambda_ = Var('tk_lambda', 'float', precision=10, doc='lambda'), + dxyError = Var('tk_dxy_Error', 'float', precision=10, doc='dxyError'), + dzError = Var('tk_dz_Error', 'float', precision=10, doc='dzError'), + qoverpError = Var('tk_qoverp_Error', 'float', precision=10, doc='qoverpError'), + lambdaError = Var('tk_lambda_Error', 'float', precision=10, doc='lambdaError'), + phiError = Var('tk_phi_Error', 'float', precision=10, doc='phiError'), + dsz = Var('tk_dsz', 'float', precision=10, doc='dsz'), + dszError = Var('tk_dsz_Error', 'float', precision=10, doc='dszError'), + qoverp_lambda_cov = Var('tk_qoverp_lambda_cov', 'float', precision=10, doc='qoverp lambda covariance ((0,1) element of covariance matrix)'), + qoverp_phi_cov = Var('tk_qoverp_phi_cov', 'float', precision=10, doc='qoverp phi covariance ((0,2) element of covariance matrix)'), + qoverp_dxy_cov = Var('tk_qoverp_dxy_cov', 'float', precision=10, doc='qoverp dxy covariance ((0,3) element of covariance matrix)'), + qoverp_dsz_cov = Var('tk_qoverp_dsz_cov', 'float', precision=10, doc='qoverp dsz covariance ((0,4) element of covariance matrix)'), + lambda_phi_cov = Var('tk_lambda_phi_cov', 'float', precision=10, doc='lambda phi covariance ((1,2) element of covariance matrix)'), + lambda_dxy_cov = Var('tk_lambda_dxy_cov', 'float', precision=10, doc='lambda dxy covariance ((1,3) element of covariance matrix)'), + lambda_dsz_cov = Var('tk_lambda_dsz_cov', 'float', precision=10, doc='lambd dsz covariance ((1,4) element of covariance matrix)'), + phi_dxy_cov = Var('tk_phi_dxy_cov', 'float', precision=10, doc='phi dxy covariance ((2,3) element of covariance matrix)'), + phi_dsz_cov = Var('tk_phi_dsz_cov', 'float', precision=10, doc='phi dsz covariance ((2,4) element of covariance matrix)'), + dxy_dsz_cov = Var('tk_dxy_dsz_cov', 'float', precision=10, doc='dxy dsz covariance ((3,4) element of covariance matrix)'), + vtxInd = Var('tk_vtxInd', 'int', doc='vertex index'), + vx = Var('tk_vx', 'float', precision=10, doc='vx'), + vy = Var('tk_vy', 'float', precision=10, doc='vy'), + vz = Var('tk_vz', 'float', precision=10, doc='vz'), + ), ) -jetScoutingTable = cms.EDProducer("SimpleRun3ScoutingPFJetFlatTableProducer", +# Scouting Primary Vertex +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingVertex.h + +scoutingPrimaryVertexTable = cms.EDProducer("SimpleRun3ScoutingVertexFlatTableProducer", + src = cms.InputTag("hltScoutingPrimaryVertexPacker", "primaryVtx"), + cut = cms.string(""), + name = cms.string("ScoutingPrimaryVertex"), + doc = cms.string("Scouting Primary Vertex"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + x = Var('x', 'float', precision=10, doc='position x coordinate'), + y = Var('y', 'float', precision=10, doc='position y coordinate'), + z = Var('z', 'float', precision=10, doc='position z coordinate'), + xError = Var('xError', 'float', precision=10, doc='x error'), + yError = Var('yError', 'float', precision=10, doc='y error'), + zError = Var('zError', 'float', precision=10, doc='z error'), + tracksSize = Var('tracksSize', 'int', doc='number of tracks'), + chi2 = Var('chi2', 'float', precision=10, doc='chi squared'), + ndof = Var('ndof', 'int', doc='number of degrees of freedom'), + isValidVtx = Var('isValidVtx', 'bool', doc='is valid'), + ), +) + +# Scouting Particle (PF candidate) +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingParticle.h + +scoutingParticleTable = cms.EDProducer("SimpleRun3ScoutingParticleFlatTableProducer", + src = cms.InputTag("hltScoutingPFPacker"), + name = cms.string("ScoutingParticle"), + cut = cms.string(""), + doc = cms.string("Scouting Particle"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + P3Vars, + pdgId = Var("pdgId", int, doc="PDG code assigned by the event reconstruction (not by MC truth)"), + vertex = Var("vertex()", int, doc="vertex index"), + normchi2 = Var("normchi2()", float, doc="normalized chi squared of best track"), + dz = Var("dz()", float, doc="dz of best track"), + dxy = Var("dxy()", float, doc="dxy of best track"), + dzsig = Var("dzsig()", float, doc="dzsig of best track"), + dxysig = Var("dxysig()", float, doc="dxysig of best track"), + lostInnerHits = Var("lostInnerHits()", "uint8", doc="lostInnerHits of best track"), + quality = Var("quality()", "uint8", doc="quality of best track"), + trk_pt = Var("trk_pt()", "float", doc="pt of best track"), + trk_eta = Var("trk_eta()", "float", doc="eta of best track"), + trk_phi = Var("trk_phi()", "float", doc="phi of best track"), + relative_trk_vars = Var("relative_trk_vars()", "bool", doc="relative_trk_vars"), + ), +) + +# Scouting PFJet +# https://github.com/cms-sw/cmssw/blob/CMSSW_14_0_X/DataFormats/Scouting/interface/Run3ScoutingPFJet.h + +scoutingPFJetTable = cms.EDProducer("SimpleRun3ScoutingPFJetFlatTableProducer", src = cms.InputTag("hltScoutingPFPacker"), cut = cms.string(""), name = cms.string("ScoutingPFJet"), - doc = cms.string("PFJet scouting information"), + doc = cms.string("Scouting PFJet"), singleton = cms.bool(False), extension = cms.bool(False), variables = cms.PSet( @@ -231,327 +310,349 @@ photonMultiplicity = Var('photonMultiplicity', 'int', doc='number of photons in the jet'), electronMultiplicity = Var('electronMultiplicity', 'int', doc='number of electrons in the jet'), muonMultiplicity = Var('muonMultiplicity', 'int', doc='number of muons in the jet'), - HFHadronMultiplicity = Var('HFHadronMultiplicity', 'int', doc='number of HF hadronic particles in the jet'), - HFEMMultiplicity = Var('HFEMMultiplicity', 'int', doc='number of HF electromagnetic particles in the jet'), + HFHadronMultiplicity = Var('HFHadronMultiplicity', 'int', doc='number of hadronic particles in the jet in HF'), + HFEMMultiplicity = Var('HFEMMultiplicity', 'int', doc='number of electromagnetic particles in the jet in HF'), HOEnergy = Var('HOEnergy', 'float', precision=10, doc='hadronic energy in HO'), - ) -) - -rhoScoutingTable = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string(""), - variables = cms.PSet( - ScoutingRho = ExtVar( cms.InputTag("hltScoutingPFPacker", "rho"), "double", doc = "rho from all scouting PF Candidates, used e.g. for JECs" ), - ) + ), ) -metScoutingTable = cms.EDProducer("GlobalVariablesTableProducer", +# Scouting MET +scoutingMETTable = cms.EDProducer("GlobalVariablesTableProducer", name = cms.string("ScoutingMET"), variables = cms.PSet( pt = ExtVar( cms.InputTag("hltScoutingPFPacker", "pfMetPt"), "double", doc = "scouting MET pt"), phi = ExtVar( cms.InputTag("hltScoutingPFPacker", "pfMetPhi"), "double", doc = "scouting MET phi"), - ) + ), ) -# from 2024, there are two scouting muon collections - -# muonVtx -muonVtxScoutingTable = muonScoutingTable.clone( - src = cms.InputTag("hltScoutingMuonPackerVtx"), - name = cms.string("ScoutingMuonVtx"), - doc = cms.string("Scouting Muon Vtx information"), +# Scouting Rho +scoutingRhoTable = cms.EDProducer("GlobalVariablesTableProducer", + name = cms.string("ScoutingRho"), + variables = cms.PSet( + fixedGridRhoFastjetAll = ExtVar(cms.InputTag("hltScoutingPFPacker", "rho"), "double", doc = "rho from all scouting PF Candidates, used e.g. for JECs" ), + ), ) -displacedvertexVtxScoutingTable = displacedvertexScoutingTable.clone( - src = cms.InputTag("hltScoutingMuonPackerVtx", "displacedVtx"), - name = cms.string("ScoutingMuonVtxDisplacedVertex"), - doc = cms.string("Scouting Muon Vtx DisplacedVertex information"), + +#################################### +##### Scouting Derived Objects ##### +#################################### +# objects built from scouting objects, e.g. reclustered jets + +######################### +# Scouting PF Candidate # +######################### +# translation from Run3ScoutingParticle to reco::PFCandidate +# used as input for standard algorithm, e.g. jet clustering + +scoutingPFCandidate = cms.EDProducer("Run3ScoutingParticleToRecoPFCandidateProducer", + scoutingparticle = cms.InputTag("hltScoutingPFPacker"), + CHS = cms.bool(False), ) -# muonNoVtx -muonNoVtxScoutingTable = muonScoutingTable.clone( - src = cms.InputTag("hltScoutingMuonPackerNoVtx"), - name = cms.string("ScoutingMuonNoVtx"), - doc = cms.string("Scouting Muon NoVtx information"), +# this table is similar to scoutingParticleTable +# except if relative_trk_vars is true, PF candidate variables will be already added to PF candidate's track variables +scoutingPFCandidateTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("scoutingPFCandidate"), + name = cms.string("ScoutingPFCandidate"), + cut = cms.string(""), + doc = cms.string("Scouting Candidate"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + CandVars, + ), + externalVariables = cms.PSet( + vertexIndex = ExtVar(cms.InputTag("scoutingPFCandidate", "vertexIndex"), int, doc="vertex index"), + trkNormchi2 = ExtVar(cms.InputTag("scoutingPFCandidate", "normchi2"), float, doc="normalized chi squared of best track", precision=6), + trkDz = ExtVar(cms.InputTag("scoutingPFCandidate", "dz"), float, doc="dz of best track", precision=6), + trkDxy = ExtVar(cms.InputTag("scoutingPFCandidate", "dxy"), float, doc="dxy of best track", precision=6), + trkDzsig = ExtVar(cms.InputTag("scoutingPFCandidate", "dzsig"), float, doc="dzsig of best track", precision=6), + trkDxysig = ExtVar(cms.InputTag("scoutingPFCandidate", "dxysig"), float, doc="dxysig of best track", precision=6), + trkLostInnerHits = ExtVar(cms.InputTag("scoutingPFCandidate", "lostInnerHits"), int, doc="lostInnerHits of best track"), + trkQuality = ExtVar(cms.InputTag("scoutingPFCandidate", "quality"), int, doc="quality of best track"), + trkPt = ExtVar(cms.InputTag("scoutingPFCandidate", "trkPt"), float, doc="pt of best track", precision=6), + trkEta = ExtVar(cms.InputTag("scoutingPFCandidate", "trkEta"), float, doc="eta of best track", precision=6), + trkPhi = ExtVar(cms.InputTag("scoutingPFCandidate", "trkPhi"), float, doc="phi of best track", precision=6), + ), ) -displacedvertexNoVtxScoutingTable = displacedvertexScoutingTable.clone( - src = cms.InputTag("hltScoutingMuonPackerNoVtx", "displacedVtx"), - name = cms.string("ScoutingMuonNoVtxDisplacedVertex"), - doc = cms.string("Scouting Muon NoVtx DisplacedVertex information"), + +######################### +# AK4 PFJet Reclustered # +######################### +# AK4 jets from reclustering PF candidates + +# AK4 jet clustering + +from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets +scoutingPFJetRecluster = ak4PFJets.clone( + src = ("scoutingPFCandidate"), + jetPtMin = 20, ) -################ -# Scouting particles +# AK4 jet tagging + +scoutingPFJetReclusterParticleNetJetTagInfos = cms.EDProducer("DeepBoostedJetTagInfoProducer", + jet_radius = cms.double(0.4), + min_jet_pt = cms.double(5.0), + max_jet_eta = cms.double(2.5), + min_pt_for_track_properties = cms.double(0.95), + min_pt_for_pfcandidates = cms.double(0.1), + use_puppiP4 = cms.bool(False), + include_neutrals = cms.bool(True), + sort_by_sip2dsig = cms.bool(False), + min_puppi_wgt = cms.double(-1.0), + flip_ip_sign = cms.bool(False), + sip3dSigMax = cms.double(-1.0), + use_hlt_features = cms.bool(False), + pf_candidates = cms.InputTag("scoutingPFCandidate"), + jets = cms.InputTag("scoutingPFJetRecluster"), + puppi_value_map = cms.InputTag(""), + use_scouting_features = cms.bool(True), + normchi2_value_map = cms.InputTag("scoutingPFCandidate", "normchi2"), + dz_value_map = cms.InputTag("scoutingPFCandidate", "dz"), + dxy_value_map = cms.InputTag("scoutingPFCandidate", "dxy"), + dzsig_value_map = cms.InputTag("scoutingPFCandidate", "dzsig"), + dxysig_value_map = cms.InputTag("scoutingPFCandidate", "dxysig"), + lostInnerHits_value_map = cms.InputTag("scoutingPFCandidate", "lostInnerHits"), + quality_value_map = cms.InputTag("scoutingPFCandidate", "quality"), + trkPt_value_map = cms.InputTag("scoutingPFCandidate", "trkPt"), + trkEta_value_map = cms.InputTag("scoutingPFCandidate", "trkEta"), + trkPhi_value_map = cms.InputTag("scoutingPFCandidate", "trkPhi"), +) -scoutingPFCands = cms.EDProducer( - "Run3ScoutingParticleToRecoPFCandidateProducer", - scoutingparticle=cms.InputTag("hltScoutingPFPacker"), +from RecoBTag.ONNXRuntime.boostedJetONNXJetTagsProducer_cfi import boostedJetONNXJetTagsProducer +scoutingPFJetReclusterParticleNetJetTags = cms.EDProducer("BoostedJetONNXJetTagsProducer", + jets = cms.InputTag("scoutingPFJetRecluster"), + produceValueMap = cms.untracked.bool(True), + src = cms.InputTag("scoutingPFJetReclusterParticleNetJetTagInfos"), + preprocess_json = cms.string("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK4/V00/preprocess.json"), + model_path = cms.FileInPath("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK4/V00/particle-net.onnx"), + flav_names = cms.vstring(["probb", "probbb","probc", "probcc", "probuds", "probg", "probundef"]), + debugMode = cms.untracked.bool(False), ) -particleScoutingTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("scoutingPFCands"), - name = cms.string("ScoutingParticle"), +# output AK4 jet to nanoaod::flattable + +scoutingPFJetReclusterTable = cms.EDProducer("SimplePFJetFlatTableProducer", + src = cms.InputTag("scoutingPFJetRecluster"), + name = cms.string("ScoutingPFJetRecluster"), cut = cms.string(""), - doc = cms.string("ScoutingParticle"), + doc = cms.string("ak4 jet from reclustering scouting PF candidates"), singleton = cms.bool(False), - extension = cms.bool(False), # this is the main table + extension = cms.bool(False), + variables = cms.PSet( + P4Vars, + area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), + # energy fractions + chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6), + neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6), + chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6), + neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), + muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6), + hfHEF = Var("HFHadronEnergyFraction()",float,doc="hadronic Energy Fraction in HF",precision= 6), + hfEmEF = Var("HFEMEnergyFraction()",float,doc="electromagnetic Energy Fraction in HF",precision= 6), + # multiplicities + nCh = Var("chargedHadronMultiplicity()", int, doc="number of charged hadrons in the jet"), + nNh = Var("neutralHadronMultiplicity()", int, doc="number of neutral hadrons in the jet"), + nMuons = Var("muonMultiplicity()", int, doc="number of muons in the jet"), + nElectrons = Var("electronMultiplicity()", int, doc="number of electrons in the jet"), + nPhotons = Var("photonMultiplicity()", int, doc="number of photons in the jet"), + nConstituents = Var("numberOfDaughters()", "uint8", doc="number of particles in the jet") + ), externalVariables = cms.PSet( - vertexIndex = ExtVar(cms.InputTag("scoutingPFCands", "vertexIndex"), int, doc="vertex index"), - trkNormchi2 = ExtVar(cms.InputTag("scoutingPFCands", "normchi2"), float, doc="normalized chi squared of best track", precision=6), - trkDz = ExtVar(cms.InputTag("scoutingPFCands", "dz"), float, doc="dz of best track", precision=6), - trkDxy = ExtVar(cms.InputTag("scoutingPFCands", "dxy"), float, doc="dxy of best track", precision=6), - trkDzsig = ExtVar(cms.InputTag("scoutingPFCands", "dzsig"), float, doc="dzsig of best track", precision=6), - trkDxysig = ExtVar(cms.InputTag("scoutingPFCands", "dxysig"), float, doc="dxysig of best track", precision=6), - trkLostInnerHits = ExtVar(cms.InputTag("scoutingPFCands", "lostInnerHits"), int, doc="lostInnerHits of best track"), - trkQuality = ExtVar(cms.InputTag("scoutingPFCands", "quality"), int, doc="quality of best track"), - trkPt = ExtVar(cms.InputTag("scoutingPFCands", "trkPt"), float, doc="pt of best track", precision=6), - trkEta = ExtVar(cms.InputTag("scoutingPFCands", "trkEta"), float, doc="eta of best track", precision=6), - trkPhi = ExtVar(cms.InputTag("scoutingPFCands", "trkPhi"), float, doc="phi of best track", precision=6), + # jet tagging probabilities + particleNet_prob_b = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probb"), float, doc="ParticleNet probability of b", precision=10), + particleNet_prob_bb = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probbb"), float, doc="ParticleNet probability of bb", precision=10), + particleNet_prob_c = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probc"), float, doc="ParticleNet probability of c", precision=10), + particleNet_prob_cc = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probcc"), float, doc="ParticleNet probability of cc", precision=10), + particleNet_prob_uds = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probuds"), float, doc="particlenet probability of uds", precision=10), + particleNet_prob_g = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probg"), float, doc="ParticleNet probability of g", precision=10), + particleNet_prob_undef = ExtVar(cms.InputTag("scoutingPFJetReclusterParticleNetJetTags:probundef"), float, doc="ParticleNet probability of undef", precision=10), ), - variables = cms.PSet( - CandVars, +) + +# AK4 gen jet matching (only for MC) + +scoutingPFJetReclusterMatchGen = cms.EDProducer("RecoJetToGenJetDeltaRValueMapProducer", + src = cms.InputTag("scoutingPFJetRecluster"), + matched = cms.InputTag("slimmedGenJets"), + distMax = cms.double(0.4), + value = cms.string("index"), +) + +scoutingPFJetReclusterMatchGenExtensionTable = cms.EDProducer("SimplePFJetFlatTableProducer", + src = cms.InputTag("scoutingPFJetRecluster"), + name = cms.string("ScoutingPFJetRecluster"), + cut = cms.string(""), + singleton = cms.bool(False), + extension = cms.bool(True), + variables = cms.PSet(), + externalVariables = cms.PSet( + genJetIdx = ExtVar(cms.InputTag("scoutingPFJetReclusterMatchGen"), int, doc="gen jet idx"), ), - ) +) -################ -# Scouting AK4 jets +######################### +# AK8 PFJet Reclustered # +######################### -from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets -ak4ScoutingJets = ak4PFJets.clone( - src = ("scoutingPFCands"), - jetPtMin = 20, +# AK8 jet clustering + +scoutingFatPFJetRecluster = ak4PFJets.clone( + src = ("scoutingPFCandidate"), + rParam = 0.8, + jetPtMin = 170.0, ) -ak4ScoutingJetParticleNetJetTagInfos = cms.EDProducer("DeepBoostedJetTagInfoProducer", - jet_radius = cms.double( 0.4 ), - min_jet_pt = cms.double( 5.0 ), - max_jet_eta = cms.double( 2.5 ), - min_pt_for_track_properties = cms.double( 0.95 ), - min_pt_for_pfcandidates = cms.double( 0.1 ), - use_puppiP4 = cms.bool( False ), - include_neutrals = cms.bool( True ), - sort_by_sip2dsig = cms.bool( False ), - min_puppi_wgt = cms.double( -1.0 ), - flip_ip_sign = cms.bool( False ), - sip3dSigMax = cms.double( -1.0 ), - use_hlt_features = cms.bool( False ), - pf_candidates = cms.InputTag( "scoutingPFCands" ), - jets = cms.InputTag( "ak4ScoutingJets" ), - puppi_value_map = cms.InputTag( "" ), - use_scouting_features = cms.bool( True ), - normchi2_value_map = cms.InputTag("scoutingPFCands", "normchi2"), - dz_value_map = cms.InputTag("scoutingPFCands", "dz"), - dxy_value_map = cms.InputTag("scoutingPFCands", "dxy"), - dzsig_value_map = cms.InputTag("scoutingPFCands", "dzsig"), - dxysig_value_map = cms.InputTag("scoutingPFCands", "dxysig"), - lostInnerHits_value_map = cms.InputTag("scoutingPFCands", "lostInnerHits"), - quality_value_map = cms.InputTag("scoutingPFCands", "quality"), - trkPt_value_map = cms.InputTag("scoutingPFCands", "trkPt"), - trkEta_value_map = cms.InputTag("scoutingPFCands", "trkEta"), - trkPhi_value_map = cms.InputTag("scoutingPFCands", "trkPhi"), +# AK8 jet tagging + +scoutingFatPFJetReclusterParticleNetJetTagInfos = cms.EDProducer("DeepBoostedJetTagInfoProducer", + jet_radius = cms.double(0.8), + min_jet_pt = cms.double(50), + max_jet_eta = cms.double(2.5), + min_pt_for_track_properties = cms.double(0.95), + min_pt_for_pfcandidates = cms.double(0.1), + use_puppiP4 = cms.bool(False), + include_neutrals = cms.bool(True), + sort_by_sip2dsig = cms.bool(False), + min_puppi_wgt = cms.double(-1.0), + flip_ip_sign = cms.bool(False), + sip3dSigMax = cms.double(-1.0), + use_hlt_features = cms.bool(False), + pf_candidates = cms.InputTag("scoutingPFCandidate"), + jets = cms.InputTag("scoutingFatPFJetRecluster"), + puppi_value_map = cms.InputTag(""), + use_scouting_features = cms.bool(True), + normchi2_value_map = cms.InputTag("scoutingPFCandidate", "normchi2"), + dz_value_map = cms.InputTag("scoutingPFCandidate", "dz"), + dxy_value_map = cms.InputTag("scoutingPFCandidate", "dxy"), + dzsig_value_map = cms.InputTag("scoutingPFCandidate", "dzsig"), + dxysig_value_map = cms.InputTag("scoutingPFCandidate", "dxysig"), + lostInnerHits_value_map = cms.InputTag("scoutingPFCandidate", "lostInnerHits"), + quality_value_map = cms.InputTag("scoutingPFCandidate", "quality"), + trkPt_value_map = cms.InputTag("scoutingPFCandidate", "trkPt"), + trkEta_value_map = cms.InputTag("scoutingPFCandidate", "trkEta"), + trkPhi_value_map = cms.InputTag("scoutingPFCandidate", "trkPhi"), ) from RecoBTag.ONNXRuntime.boostedJetONNXJetTagsProducer_cfi import boostedJetONNXJetTagsProducer +scoutingFatPFJetReclusterParticleNetJetTags = cms.EDProducer("BoostedJetONNXJetTagsProducer", + jets = cms.InputTag("scoutingFatPFJetRecluster"), + produceValueMap = cms.untracked.bool(True), + src = cms.InputTag("scoutingFatPFJetReclusterParticleNetJetTagInfos"), + preprocess_json = cms.string("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/General/V00/preprocess.json"), + model_path = cms.FileInPath("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/General/V00/particle-net.onnx"), + flav_names = cms.vstring(["probQCDall", "probHbb","probHcc", "probHqq"]), + debugMode = cms.untracked.bool(False), +) -ak4ScoutingJetParticleNetJetTags = cms.EDProducer("BoostedJetONNXJetTagsProducer", - jets = cms.InputTag("ak4ScoutingJets"), - produceValueMap = cms.untracked.bool(True), - src = cms.InputTag("ak4ScoutingJetParticleNetJetTagInfos"), - preprocess_json = cms.string("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK4/V00/preprocess.json"), - model_path = cms.FileInPath("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK4/V00/particle-net.onnx"), - flav_names = cms.vstring(["probb", "probbb","probc", "probcc", "probuds", "probg", "probundef"]), - debugMode = cms.untracked.bool(False), +# AK8 jet softdrop mass + +scoutingFatPFJetReclusterSoftDrop = ak4PFJets.clone( + src = ("scoutingPFCandidate"), + rParam = 0.8, + jetPtMin = 170.0, + useSoftDrop = cms.bool(True), + zcut = cms.double(0.1), + beta = cms.double(0.0), + R0 = cms.double(0.8), + useExplicitGhosts = cms.bool(True), + writeCompound = cms.bool(True), + jetCollInstanceName=cms.string("SubJets"), ) -ak4ScoutingJetTable = cms.EDProducer("SimplePFJetFlatTableProducer", - src = cms.InputTag("ak4ScoutingJets"), - name = cms.string("ScoutingPFJetRecluster"), - cut = cms.string(""), - doc = cms.string("ak4 jets from re-clustering scouting PF candidates"), - singleton = cms.bool(False), - extension = cms.bool(False), # this is the main table - externalVariables = cms.PSet( - particleNet_prob_b = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probb'), float, doc="ParticleNet probability of b", precision=10), - particleNet_prob_bb = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probbb'), float, doc="ParticleNet probability of bb", precision=10), - particleNet_prob_c = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probc'), float, doc="ParticleNet probability of c", precision=10), - particleNet_prob_cc = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probcc'), float, doc="ParticleNet probability of cc", precision=10), - particleNet_prob_uds = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probuds'), float, doc="particlenet probability of uds", precision=10), - particleNet_prob_g = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probg'), float, doc="ParticleNet probability of g", precision=10), - particleNet_prob_undef = ExtVar(cms.InputTag('ak4ScoutingJetParticleNetJetTags:probundef'), float, doc="ParticleNet probability of undef", precision=10), - ), - variables = cms.PSet( - P4Vars, - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - chHEF = Var("chargedHadronEnergy()/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="charged Hadron Energy Fraction", precision= 6), - neHEF = Var("neutralHadronEnergy()/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="neutral Hadron Energy Fraction", precision= 6), - chEmEF = Var("(electronEnergy()+muonEnergy())/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="charged Electromagnetic Energy Fraction", precision= 6), - neEmEF = Var("(photonEnergy())/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), - muEF = Var("(muonEnergy())/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="muon Energy Fraction", precision= 6), - nCh = Var("chargedHadronMultiplicity()", int, doc="number of charged hadrons in the jet"), - nNh = Var("neutralHadronMultiplicity()", int, doc="number of neutral hadrons in the jet"), - nMuons = Var("muonMultiplicity()", int, doc="number of muons in the jet"), - nElectrons = Var("electronMultiplicity()", int, doc="number of electrons in the jet"), - nPhotons = Var("photonMultiplicity()", int, doc="number of photons in the jet"), - nConstituents = Var("numberOfDaughters()", "uint8", doc="number of particles in the jet") - ), +scoutingFatPFJetReclusterSoftDropMass = cms.EDProducer("RecoJetDeltaRValueMapProducer", + src = cms.InputTag("scoutingFatPFJetRecluster"), + matched = cms.InputTag("scoutingFatPFJetReclusterSoftDrop"), + distMax = cms.double(0.8), + value = cms.string("mass") ) -ak4ScoutingJetMatchGen = cms.EDProducer("RecoJetToGenJetDeltaRValueMapProducer", - src = cms.InputTag("ak4ScoutingJets"), - matched = cms.InputTag("slimmedGenJets"), - distMax = cms.double(0.4), - value = cms.string("index"), - ) - -ak4ScoutingJetExtTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("ak4ScoutingJets"), - name = cms.string("ScoutingPFJetRecluster"), - cut = cms.string(""), - singleton = cms.bool(False), - extension = cms.bool(True), - externalVariables = cms.PSet( - genJetIdx = ExtVar(cms.InputTag("ak4ScoutingJetMatchGen"), int, doc="gen jet idx"), - ), - variables = cms.PSet(), - ) - -################ -# Scouting AK8 jets - -ak8ScoutingJets = ak4PFJets.clone( - src = ("scoutingPFCands"), - rParam = 0.8, - jetPtMin = 170.0, +# AK8 jet regressed mass + +scoutingFatPFJetReclusterParticleNetMassRegressionJetTags = cms.EDProducer("BoostedJetONNXJetTagsProducer", + jets = cms.InputTag("scoutingFatPFJetRecluster"), + produceValueMap = cms.untracked.bool(True), + src = cms.InputTag("scoutingFatPFJetReclusterParticleNetJetTagInfos"), + preprocess_json = cms.string("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/MassRegression/V00/preprocess.json"), + model_path = cms.FileInPath("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/MassRegression/V00/particle-net.onnx"), + flav_names = cms.vstring(["mass"]), + debugMode = cms.untracked.bool(False), ) -ak8ScoutingJetsSoftDrop = ak4PFJets.clone( - src = ("scoutingPFCands"), - rParam = 0.8, - jetPtMin = 170.0, - useSoftDrop = cms.bool(True), - zcut = cms.double(0.1), - beta = cms.double(0.0), - R0 = cms.double(0.8), - useExplicitGhosts = cms.bool(True), - writeCompound = cms.bool(True), - jetCollInstanceName=cms.string("SubJets"), - ) - -ak8ScoutingJetsSoftDropMass = cms.EDProducer("RecoJetDeltaRValueMapProducer", - src = cms.InputTag("ak8ScoutingJets"), - matched = cms.InputTag("ak8ScoutingJetsSoftDrop"), - distMax = cms.double(0.8), - value = cms.string('mass') - ) +# AK8 jet substructure variables from RecoJets.JetProducers.ECF_cff import ecfNbeta1 -ak8ScoutingJetEcfNbeta1 = ecfNbeta1.clone(src = cms.InputTag("ak8ScoutingJets"), srcWeights="") +scoutingFatPFJetReclusterEcfNbeta1 = ecfNbeta1.clone(src = cms.InputTag("scoutingFatPFJetRecluster"), srcWeights="") from RecoJets.JetProducers.nJettinessAdder_cfi import Njettiness -ak8ScoutingJetNjettiness = Njettiness.clone(src = cms.InputTag("ak8ScoutingJets"), srcWeights="") - -ak8ScoutingJetParticleNetJetTagInfos = cms.EDProducer("DeepBoostedJetTagInfoProducer", - jet_radius = cms.double( 0.8 ), - min_jet_pt = cms.double( 50 ), - max_jet_eta = cms.double( 2.5 ), - min_pt_for_track_properties = cms.double( 0.95 ), - min_pt_for_pfcandidates = cms.double( 0.1 ), - use_puppiP4 = cms.bool( False ), - include_neutrals = cms.bool( True ), - sort_by_sip2dsig = cms.bool( False ), - min_puppi_wgt = cms.double( -1.0 ), - flip_ip_sign = cms.bool( False ), - sip3dSigMax = cms.double( -1.0 ), - use_hlt_features = cms.bool( False ), - pf_candidates = cms.InputTag( "scoutingPFCands" ), - jets = cms.InputTag( "ak8ScoutingJets" ), - puppi_value_map = cms.InputTag( "" ), - use_scouting_features = cms.bool( True ), - normchi2_value_map = cms.InputTag("scoutingPFCands", "normchi2"), - dz_value_map = cms.InputTag("scoutingPFCands", "dz"), - dxy_value_map = cms.InputTag("scoutingPFCands", "dxy"), - dzsig_value_map = cms.InputTag("scoutingPFCands", "dzsig"), - dxysig_value_map = cms.InputTag("scoutingPFCands", "dxysig"), - lostInnerHits_value_map = cms.InputTag("scoutingPFCands", "lostInnerHits"), - quality_value_map = cms.InputTag("scoutingPFCands", "quality"), - trkPt_value_map = cms.InputTag("scoutingPFCands", "trkPt"), - trkEta_value_map = cms.InputTag("scoutingPFCands", "trkEta"), - trkPhi_value_map = cms.InputTag("scoutingPFCands", "trkPhi"), - ) +scoutingFatPFJetReclusterNjettiness = Njettiness.clone(src = cms.InputTag("scoutingFatPFJetRecluster"), srcWeights="") -from RecoBTag.ONNXRuntime.boostedJetONNXJetTagsProducer_cfi import boostedJetONNXJetTagsProducer -ak8ScoutingJetParticleNetJetTags = cms.EDProducer("BoostedJetONNXJetTagsProducer", - jets = cms.InputTag("ak8ScoutingJets"), - produceValueMap = cms.untracked.bool(True), - src = cms.InputTag("ak8ScoutingJetParticleNetJetTagInfos"), - preprocess_json = cms.string("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/General/V00/preprocess.json"), - model_path = cms.FileInPath("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/General/V00/particle-net.onnx"), - flav_names = cms.vstring([ "probQCDall", "probHbb", "probHcc", "probHqq"]), - debugMode = cms.untracked.bool(False), - ) - -ak8ScoutingJetParticleNetMassRegressionJetTags = cms.EDProducer("BoostedJetONNXJetTagsProducer", - jets = cms.InputTag("ak8ScoutingJets"), - produceValueMap = cms.untracked.bool(True), - src = cms.InputTag("ak8ScoutingJetParticleNetJetTagInfos"), - preprocess_json = cms.string("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/MassRegression/V00/preprocess.json"), - model_path = cms.FileInPath("RecoBTag/Combined/data/Run3Scouting/ParticleNetAK8/MassRegression/V00/particle-net.onnx"), - flav_names = cms.vstring(["mass"]), - debugMode = cms.untracked.bool(False), - ) - -ak8ScoutingJetTable = cms.EDProducer("SimplePFJetFlatTableProducer", - src = cms.InputTag("ak8ScoutingJets"), - name = cms.string("ScoutingFatPFJetRecluster"), - cut = cms.string(""), - doc = cms.string("ak8 jets from re-clustering scouting PF candidates"), - singleton = cms.bool(False), - extension = cms.bool(False), # this is the main table - externalVariables = cms.PSet( - #genJetAK8Idx = ExtVar(cms.InputTag("ak8ScoutingJetMatchGen"), int, doc="gen jet idx"), - msoftdrop = ExtVar(cms.InputTag('ak8ScoutingJetsSoftDropMass'), float, doc="Softdrop mass", precision=10), - n2b1 = ExtVar(cms.InputTag('ak8ScoutingJetEcfNbeta1:ecfN2'), float, doc="N2 with beta=1", precision=10), - n3b1 = ExtVar(cms.InputTag('ak8ScoutingJetEcfNbeta1:ecfN3'), float, doc="N3 with beta=1", precision=10), - tau1 = ExtVar(cms.InputTag('ak8ScoutingJetNjettiness:tau1'), float, doc="Nsubjettiness (1 axis)", precision=10), - tau2 = ExtVar(cms.InputTag('ak8ScoutingJetNjettiness:tau2'), float, doc="Nsubjettiness (2 axis)", precision=10), - tau3 = ExtVar(cms.InputTag('ak8ScoutingJetNjettiness:tau3'), float, doc="Nsubjettiness (3 axis)", precision=10), - tau4 = ExtVar(cms.InputTag('ak8ScoutingJetNjettiness:tau4'), float, doc="Nsubjettiness (4 axis)", precision=10), - particleNet_mass = ExtVar(cms.InputTag('ak8ScoutingJetParticleNetMassRegressionJetTags:mass'), float, doc="ParticleNet regressed mass", precision=10), - particleNet_prob_QCD = ExtVar(cms.InputTag('ak8ScoutingJetParticleNetJetTags:probQCDall'), float, doc="ParticleNet probability of QCD", precision=10), - particleNet_prob_Hbb = ExtVar(cms.InputTag('ak8ScoutingJetParticleNetJetTags:probHbb'), float, doc="ParticleNet probability of Hbb", precision=10), - particleNet_prob_Hcc = ExtVar(cms.InputTag('ak8ScoutingJetParticleNetJetTags:probHcc'), float, doc="ParticleNet probability of Hcc", precision=10), - particleNet_prob_Hqq = ExtVar(cms.InputTag('ak8ScoutingJetParticleNetJetTags:probHqq'), float, doc="ParticleNet probability of Hqq", precision=10), - ), - variables = cms.PSet( - P4Vars, - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - chHEF = Var("chargedHadronEnergy()/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="charged Hadron Energy Fraction", precision= 6), - neHEF = Var("neutralHadronEnergy()/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="neutral Hadron Energy Fraction", precision= 6), - chEmEF = Var("(electronEnergy()+muonEnergy())/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="charged Electromagnetic Energy Fraction", precision= 6), - neEmEF = Var("(photonEnergy())/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), - muEF = Var("(muonEnergy())/(chargedHadronEnergy()+neutralHadronEnergy()+photonEnergy()+electronEnergy()+muonEnergy())", float, doc="muon Energy Fraction", precision= 6), - nCh = Var("chargedHadronMultiplicity()", int, doc="number of charged hadrons in the jet"), - nNh = Var("neutralHadronMultiplicity()", int, doc="number of neutral hadrons in the jet"), - nMuons = Var("muonMultiplicity()", int, doc="number of muons in the jet"), - nElectrons = Var("electronMultiplicity()", int, doc="number of electrons in the jet"), - nPhotons = Var("photonMultiplicity()", int, doc="number of photons in the jet"), - nConstituents = Var("numberOfDaughters()", "uint8", doc="number of particles in the jet") - ), - ) - -ak8ScoutingJetMatchGen = cms.EDProducer("RecoJetToGenJetDeltaRValueMapProducer", - src = cms.InputTag("ak8ScoutingJets"), - matched = cms.InputTag("slimmedGenJetsAK8"), - distMax = cms.double(0.8), - value = cms.string("index"), - ) - -ak8ScoutingJetExtTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("ak8ScoutingJets"), - name = cms.string("ScoutingFatPFJetRecluster"), - cut = cms.string(""), - singleton = cms.bool(False), - extension = cms.bool(True), - externalVariables = cms.PSet( - genJetAK8Idx = ExtVar(cms.InputTag("ak8ScoutingJetMatchGen"), int, doc="gen jet idx"), - ), - variables = cms.PSet(), - ) +# output AK8 jet to nanoaod::flattable + +scoutingFatPFJetReclusterTable = cms.EDProducer("SimplePFJetFlatTableProducer", + src = cms.InputTag("scoutingFatPFJetRecluster"), + name = cms.string("ScoutingFatPFJetRecluster"), + cut = cms.string(""), + doc = cms.string("ak8 jet from re-clustering scouting PF Candidates"), + singleton = cms.bool(False), + extension = cms.bool(False), + variables = cms.PSet( + P4Vars, + area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), + # energy fractions + chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6), + neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6), + chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6), + neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), + muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6), + hfHEF = Var("HFHadronEnergyFraction()",float,doc="hadronic Energy Fraction in HF",precision= 6), + hfEmEF = Var("HFEMEnergyFraction()",float,doc="electromagnetic Energy Fraction in HF",precision= 6), + # multiplicities + nCh = Var("chargedHadronMultiplicity()", int, doc="number of charged hadrons in the jet"), + nNh = Var("neutralHadronMultiplicity()", int, doc="number of neutral hadrons in the jet"), + nMuons = Var("muonMultiplicity()", int, doc="number of muons in the jet"), + nElectrons = Var("electronMultiplicity()", int, doc="number of electrons in the jet"), + nPhotons = Var("photonMultiplicity()", int, doc="number of photons in the jet"), + nConstituents = Var("numberOfDaughters()", "uint8", doc="number of particles in the jet") + ), + externalVariables = cms.PSet( + # jet tagging probabilities + particleNet_prob_QCD = ExtVar(cms.InputTag("scoutingFatPFJetReclusterParticleNetJetTags:probQCDall"), float, doc="ParticleNet probability of QCD", precision=10), + particleNet_prob_Hbb = ExtVar(cms.InputTag("scoutingFatPFJetReclusterParticleNetJetTags:probHbb"), float, doc="ParticleNet probability of Hbb", precision=10), + particleNet_prob_Hcc = ExtVar(cms.InputTag("scoutingFatPFJetReclusterParticleNetJetTags:probHcc"), float, doc="ParticleNet probability of Hcc", precision=10), + particleNet_prob_Hqq = ExtVar(cms.InputTag("scoutingFatPFJetReclusterParticleNetJetTags:probHqq"), float, doc="ParticleNet probability of Hqq", precision=10), + # softdrop mass + msoftdrop = ExtVar(cms.InputTag("scoutingFatPFJetReclusterSoftDropMass"), float, doc="Softdrop mass", precision=10), + # regressed mass + particleNet_mass = ExtVar(cms.InputTag("scoutingFatPFJetReclusterParticleNetMassRegressionJetTags:mass"), float, doc="ParticleNet regressed mass", precision=10), + # substructure variables + n2b1 = ExtVar(cms.InputTag("scoutingFatPFJetReclusterEcfNbeta1:ecfN2"), float, doc="N2 with beta=1", precision=10), + n3b1 = ExtVar(cms.InputTag("scoutingFatPFJetReclusterEcfNbeta1:ecfN3"), float, doc="N3 with beta=1", precision=10), + tau1 = ExtVar(cms.InputTag("scoutingFatPFJetReclusterNjettiness:tau1"), float, doc="Nsubjettiness (1 axis)", precision=10), + tau2 = ExtVar(cms.InputTag("scoutingFatPFJetReclusterNjettiness:tau2"), float, doc="Nsubjettiness (2 axis)", precision=10), + tau3 = ExtVar(cms.InputTag("scoutingFatPFJetReclusterNjettiness:tau3"), float, doc="Nsubjettiness (3 axis)", precision=10), + tau4 = ExtVar(cms.InputTag("scoutingFatPFJetReclusterNjettiness:tau4"), float, doc="Nsubjettiness (4 axis)", precision=10), + ), +) + +# AK8 gen jet matching (only for MC) + +scoutingFatPFJetReclusterMatchGen = cms.EDProducer("RecoJetToGenJetDeltaRValueMapProducer", + src = cms.InputTag("scoutingFatPFJetRecluster"), + matched = cms.InputTag("slimmedGenJetsAK8"), + distMax = cms.double(0.8), + value = cms.string("index"), +) + +scoutingFatPFJetReclusterMatchGenExtensionTable = cms.EDProducer("SimplePFJetFlatTableProducer", + src = cms.InputTag("scoutingFatPFJetRecluster"), + name = cms.string("ScoutingFatPFJetRecluster"), + cut = cms.string(""), + singleton = cms.bool(False), + extension = cms.bool(True), + variables = cms.PSet(), + externalVariables = cms.PSet( + genJetAK8Idx = ExtVar(cms.InputTag("scoutingFatPFJetReclusterMatchGen"), int, doc="gen jet idx"), + ), +) diff --git a/PhysicsTools/NanoAODTools/test/exampleGenDump.py b/PhysicsTools/NanoAODTools/test/exampleGenDump.py index 1d582c841576b..7fe66af9f0da5 100755 --- a/PhysicsTools/NanoAODTools/test/exampleGenDump.py +++ b/PhysicsTools/NanoAODTools/test/exampleGenDump.py @@ -3,7 +3,6 @@ # https://cms-nanoaod-integration.web.cern.ch/integration/master-106X/mc106Xul18_doc.html#GenPart # https://github.com/cms-sw/cmssw/blob/master/PhysicsTools/NanoAOD/python/genparticles_cff.py # https://github.com/cms-sw/cmssw/blob/master/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc -from __future__ import print_function # for python3 compatibility from PhysicsTools.NanoAODTools.postprocessing.framework.postprocessor import PostProcessor from PhysicsTools.NanoAODTools.postprocessing.framework.eventloop import Module from PhysicsTools.NanoAODTools.postprocessing.framework.datamodel import Collection diff --git a/PhysicsTools/PatAlgos/plugins/DeDxEstimatorRekeyer.cc b/PhysicsTools/PatAlgos/plugins/DeDxEstimatorRekeyer.cc index 0a91c694ec94e..54d487ddc33bd 100644 --- a/PhysicsTools/PatAlgos/plugins/DeDxEstimatorRekeyer.cc +++ b/PhysicsTools/PatAlgos/plugins/DeDxEstimatorRekeyer.cc @@ -113,7 +113,7 @@ void DeDxEstimatorRekeyer::produce(edm::StreamID, edm::Event& iEvent, const edm: auto dedxHitInfoAssociation = std::make_unique(dedxHitInfoHandle); reco::DeDxHitInfoAss::Filler filler(*dedxHitInfoAssociation); auto resultdedxHitColl = std::make_unique(); - resultdedxHitColl->reserve(pcTrkMap.size() > 0 ? pcTrkMap.size() * pcTrkMap[0].second.size() : 0); + resultdedxHitColl->reserve(!pcTrkMap.empty() ? pcTrkMap.size() * pcTrkMap[0].second.size() : 0); std::vector> momenta; momenta.reserve(resultdedxHitColl->capacity()); // Loop over packed candidates diff --git a/PhysicsTools/PatAlgos/plugins/PATTauHybridProducer.cc b/PhysicsTools/PatAlgos/plugins/PATTauHybridProducer.cc index e5b813034bfa9..2c5e6e3c8eb80 100644 --- a/PhysicsTools/PatAlgos/plugins/PATTauHybridProducer.cc +++ b/PhysicsTools/PatAlgos/plugins/PATTauHybridProducer.cc @@ -10,6 +10,7 @@ #include "RecoTauTag/RecoTau/interface/RecoTauCommonUtilities.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "CommonTools/Utils/interface/PtComparator.h" class PATTauHybridProducer : public edm::stream::EDProducer<> { public: @@ -37,6 +38,7 @@ class PATTauHybridProducer : public edm::stream::EDProducer<> { const bool checkTauScoreIsBest_; const bool usePFLeptonsAsChargedHadrons_; + GreaterByPt pTTauComparator_; const std::map tagToDM_; enum class tauId_utag_idx : size_t { dm = 0, vsjet, vse, vsmu, ptcorr, qconf, pdm0, pdm1, pdm2, pdm10, pdm11, last }; enum class tauId_min_idx : size_t { hpsnew = 0, last }; @@ -325,6 +327,9 @@ void PATTauHybridProducer::produce(edm::Event& evt, const edm::EventSetup& es) { } } //non-matched taus + // sort taus in pT + std::sort(outputTaus->begin(), outputTaus->end(), pTTauComparator_); + evt.put(std::move(outputTaus)); } diff --git a/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py b/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py index 31508ac5680b8..fb3d6336348f4 100644 --- a/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py +++ b/PhysicsTools/PatAlgos/python/slimming/customizeMiniAOD_HcalFixLegacy2016.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.tools.helpers import MassSearchReplaceAnyInputTagVisitor, addKeepStatement diff --git a/PhysicsTools/PatAlgos/python/slimming/slimmedGenJets_cfi.py b/PhysicsTools/PatAlgos/python/slimming/slimmedGenJets_cfi.py index 860903307b777..61881d05ea778 100644 --- a/PhysicsTools/PatAlgos/python/slimming/slimmedGenJets_cfi.py +++ b/PhysicsTools/PatAlgos/python/slimming/slimmedGenJets_cfi.py @@ -3,7 +3,7 @@ slimmedGenJets = cms.EDProducer("PATGenJetSlimmer", src = cms.InputTag("ak4GenJetsNoNu"), packedGenParticles = cms.InputTag("packedGenParticles"), - cut = cms.string("pt > 8"), + cut = cms.string(""), cutLoose = cms.string(""), nLoose = cms.uint32(0), clearDaughters = cms.bool(False), #False means rekeying diff --git a/PhysicsTools/PatAlgos/python/tools/cmsswVersionTools.py b/PhysicsTools/PatAlgos/python/tools/cmsswVersionTools.py index c7647d1c57296..097892c029827 100644 --- a/PhysicsTools/PatAlgos/python/tools/cmsswVersionTools.py +++ b/PhysicsTools/PatAlgos/python/tools/cmsswVersionTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import FWCore.ParameterSet.Config as cms diff --git a/PhysicsTools/PatAlgos/python/tools/coreTools.py b/PhysicsTools/PatAlgos/python/tools/coreTools.py index 1aa4015eb40eb..6e85eb7903575 100644 --- a/PhysicsTools/PatAlgos/python/tools/coreTools.py +++ b/PhysicsTools/PatAlgos/python/tools/coreTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range from PhysicsTools.PatAlgos.tools.ConfigToolBase import * diff --git a/PhysicsTools/PatAlgos/python/tools/helpers.py b/PhysicsTools/PatAlgos/python/tools/helpers.py index 5c95585857c61..c39ed7d35b424 100644 --- a/PhysicsTools/PatAlgos/python/tools/helpers.py +++ b/PhysicsTools/PatAlgos/python/tools/helpers.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys diff --git a/PhysicsTools/PatAlgos/python/tools/jetTools.py b/PhysicsTools/PatAlgos/python/tools/jetTools.py index dc38df71f1489..a88e080082c21 100644 --- a/PhysicsTools/PatAlgos/python/tools/jetTools.py +++ b/PhysicsTools/PatAlgos/python/tools/jetTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.PatAlgos.tools.ConfigToolBase import * from FWCore.ParameterSet.Mixins import PrintOptions,_ParameterTypeBase,_SimpleParameterTypeBase, _Parameterizable, _ConfigureComponent, _TypedParameterizable, _Labelable, _Unlabelable, _ValidatingListBase from FWCore.ParameterSet.SequenceTypes import _ModuleSequenceType, _Sequenceable @@ -462,22 +461,16 @@ def setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSou btag.pfDeepCSVTagInfos.clone( svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderTagInfos'+labelName+postfix)), process, task) - if svClustering or fatJets != cms.InputTag(''): - setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets) if btagInfo == 'pfDeepCSVNegativeTagInfos': addToProcessAndTask(btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCSVNegativeTagInfos.clone( svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderNegativeTagInfos'+labelName+postfix)), process, task) - if svClustering or fatJets != cms.InputTag(''): - setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets) if btagInfo == 'pfDeepCSVPositiveTagInfos': addToProcessAndTask(btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCSVPositiveTagInfos.clone( svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderTagInfos'+labelName+postfix)), process, task) - if svClustering or fatJets != cms.InputTag(''): - setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets) if btagInfo == 'pfDeepCMVATagInfos': addToProcessAndTask(btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCMVATagInfos.clone( diff --git a/PhysicsTools/PatAlgos/python/tools/pfTools.py b/PhysicsTools/PatAlgos/python/tools/pfTools.py index 2f4e56187a589..2a71b95de893e 100644 --- a/PhysicsTools/PatAlgos/python/tools/pfTools.py +++ b/PhysicsTools/PatAlgos/python/tools/pfTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.tools.coreTools import * diff --git a/PhysicsTools/PatAlgos/python/tools/tauTools.py b/PhysicsTools/PatAlgos/python/tools/tauTools.py index 7beb431372102..f8daa77915edf 100644 --- a/PhysicsTools/PatAlgos/python/tools/tauTools.py +++ b/PhysicsTools/PatAlgos/python/tools/tauTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.tools.ConfigToolBase import * diff --git a/PhysicsTools/PatAlgos/python/tools/trigTools.py b/PhysicsTools/PatAlgos/python/tools/trigTools.py index 40b39ca45b3d6..7089c2cc8f8bb 100644 --- a/PhysicsTools/PatAlgos/python/tools/trigTools.py +++ b/PhysicsTools/PatAlgos/python/tools/trigTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range from PhysicsTools.PatAlgos.tools.ConfigToolBase import * diff --git a/PhysicsTools/PatAlgos/test/miniAOD/example_fwlite_checkJets.py b/PhysicsTools/PatAlgos/test/miniAOD/example_fwlite_checkJets.py index b73331b15acf2..5a83464366338 100755 --- a/PhysicsTools/PatAlgos/test/miniAOD/example_fwlite_checkJets.py +++ b/PhysicsTools/PatAlgos/test/miniAOD/example_fwlite_checkJets.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import ROOT import sys from DataFormats.FWLite import Events, Handle diff --git a/PhysicsTools/PatAlgos/test/miniAOD/example_packedCandidates.py b/PhysicsTools/PatAlgos/test/miniAOD/example_packedCandidates.py index e0ddfc0958e5b..7f8b534e98715 100644 --- a/PhysicsTools/PatAlgos/test/miniAOD/example_packedCandidates.py +++ b/PhysicsTools/PatAlgos/test/miniAOD/example_packedCandidates.py @@ -1,4 +1,3 @@ -from __future__ import print_function # import ROOT in batch mode from builtins import range import sys diff --git a/PhysicsTools/PatExamples/bin/PatBasicFWLiteAnalyzer.py b/PhysicsTools/PatExamples/bin/PatBasicFWLiteAnalyzer.py index ef061f19eefb1..fb34feedf6225 100644 --- a/PhysicsTools/PatExamples/bin/PatBasicFWLiteAnalyzer.py +++ b/PhysicsTools/PatExamples/bin/PatBasicFWLiteAnalyzer.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import ROOT import sys from DataFormats.FWLite import Events, Handle diff --git a/PhysicsTools/PatUtils/interface/ShiftedJetProducerT.h b/PhysicsTools/PatUtils/interface/ShiftedJetProducerT.h index 8d790acb79f80..d9e7edc1d095a 100644 --- a/PhysicsTools/PatUtils/interface/ShiftedJetProducerT.h +++ b/PhysicsTools/PatUtils/interface/ShiftedJetProducerT.h @@ -18,6 +18,7 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/FileInPath.h" #include "FWCore/Utilities/interface/InputTag.h" @@ -32,10 +33,11 @@ #include "PhysicsTools/PatUtils/interface/RawJetExtractorT.h" #include +#include template class ShiftedJetProducerT : public edm::stream::EDProducer<> { - typedef std::vector JetCollection; + using JetCollection = std::vector; public: explicit ShiftedJetProducerT(const edm::ParameterSet& cfg) @@ -43,11 +45,10 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { src_(cfg.getParameter("src")), srcToken_(consumes(src_)), jetCorrPayloadName_(""), - jetCorrParameters_(nullptr), - jecUncertainty_(nullptr), - jecUncertaintyValue_(-1.) { + jecUncertainty_(), + jecUncertaintyValue_() { if (cfg.exists("jecUncertaintyValue")) { - jecUncertaintyValue_ = cfg.getParameter("jecUncertaintyValue"); + jecUncertaintyValue_.emplace(cfg.getParameter("jecUncertaintyValue")); } else { jetCorrUncertaintyTag_ = cfg.getParameter("jetCorrUncertaintyTag"); if (cfg.exists("jetCorrInputFileName")) { @@ -55,9 +56,8 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { if (jetCorrInputFileName_.location() == edm::FileInPath::Unknown) throw cms::Exception("ShiftedJetProducerT") << " Failed to find JEC parameter file = " << jetCorrInputFileName_ << " !!\n"; - jetCorrParameters_ = - std::make_unique(jetCorrInputFileName_.fullPath(), jetCorrUncertaintyTag_); - jecUncertainty_ = std::make_unique(*jetCorrParameters_); + JetCorrectorParameters jetCorrParameters(jetCorrInputFileName_.fullPath(), jetCorrUncertaintyTag_); + jecUncertainty_.emplace(jetCorrParameters); } else { jetCorrPayloadName_ = cfg.getParameter("jetCorrPayloadName"); jetCorrPayloadToken_ = esConsumes(edm::ESInputTag("", jetCorrPayloadName_)); @@ -65,21 +65,48 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { } addResidualJES_ = cfg.getParameter("addResidualJES"); - if (cfg.exists("jetCorrLabelUpToL3")) { - jetCorrLabelUpToL3_ = cfg.getParameter("jetCorrLabelUpToL3"); - jetCorrTokenUpToL3_ = mayConsume(jetCorrLabelUpToL3_); - } - if (cfg.exists("jetCorrLabelUpToL3Res") && addResidualJES_) { - jetCorrLabelUpToL3Res_ = cfg.getParameter("jetCorrLabelUpToL3Res"); - jetCorrTokenUpToL3Res_ = mayConsume(jetCorrLabelUpToL3Res_); + if (addResidualJES_) { + if (cfg.exists("jetCorrLabelUpToL3")) { + jetCorrLabelUpToL3_ = cfg.getParameter("jetCorrLabelUpToL3"); + jetCorrTokenUpToL3_ = consumes(jetCorrLabelUpToL3_); + } + if (cfg.exists("jetCorrLabelUpToL3Res")) { + jetCorrLabelUpToL3Res_ = cfg.getParameter("jetCorrLabelUpToL3Res"); + jetCorrTokenUpToL3Res_ = consumes(jetCorrLabelUpToL3Res_); + } } - jetCorrEtaMax_ = (cfg.exists("jetCorrEtaMax")) ? cfg.getParameter("jetCorrEtaMax") : 9.9; + jetCorrEtaMax_ = cfg.getParameter("jetCorrEtaMax"); shiftBy_ = cfg.getParameter("shiftBy"); - verbosity_ = (cfg.exists("verbosity")) ? cfg.getParameter("verbosity") : 0; + verbosity_ = cfg.getUntrackedParameter("verbosity"); + + putToken_ = produces(); + + //PATJetCorrExtractor wants a string not a product when called + static_assert(not std::is_base_of::value); + } - produces(); + static void fillDescriptions(edm::ConfigurationDescriptions& iDesc) { + //NOTE: the full complexity of the pset handling could be expressed using + // ifValue and addNode but it might result in present configs failing + edm::ParameterSetDescription ps; + ps.add("src"); + ps.addOptional("jecUncertaintyValue"); + ps.addOptional("jetCorrUncertaintyTag")->setComment("only used if 'jecUncertaintyValue' not declared"); + ps.addOptional("jetCorrInputFileName") + ->setComment("only used if 'jecUncertaintyValue' not declared"); + ps.addOptional("jetCorrPayloadName") + ->setComment("only used if neither 'jecUncertaintyValue' nor 'jetCorrInputFileName' are declared"); + + ps.add("addResidualJES"); + ps.addOptional("jetCorrLabelUpToL3")->setComment("only used of 'addResidualJES' is set true"); + ps.addOptional("jetCorrLabelUpToL3Res")->setComment("only used of 'addResidualJES' is set true"); + + ps.add("jetCorrEtaMax", 9.9); + ps.add("shiftBy"); + ps.addUntracked("verbosity", 0); + iDesc.addDefault(ps); } private: @@ -90,33 +117,39 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { std::cout << " src = " << src_.label() << std::endl; } - edm::Handle originalJets; - evt.getByToken(srcToken_, originalJets); + JetCollection const& originalJets = evt.get(srcToken_); + edm::Handle jetCorrUpToL3; - evt.getByToken(jetCorrTokenUpToL3_, jetCorrUpToL3); edm::Handle jetCorrUpToL3Res; if (evt.isRealData() && addResidualJES_) { - evt.getByToken(jetCorrTokenUpToL3Res_, jetCorrUpToL3Res); + jetCorrUpToL3 = evt.getHandle(jetCorrTokenUpToL3_); + jetCorrUpToL3Res = evt.getHandle(jetCorrTokenUpToL3Res_); } - auto shiftedJets = std::make_unique(); - if (!jetCorrPayloadName_.empty()) { - const JetCorrectorParametersCollection& jetCorrParameterSet = es.getData(jetCorrPayloadToken_); - const JetCorrectorParameters& jetCorrParameters = (jetCorrParameterSet)[jetCorrUncertaintyTag_]; - jecUncertainty_ = std::make_unique(jetCorrParameters); + if (not jecUncertaintyValue_) { + if (jetCorrPayloadToken_.isInitialized()) { + auto cacheID = es.get().cacheIdentifier(); + if (cacheID != recordIdentifier_) { + const JetCorrectorParametersCollection& jetCorrParameterSet = es.getData(jetCorrPayloadToken_); + const JetCorrectorParameters& jetCorrParameters = (jetCorrParameterSet)[jetCorrUncertaintyTag_]; + jecUncertainty_.emplace(jetCorrParameters); + recordIdentifier_ = cacheID; + } + } } - for (typename JetCollection::const_iterator originalJet = originalJets->begin(); originalJet != originalJets->end(); - ++originalJet) { - reco::Candidate::LorentzVector originalJetP4 = originalJet->p4(); + JetCollection shiftedJets; + shiftedJets.reserve(originalJets.size()); + for (auto const& originalJet : originalJets) { + reco::Candidate::LorentzVector originalJetP4 = originalJet.p4(); if (verbosity_) { std::cout << "originalJet: Pt = " << originalJetP4.pt() << ", eta = " << originalJetP4.eta() << ", phi = " << originalJetP4.phi() << std::endl; } double shift = 0.; - if (jecUncertaintyValue_ != -1.) { - shift = jecUncertaintyValue_; + if (jecUncertaintyValue_) { + shift = *jecUncertaintyValue_; } else { jecUncertainty_->setJetEta(originalJetP4.eta()); jecUncertainty_->setJetPt(originalJetP4.pt()); @@ -128,17 +161,12 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { } if (evt.isRealData() && addResidualJES_) { - const static pat::RawJetExtractorT rawJetExtractor{}; - reco::Candidate::LorentzVector rawJetP4 = rawJetExtractor(*originalJet); + reco::Candidate::LorentzVector rawJetP4 = pat::RawJetExtractorT{}(originalJet); if (rawJetP4.E() > 1.e-1) { reco::Candidate::LorentzVector corrJetP4upToL3 = - std::is_base_of::value - ? jetCorrExtractor_(*originalJet, jetCorrLabelUpToL3_.label(), jetCorrEtaMax_, &rawJetP4) - : jetCorrExtractor_(*originalJet, jetCorrUpToL3.product(), jetCorrEtaMax_, &rawJetP4); + jetCorrExtractor_(originalJet, jetCorrUpToL3.product(), jetCorrEtaMax_, &rawJetP4); reco::Candidate::LorentzVector corrJetP4upToL3Res = - std::is_base_of::value - ? jetCorrExtractor_(*originalJet, jetCorrLabelUpToL3Res_.label(), jetCorrEtaMax_, &rawJetP4) - : jetCorrExtractor_(*originalJet, jetCorrUpToL3Res.product(), jetCorrEtaMax_, &rawJetP4); + jetCorrExtractor_(originalJet, jetCorrUpToL3Res.product(), jetCorrEtaMax_, &rawJetP4); if (corrJetP4upToL3.E() > 1.e-1 && corrJetP4upToL3Res.E() > 1.e-1) { double residualJES = (corrJetP4upToL3Res.E() / corrJetP4upToL3.E()) - 1.; shift = sqrt(shift * shift + residualJES * residualJES); @@ -151,30 +179,30 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { std::cout << "shift*shiftBy = " << shift << std::endl; } - T shiftedJet(*originalJet); - shiftedJet.setP4((1. + shift) * originalJetP4); + shiftedJets.emplace_back(originalJet); + shiftedJets.back().setP4((1. + shift) * originalJetP4); if (verbosity_) { + auto const& shiftedJet = shiftedJets.back(); std::cout << "shiftedJet: Pt = " << shiftedJet.pt() << ", eta = " << shiftedJet.eta() << ", phi = " << shiftedJet.phi() << std::endl; } - - shiftedJets->push_back(shiftedJet); } - evt.put(std::move(shiftedJets)); + evt.emplace(putToken_, std::move(shiftedJets)); } std::string moduleLabel_; edm::InputTag src_; edm::EDGetTokenT srcToken_; + edm::EDPutTokenT putToken_; edm::FileInPath jetCorrInputFileName_; std::string jetCorrPayloadName_; edm::ESGetToken jetCorrPayloadToken_; std::string jetCorrUncertaintyTag_; - std::unique_ptr jetCorrParameters_; - std::unique_ptr jecUncertainty_; + std::optional jecUncertainty_; + unsigned long long recordIdentifier_ = 0; bool addResidualJES_; edm::InputTag jetCorrLabelUpToL3_; // L1+L2+L3 correction @@ -188,7 +216,7 @@ class ShiftedJetProducerT : public edm::stream::EDProducer<> { // https://hypernews.cern.ch/HyperNews/CMS/get/JetMET/1259/1.html Textractor jetCorrExtractor_; - double jecUncertaintyValue_; + std::optional jecUncertaintyValue_; double shiftBy_; // set to +1.0/-1.0 for up/down variation of energy scale diff --git a/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py b/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py index 94c75b790ebb8..3de704aef51fd 100644 --- a/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py +++ b/PhysicsTools/PatUtils/python/tools/eGammaCorrection.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.tools.ConfigToolBase import * diff --git a/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py b/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py index a7def7ec8c79e..71418a4209811 100644 --- a/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py +++ b/PhysicsTools/PatUtils/python/tools/runMETCorrectionsAndUncertainties.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.tools.ConfigToolBase import * diff --git a/PhysicsTools/PythonAnalysis/examples/MCTruth.py b/PhysicsTools/PythonAnalysis/examples/MCTruth.py index af829121c660b..4fed072349463 100644 --- a/PhysicsTools/PythonAnalysis/examples/MCTruth.py +++ b/PhysicsTools/PythonAnalysis/examples/MCTruth.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.PythonAnalysis import * import ROOT from ROOT import gSystem, TFile diff --git a/PhysicsTools/PythonAnalysis/examples/MCTruth2.py b/PhysicsTools/PythonAnalysis/examples/MCTruth2.py index bae9042e8e728..e0375b86d786d 100644 --- a/PhysicsTools/PythonAnalysis/examples/MCTruth2.py +++ b/PhysicsTools/PythonAnalysis/examples/MCTruth2.py @@ -1,4 +1,3 @@ -from __future__ import print_function from PhysicsTools.PythonAnalysis import * from ROOT import gSystem diff --git a/PhysicsTools/PythonAnalysis/examples/interactiveExample.py b/PhysicsTools/PythonAnalysis/examples/interactiveExample.py index 39bcc5bdee722..add902a27ba45 100644 --- a/PhysicsTools/PythonAnalysis/examples/interactiveExample.py +++ b/PhysicsTools/PythonAnalysis/examples/interactiveExample.py @@ -1,4 +1,3 @@ -from __future__ import print_function # has to be called with python -i interactiveExample.py from PhysicsTools.PythonAnalysis import * diff --git a/PhysicsTools/PythonAnalysis/python/ParticleDecayDrawer.py b/PhysicsTools/PythonAnalysis/python/ParticleDecayDrawer.py index b49343b06757f..e21e50d92ea40 100644 --- a/PhysicsTools/PythonAnalysis/python/ParticleDecayDrawer.py +++ b/PhysicsTools/PythonAnalysis/python/ParticleDecayDrawer.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Benedikt Hegner, DESY # benedikt.hegner@cern.ch # diff --git a/PhysicsTools/PythonAnalysis/python/__init__.py b/PhysicsTools/PythonAnalysis/python/__init__.py index 7b123ce45734f..2d9ee47e3025f 100644 --- a/PhysicsTools/PythonAnalysis/python/__init__.py +++ b/PhysicsTools/PythonAnalysis/python/__init__.py @@ -1,2 +1 @@ -from __future__ import absolute_import from .cmstools import * diff --git a/PhysicsTools/PythonAnalysis/python/cmscompleter.py b/PhysicsTools/PythonAnalysis/python/cmscompleter.py index 2b6a111d850a6..6577b0a88cbfe 100644 --- a/PhysicsTools/PythonAnalysis/python/cmscompleter.py +++ b/PhysicsTools/PythonAnalysis/python/cmscompleter.py @@ -5,8 +5,6 @@ benedikt.hegner@cern.ch """ -from __future__ import absolute_import -from __future__ import print_function # TODO: sometimes results are doubled. clean global_matches list! import readline diff --git a/PhysicsTools/PythonAnalysis/python/cmstools.py b/PhysicsTools/PythonAnalysis/python/cmstools.py index f37da3a0925b6..4bba8004cf710 100644 --- a/PhysicsTools/PythonAnalysis/python/cmstools.py +++ b/PhysicsTools/PythonAnalysis/python/cmstools.py @@ -3,8 +3,6 @@ benedikt.hegner@cern.ch """ -from __future__ import absolute_import -from __future__ import print_function from builtins import range import re import ROOT diff --git a/PhysicsTools/PythonAnalysis/python/diffProv.py b/PhysicsTools/PythonAnalysis/python/diffProv.py index 582544bc2dec6..aa9ff3fbad085 100644 --- a/PhysicsTools/PythonAnalysis/python/diffProv.py +++ b/PhysicsTools/PythonAnalysis/python/diffProv.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range class difference : diff --git a/PhysicsTools/PythonAnalysis/python/rootplot/__init__.py b/PhysicsTools/PythonAnalysis/python/rootplot/__init__.py index a061c6fa2f0c2..2bf53e0b795c6 100644 --- a/PhysicsTools/PythonAnalysis/python/rootplot/__init__.py +++ b/PhysicsTools/PythonAnalysis/python/rootplot/__init__.py @@ -1,3 +1,2 @@ -from __future__ import absolute_import from .core import rootplot, rootplotmpl, plot, plotmpl from .version import __version__ diff --git a/PhysicsTools/PythonAnalysis/python/rootplot/core.py b/PhysicsTools/PythonAnalysis/python/rootplot/core.py index 483f5865d6a63..6a91cbf687c11 100644 --- a/PhysicsTools/PythonAnalysis/python/rootplot/core.py +++ b/PhysicsTools/PythonAnalysis/python/rootplot/core.py @@ -1,8 +1,6 @@ """ An API and a CLI for quickly building complex figures. """ -from __future__ import absolute_import -from __future__ import print_function from builtins import range __license__ = '''\ diff --git a/PhysicsTools/PythonAnalysis/python/rootplot/rootinfo.py b/PhysicsTools/PythonAnalysis/python/rootplot/rootinfo.py index 12483ff6fbffd..c56528d3148be 100644 --- a/PhysicsTools/PythonAnalysis/python/rootplot/rootinfo.py +++ b/PhysicsTools/PythonAnalysis/python/rootplot/rootinfo.py @@ -1,8 +1,6 @@ """ Print information about objects in a ROOT file. """ -from __future__ import absolute_import -from __future__ import print_function from builtins import range from .version import __version__ diff --git a/PhysicsTools/PythonAnalysis/python/rootplot/rootmath.py b/PhysicsTools/PythonAnalysis/python/rootplot/rootmath.py index 80fdb4b1265f9..09c1ba694356b 100644 --- a/PhysicsTools/PythonAnalysis/python/rootplot/rootmath.py +++ b/PhysicsTools/PythonAnalysis/python/rootplot/rootmath.py @@ -1,8 +1,6 @@ """ rootmath description """ -from __future__ import absolute_import -from __future__ import print_function from builtins import range __license__ = '''\ diff --git a/PhysicsTools/PythonAnalysis/python/rootplot/tree2hists.py b/PhysicsTools/PythonAnalysis/python/rootplot/tree2hists.py index d6cf8bed637f0..b66fba285a488 100644 --- a/PhysicsTools/PythonAnalysis/python/rootplot/tree2hists.py +++ b/PhysicsTools/PythonAnalysis/python/rootplot/tree2hists.py @@ -4,7 +4,6 @@ Options are specified in the given configuration file. """ -from __future__ import print_function # Create configuration file: # tree2hists.py diff --git a/PhysicsTools/PythonAnalysis/python/rootplot/utilities.py b/PhysicsTools/PythonAnalysis/python/rootplot/utilities.py index 6ba4368b11930..bfa6021f16da9 100644 --- a/PhysicsTools/PythonAnalysis/python/rootplot/utilities.py +++ b/PhysicsTools/PythonAnalysis/python/rootplot/utilities.py @@ -1,7 +1,6 @@ """ Utilities for rootplot including histogram classes. """ -from __future__ import print_function from builtins import range __license__ = '''\ diff --git a/PhysicsTools/PythonAnalysis/test/test.py b/PhysicsTools/PythonAnalysis/test/test.py index 27e742816d541..6196f59c2b9db 100755 --- a/PhysicsTools/PythonAnalysis/test/test.py +++ b/PhysicsTools/PythonAnalysis/test/test.py @@ -1,4 +1,3 @@ -from __future__ import print_function from readProv import * from diffProv import * import unittest diff --git a/PhysicsTools/PythonAnalysis/test/testNumExpr.py b/PhysicsTools/PythonAnalysis/test/testNumExpr.py index f68854063d670..9008bc2cdbd1d 100755 --- a/PhysicsTools/PythonAnalysis/test/testNumExpr.py +++ b/PhysicsTools/PythonAnalysis/test/testNumExpr.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 #https://github.com/pydata/numexpr/wiki/Numexpr-Users-Guide -from __future__ import print_function import numpy as np import numexpr as ne a = np.arange(10) diff --git a/PhysicsTools/PythonAnalysis/test/testPandas.py b/PhysicsTools/PythonAnalysis/test/testPandas.py index 49e7b0a40fb56..2c7943342542b 100755 --- a/PhysicsTools/PythonAnalysis/test/testPandas.py +++ b/PhysicsTools/PythonAnalysis/test/testPandas.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as pyplot diff --git a/PhysicsTools/PythonAnalysis/test/testUncertainties.py b/PhysicsTools/PythonAnalysis/test/testUncertainties.py index ccd510bc7c22b..c4d41e60f0632 100755 --- a/PhysicsTools/PythonAnalysis/test/testUncertainties.py +++ b/PhysicsTools/PythonAnalysis/test/testUncertainties.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 #example taken from https://pypi.python.org/pypi/uncertainties/3.0.1 -from __future__ import print_function from uncertainties import ufloat x = ufloat(2, 0.25) print(x) diff --git a/PhysicsTools/PythonAnalysis/test/testXGBoost_and_sklearn.py b/PhysicsTools/PythonAnalysis/test/testXGBoost_and_sklearn.py index d4d14dbf0d170..4ccbce069e4c1 100755 --- a/PhysicsTools/PythonAnalysis/test/testXGBoost_and_sklearn.py +++ b/PhysicsTools/PythonAnalysis/test/testXGBoost_and_sklearn.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 # from https://gist.github.com/IevaZarina/ef63197e089169a9ea9f3109058a9679 -from __future__ import print_function import numpy as np import xgboost as xgb from sklearn import datasets diff --git a/PhysicsTools/SelectorUtils/python/VIDSelectorBase.py b/PhysicsTools/SelectorUtils/python/VIDSelectorBase.py index ecfa4e5f29383..15b766f201153 100644 --- a/PhysicsTools/SelectorUtils/python/VIDSelectorBase.py +++ b/PhysicsTools/SelectorUtils/python/VIDSelectorBase.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT import string import random diff --git a/PhysicsTools/SelectorUtils/python/VIDSelectorValidator.py b/PhysicsTools/SelectorUtils/python/VIDSelectorValidator.py index 045617c66a676..931650c160add 100644 --- a/PhysicsTools/SelectorUtils/python/VIDSelectorValidator.py +++ b/PhysicsTools/SelectorUtils/python/VIDSelectorValidator.py @@ -1,4 +1,3 @@ -from __future__ import print_function import md5 import ROOT diff --git a/PhysicsTools/SelectorUtils/test/pyfwlite_test.py b/PhysicsTools/SelectorUtils/test/pyfwlite_test.py index 8549f427ab043..71e56d3065e32 100755 --- a/PhysicsTools/SelectorUtils/test/pyfwlite_test.py +++ b/PhysicsTools/SelectorUtils/test/pyfwlite_test.py @@ -1,7 +1,6 @@ #! /usr/bin/env python # import ROOT in batch mode -from __future__ import print_function import sys oldargv = sys.argv[:] sys.argv = [ '-b-' ] diff --git a/PhysicsTools/TagAndProbe/test/utilities/dumpPileup.py b/PhysicsTools/TagAndProbe/test/utilities/dumpPileup.py index c545c9d6b1d17..99a60e0400b27 100644 --- a/PhysicsTools/TagAndProbe/test/utilities/dumpPileup.py +++ b/PhysicsTools/TagAndProbe/test/utilities/dumpPileup.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function from builtins import range import sys import ROOT diff --git a/PhysicsTools/TensorFlowAOT/src/Batching.cc b/PhysicsTools/TensorFlowAOT/src/Batching.cc index f7f00c58c8e51..3bfa06e5110b9 100644 --- a/PhysicsTools/TensorFlowAOT/src/Batching.cc +++ b/PhysicsTools/TensorFlowAOT/src/Batching.cc @@ -21,7 +21,7 @@ namespace tfaot { BatchRule::BatchRule(const std::string& ruleString) { // extract the target batch size from the front std::string rule = ruleString; - auto pos = rule.find(":"); + auto pos = rule.find(':'); if (pos == std::string::npos) { throw cms::Exception("InvalidBatchRule") << "invalid batch rule format: " << ruleString; } @@ -32,7 +32,7 @@ namespace tfaot { std::vector sizes; size_t sumSizes = 0; while (!rule.empty()) { - pos = rule.find(","); + pos = rule.find(','); sizes.push_back(std::stoi(rule.substr(0, pos))); sumSizes += sizes.back(); rule = pos == std::string::npos ? "" : rule.substr(pos + 1); @@ -53,7 +53,7 @@ namespace tfaot { void BatchRule::validate() const { // sizes must not be empty - if (sizes_.size() == 0) { + if (sizes_.empty()) { throw cms::Exception("EmptySizes") << "no batch sizes provided for stitching"; } diff --git a/RecoBTag/CTagging/test/test_discriminator_presence.py b/RecoBTag/CTagging/test/test_discriminator_presence.py index e25fd83654749..42cad897c8b5d 100644 --- a/RecoBTag/CTagging/test/test_discriminator_presence.py +++ b/RecoBTag/CTagging/test/test_discriminator_presence.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT import pprint import sys diff --git a/RecoBTag/Combined/plugins/DeepFlavourJetTagsProducer.cc b/RecoBTag/Combined/plugins/DeepFlavourJetTagsProducer.cc index 7a02c3d9d06cb..b7a2c31d84c61 100644 --- a/RecoBTag/Combined/plugins/DeepFlavourJetTagsProducer.cc +++ b/RecoBTag/Combined/plugins/DeepFlavourJetTagsProducer.cc @@ -288,11 +288,26 @@ namespace { // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void DeepFlavourJetTagsProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - //The following says we do not know what parameters are allowed so do no validation - // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); + + // Define the parameters + desc.add("src", edm::InputTag("pfDeepCSVTagInfos")) + ->setComment("InputTag for the source tag info collection."); + desc.add("checkSVForDefaults", false)->setComment("Flag to check secondary vertex defaults."); + desc.add("meanPadding", false)->setComment("Enable or disable mean padding for input features."); + desc.add("NNConfig", edm::FileInPath("RecoBTag/Combined/data/DeepFlavourNoSL.json")) + ->setComment("Path to the JSON file containing the neural network configuration."); + + // Define the 'toAdd' parameter as a ParameterSet with arbitrary string keys + edm::ParameterSetDescription toAddDesc; + toAddDesc.setAllowAnything(); // Allow any string-to-string mappings + desc.add("toAdd", toAddDesc) + ->setComment( + "ParameterSet for merging different NN outputs together. " + "Each key is an output to merge, and its value is the target output."); + + // Add this producer's description to the descriptions registry + descriptions.addWithDefaultLabel(desc); } } // end unnamed namespace diff --git a/RecoBTag/Combined/plugins/DeepNNTagInfoProducer.cc b/RecoBTag/Combined/plugins/DeepNNTagInfoProducer.cc index 4a34a95fde6aa..76a53e4692e44 100644 --- a/RecoBTag/Combined/plugins/DeepNNTagInfoProducer.cc +++ b/RecoBTag/Combined/plugins/DeepNNTagInfoProducer.cc @@ -20,23 +20,19 @@ #include // user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/StreamID.h" - #include "DataFormats/BTauReco/interface/CandIPTagInfo.h" #include "DataFormats/BTauReco/interface/CandSecondaryVertexTagInfo.h" +#include "DataFormats/BTauReco/interface/SecondaryVertexTagInfo.h" #include "DataFormats/BTauReco/interface/ShallowTagInfo.h" #include "DataFormats/BTauReco/interface/TaggingVariable.h" -#include "RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h" - #include "DataFormats/BTauReco/interface/TrackIPTagInfo.h" -#include "DataFormats/BTauReco/interface/SecondaryVertexTagInfo.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/StreamID.h" +#include "RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h" #include @@ -50,7 +46,7 @@ template class TemplatedDeepNNTagInfoProducer : public edm::stream::EDProducer<> { public: explicit TemplatedDeepNNTagInfoProducer(const edm::ParameterSet&); - ~TemplatedDeepNNTagInfoProducer() override; + ~TemplatedDeepNNTagInfoProducer() override = default; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); @@ -64,14 +60,6 @@ class TemplatedDeepNNTagInfoProducer : public edm::stream::EDProducer<> { CombinedSVComputer computer_; }; -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - // // constructors and destructor // @@ -82,12 +70,6 @@ TemplatedDeepNNTagInfoProducer::TemplatedDeepNNTagInfoProducer(con produces >(); } -template -TemplatedDeepNNTagInfoProducer::~TemplatedDeepNNTagInfoProducer() { - // do anything here that needs to be done at destruction time - // (e.g. close files, deallocate resources etc.) -} - // // member functions // @@ -131,11 +113,15 @@ void TemplatedDeepNNTagInfoProducer::produce(edm::Event& iEvent, c // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ template void TemplatedDeepNNTagInfoProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - //The following says we do not know what parameters are allowed so do no validation - // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); + desc.add("svTagInfos", edm::InputTag("")); + + // Define the computer parameter using CombinedSVComputer + edm::ParameterSetDescription computerDesc; + CombinedSVComputer::fillPSetDescription(computerDesc); + desc.add("computer", computerDesc); + + descriptions.addWithDefaultLabel(desc); } //define this as a plug-in diff --git a/RecoBTag/ONNXRuntime/plugins/DeepFlavourONNXJetTagsProducer.cc b/RecoBTag/ONNXRuntime/plugins/DeepFlavourONNXJetTagsProducer.cc index b958dc84629c0..70687fa2b13d9 100644 --- a/RecoBTag/ONNXRuntime/plugins/DeepFlavourONNXJetTagsProducer.cc +++ b/RecoBTag/ONNXRuntime/plugins/DeepFlavourONNXJetTagsProducer.cc @@ -70,6 +70,7 @@ DeepFlavourONNXJetTagsProducer::DeepFlavourONNXJetTagsProducer(const edm::Parame } assert(input_names_.size() == input_sizes_.size()); + data_.reserve(input_sizes_.size()); } DeepFlavourONNXJetTagsProducer::~DeepFlavourONNXJetTagsProducer() {} @@ -143,6 +144,7 @@ void DeepFlavourONNXJetTagsProducer::produce(edm::Event& iEvent, const edm::Even for (std::size_t flav_n = 0; flav_n < flav_names_.size(); ++flav_n) { iEvent.put(std::move(output_tags[flav_n]), flav_names_[flav_n]); } + data_.clear(); } void DeepFlavourONNXJetTagsProducer::make_inputs(unsigned i_jet, const reco::DeepFlavourTagInfo& taginfo) { diff --git a/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXJetTags_cff.py b/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXJetTags_cff.py index 7563a491a4bb0..cc7e0ac071dea 100644 --- a/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXJetTags_cff.py +++ b/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXJetTags_cff.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from .pfDeepDoubleBvLJetTags_cfi import pfDeepDoubleBvLJetTags from .pfDeepDoubleCvLJetTags_cfi import pfDeepDoubleCvLJetTags diff --git a/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXV2JetTags_cff.py b/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXV2JetTags_cff.py index d2082204cb5a3..3435d4f802f4c 100644 --- a/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXV2JetTags_cff.py +++ b/RecoBTag/ONNXRuntime/python/pfMassIndependentDeepDoubleXV2JetTags_cff.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from .pfDeepDoubleBvLJetTags_cfi import pfDeepDoubleBvLJetTags from .pfDeepDoubleCvLJetTags_cfi import pfDeepDoubleCvLJetTags diff --git a/RecoBTag/ONNXRuntime/test/plotDDX.py b/RecoBTag/ONNXRuntime/test/plotDDX.py index 4ce6ba9d8720c..1ac931dca7258 100644 --- a/RecoBTag/ONNXRuntime/test/plotDDX.py +++ b/RecoBTag/ONNXRuntime/test/plotDDX.py @@ -1,4 +1,3 @@ -from __future__ import print_function import ROOT from DataFormats.FWLite import Handle, Events import numpy as np diff --git a/RecoBTag/ONNXRuntime/test/test_deep_doubleb_cfg_AOD.py b/RecoBTag/ONNXRuntime/test/test_deep_doubleb_cfg_AOD.py index b21627033eb71..630dee6cbc9cf 100644 --- a/RecoBTag/ONNXRuntime/test/test_deep_doubleb_cfg_AOD.py +++ b/RecoBTag/ONNXRuntime/test/test_deep_doubleb_cfg_AOD.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask diff --git a/RecoBTag/PerformanceDB/test/plotPerformanceDB.py b/RecoBTag/PerformanceDB/test/plotPerformanceDB.py index 97644cf79afde..56ba02cc545e4 100644 --- a/RecoBTag/PerformanceDB/test/plotPerformanceDB.py +++ b/RecoBTag/PerformanceDB/test/plotPerformanceDB.py @@ -8,7 +8,6 @@ # #____________________________________________________________ -from __future__ import print_function from builtins import range import sys import math diff --git a/RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h b/RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h index ec29afa6d9621..17add425d7d0e 100644 --- a/RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h +++ b/RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h @@ -8,31 +8,28 @@ #include #include - -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/Exception.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/Math/interface/Vector3D.h" -#include "DataFormats/Math/interface/LorentzVector.h" +#include "DataFormats/BTauReco/interface/CandSecondaryVertexTagInfo.h" +#include "DataFormats/BTauReco/interface/ParticleMasses.h" +#include "DataFormats/BTauReco/interface/SecondaryVertexTagInfo.h" +#include "DataFormats/BTauReco/interface/TaggingVariable.h" +#include "DataFormats/BTauReco/interface/VertexTypes.h" #include "DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h" #include "DataFormats/GeometryVector/interface/GlobalPoint.h" #include "DataFormats/GeometryVector/interface/GlobalVector.h" #include "DataFormats/GeometryVector/interface/VectorUtil.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/BTauReco/interface/SecondaryVertexTagInfo.h" -#include "DataFormats/BTauReco/interface/CandSecondaryVertexTagInfo.h" -#include "DataFormats/BTauReco/interface/TaggingVariable.h" -#include "DataFormats/BTauReco/interface/VertexTypes.h" -#include "DataFormats/BTauReco/interface/ParticleMasses.h" #include "DataFormats/JetReco/interface/PFJet.h" +#include "DataFormats/Math/interface/LorentzVector.h" +#include "DataFormats/Math/interface/Vector3D.h" #include "DataFormats/PatCandidates/interface/Jet.h" - +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/Exception.h" +#include "RecoBTag/SecondaryVertex/interface/TrackKinematics.h" #include "RecoBTag/SecondaryVertex/interface/TrackSelector.h" -#include "RecoBTag/SecondaryVertex/interface/V0Filter.h" #include "RecoBTag/SecondaryVertex/interface/TrackSorting.h" -#include "RecoBTag/SecondaryVertex/interface/TrackKinematics.h" +#include "RecoBTag/SecondaryVertex/interface/V0Filter.h" #define range_for(i, x) for (int i = (x).begin; i != (x).end; i += (x).increment) @@ -69,6 +66,8 @@ class CombinedSVComputer { double &vtx_track_ptSum, double &vtx_track_ESum) const; + static void fillPSetDescription(edm::ParameterSetDescription &desc); + private: bool trackFlip; bool vertexFlip; diff --git a/RecoBTag/SecondaryVertex/src/CombinedSVComputer.cc b/RecoBTag/SecondaryVertex/src/CombinedSVComputer.cc index d83cb48899435..eeca3888aaa5e 100644 --- a/RecoBTag/SecondaryVertex/src/CombinedSVComputer.cc +++ b/RecoBTag/SecondaryVertex/src/CombinedSVComputer.cc @@ -239,3 +239,86 @@ TaggingVariableList CombinedSVComputer::operator()(const CandIPTagInfo &ipInfo, vars.finalize(); return vars; } + +void CombinedSVComputer::fillPSetDescription(edm::ParameterSetDescription &desc) { + { + edm::ParameterSetDescription trackPseudoSelection; + trackPseudoSelection.add("max_pT_dRcut", 0.1); + trackPseudoSelection.add("b_dR", 0.6263); + trackPseudoSelection.add("min_pT", 120.0); + trackPseudoSelection.add("b_pT", 0.3684); + trackPseudoSelection.add("ptMin", 0.0); + trackPseudoSelection.add("max_pT_trackPTcut", 3.0); + trackPseudoSelection.add("max_pT", 500.0); + trackPseudoSelection.add("useVariableJTA", false); + trackPseudoSelection.add("maxDecayLen", 5.0); + trackPseudoSelection.add("qualityClass", "any"); + trackPseudoSelection.add("normChi2Max", 99999.9); + trackPseudoSelection.add("sip2dValMin", -99999.9); + trackPseudoSelection.add("sip3dValMin", -99999.9); + trackPseudoSelection.add("a_dR", -0.001053); + trackPseudoSelection.add("maxDistToAxis", 0.07); + trackPseudoSelection.add("totalHitsMin", 3); + trackPseudoSelection.add("a_pT", 0.005263); + trackPseudoSelection.add("sip2dSigMax", 99999.9); + trackPseudoSelection.add("sip2dValMax", 99999.9); + trackPseudoSelection.add("sip3dSigMax", 99999.9); + trackPseudoSelection.add("sip3dValMax", 99999.9); + trackPseudoSelection.add("min_pT_dRcut", 0.5); + trackPseudoSelection.add("jetDeltaRMax", 0.3); + trackPseudoSelection.add("pixelHitsMin", 0); + trackPseudoSelection.add("sip3dSigMin", -99999.9); + trackPseudoSelection.add("sip2dSigMin", 2.0); + desc.add("trackPseudoSelection", trackPseudoSelection); + } + + { + edm::ParameterSetDescription trackSelection; + trackSelection.add("max_pT_dRcut", 0.1); + trackSelection.add("b_dR", 0.6263); + trackSelection.add("min_pT", 120.0); + trackSelection.add("b_pT", 0.3684); + trackSelection.add("ptMin", 0.0); + trackSelection.add("max_pT_trackPTcut", 3.0); + trackSelection.add("max_pT", 500.0); + trackSelection.add("useVariableJTA", false); + trackSelection.add("maxDecayLen", 5.0); + trackSelection.add("qualityClass", "any"); + trackSelection.add("normChi2Max", 99999.9); + trackSelection.add("sip2dValMin", -99999.9); + trackSelection.add("sip3dValMin", -99999.9); + trackSelection.add("a_dR", -0.001053); + trackSelection.add("maxDistToAxis", 0.07); + trackSelection.add("totalHitsMin", 3); + trackSelection.add("a_pT", 0.005263); + trackSelection.add("sip2dSigMax", 99999.9); + trackSelection.add("sip2dValMax", 99999.9); + trackSelection.add("sip3dSigMax", 99999.9); + trackSelection.add("sip3dValMax", 99999.9); + trackSelection.add("min_pT_dRcut", 0.5); + trackSelection.add("jetDeltaRMax", 0.3); + trackSelection.add("pixelHitsMin", 2); + trackSelection.add("sip3dSigMin", -99999.9); + trackSelection.add("sip2dSigMin", -99999.9); + desc.add("trackSelection", trackSelection); + } + + edm::ParameterSetDescription trackPairV0Filter; + trackPairV0Filter.add("k0sMassWindow", 0.03); + desc.add("trackPairV0Filter", trackPairV0Filter); + + edm::ParameterSetDescription pseudoVertexV0Filter; + pseudoVertexV0Filter.add("k0sMassWindow", 0.05); + desc.add("pseudoVertexV0Filter", pseudoVertexV0Filter); + + desc.add("trackFlip", false); + desc.add("useTrackWeights", true); + desc.add("SoftLeptonFlip", false); + desc.add("pseudoMultiplicityMin", 2); + desc.add("correctVertexMass", true); + desc.add("minimumTrackWeight", 0.5); + desc.add("charmCut", 1.5); + desc.add("trackSort", "sip2dSig"); + desc.add("trackMultiplicityMin", 2); + desc.add("vertexFlip", false); +} diff --git a/RecoEcal/EgammaClusterAlgos/interface/Multi5x5ClusterAlgo.h b/RecoEcal/EgammaClusterAlgos/interface/Multi5x5ClusterAlgo.h index b1cc6dfd48b50..18af1d40265b9 100644 --- a/RecoEcal/EgammaClusterAlgos/interface/Multi5x5ClusterAlgo.h +++ b/RecoEcal/EgammaClusterAlgos/interface/Multi5x5ClusterAlgo.h @@ -21,6 +21,7 @@ #include #include #include +#include typedef std::map RecHitsMap; @@ -31,18 +32,15 @@ class Multi5x5ClusterAlgo { //so we define a proto basic cluster class which contains all the information which would be in a basic cluster //which allows the addition of its seed and the removal of a seed of another cluster easily class ProtoBasicCluster { - float energy_; - EcalRecHit seed_; std::vector > hits_; + EcalRecHit seed_; + float energy_; bool containsSeed_; public: ProtoBasicCluster(); - ProtoBasicCluster(float iEnergy, const EcalRecHit &iSeed, std::vector > &iHits) - : energy_(iEnergy), seed_(iSeed) { - hits_.swap(iHits); - containsSeed_ = isSeedCrysInHits_(); - } + ProtoBasicCluster(float iEnergy, const EcalRecHit &iSeed, std::vector > iHits) + : hits_(std::move(iHits)), seed_(iSeed), energy_(iEnergy), containsSeed_{isSeedCrysInHits_()} {} float energy() const { return energy_; } const EcalRecHit &seed() const { return seed_; } @@ -63,8 +61,8 @@ class Multi5x5ClusterAlgo { const std::vector &v_chstatus, const PositionCalc &posCalc, bool reassignSeedCrysToClusterItSeeds = false) - : ecalBarrelSeedThreshold(ebst), - ecalEndcapSeedThreshold(ecst), + : ecalBarrelSeedThreshold_(ebst), + ecalEndcapSeedThreshold_(ecst), v_chstatus_(v_chstatus), reassignSeedCrysToClusterItSeeds_(reassignSeedCrysToClusterItSeeds) { posCalculator_ = posCalc; @@ -94,60 +92,46 @@ class Multi5x5ClusterAlgo { reco::CaloID::Detectors detector_; // Energy required for a seed: - double ecalBarrelSeedThreshold; - double ecalEndcapSeedThreshold; - - // collection of all rechits - const EcalRecHitCollection *recHits_; - - // The vector of seeds: - std::vector seeds; - - std::vector > whichClusCrysBelongsTo_; - - // The set of used DetID's - std::set used_s; - std::set canSeed_s; // set of crystals not to be added but which can seed - // a new 3x3 (e.g. the outer crystals in a 5x5) - - // The vector of DetId's in the cluster currently reconstructed - std::vector > current_v; + double ecalBarrelSeedThreshold_; + double ecalEndcapSeedThreshold_; - // The vector of clusters - std::vector clusters_v; - std::vector protoClusters_; // recHit flag to be excluded from seeding std::vector v_chstatus_; bool reassignSeedCrysToClusterItSeeds_; //the seed of the 5x5 crystal is sometimes in another basic cluster, however we may want to put it back into the cluster it seeds - void mainSearch(const EcalRecHitCollection *hits, - const CaloSubdetectorGeometry *geometry_p, - const CaloSubdetectorTopology *topology_p, - const CaloSubdetectorGeometry *geometryES_p); + std::vector mainSearch(const EcalRecHitCollection *hits, + const CaloSubdetectorGeometry *geometry_p, + const CaloSubdetectorTopology *topology_p, + const CaloSubdetectorGeometry *geometryES_p, + const std::vector &seeds); // Is the crystal at the navigator position a // local maxiumum in energy? - bool checkMaxima(CaloNavigator &navigator, const EcalRecHitCollection *hits); + bool checkMaxima(CaloNavigator &navigator, const EcalRecHitCollection *hits) const; // prepare the 5x5 taking care over which crystals // are allowed to seed new clusters and which are not // after the preparation is complete - void prepareCluster(CaloNavigator &navigator, - const EcalRecHitCollection *hits, - const CaloSubdetectorGeometry *geometry); + std::vector > prepareCluster(CaloNavigator &navigator, + const EcalRecHitCollection *hits, + const CaloSubdetectorGeometry *geometry, + std::set &used_seeds, + std::set &canSeed_s) const; // Add the crystal with DetId det to the current // vector of crystals if it meets certain criteria - void addCrystal(const DetId &det); + static bool addCrystal(const DetId &det, const EcalRecHitCollection &recHits); // take the crystals in the current_v and build // them into a BasicCluster - void makeCluster(const EcalRecHitCollection *hits, - const CaloSubdetectorGeometry *geometry_p, - const CaloSubdetectorGeometry *geometryES_p, - const EcalRecHitCollection::const_iterator &seedIt, - bool seedOutside); + // NOTE: this can't be const because of posCalculator_ + std::optional makeCluster(const EcalRecHitCollection *hits, + const CaloSubdetectorGeometry *geometry_p, + const CaloSubdetectorGeometry *geometryES_p, + const EcalRecHitCollection::const_iterator &seedIt, + bool seedOutside, + std::vector > ¤t_v); }; #endif diff --git a/RecoEcal/EgammaClusterAlgos/src/Multi5x5ClusterAlgo.cc b/RecoEcal/EgammaClusterAlgos/src/Multi5x5ClusterAlgo.cc index 6480db3362c12..86fa592aea5ee 100644 --- a/RecoEcal/EgammaClusterAlgos/src/Multi5x5ClusterAlgo.cc +++ b/RecoEcal/EgammaClusterAlgos/src/Multi5x5ClusterAlgo.cc @@ -58,24 +58,19 @@ std::vector Multi5x5ClusterAlgo::makeClusters(const EcalRecH reco::CaloID::Detectors detector, bool regional, const std::vector& regions) { - seeds.clear(); - used_s.clear(); - canSeed_s.clear(); - clusters_v.clear(); - - recHits_ = hits; + std::vector seeds; double threshold = 0; std::string ecalPart_string; detector_ = reco::CaloID::DET_NONE; if (detector == reco::CaloID::DET_ECAL_ENDCAP) { detector_ = reco::CaloID::DET_ECAL_ENDCAP; - threshold = ecalEndcapSeedThreshold; + threshold = ecalEndcapSeedThreshold_; ecalPart_string = "EndCap"; } if (detector == reco::CaloID::DET_ECAL_BARREL) { detector_ = reco::CaloID::DET_ECAL_BARREL; - threshold = ecalBarrelSeedThreshold; + threshold = ecalBarrelSeedThreshold_; ecalPart_string = "Barrel"; } @@ -88,20 +83,18 @@ std::vector Multi5x5ClusterAlgo::makeClusters(const EcalRecH nregions = regions.size(); if (!regional || nregions) { - EcalRecHitCollection::const_iterator it; - for (it = hits->begin(); it != hits->end(); it++) { - double energy = it->energy(); + for (auto const& hit : *hits) { + double energy = hit.energy(); if (energy < threshold) continue; // need to check to see if this line is useful! - auto thisCell = geometry_p->getGeometry(it->id()); + auto thisCell = geometry_p->getGeometry(hit.id()); // Require that RecHit is within clustering region in case // of regional reconstruction bool withinRegion = false; if (regional) { - std::vector::const_iterator region; - for (region = regions.begin(); region != regions.end(); region++) { - if (region->inRegion(thisCell->etaPos(), thisCell->phiPos())) { + for (auto const& region : regions) { + if (region.inRegion(thisCell->etaPos(), thisCell->phiPos())) { withinRegion = true; break; } @@ -109,9 +102,9 @@ std::vector Multi5x5ClusterAlgo::makeClusters(const EcalRecH } if (!regional || withinRegion) { - float ET = it->energy() * thisCell->getPosition().basicVector().unit().perp(); + float ET = hit.energy() * thisCell->getPosition().basicVector().unit().perp(); if (ET > threshold) - seeds.push_back(*it); + seeds.push_back(hit); } } } @@ -120,7 +113,7 @@ std::vector Multi5x5ClusterAlgo::makeClusters(const EcalRecH LogTrace("EcalClusters") << "Total number of seeds found in event = " << seeds.size(); - mainSearch(hits, geometry_p, topology_p, geometryES_p); + auto clusters_v = mainSearch(hits, geometry_p, topology_p, geometryES_p, seeds); sort(clusters_v.rbegin(), clusters_v.rend(), isClusterEtLess); LogTrace("EcalClusters") << "---------- end of main search. clusters have been sorted ----"; @@ -130,30 +123,91 @@ std::vector Multi5x5ClusterAlgo::makeClusters(const EcalRecH // Search for clusters // -void Multi5x5ClusterAlgo::mainSearch(const EcalRecHitCollection* hits, - const CaloSubdetectorGeometry* geometry_p, - const CaloSubdetectorTopology* topology_p, - const CaloSubdetectorGeometry* geometryES_p) { +namespace { + class ProtoClusters { + using ProtoBasicCluster = Multi5x5ClusterAlgo::ProtoBasicCluster; + std::vector clusters_; + std::vector > whichClusCrysBelongsTo_; + bool reassignSeedCrysToClusterItSeeds_; + + public: + ProtoClusters(bool reassignSeedCrysToClusterItSeeds) + : reassignSeedCrysToClusterItSeeds_(reassignSeedCrysToClusterItSeeds) {} + void push_back(ProtoBasicCluster&& c) { + clusters_.push_back(std::move(c)); + if (reassignSeedCrysToClusterItSeeds_) { + for (auto const& hit : clusters_.back().hits()) { + whichClusCrysBelongsTo_.push_back(std::pair(hit.first, clusters_.size() - 1)); + } + } + } + std::vector finalize() { + if (reassignSeedCrysToClusterItSeeds_) { + std::sort(whichClusCrysBelongsTo_.begin(), whichClusCrysBelongsTo_.end(), PairSortByFirst()); + + for (size_t clusNr = 0; clusNr < clusters_.size(); clusNr++) { + if (!clusters_[clusNr].containsSeed()) { + const EcalRecHit& seedHit = clusters_[clusNr].seed(); + typedef std::vector >::iterator It; + std::pair result = std::equal_range(whichClusCrysBelongsTo_.begin(), + whichClusCrysBelongsTo_.end(), + seedHit.id(), + PairSortByFirst()); + + if (result.first != result.second) + clusters_[result.first->second].removeHit(seedHit); + clusters_[clusNr].addSeed(); + } + } + } + whichClusCrysBelongsTo_.clear(); + return std::move(clusters_); + } + }; +} // namespace + +std::vector Multi5x5ClusterAlgo::mainSearch(const EcalRecHitCollection* hits, + const CaloSubdetectorGeometry* geometry_p, + const CaloSubdetectorTopology* topology_p, + const CaloSubdetectorGeometry* geometryES_p, + std::vector const& seeds) { LogTrace("EcalClusters") << "Building clusters............"; + // The vector of clusters + std::vector clusters_v; + + // The set of used DetID's + std::set used_s; + // set of crystals not to be added but which can seed + // a new 3x3 (e.g. the outer crystals in a 5x5) + std::set canSeed_s; + + ProtoClusters protoClusters{reassignSeedCrysToClusterItSeeds_}; + // Loop over seeds: - std::vector::iterator it; - for (it = seeds.begin(); it != seeds.end(); it++) { + bool first = true; + for (auto const& seed : seeds) { + struct Guard { + bool& b_; + Guard(bool& b) : b_{b} {}; + ~Guard() { b_ = false; } + }; + Guard guard(first); // check if this crystal is able to seed // (event though it is already used) bool usedButCanSeed = false; - if (canSeed_s.find(it->id()) != canSeed_s.end()) + if (canSeed_s.find(seed.id()) != canSeed_s.end()) usedButCanSeed = true; // avoid seeding for anomalous channels - if (!it->checkFlag(EcalRecHit::kGood)) { // if rechit is good, no need for further checks - if (it->checkFlags(v_chstatus_)) + if (!seed.checkFlag(EcalRecHit::kGood)) { // if rechit is good, no need for further checks + if (seed.checkFlags(v_chstatus_)) continue; } // make sure the current seed does not belong to a cluster already. - if ((used_s.find(it->id()) != used_s.end()) && (usedButCanSeed == false)) { - if (it == seeds.begin()) { + if ((used_s.find(seed.id()) != used_s.end()) && (usedButCanSeed == false)) { + if (first) { LogTrace("EcalClusters") << "##############################################################"; LogTrace("EcalClusters") << "DEBUG ALERT: Highest energy seed already belongs to a cluster!"; LogTrace("EcalClusters") << "##############################################################"; @@ -164,12 +218,9 @@ void Multi5x5ClusterAlgo::mainSearch(const EcalRecHitCollection* hits, continue; } - // clear the vector of hits in current cluster - current_v.clear(); - // Create a navigator at the seed and get seed // energy - CaloNavigator navigator(it->id(), topology_p); + CaloNavigator navigator(seed.id(), topology_p); DetId seedId = navigator.pos(); EcalRecHitCollection::const_iterator seedIt = hits->find(seedId); navigator.setHome(seedId); @@ -180,70 +231,57 @@ void Multi5x5ClusterAlgo::mainSearch(const EcalRecHitCollection* hits, if (localMaxima) { // build the 5x5 taking care over which crystals // can seed new clusters and which can't - prepareCluster(navigator, hits, geometry_p); - } - - // If some crystals in the current vector then - // make them into a cluster - if (!current_v.empty()) { - makeCluster(hits, geometry_p, geometryES_p, seedIt, usedButCanSeed); + auto current_v = prepareCluster(navigator, hits, geometry_p, used_s, canSeed_s); + + // If some crystals in the current vector then + // make them into a cluster + if (!current_v.empty()) { + auto c = makeCluster(hits, geometry_p, geometryES_p, seedIt, usedButCanSeed, current_v); + if (c) { + protoClusters.push_back(std::move(*c)); + } else { + for (auto const& current : current_v) { + used_s.erase(current.first); + } + } + } } - } // End loop on seed crystals - if (reassignSeedCrysToClusterItSeeds_) { - std::sort(whichClusCrysBelongsTo_.begin(), whichClusCrysBelongsTo_.end(), PairSortByFirst()); - - for (size_t clusNr = 0; clusNr < protoClusters_.size(); clusNr++) { - if (!protoClusters_[clusNr].containsSeed()) { - const EcalRecHit& seedHit = protoClusters_[clusNr].seed(); - typedef std::vector >::iterator It; - std::pair result = std::equal_range(whichClusCrysBelongsTo_.begin(), - whichClusCrysBelongsTo_.end(), - seedHit.id(), - PairSortByFirst()); - - if (result.first != result.second) - protoClusters_[result.first->second].removeHit(seedHit); - protoClusters_[clusNr].addSeed(); - } - } - } + auto finalProtoClusters = protoClusters.finalize(); - for (size_t clusNr = 0; clusNr < protoClusters_.size(); clusNr++) { - const ProtoBasicCluster& protoCluster = protoClusters_[clusNr]; - Point position; - position = posCalculator_.Calculate_Location(protoCluster.hits(), hits, geometry_p, geometryES_p); - clusters_v.push_back(reco::BasicCluster(protoCluster.energy(), - position, - reco::CaloID(detector_), - protoCluster.hits(), - reco::CaloCluster::multi5x5, - protoCluster.seed().id())); + for (auto const& protoCluster : finalProtoClusters) { + Point position = posCalculator_.Calculate_Location(protoCluster.hits(), hits, geometry_p, geometryES_p); + clusters_v.emplace_back(protoCluster.energy(), + position, + reco::CaloID(detector_), + protoCluster.hits(), + reco::CaloCluster::multi5x5, + protoCluster.seed().id()); } - protoClusters_.clear(); - whichClusCrysBelongsTo_.clear(); + return clusters_v; } -void Multi5x5ClusterAlgo::makeCluster(const EcalRecHitCollection* hits, - const CaloSubdetectorGeometry* geometry, - const CaloSubdetectorGeometry* geometryES, - const EcalRecHitCollection::const_iterator& seedIt, - bool seedOutside) { +std::optional Multi5x5ClusterAlgo::makeCluster( + const EcalRecHitCollection* hits, + const CaloSubdetectorGeometry* geometry, + const CaloSubdetectorGeometry* geometryES, + const EcalRecHitCollection::const_iterator& seedIt, + bool seedOutside, + std::vector >& current_v) { double energy = 0; //double chi2 = 0; reco::CaloID caloID; Point position; position = posCalculator_.Calculate_Location(current_v, hits, geometry, geometryES); - std::vector >::iterator it; - for (it = current_v.begin(); it != current_v.end(); it++) { - EcalRecHitCollection::const_iterator itt = hits->find((*it).first); + for (auto const& hitInfo : current_v) { + EcalRecHitCollection::const_iterator itt = hits->find(hitInfo.first); EcalRecHit hit_p = *itt; energy += hit_p.energy(); //chi2 += 0; - if ((*it).first.subdetId() == EcalBarrel) { + if (hitInfo.first.subdetId() == EcalBarrel) { caloID = reco::CaloID::DET_ECAL_BARREL; } else { caloID = reco::CaloID::DET_ECAL_ENDCAP; @@ -262,48 +300,39 @@ void Multi5x5ClusterAlgo::makeCluster(const EcalRecHitCollection* hits, // must be at least the seed energy double seedEnergy = seedIt->energy(); if ((seedOutside && energy >= 0) || (!seedOutside && energy >= seedEnergy)) { - if (reassignSeedCrysToClusterItSeeds_) { //if we're not doing this, we dont need this info so lets not bother filling it - for (size_t hitNr = 0; hitNr < current_v.size(); hitNr++) - whichClusCrysBelongsTo_.push_back(std::pair(current_v[hitNr].first, protoClusters_.size())); - } - protoClusters_.push_back(ProtoBasicCluster(energy, *seedIt, current_v)); + return ProtoBasicCluster(energy, *seedIt, std::move(current_v)); // clusters_v.push_back(reco::BasicCluster(energy, position, reco::CaloID(detector_), current_v, reco::CaloCluster::multi5x5, seedIt->id())); // if no valid cluster was built, // then free up these crystals to be used in the next... - } else { - std::vector >::iterator iter; - for (iter = current_v.begin(); iter != current_v.end(); iter++) { - used_s.erase(iter->first); - } //for(iter) } //else + return {}; } -bool Multi5x5ClusterAlgo::checkMaxima(CaloNavigator& navigator, const EcalRecHitCollection* hits) { +bool Multi5x5ClusterAlgo::checkMaxima(CaloNavigator& navigator, const EcalRecHitCollection* hits) const { bool maxima = true; EcalRecHitCollection::const_iterator thisHit; EcalRecHitCollection::const_iterator seedHit = hits->find(navigator.pos()); double seedEnergy = seedHit->energy(); - std::vector swissCrossVec; - swissCrossVec.clear(); + std::array swissCrossVec; - swissCrossVec.push_back(navigator.west()); + swissCrossVec[0] = navigator.west(); navigator.home(); - swissCrossVec.push_back(navigator.east()); + swissCrossVec[1] = navigator.east(); navigator.home(); - swissCrossVec.push_back(navigator.north()); + swissCrossVec[2] = navigator.north(); navigator.home(); - swissCrossVec.push_back(navigator.south()); + swissCrossVec[3] = navigator.south(); navigator.home(); - for (unsigned int i = 0; i < swissCrossVec.size(); ++i) { + for (auto const& det : swissCrossVec) { // look for this hit - thisHit = recHits_->find(swissCrossVec[i]); + thisHit = hits->find(det); // continue if this hit was not found - if ((swissCrossVec[i] == DetId(0)) || thisHit == recHits_->end()) + if ((det == DetId(0)) || thisHit == hits->end()) continue; // the recHit has to be skipped in the local maximum search if it was found @@ -324,9 +353,12 @@ bool Multi5x5ClusterAlgo::checkMaxima(CaloNavigator& navigator, const Eca return maxima; } -void Multi5x5ClusterAlgo::prepareCluster(CaloNavigator& navigator, - const EcalRecHitCollection* hits, - const CaloSubdetectorGeometry* geometry) { +std::vector > Multi5x5ClusterAlgo::prepareCluster(CaloNavigator& navigator, + const EcalRecHitCollection* hits, + const CaloSubdetectorGeometry* geometry, + std::set& used_s, + std::set& canSeed_s) const { + std::vector > current_v; DetId thisDet; std::set::iterator setItr; @@ -344,7 +376,10 @@ void Multi5x5ClusterAlgo::prepareCluster(CaloNavigator& navigator, // add the current crystal //std::cout << "adding " << dx << ", " << dy << std::endl; - addCrystal(thisDet); + if (addCrystal(thisDet, *hits) and (used_s.find(thisDet) == used_s.end())) { + current_v.push_back(std::pair(thisDet, 1.)); // by default hit energy fractions are set at 1. + used_s.insert(thisDet); + } // now consider if we are in an edge (outer 16) // or central (inner 9) region @@ -371,17 +406,12 @@ void Multi5x5ClusterAlgo::prepareCluster(CaloNavigator& navigator, //std::cout << "*** " << std::endl; //std::cout << " current_v contains " << current_v.size() << std::endl; //std::cout << "*** " << std::endl; + return current_v; } -void Multi5x5ClusterAlgo::addCrystal(const DetId& det) { - EcalRecHitCollection::const_iterator thisIt = recHits_->find(det); - if ((thisIt != recHits_->end()) && (thisIt->id() != DetId(0))) { - if ((used_s.find(thisIt->id()) == used_s.end())) { - //std::cout << " ... this is a good crystal and will be added" << std::endl; - current_v.push_back(std::pair(det, 1.)); // by default hit energy fractions are set at 1. - used_s.insert(det); - } - } +bool Multi5x5ClusterAlgo::addCrystal(const DetId& det, const EcalRecHitCollection& recHits) { + auto thisIt = recHits.find(det); + return ((thisIt != recHits.end()) && (thisIt->id() != DetId(0))); } bool Multi5x5ClusterAlgo::ProtoBasicCluster::removeHit(const EcalRecHit& hitToRM) { @@ -421,8 +451,8 @@ bool Multi5x5ClusterAlgo::ProtoBasicCluster::addSeed() { } bool Multi5x5ClusterAlgo::ProtoBasicCluster::isSeedCrysInHits_() const { - for (size_t hitNr = 0; hitNr < hits_.size(); hitNr++) { - if (seed_.id() == hits_[hitNr].first) + for (auto const& hit : hits_) { + if (seed_.id() == hit.first) return true; } return false; diff --git a/RecoEcal/EgammaClusterProducers/src/Multi5x5ClusterProducer.cc b/RecoEcal/EgammaClusterProducers/src/Multi5x5ClusterProducer.cc index 513f227d5068d..993a5b36c6505 100644 --- a/RecoEcal/EgammaClusterProducers/src/Multi5x5ClusterProducer.cc +++ b/RecoEcal/EgammaClusterProducers/src/Multi5x5ClusterProducer.cc @@ -14,6 +14,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/ESGetToken.h" +#include "FWCore/Utilities/interface/EDPutToken.h" #include "FWCore/Utilities/interface/Exception.h" #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" #include "Geometry/CaloGeometry/interface/CaloGeometry.h" @@ -24,6 +25,7 @@ #include "Geometry/Records/interface/CaloGeometryRecord.h" #include "RecoEcal/EgammaClusterAlgos/interface/Multi5x5ClusterAlgo.h" #include "RecoEcal/EgammaCoreTools/interface/PositionCalc.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include #include @@ -34,142 +36,113 @@ class Multi5x5ClusterProducer : public edm::stream::EDProducer<> { public: Multi5x5ClusterProducer(const edm::ParameterSet& ps); - ~Multi5x5ClusterProducer() override; + void produce(edm::Event&, const edm::EventSetup&) final; - void produce(edm::Event&, const edm::EventSetup&) override; + static void fillDescriptions(edm::ConfigurationDescriptions&); private: - int nMaxPrintout_; // max # of printouts - int nEvt_; // internal counter of events + const edm::EDGetTokenT barrelHitToken_; + const edm::EDGetTokenT endcapHitToken_; + const edm::ESGetToken caloGeometryToken_; - // cluster which regions - bool doBarrel_; - bool doEndcap_; - - edm::EDGetTokenT barrelHitToken_; - edm::EDGetTokenT endcapHitToken_; - edm::ESGetToken caloGeometryToken_; - - std::string barrelClusterCollection_; - std::string endcapClusterCollection_; - - PositionCalc posCalculator_; // position calculation algorithm - Multi5x5ClusterAlgo* island_p; + const edm::EDPutTokenT barrelToken_; + const edm::EDPutTokenT endcapToken_; - bool counterExceeded() const { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0)); } + Multi5x5ClusterAlgo island_; - const EcalRecHitCollection* getCollection(edm::Event& evt, const edm::EDGetTokenT& token); - - void clusterizeECALPart(edm::Event& evt, - const edm::EventSetup& es, - const edm::EDGetTokenT& token, - const std::string& clusterCollection, - const reco::CaloID::Detectors detector); - - void outputValidationInfo(reco::CaloClusterPtrVector& clusterPtrVector); + // cluster which regions + const bool doBarrel_; + const bool doEndcap_; + + reco::BasicClusterCollection clusterizeECALPart(const EcalRecHitCollection& hits, + const edm::EventSetup& es, + const reco::CaloID::Detectors detector); + + reco::BasicClusterCollection makeClusters(const EcalRecHitCollection& hits, + const CaloSubdetectorGeometry* geom, + const CaloSubdetectorGeometry* preshower, + const CaloSubdetectorTopology* topology, + const reco::CaloID::Detectors detector); }; #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(Multi5x5ClusterProducer); -Multi5x5ClusterProducer::Multi5x5ClusterProducer(const edm::ParameterSet& ps) { - // Parameters to identify the hit collections - barrelHitToken_ = consumes(ps.getParameter("barrelHitTag")); - - endcapHitToken_ = consumes(ps.getParameter("endcapHitTag")); - - //EventSetup Token for CaloGeometry - caloGeometryToken_ = esConsumes(); - - // should cluster algo be run in barrel and endcap? - doEndcap_ = ps.getParameter("doEndcap"); - doBarrel_ = ps.getParameter("doBarrel"); - - // The names of the produced cluster collections - barrelClusterCollection_ = ps.getParameter("barrelClusterCollection"); - endcapClusterCollection_ = ps.getParameter("endcapClusterCollection"); - - // Island algorithm parameters - double barrelSeedThreshold = ps.getParameter("IslandBarrelSeedThr"); - double endcapSeedThreshold = ps.getParameter("IslandEndcapSeedThr"); - - const std::vector flagnames = ps.getParameter >("RecHitFlagToBeExcluded"); - - const std::vector v_chstatus = StringToEnumValue(flagnames); - - // Parameters for the position calculation: - edm::ParameterSet posCalcParameters = ps.getParameter("posCalcParameters"); - posCalculator_ = PositionCalc(posCalcParameters); - - // Produces a collection of barrel and a collection of endcap clusters - produces(endcapClusterCollection_); - produces(barrelClusterCollection_); - - bool reassignSeedCrysToClusterItSeeds = false; - if (ps.exists("reassignSeedCrysToClusterItSeeds")) - reassignSeedCrysToClusterItSeeds = ps.getParameter("reassignSeedCrysToClusterItSeeds"); - - island_p = new Multi5x5ClusterAlgo( - barrelSeedThreshold, endcapSeedThreshold, v_chstatus, posCalculator_, reassignSeedCrysToClusterItSeeds); - - nEvt_ = 0; +Multi5x5ClusterProducer::Multi5x5ClusterProducer(const edm::ParameterSet& ps) + : barrelHitToken_{consumes(ps.getParameter("barrelHitTag"))}, + endcapHitToken_{consumes(ps.getParameter("endcapHitTag"))}, + caloGeometryToken_{esConsumes()}, + barrelToken_{produces(ps.getParameter("barrelClusterCollection"))}, + endcapToken_{produces(ps.getParameter("endcapClusterCollection"))}, + island_{ps.getParameter("IslandBarrelSeedThr"), + ps.getParameter("IslandEndcapSeedThr"), + StringToEnumValue(ps.getParameter>("RecHitFlagToBeExcluded")), + PositionCalc(ps.getParameter("posCalcParameters")), + ps.getParameter("reassignSeedCrysToClusterItSeeds")}, + doBarrel_{ps.getParameter("doBarrel")}, + doEndcap_{ps.getParameter("doEndcap")} {} + +void Multi5x5ClusterProducer::fillDescriptions(edm::ConfigurationDescriptions& iDesc) { + edm::ParameterSetDescription ps; + ps.add("barrelHitTag"); + ps.add("endcapHitTag"); + ps.add("doEndcap"); + ps.add("doBarrel"); + ps.add("barrelClusterCollection"); + ps.add("endcapClusterCollection"); + ps.add("IslandBarrelSeedThr"); + ps.add("IslandEndcapSeedThr"); + ps.add>("RecHitFlagToBeExcluded"); + + edm::ParameterSetDescription posCal; + posCal.add("LogWeighted"); + posCal.add("T0_barl"); + posCal.add("T0_endc"); + posCal.add("T0_endcPresh"); + posCal.add("W0"); + posCal.add("X0"); + ps.add("posCalcParameters", posCal); + + ps.add("reassignSeedCrysToClusterItSeeds", false); + iDesc.addDefault(ps); } -Multi5x5ClusterProducer::~Multi5x5ClusterProducer() { delete island_p; } - void Multi5x5ClusterProducer::produce(edm::Event& evt, const edm::EventSetup& es) { if (doEndcap_) { - clusterizeECALPart(evt, es, endcapHitToken_, endcapClusterCollection_, reco::CaloID::DET_ECAL_ENDCAP); + // get the hit collection from the event: + const EcalRecHitCollection& hitCollection = evt.get(endcapHitToken_); + evt.emplace(endcapToken_, clusterizeECALPart(hitCollection, es, reco::CaloID::DET_ECAL_ENDCAP)); } if (doBarrel_) { - clusterizeECALPart(evt, es, barrelHitToken_, barrelClusterCollection_, reco::CaloID::DET_ECAL_BARREL); + // get the hit collection from the event: + const EcalRecHitCollection& hitCollection = evt.get(barrelHitToken_); + evt.emplace(barrelToken_, clusterizeECALPart(hitCollection, es, reco::CaloID::DET_ECAL_BARREL)); } - - nEvt_++; } -const EcalRecHitCollection* Multi5x5ClusterProducer::getCollection( - edm::Event& evt, const edm::EDGetTokenT& token) { - edm::Handle rhcHandle; - evt.getByToken(token, rhcHandle); - return rhcHandle.product(); +reco::BasicClusterCollection Multi5x5ClusterProducer::makeClusters(const EcalRecHitCollection& hits, + const CaloSubdetectorGeometry* geom, + const CaloSubdetectorGeometry* preshower, + const CaloSubdetectorTopology* topology, + const reco::CaloID::Detectors detector) { + // Run the clusterization algorithm: + return island_.makeClusters(&hits, geom, topology, preshower, detector); } -void Multi5x5ClusterProducer::clusterizeECALPart(edm::Event& evt, - const edm::EventSetup& es, - const edm::EDGetTokenT& token, - const std::string& clusterCollection, - const reco::CaloID::Detectors detector) { - // get the hit collection from the event: - const EcalRecHitCollection* hitCollection_p = getCollection(evt, token); - +reco::BasicClusterCollection Multi5x5ClusterProducer::clusterizeECALPart(const EcalRecHitCollection& hitCollection, + const edm::EventSetup& es, + const reco::CaloID::Detectors detector) { // get the geometry and topology from the event setup: - edm::ESHandle geoHandle = es.getHandle(caloGeometryToken_); - - const CaloSubdetectorGeometry* geometry_p; - std::unique_ptr topology_p; + CaloGeometry const& geo = es.getData(caloGeometryToken_); + const CaloSubdetectorGeometry* preshower_p = geo.getSubdetectorGeometry(DetId::Ecal, EcalPreshower); if (detector == reco::CaloID::DET_ECAL_BARREL) { - geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalBarrel); - topology_p = std::make_unique(*geoHandle); + auto geometry_p = geo.getSubdetectorGeometry(DetId::Ecal, EcalBarrel); + EcalBarrelTopology topology{geo}; + return makeClusters(hitCollection, geometry_p, preshower_p, &topology, detector); } else { - geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalEndcap); - topology_p = std::make_unique(*geoHandle); + auto geometry_p = geo.getSubdetectorGeometry(DetId::Ecal, EcalEndcap); + EcalEndcapTopology topology{geo}; + return makeClusters(hitCollection, geometry_p, preshower_p, &topology, detector); } - - const CaloSubdetectorGeometry* geometryES_p; - geometryES_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower); - - // Run the clusterization algorithm: - reco::BasicClusterCollection clusters; - clusters = island_p->makeClusters(hitCollection_p, geometry_p, topology_p.get(), geometryES_p, detector); - - // create a unique_ptr to a BasicClusterCollection, copy the barrel clusters into it and put in the Event: - auto clusters_p = std::make_unique(); - clusters_p->assign(clusters.begin(), clusters.end()); - edm::OrphanHandle bccHandle; - if (detector == reco::CaloID::DET_ECAL_BARREL) - bccHandle = evt.put(std::move(clusters_p), barrelClusterCollection_); - else - bccHandle = evt.put(std::move(clusters_p), endcapClusterCollection_); } diff --git a/RecoEgamma/EgammaElectronProducers/plugins/GsfElectronProducer.cc b/RecoEgamma/EgammaElectronProducers/plugins/GsfElectronProducer.cc index 8fae5afe50d92..1cea490a6b23b 100644 --- a/RecoEgamma/EgammaElectronProducers/plugins/GsfElectronProducer.cc +++ b/RecoEgamma/EgammaElectronProducers/plugins/GsfElectronProducer.cc @@ -35,8 +35,7 @@ namespace { const GsfElectronAlgo::HeavyObjectCache* hoc, reco::VertexCollection const& vertices, bool dnnPFidEnabled, - float extetaboundary, - const std::vector& tfSessions) { + float extetaboundary) { std::vector mva_outputs(electrons.size()); size_t iele = 0; for (auto& el : electrons) { @@ -53,7 +52,7 @@ namespace { if (dnnPFidEnabled) { // Here send the list of electrons to the ElectronDNNEstimator and get back the values for all the electrons in one go LogDebug("GsfElectronProducer") << "Getting DNN PFId for ele"; - const auto& dnn_ele_pfid = hoc->iElectronDNNEstimator->evaluate(electrons, tfSessions); + const auto& dnn_ele_pfid = hoc->iElectronDNNEstimator->evaluate(electrons); int jele = 0; for (auto& el : electrons) { const auto& [iModel, values] = dnn_ele_pfid[jele]; @@ -165,8 +164,6 @@ class GsfElectronProducer : public edm::stream::EDProducer tfSessions_; - edm::ESGetToken hcalCutsToken_; bool cutsFromDB_; }; @@ -572,17 +569,9 @@ GsfElectronProducer::GsfElectronProducer(const edm::ParameterSet& cfg, const Gsf cfg.getParameter("trkIsolHEEP03Cfg"), cfg.getParameter("trkIsolHEEP04Cfg"), consumesCollector()); - - if (dnnPFidEnabled_) { - tfSessions_ = gcache->iElectronDNNEstimator->getSessions(); - } } -void GsfElectronProducer::endStream() { - for (auto session : tfSessions_) { - tensorflow::closeSession(session); - } -} +void GsfElectronProducer::endStream() {} void GsfElectronProducer::checkEcalSeedingParameters(edm::ParameterSet const& pset) { if (!pset.exists("SeedConfiguration")) { @@ -761,8 +750,7 @@ void GsfElectronProducer::produce(edm::Event& event, const edm::EventSetup& setu for (auto& el : electrons) { el.setMvaInput(gsfMVAInputMap.find(el.gsfTrack())->second); // set Run2 MVA inputs } - setMVAOutputs( - electrons, globalCache(), event.get(inputCfg_.vtxCollectionTag), dnnPFidEnabled_, extetaboundary_, tfSessions_); + setMVAOutputs(electrons, globalCache(), event.get(inputCfg_.vtxCollectionTag), dnnPFidEnabled_, extetaboundary_); } // all electrons diff --git a/RecoEgamma/EgammaElectronProducers/test/dbs_discovery.py b/RecoEgamma/EgammaElectronProducers/test/dbs_discovery.py index 18254a1772376..14045f60114c5 100644 --- a/RecoEgamma/EgammaElectronProducers/test/dbs_discovery.py +++ b/RecoEgamma/EgammaElectronProducers/test/dbs_discovery.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import httplib, urllib, urllib2, types, string, os, sys # return the list of files obtained from the data discovery and based upon environnement variables: diff --git a/RecoEgamma/EgammaIsolationAlgos/plugins/SuperclusValueMapProducer.cc b/RecoEgamma/EgammaIsolationAlgos/plugins/SuperclusValueMapProducer.cc index 28ee8eac7ebe3..1c055ac68326a 100644 --- a/RecoEgamma/EgammaIsolationAlgos/plugins/SuperclusValueMapProducer.cc +++ b/RecoEgamma/EgammaIsolationAlgos/plugins/SuperclusValueMapProducer.cc @@ -18,7 +18,7 @@ class SuperclusValueMapProducer : public edm::stream::EDProducer<> { public: explicit SuperclusValueMapProducer(const edm::ParameterSet&); - ~SuperclusValueMapProducer() = default; + ~SuperclusValueMapProducer() override = default; private: void produce(edm::Event&, const edm::EventSetup&) override; @@ -108,6 +108,7 @@ std::vector> SuperclusValueMapP const std::vector& tags) { std::vector> out; + out.reserve(tags.size()); for (const auto& tag : tags) out.push_back(consumes(tag)); diff --git a/RecoEgamma/EgammaPhotonProducers/src/GEDPhotonProducer.cc b/RecoEgamma/EgammaPhotonProducers/src/GEDPhotonProducer.cc index 009467ec07b4d..594d3e8be0813 100644 --- a/RecoEgamma/EgammaPhotonProducers/src/GEDPhotonProducer.cc +++ b/RecoEgamma/EgammaPhotonProducers/src/GEDPhotonProducer.cc @@ -222,7 +222,6 @@ class GEDPhotonProducer : public edm::stream::EDProducer tfSessions_; double ecaldrMax_; double ecaldrVetoBarrel_; @@ -477,9 +476,6 @@ GEDPhotonProducer::GEDPhotonProducer(const edm::ParameterSet& config, const Cach const auto& pset_dnn = config.getParameter("PhotonDNNPFid"); dnnPFidEnabled_ = pset_dnn.getParameter("enabled"); - if (dnnPFidEnabled_) { - tfSessions_ = gcache->photonDNNEstimator->getSessions(); - } } std::unique_ptr GEDPhotonProducer::initializeGlobalCache(const edm::ParameterSet& config) { @@ -487,11 +483,7 @@ std::unique_ptr GEDPhotonProducer::initializeGlobalCache(const edm::P return std::make_unique(config); } -void GEDPhotonProducer::endStream() { - for (auto session : tfSessions_) { - tensorflow::closeSession(session); - } -} +void GEDPhotonProducer::endStream() {} void GEDPhotonProducer::produce(edm::Event& theEvent, const edm::EventSetup& eventSetup) { using namespace edm; @@ -1041,7 +1033,7 @@ void GEDPhotonProducer::fillPhotonCollection(edm::Event& evt, if (dnnPFidEnabled_) { // Here send the list of photons to the PhotonDNNEstimator and get back the values for all the photons in one go LogDebug("GEDPhotonProducer") << "Getting DNN PFId for photons"; - const auto& dnn_photon_pfid = globalCache()->photonDNNEstimator->evaluate(outputPhotonCollection, tfSessions_); + const auto& dnn_photon_pfid = globalCache()->photonDNNEstimator->evaluate(outputPhotonCollection); size_t ipho = 0; for (auto& photon : outputPhotonCollection) { const auto& [iModel, values] = dnn_photon_pfid[ipho]; diff --git a/RecoEgamma/EgammaTools/interface/EgammaDNNHelper.h b/RecoEgamma/EgammaTools/interface/EgammaDNNHelper.h index 86e4be7734c4a..f2839aa61942c 100644 --- a/RecoEgamma/EgammaTools/interface/EgammaDNNHelper.h +++ b/RecoEgamma/EgammaTools/interface/EgammaDNNHelper.h @@ -42,7 +42,6 @@ namespace egammaTools { public: EgammaDNNHelper(const DNNConfiguration&, const ModelSelector& sel, const std::vector& availableVars); - std::vector getSessions() const; // Function getting the input vector for a specific electron, already scaled // together with the model index it has to be used. // The model index is determined by the ModelSelector functor passed in the constructor @@ -50,11 +49,10 @@ namespace egammaTools { std::pair> getScaledInputs(const std::map& variables) const; std::vector>> evaluate( - const std::vector>& candidates, - const std::vector& sessions) const; + const std::vector>& candidates) const; private: - void initTensorFlowGraphs(); + void initTensorFlowSessions(); void initScalerFiles(const std::vector& availableVars); const DNNConfiguration cfg_; @@ -64,7 +62,8 @@ namespace egammaTools { // Number of inputs for each loaded model std::vector nInputs_; - std::vector> graphDefs_; + // TF SessionCache stores both the grapha and the session of each model + std::vector> tf_sessions_cache_; // List of input variables for each of the model; std::vector> featuresMap_; diff --git a/RecoEgamma/EgammaTools/plugins/EGFull5x5ShowerShapeModifier.cc b/RecoEgamma/EgammaTools/plugins/EGFull5x5ShowerShapeModifier.cc index 3f1c0728eb68a..8c36a6df6ef85 100644 --- a/RecoEgamma/EgammaTools/plugins/EGFull5x5ShowerShapeModifier.cc +++ b/RecoEgamma/EgammaTools/plugins/EGFull5x5ShowerShapeModifier.cc @@ -12,7 +12,7 @@ namespace { template inline void make_consumes(const T& tag, edm::EDGetTokenT& tok, V& sume) { if (!(empty_tag == tag)) - tok = sume.template consumes(tag); + tok = sume.consumes(tag); } } // namespace diff --git a/RecoEgamma/EgammaTools/src/EgammaDNNHelper.cc b/RecoEgamma/EgammaTools/src/EgammaDNNHelper.cc index a404dd75d8add..a81bd92672b8b 100644 --- a/RecoEgamma/EgammaTools/src/EgammaDNNHelper.cc +++ b/RecoEgamma/EgammaTools/src/EgammaDNNHelper.cc @@ -9,31 +9,23 @@ using namespace egammaTools; EgammaDNNHelper::EgammaDNNHelper(const DNNConfiguration& cfg, const ModelSelector& modelSelector, const std::vector& availableVars) - : cfg_(cfg), modelSelector_(modelSelector), nModels_(cfg_.modelsFiles.size()), graphDefs_(cfg_.modelsFiles.size()) { - initTensorFlowGraphs(); + : cfg_(cfg), + modelSelector_(modelSelector), + nModels_(cfg_.modelsFiles.size()), + tf_sessions_cache_(cfg_.modelsFiles.size()) { + initTensorFlowSessions(); initScalerFiles(availableVars); } -void EgammaDNNHelper::initTensorFlowGraphs() { +void EgammaDNNHelper::initTensorFlowSessions() { // load the graph definition - LogDebug("EgammaDNNHelper") << "Loading " << nModels_ << " graphs"; + LogDebug("EgammaDNNHelper") << "Loading " << nModels_ << " graphs and sessions"; size_t i = 0; - for (const auto& model_file : cfg_.modelsFiles) { - graphDefs_[i] = - std::unique_ptr(tensorflow::loadGraphDef(edm::FileInPath(model_file).fullPath())); + for (auto& model_file : cfg_.modelsFiles) { + tf_sessions_cache_[i] = std::make_unique(edm::FileInPath(model_file).fullPath()); i++; } -} - -std::vector EgammaDNNHelper::getSessions() const { - std::vector sessions; - LogDebug("EgammaDNNHelper") << "Starting " << nModels_ << " TF sessions"; - sessions.reserve(graphDefs_.size()); - for (const auto& graphDef : graphDefs_) { - sessions.push_back(tensorflow::createSession(graphDef.get())); - } - LogDebug("EgammaDNNHelper") << "TF sessions started"; - return sessions; + LogDebug("EgammaDNNHelper") << "TF sessions initialized"; } void EgammaDNNHelper::initScalerFiles(const std::vector& availableVars) { @@ -99,8 +91,7 @@ std::pair> EgammaDNNHelper::getScaledInputs( } std::vector>> EgammaDNNHelper::evaluate( - const std::vector>& candidates, - const std::vector& sessions) const { + const std::vector>& candidates) const { /* Evaluate the PFID DNN for all the electrons/photons. nModels_ are defined depending on modelIndex --> we need to build N input tensors to evaluate @@ -162,7 +153,10 @@ std::vector>> EgammaDNNHelper::evaluate( continue; //Skip model witout inputs std::vector output; LogDebug("EgammaDNNHelper") << "Run model: " << m << " with " << counts[m] << "objects"; - tensorflow::run(sessions[m], {{cfg_.inputTensorName, input_tensors[m]}}, {cfg_.outputTensorName}, &output); + tensorflow::run(tf_sessions_cache_[m]->getSession(), + {{cfg_.inputTensorName, input_tensors[m]}}, + {cfg_.outputTensorName}, + &output); // Get the output and save the ElectronDNNEstimator::outputDim numbers along with the ele index const auto& r = output[0].tensor(); // Iterate on the list of elements in the batch --> many electrons diff --git a/RecoEgamma/ElectronIdentification/interface/ElectronDNNEstimator.h b/RecoEgamma/ElectronIdentification/interface/ElectronDNNEstimator.h index 2779cb3dee577..3d94b4319fd31 100644 --- a/RecoEgamma/ElectronIdentification/interface/ElectronDNNEstimator.h +++ b/RecoEgamma/ElectronIdentification/interface/ElectronDNNEstimator.h @@ -13,15 +13,11 @@ class ElectronDNNEstimator { public: ElectronDNNEstimator(const egammaTools::DNNConfiguration&, const bool useEBModelInGap); - std::vector getSessions() const; - ; - // Function returning a map with all the possible variables and their name std::map getInputsVars(const reco::GsfElectron& ele) const; // Evaluate the DNN on all the electrons with the correct model - std::vector>> evaluate(const reco::GsfElectronCollection& ele, - const std::vector& sessions) const; + std::vector>> evaluate(const reco::GsfElectronCollection& ele) const; // List of input variables names used to check the variables request as // inputs in a dynamic way from configuration file. diff --git a/RecoEgamma/ElectronIdentification/src/ElectronDNNEstimator.cc b/RecoEgamma/ElectronIdentification/src/ElectronDNNEstimator.cc index 269c41477292b..02694c2b4f4ac 100644 --- a/RecoEgamma/ElectronIdentification/src/ElectronDNNEstimator.cc +++ b/RecoEgamma/ElectronIdentification/src/ElectronDNNEstimator.cc @@ -47,8 +47,6 @@ ElectronDNNEstimator::ElectronDNNEstimator(const egammaTools::DNNConfiguration& ElectronDNNEstimator::dnnAvaibleInputs), useEBModelInGap_(useEBModelInGap) {} -std::vector ElectronDNNEstimator::getSessions() const { return dnnHelper_.getSessions(); }; - const std::vector ElectronDNNEstimator::dnnAvaibleInputs = { {"pt", "eta", @@ -157,12 +155,12 @@ std::map ElectronDNNEstimator::getInputsVars(const reco::Gsf } std::vector>> ElectronDNNEstimator::evaluate( - const reco::GsfElectronCollection& electrons, const std::vector& sessions) const { + const reco::GsfElectronCollection& electrons) const { // Collect the map of variables for each candidate and call the dnnHelper // Scaling, model selection and running is performed in the helper std::vector> inputs; for (const auto& ele : electrons) { inputs.push_back(getInputsVars(ele)); } - return dnnHelper_.evaluate(inputs, sessions); + return dnnHelper_.evaluate(inputs); } diff --git a/RecoEgamma/PhotonIdentification/interface/PhotonDNNEstimator.h b/RecoEgamma/PhotonIdentification/interface/PhotonDNNEstimator.h index 220e2e2517451..9b9fcb9ec1840 100644 --- a/RecoEgamma/PhotonIdentification/interface/PhotonDNNEstimator.h +++ b/RecoEgamma/PhotonIdentification/interface/PhotonDNNEstimator.h @@ -14,15 +14,11 @@ class PhotonDNNEstimator { public: PhotonDNNEstimator(const egammaTools::DNNConfiguration&, const bool useEBModelInGap); - std::vector getSessions() const; - ; - // Function returning a map with all the possible variables and their name std::map getInputsVars(const reco::Photon& ele) const; // Evaluate the DNN on all the electrons with the correct model - std::vector>> evaluate(const reco::PhotonCollection& ele, - const std::vector& sessions) const; + std::vector>> evaluate(const reco::PhotonCollection& ele) const; // List of input variables names used to check the variables request as // inputs in a dynamic way from configuration file. diff --git a/RecoEgamma/PhotonIdentification/plugins/PhotonXGBoostProducer.cc b/RecoEgamma/PhotonIdentification/plugins/PhotonXGBoostProducer.cc index 5553bc4cdd752..54db8d79a7c5d 100644 --- a/RecoEgamma/PhotonIdentification/plugins/PhotonXGBoostProducer.cc +++ b/RecoEgamma/PhotonIdentification/plugins/PhotonXGBoostProducer.cc @@ -20,7 +20,7 @@ class PhotonXGBoostProducer : public edm::global::EDProducer<> { public: explicit PhotonXGBoostProducer(edm::ParameterSet const&); - ~PhotonXGBoostProducer() = default; + ~PhotonXGBoostProducer() override = default; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); diff --git a/RecoEgamma/PhotonIdentification/src/PhotonDNNEstimator.cc b/RecoEgamma/PhotonIdentification/src/PhotonDNNEstimator.cc index 524c836b6a301..6b15367c5025d 100644 --- a/RecoEgamma/PhotonIdentification/src/PhotonDNNEstimator.cc +++ b/RecoEgamma/PhotonIdentification/src/PhotonDNNEstimator.cc @@ -29,8 +29,6 @@ PhotonDNNEstimator::PhotonDNNEstimator(const egammaTools::DNNConfiguration& cfg, PhotonDNNEstimator::dnnAvaibleInputs), useEBModelInGap_(useEBModelInGap) {} -std::vector PhotonDNNEstimator::getSessions() const { return dnnHelper_.getSessions(); }; - const std::vector PhotonDNNEstimator::dnnAvaibleInputs = {{"pt", "eta", "hadTowOverEm", @@ -67,12 +65,12 @@ std::map PhotonDNNEstimator::getInputsVars(const reco::Photo } std::vector>> PhotonDNNEstimator::evaluate( - const reco::PhotonCollection& photons, const std::vector& sessions) const { + const reco::PhotonCollection& photons) const { // Collect the map of variables for each candidate and call the dnnHelper // Scaling, model selection and running is performed in the helper std::vector> inputs; for (const auto& photon : photons) { inputs.push_back(getInputsVars(photon)); } - return dnnHelper_.evaluate(inputs, sessions); + return dnnHelper_.evaluate(inputs); } diff --git a/RecoHGCal/Configuration/python/RecoHGCal_EventContent_cff.py b/RecoHGCal/Configuration/python/RecoHGCal_EventContent_cff.py index d23503818ea8d..679ee3c68fd4a 100644 --- a/RecoHGCal/Configuration/python/RecoHGCal_EventContent_cff.py +++ b/RecoHGCal/Configuration/python/RecoHGCal_EventContent_cff.py @@ -23,7 +23,7 @@ ['keep *_pfTICL_*_*'] + ['keep CaloParticles_mix_*_*', 'keep SimClusters_mix_*_*', 'keep *_SimClusterToCaloParticleAssociation*_*_*'] + ['keep *_SimClusterToCaloParticleAssociation*_*_*', 'keep *_layerClusterSimClusterAssociationProducer_*_*','keep *_layerClusterCaloParticleAssociationProducer_*_*', 'keep *_layerClusterSimTracksterAssociationProducer_*_*'] + - ['keep *_tracksterSimTracksterAssociation*_*_*' , 'keep *_tracksterSimTracksterFromCPsAssociation*_*_*' ] + ['keep *_allTrackstersToSimTrackstersAssociations*_*_*'] ) ) @@ -50,7 +50,8 @@ 'keep *_ticlSimTracksters_*_*', 'keep *_ticlSimTICLCandidates_*_*', 'keep *_ticlSimTrackstersFromCP_*_*', - 'keep *_SimTau*_*_*' + 'keep *_SimTau*_*_*', + 'keep *_allTrackstersToSimTrackstersAssociations*_*_*' ) ) TICL_FEVT.outputCommands.extend(TICL_RECO.outputCommands) @@ -61,6 +62,7 @@ 'keep *_ticlSimTrackstersFromCP_*_*', 'keep CaloParticles_mix_*_*', 'keep SimClusters_mix_*_*', 'keep *_SimClusterToCaloParticleAssociation*_*_*', 'keep *_SimClusterToCaloParticleAssociation*_*_*', 'keep *_layerClusterSimClusterAssociationProducer_*_*','keep *_layerClusterCaloParticleAssociationProducer_*_*', 'keep *_layerClusterSimTracksterAssociationProducer_*_*', + 'keep *_SimTau*_*_*', 'keep *_allTrackstersToSimTrackstersAssociations*_*_*' ) @@ -110,10 +112,10 @@ def cleanOutputAndSet(outputModule, ticl_outputCommads): 'keep *_layerClusterCaloParticleAssociationProducer_*_*', 'keep *_randomEngineStateProducer_*_*', 'keep *_layerClusterSimTracksterAssociationProducer_*_*', - 'keep *_tracksterSimTracksterAssociation*_*_*', - 'keep *_tracksterSimTracksterFromCPsAssociation*_*_*', 'keep *_SimClusterToCaloParticleAssociation*_*_*', - 'keep *_simClusterToCaloParticleAssociator*_*_*' + 'keep *_simClusterToCaloParticleAssociator*_*_*', + 'keep *_SimTau*_*_*', + 'keep *_allTrackstersToSimTrackstersAssociations*_*_*' ]) if hasattr(process, 'FEVTDEBUGEventContent'): diff --git a/RecoHGCal/TICL/plugins/SimTrackstersProducer.cc b/RecoHGCal/TICL/plugins/SimTrackstersProducer.cc index d79a76185189c..2457a53d4007e 100644 --- a/RecoHGCal/TICL/plugins/SimTrackstersProducer.cc +++ b/RecoHGCal/TICL/plugins/SimTrackstersProducer.cc @@ -32,8 +32,6 @@ #include "SimDataFormats/CaloAnalysis/interface/MtdSimTracksterFwd.h" #include "RecoLocalCalo/HGCalRecAlgos/interface/RecHitTools.h" -#include "SimDataFormats/Vertex/interface/SimVertex.h" - #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h" #include "SimDataFormats/TrackingAnalysis/interface/UniqueSimTrackId.h" @@ -41,6 +39,8 @@ #include "DataFormats/HGCalReco/interface/Common.h" +#include + #include "TrackstersPCA.h" #include #include @@ -96,7 +96,6 @@ class SimTrackstersProducer : public edm::stream::EDProducer<> { const float fractionCut_; const float qualityCutTrack_; const edm::EDGetTokenT> trackingParticleToken_; - const edm::EDGetTokenT> simVerticesToken_; const edm::EDGetTokenT> recoTracksToken_; const StringCutObjectSelector cutTk_; @@ -127,7 +126,6 @@ SimTrackstersProducer::SimTrackstersProducer(const edm::ParameterSet& ps) qualityCutTrack_(ps.getParameter("qualityCutTrack")), trackingParticleToken_( consumes>(ps.getParameter("trackingParticles"))), - simVerticesToken_(consumes>(ps.getParameter("simVertices"))), recoTracksToken_(consumes>(ps.getParameter("recoTracks"))), cutTk_(ps.getParameter("cutTk")), associatormapStRsToken_(consumes(ps.getParameter("tpToTrack"))), @@ -162,7 +160,6 @@ void SimTrackstersProducer::fillDescriptions(edm::ConfigurationDescriptions& des desc.add("tpToTrack", edm::InputTag("trackingParticleRecoTrackAsssociation")); desc.add("trackingParticles", edm::InputTag("mix", "MergedTrackTruth")); - desc.add("simVertices", edm::InputTag("g4SimHits")); desc.add("simTrackToTPMap", edm::InputTag("simHitTPAssocProducer", "simTrackToTP")); desc.add("fractionCut", 0.); @@ -225,7 +222,7 @@ void SimTrackstersProducer::addTrackster( tmpTrackster.setRegressedEnergy(energy); tmpTrackster.setIteration(iter); tmpTrackster.setSeed(seed, index); - tmpTrackster.setBoundaryTime(time * 1e9); + tmpTrackster.setBoundaryTime(time); if (add) { result[index] = tmpTrackster; loop_index += 1; @@ -259,7 +256,6 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es) const auto& simClustersToRecoColl = evt.get(associatorMapSimClusterToReco_token_); const auto& caloParticlesToRecoColl = evt.get(associatorMapCaloParticleToReco_token_); - const auto& simVertices = evt.get(simVerticesToken_); edm::Handle> trackingParticles_h; evt.getByToken(trackingParticleToken_, trackingParticles_h); @@ -293,7 +289,8 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es) // Create a Trackster from the object entering HGCal if (cp.g4Tracks()[0].crossedBoundary()) { regr_energy = cp.g4Tracks()[0].getMomentumAtBoundary().energy(); - float time = cp.g4Tracks()[0].getPositionAtBoundary().t(); + float time = cp.g4Tracks()[0].getPositionAtBoundary().t() * + CLHEP::s; // Geant4 time is in seconds, convert to ns (CLHEP::s = 1e9) addTrackster(cpIndex, lcVec, inputClusterMask, @@ -323,7 +320,8 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es) sc.g4Tracks()[0].getMomentumAtBoundary().energy(), sc.pdgId(), sc.charge(), - sc.g4Tracks()[0].getPositionAtBoundary().t(), + sc.g4Tracks()[0].getPositionAtBoundary().t() * + CLHEP::s, // Geant4 time is in seconds, convert to ns (CLHEP::s = 1e9) scRef.id(), ticl::Trackster::SIM, *output_mask, @@ -339,7 +337,7 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es) } scSimTracksterIdx.shrink_to_fit(); } - float time = simVertices[cp.g4Tracks()[0].vertIndex()].position().t(); + float time = cp.simTime(); // Create a Trackster from any CP addTrackster(cpIndex, lcVec, @@ -482,7 +480,7 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es) cand.setMTDTime(MTDst->time(), 0); } - cand.setTime(simVertices[cp.g4Tracks()[0].vertIndex()].position().t() * pow(10, 9), 0); + cand.setTime(cp.simTime(), 0); for (const auto& trackster : cand.tracksters()) { rawEnergy += trackster->raw_energy(); diff --git a/RecoHGCal/TICL/plugins/TICLDumper.cc b/RecoHGCal/TICL/plugins/TICLDumper.cc index c40142bf655cd..a2ecefdd8f6cd 100644 --- a/RecoHGCal/TICL/plugins/TICLDumper.cc +++ b/RecoHGCal/TICL/plugins/TICLDumper.cc @@ -62,7 +62,7 @@ #include "CommonTools/UtilAlgos/interface/TFileService.h" using TracksterToTracksterMap = - ticl::AssociationMap, std::vector>; + ticl::AssociationMap, std::vector>; // Helper class for geometry, magnetic field, etc class DetectorTools { public: @@ -514,10 +514,10 @@ class TracksterToSimTracksterAssociationHelper { recoToSim_sharedE.resize(numberOfTracksters); for (size_t i = 0; i < numberOfTracksters; ++i) { - for (const auto& [simTracksterIndex, sharedEnergyAndScorePair] : recoToSimMap[i]) { - recoToSim[i].push_back(simTracksterIndex); - recoToSim_sharedE[i].push_back(sharedEnergyAndScorePair.first); - recoToSim_score[i].push_back(sharedEnergyAndScorePair.second); + for (const auto& simTracksterElement : recoToSimMap[i]) { + recoToSim[i].push_back(simTracksterElement.index()); + recoToSim_sharedE[i].push_back(simTracksterElement.sharedEnergy()); + recoToSim_score[i].push_back(simTracksterElement.score()); } } @@ -528,10 +528,10 @@ class TracksterToSimTracksterAssociationHelper { simToReco_sharedE.resize(numberOfSimTracksters); for (size_t i = 0; i < numberOfSimTracksters; ++i) { - for (const auto& [recoTracksterIndex, sharedEnergyAndScorePair] : simToRecoMap[i]) { - simToReco[i].push_back(recoTracksterIndex); - simToReco_sharedE[i].push_back(sharedEnergyAndScorePair.first); - simToReco_score[i].push_back(sharedEnergyAndScorePair.second); + for (const auto& recoTracksterElement : simToRecoMap[i]) { + simToReco[i].push_back(recoTracksterElement.index()); + simToReco_sharedE[i].push_back(recoTracksterElement.sharedEnergy()); + simToReco_score[i].push_back(recoTracksterElement.score()); } } } @@ -595,10 +595,10 @@ class TICLDumper : public edm::one::EDAnalyzer> muons_token_; const edm::EDGetTokenT>> clustersTime_token_; const edm::EDGetTokenT> tracksterSeeds_token_; - const edm::EDGetTokenT>> superclustering_linkedResultTracksters_token; - const edm::EDGetTokenT recoSuperClusters_token; - const edm::EDGetTokenT recoSuperClusters_caloClusters_token; - const edm::EDGetTokenT> recoSuperClusters_sourceTracksters_token; + edm::EDGetTokenT>> superclustering_linkedResultTracksters_token; + edm::EDGetTokenT recoSuperClusters_token; + edm::EDGetTokenT recoSuperClusters_caloClusters_token; + edm::EDGetTokenT> recoSuperClusters_sourceTracksters_token; edm::ESGetToken caloGeometry_token_; const edm::EDGetTokenT> simTracksters_SC_token_; // needed for simticlcandidate const edm::EDGetTokenT> simTICLCandidate_token_; @@ -884,6 +884,16 @@ TICLDumper::TICLDumper(const edm::ParameterSet& ps) saveTICLCandidate_(ps.getParameter("saveSimTICLCandidate")), saveSimTICLCandidate_(ps.getParameter("saveSimTICLCandidate")), saveTracks_(ps.getParameter("saveTracks")) { + if (saveSuperclustering_) { + superclustering_linkedResultTracksters_token = + consumes>>(ps.getParameter("superclustering")); + recoSuperClusters_token = + consumes(ps.getParameter("recoSuperClusters")); + recoSuperClusters_caloClusters_token = + consumes(ps.getParameter("recoSuperClusters")); + recoSuperClusters_sourceTracksters_token = consumes>( + ps.getParameter("recoSuperClusters_sourceTracksterCollection")); + } std::string detectorName_ = (detector_ == "HFNose") ? "HGCalHFNoseSensitive" : "HGCalEESensitive"; hdc_token_ = esConsumes(edm::ESInputTag("", detectorName_)); @@ -982,7 +992,7 @@ void TICLDumper::beginJob() { superclustering_tree_->Branch("recoSuperCluster_constituentTs", &recoSuperCluster_constituentTs); } - if (associations_parameterSets_.size() > 0) { + if (!associations_parameterSets_.empty()) { associations_tree_ = fs->make("associations", "Associations"); associations_tree_->Branch("event", &eventId_); } @@ -1281,7 +1291,7 @@ void TICLDumper::analyze(const edm::Event& event, const edm::EventSetup& setup) associations_dumperHelpers_[i].fillFromEvent(event.get(associations_recoToSim_token_[i]), event.get(associations_simToReco_token_[i])); } - if (associations_dumperHelpers_.size() > 0) + if (!associations_dumperHelpers_.empty()) associations_tree_->Fill(); //Tracks diff --git a/RecoHGCal/TICL/plugins/TICLGraph.cc b/RecoHGCal/TICL/plugins/TICLGraph.cc index f51e7ab086d05..acb3cf56548b8 100644 --- a/RecoHGCal/TICL/plugins/TICLGraph.cc +++ b/RecoHGCal/TICL/plugins/TICLGraph.cc @@ -3,58 +3,72 @@ namespace ticl { - void Node::findSubComponents(std::vector& graph, std::vector& subComponent, std::string tabs) { - tabs += "\t"; + void Node::findSubComponents(std::vector& graph, std::vector& subComponent) { if (!alreadyVisited_) { - LogDebug("TICLGraph") << tabs << " Visiting node " << index_ << std::endl; alreadyVisited_ = true; subComponent.push_back(index_); for (auto const& neighbour : outerNeighboursId_) { - LogDebug("TICLGraph") << tabs << " Trying to visit " << neighbour << std::endl; - graph[neighbour].findSubComponents(graph, subComponent, tabs); + graph[neighbour].findSubComponents(graph, subComponent); } } } } // namespace ticl +TICLGraph::TICLGraph(std::vector& nodes) { + nodes_ = nodes; + rootNodes_.reserve(nodes_.size()); + findRootNodes(); + rootNodes_.shrink_to_fit(); +} + std::vector> TICLGraph::findSubComponents() { std::vector> components; for (auto const& node : nodes_) { auto const id = node.getId(); if (isRootNode_[id]) { - //LogDebug("TICLGraph") << "DFS Starting From " << id << std::endl; - std::string tabs = "\t"; std::vector tmpSubComponents; - nodes_[id].findSubComponents(nodes_, tmpSubComponents, tabs); + nodes_[id].findSubComponents(nodes_, tmpSubComponents); + components.push_back(tmpSubComponents); + } + } + // Second loop: DFS for non-root nodes that haven't been visited + for (auto const& node : nodes_) { + auto const id = node.getId(); + if (!node.alreadyVisited()) { // Use the alreadyVisited() method + // Node not visited yet, so perform DFS + std::vector tmpSubComponents; + nodes_[id].findSubComponents(nodes_, tmpSubComponents); components.push_back(tmpSubComponents); } } return components; } -void TICLGraph::dfsForCC(unsigned int nodeIndex, - std::unordered_set& visited, - std::vector& component) const { - visited.insert(nodeIndex); - component.push_back(nodeIndex); +std::vector> TICLGraph::findSubComponents(std::vector& rootNodes) { + std::vector> components; + for (auto const& node : rootNodes) { + auto const id = node.getId(); + //LogDebug("TICLGraph") << "DFS Starting From " << id << std::endl; + std::vector tmpSubComponents; + nodes_[id].findSubComponents(nodes_, tmpSubComponents); + components.push_back(tmpSubComponents); + } + return components; +} - for (auto const& neighbourIndex : nodes_[nodeIndex].getOuterNeighbours()) { - if (visited.find(neighbourIndex) == visited.end()) { - dfsForCC(neighbourIndex, visited, component); +inline void TICLGraph::findRootNodes() { + for (auto const& n : nodes_) { + if (n.getInnerNeighbours().empty()) { + rootNodes_.push_back(n); } } } -std::vector> TICLGraph::getConnectedComponents() const { - std::unordered_set visited; - std::vector> components; - - for (unsigned int i = 0; i < nodes_.size(); ++i) { - if (visited.find(i) == visited.end()) { - std::vector component; - dfsForCC(i, visited, component); - components.push_back(component); +bool TICLGraph::isGraphOk() { + for (const auto& n : nodes_) { + if (n.getInnerNeighbours().size() > 1) { + return false; } } - return components; + return true; } diff --git a/RecoHGCal/TICL/plugins/TICLGraph.h b/RecoHGCal/TICL/plugins/TICLGraph.h index 36e09bb87a384..c78123bdf6577 100644 --- a/RecoHGCal/TICL/plugins/TICLGraph.h +++ b/RecoHGCal/TICL/plugins/TICLGraph.h @@ -18,17 +18,18 @@ namespace ticl { inline const unsigned int getId() const { return index_; } const std::vector& getOuterNeighbours() const { return outerNeighboursId_; } const std::vector& getInnerNeighbours() const { return innerNeighboursId_; } - void findSubComponents(std::vector& graph, std::vector& subComponent, std::string tabs); + void findSubComponents(std::vector& graph, std::vector& subComponent); inline bool isInnerNeighbour(const unsigned int tid) { auto findInner = std::find(innerNeighboursId_.begin(), innerNeighboursId_.end(), tid); return findInner != innerNeighboursId_.end(); } + inline bool alreadyVisited() const { return alreadyVisited_; } ~Node() = default; private: - unsigned index_; + unsigned int index_; bool isTrackster_; std::vector outerNeighboursId_; @@ -44,25 +45,23 @@ class TICLGraph { // can i remove default constructor ?? edm::Wrapper problem // without default constructor i could initialize connectedComponents when building the Graph TICLGraph() = default; - TICLGraph(std::vector& n, std::vector isRootNode) { - nodes_ = n; - isRootNode_ = isRootNode; - }; + TICLGraph(std::vector& nodes); inline const std::vector& getNodes() const { return nodes_; } inline const ticl::Node& getNode(int i) const { return nodes_[i]; } + inline std::vector getRootNodes() const { return rootNodes_; } + inline void findRootNodes(); std::vector> findSubComponents(); + std::vector> findSubComponents(std::vector& rootNodes); ~TICLGraph() = default; - void dfsForCC(unsigned int nodeIndex, - std::unordered_set& visited, - std::vector& component) const; - std::vector> getConnectedComponents() const; + bool isGraphOk(); private: std::vector nodes_; + std::vector rootNodes_; std::vector isRootNode_; }; diff --git a/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.cc b/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.cc index 885d66d2f2bf6..b2225e79e27de 100644 --- a/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.cc +++ b/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.cc @@ -11,7 +11,7 @@ #include "TICLGraph.h" namespace { - bool isRoundTrackster(std::array const &skeleton) { return (skeleton[0].Z() == skeleton[2].Z()); } + bool isRoundTrackster(std::array skeleton) { return (skeleton[0].Z() == skeleton[2].Z()); } bool isGoodTrackster(const ticl::Trackster &trackster, const std::array &skeleton, @@ -20,13 +20,19 @@ namespace { const float pca_quality_th) { bool isGood = false; - if (isRoundTrackster(skeleton) or trackster.vertices().size() < min_num_lcs or - trackster.raw_energy() < min_trackster_energy) { - isGood = false; + if (isRoundTrackster(skeleton) or trackster.vertices().size() < min_num_lcs) { + if (trackster.raw_energy() > min_trackster_energy) { + auto const &eigenvalues = trackster.eigenvalues(); + auto const sum = std::accumulate(std::begin(eigenvalues), std::end(eigenvalues), 0.f); + float pcaQuality = sum > 0.f ? eigenvalues[0] / sum : 0.f; + if (pcaQuality > pca_quality_th) { + isGood = true; + } + } } else { auto const &eigenvalues = trackster.eigenvalues(); auto const sum = std::accumulate(std::begin(eigenvalues), std::end(eigenvalues), 0.f); - float pcaQuality = eigenvalues[0] / sum; + float pcaQuality = sum > 0.f ? eigenvalues[0] / sum : 0.f; if (pcaQuality > pca_quality_th) { isGood = true; } @@ -35,7 +41,7 @@ namespace { } //distance between skeletons - float projective_distance(const ticl::Vector &point1, const ticl::Vector &point2) { + inline float projective_distance(const ticl::Vector &point1, const ticl::Vector &point2) { // squared projective distance float r1 = std::sqrt(point1.x() * point1.x() + point1.y() * point1.y()); float r2_at_z1 = @@ -54,18 +60,25 @@ TracksterLinkingbySkeletons::TracksterLinkingbySkeletons(const edm::ParameterSet edm::ConsumesCollector iC, cms::Ort::ONNXRuntime const *onnxRuntime) : TracksterLinkingAlgoBase(conf, iC), + lower_boundary_(conf.getParameter>("lower_boundary")), + upper_boundary_(conf.getParameter>("upper_boundary")), + upper_distance_projective_sqr_(conf.getParameter>("upper_distance_projective_sqr")), + lower_distance_projective_sqr_(conf.getParameter>("lower_distance_projective_sqr")), + min_distance_z_(conf.getParameter>("min_distance_z")), + upper_distance_projective_sqr_closest_points_( + conf.getParameter>("upper_distance_projective_sqr_closest_points")), + lower_distance_projective_sqr_closest_points_( + conf.getParameter>("lower_distance_projective_sqr_closest_points")), + max_z_distance_closest_points_(conf.getParameter>("max_z_distance_closest_points")), + cylinder_radius_sqr_(conf.getParameter>("cylinder_radius_sqr")), + cylinder_radius_sqr_split_(conf.getParameter("cylinder_radius_sqr_split")), + proj_distance_split_(conf.getParameter("proj_distance_split")), timing_quality_threshold_(conf.getParameter("track_time_quality_threshold")), - del_(conf.getParameter("wind")), - min_num_lcs_(conf.getParameter("min_num_lcs")), min_trackster_energy_(conf.getParameter("min_trackster_energy")), pca_quality_th_(conf.getParameter("pca_quality_th")), dot_prod_th_(conf.getParameter("dot_prod_th")), - max_distance_projective_sqr_(conf.getParameter>("max_distance_projective_sqr")), - min_distance_z_(conf.getParameter>("min_distance_z")), - max_distance_projective_sqr_closest_points_( - conf.getParameter>("max_distance_projective_sqr_closest_points")), - max_z_distance_closest_points_(conf.getParameter>("max_z_distance_closest_points")), - cylinder_radius_sqr_(conf.getParameter>("cylinder_radius_sqr")) + deltaRxy_(conf.getParameter("deltaRxy")), + min_num_lcs_(conf.getParameter("min_num_lcs")) {} @@ -105,6 +118,20 @@ void TracksterLinkingbySkeletons::initialize(const HGCalDDDConstants *hgcons, bfield_ = bfieldH; propagator_ = propH; + + //define LUT for eta windows + // eta windows obtained with a deltaR of 4cm at z = 400 cm + float etaStep = (TileConstants::maxEta - TileConstants::minEta) / TileConstants::nEtaBins; + float expNeg2DeltaRxy = deltaRxy_ * std::exp(-2.f); + + for (int i = 0; i < TileConstants::nEtaBins; ++i) { + float eta = TileConstants::minEta + i * etaStep; + + float expNegEta = std::exp(-eta); + float R = z_surface * 2.f * expNegEta / (1.f - expNeg2DeltaRxy * expNegEta); + + eta_windows_[i] = std::abs(atan(deltaRxy_ / R)); + } } std::array TracksterLinkingbySkeletons::findSkeletonNodes( @@ -116,6 +143,14 @@ std::array TracksterLinkingbySkeletons::findSkeletonNodes( auto const &vertices = trackster.vertices(); auto const trackster_raw_energy = trackster.raw_energy(); // sort vertices by layerId + std::array skeleton; + if (trackster.vertices().size() < 3) { + const auto &v = layerClusters[trackster.vertices()[0]]; + const Vector intersection(v.x(), v.y(), v.z()); + skeleton = {{intersection, intersection, intersection}}; + return skeleton; + } + std::vector sortedVertices(vertices); std::sort(sortedVertices.begin(), sortedVertices.end(), [&layerClusters](unsigned int i, unsigned int j) { return std::abs(layerClusters[i].z()) < std::abs(layerClusters[j].z()); @@ -145,7 +180,6 @@ std::array TracksterLinkingbySkeletons::findSkeletonNodes( foundOuterLayer = true; } } - std::array skeleton; int minimumDistanceInLayers = 4; if (outerLayerId - innerLayerId < minimumDistanceInLayers) { skeleton = {{trackster.barycenter(), trackster.barycenter(), trackster.barycenter()}}; @@ -169,9 +203,9 @@ std::array TracksterLinkingbySkeletons::findSkeletonNodes( return skeleton; } -bool isInCylinder(const std::array &mySkeleton, - const std::array &otherSkeleton, - const float radius_sqr) { +inline bool isInCylinder(const std::array &mySkeleton, + const std::array &otherSkeleton, + const float radius_sqr) { const auto &first = mySkeleton[0]; const auto &last = mySkeleton[2]; const auto &pointToCheck = otherSkeleton[0]; @@ -192,84 +226,100 @@ bool isInCylinder(const std::array &mySkeleton, const auto &distance = pointToCheck - pointOnAxis; auto distance2 = distance.Dot(distance); - + LogDebug("TracksterLinkingbySkeletons") << "is within lenght " << distance2 << " radius " << radius_sqr << std::endl; bool isWithinRadius = distance2 <= radius_sqr; return isWithinRadius; } +inline float computeParameter(float energy, float en_th_low, float cut1, float en_th_high, float cut2) { + if (en_th_low == en_th_high) { //protect if the thresholds are equal + return (energy <= en_th_low) ? cut1 : cut2; + } + if (energy < en_th_low) { + return cut1; + } else if (energy >= en_th_low && energy <= en_th_high) { + return ((cut2 - cut1) / (en_th_high - en_th_low)) * (energy - en_th_low) + cut1; + } else { + return cut2; + } +} + +// function to check if otherTrackster is a splitted component of myTrackster, meaning that otherTrackster is very close to myTrackster and seems to be generated by splitting of 2D layer clusters +inline bool TracksterLinkingbySkeletons::isSplitComponent(const ticl::Trackster &myTrackster, + const ticl::Trackster &otherTrackster, + const std::array &mySkeleton, + const std::array &otherSkeleton, + float proj_distance) { + //check if otherSKeleton z is within the z range of mySkeleton + if (otherSkeleton[1].z() < mySkeleton[2].z() && otherSkeleton[1].z() > mySkeleton[0].z()) { + if (proj_distance < proj_distance_split_) { + return true; + } else { + // check if barycenter of otherTrackster is within the cirlce of 3cm of myTrackster barycenter + //compute XY distance between barycenters + float distance2 = (myTrackster.barycenter().x() - otherTrackster.barycenter().x()) * + (myTrackster.barycenter().x() - otherTrackster.barycenter().x()) + + (myTrackster.barycenter().y() - otherTrackster.barycenter().y()) * + (myTrackster.barycenter().y() - otherTrackster.barycenter().y()); + if (distance2 < cylinder_radius_sqr_split_) { + return true; + } + } + } + return false; +} + bool TracksterLinkingbySkeletons::areCompatible(const ticl::Trackster &myTrackster, const ticl::Trackster &otherTrackster, const std::array &mySkeleton, const std::array &otherSkeleton) { - //do not start links from small/bad tracksters float zVal_interface = rhtools_.getPositionLayer(rhtools_.lastLayerEE()).z(); + if (!isGoodTrackster(myTrackster, mySkeleton, min_num_lcs_, min_trackster_energy_, pca_quality_th_)) { LogDebug("TracksterLinkingbySkeletons") << "Inner Trackster with energy " << myTrackster.raw_energy() << " Num LCs " << myTrackster.vertices().size() << " NOT GOOD " << std::endl; return false; - } else { - LogDebug("TracksterLinkingbySkeletons") << "Inner Trackster wi energy " << myTrackster.raw_energy() << " Num LCs " - << myTrackster.vertices().size() << " IS GOOD " << std::endl; - float proj_distance = projective_distance(mySkeleton[1], otherSkeleton[1]); - auto isEE = mySkeleton[1].z() <= zVal_interface ? 0 : 1; - bool areAlignedInProjectiveSpace = proj_distance < max_distance_projective_sqr_[isEE]; - LogDebug("TracksterLinkingbySkeletons") - << "\t Trying to compare with outer Trackster with energy " << otherTrackster.raw_energy() << " Num LCS " - << otherTrackster.vertices().size() << " Projective distance " << proj_distance << " areAlignedProjective " - << areAlignedInProjectiveSpace << " TH " << max_distance_projective_sqr_[isEE] << std::endl; - //check if otherTrackster is good - if (isGoodTrackster(otherTrackster, otherSkeleton, min_num_lcs_, min_trackster_energy_, pca_quality_th_)) { - // if both tracksters are good, then we can check the projective distance between the barycenters. - // if the barycenters are aligned, then we check that the two skeletons are aligned - if (areAlignedInProjectiveSpace) { - auto dotProdSkeletons = - ((mySkeleton[2] - mySkeleton[0]).Unit()).Dot((otherSkeleton[2] - otherSkeleton[0]).Unit()); - bool alignedSkeletons = dotProdSkeletons > dot_prod_th_; - LogDebug("TracksterLinkingbySkeletons") - << "\t Outer Trackster is Good, checking for skeleton alignment " << alignedSkeletons << " dotProd " - << dotProdSkeletons << " Threshold " << dot_prod_th_ << std::endl; - if (alignedSkeletons) - LogDebug("TracksterLinkingbySkeletons") << "\t\t Linked! " << std::endl; - return alignedSkeletons; - } else { - // we measure the distance between the two closest nodes in the two skeletons - LogDebug("TracksterLinkingbySkeletons") - << "\t Outer Trackster is not aligned, check skeletons distances " << std::endl; - int myClosestPoint = -1; - int otherClosestPoint = -1; - float minDistance_z = std::numeric_limits::max(); - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - float dist_z = std::abs(mySkeleton[i].Z() - otherSkeleton[j].Z()); - if (dist_z < minDistance_z) { - myClosestPoint = i; - otherClosestPoint = j; - minDistance_z = dist_z; - } - } - } - if (minDistance_z < min_distance_z_[isEE]) { - LogDebug("TracksterLinkingbySkeletons") - << "\t Trackster have distance in Z " << minDistance_z - << "Checking if they are aligned in projective space " - << projective_distance(mySkeleton[myClosestPoint], otherSkeleton[otherClosestPoint]) << " TH " - << max_distance_projective_sqr_[isEE] << std::endl; - if (projective_distance(mySkeleton[myClosestPoint], otherSkeleton[otherClosestPoint]) < - max_distance_projective_sqr_[isEE]) { - LogDebug("TracksterLinkingbySkeletons") << "\t\t Linked! " << std::endl; - } - return projective_distance(mySkeleton[myClosestPoint], otherSkeleton[otherClosestPoint]) < - max_distance_projective_sqr_[isEE]; - } else { - LogDebug("TracksterLinkingbySkeletons") << "\t\t Not Linked Distance Z " << minDistance_z << std::endl; - return false; - } - } + } + + LogDebug("TracksterLinkingbySkeletons") << "Inner Trackster with energy " << myTrackster.raw_energy() << " Num LCs " + << myTrackster.vertices().size() << " IS GOOD " << std::endl; + + float proj_distance = projective_distance(mySkeleton[1], otherSkeleton[1]); + auto isEE = mySkeleton[1].z() <= zVal_interface ? 0 : 1; + auto const max_distance_proj_sqr = computeParameter(myTrackster.raw_energy(), + lower_boundary_[isEE], + lower_distance_projective_sqr_[isEE], + upper_boundary_[isEE], + upper_distance_projective_sqr_[isEE]); + bool areAlignedInProjectiveSpace = proj_distance < max_distance_proj_sqr; + + LogDebug("TracksterLinkingbySkeletons") + << "\t Trying to compare with outer Trackster with energy " << otherTrackster.raw_energy() << " Num LCS " + << otherTrackster.vertices().size() << " Projective distance " << proj_distance << " areAlignedProjective " + << areAlignedInProjectiveSpace << " TH " << max_distance_proj_sqr << std::endl; + + if (isGoodTrackster(otherTrackster, otherSkeleton, min_num_lcs_, min_trackster_energy_, pca_quality_th_)) { + if (areAlignedInProjectiveSpace) { + LogDebug("TracksterLinkingbySkeletons") << "\t\t Linked! " << std::endl; + return true; } else { - LogDebug("TracksterLinkingbySkeletons") - << "\t Outer Trackster is NOT GOOD, check projective space alignment " << areAlignedInProjectiveSpace - << " proj_distance " << max_distance_projective_sqr_[isEE] << std::endl; + //if the tracksters are not aligned in Projective distance, check if otherTrackster is within the cylinder of 3cm radius + //this is used to recover LC splittings + if (isSplitComponent(myTrackster, otherTrackster, mySkeleton, otherSkeleton, proj_distance)) { + LogDebug("TracksterLinkingbySkeletons") << "\t\t Linked! Splitted components!" << std::endl; + return true; + } + //if is EE do not try to link more, PU occupancy is too high in this region + if (isEE) { + return false; + } + //if instead we are in the CE-H part of the detector, we can try to link more + // we measure the distance between the two closest nodes in the two skeletons + return checkClosestPoints(myTrackster, otherTrackster, mySkeleton, otherSkeleton, isEE); + } + } else { + if (otherTrackster.vertices().size() >= 3) { if (areAlignedInProjectiveSpace) { LogDebug("TracksterLinkingbySkeletons") << "\t\t Linked! " << std::endl; return true; @@ -277,44 +327,86 @@ bool TracksterLinkingbySkeletons::areCompatible(const ticl::Trackster &myTrackst LogDebug("TracksterLinkingbySkeletons") << "\t Not aligned in projective space, check distance between closest points in the two skeletons " << std::endl; - // we measure the distance between the two closest nodes in the two skeletons - int myClosestPoint = -1; - int otherClosestPoint = -1; - float minDistance_z = std::numeric_limits::max(); - // we skip the innermost node of mySkeleton - for (int i = 1; i < 3; i++) { - for (int j = 0; j < 3; j++) { - float dist_z = std::abs(mySkeleton[i].Z() - otherSkeleton[j].Z()); - if (dist_z < minDistance_z) { - myClosestPoint = i; - otherClosestPoint = j; - minDistance_z = dist_z; - } - } - } - float d = projective_distance(mySkeleton[myClosestPoint], otherSkeleton[otherClosestPoint]); - LogDebug("TracksterLinkingbySkeletons") - << "\t\t Distance between closest points " << d << " TH " << 10.f << " Z Distance " << minDistance_z - << " TH " << max_distance_projective_sqr_closest_points_[isEE] << std::endl; - if (d < max_distance_projective_sqr_closest_points_[isEE] and - minDistance_z < max_z_distance_closest_points_[isEE]) { - LogDebug("TracksterLinkingbySkeletons") << "\t\t\t Linked! " << d << std::endl; + if (checkClosestPoints(myTrackster, otherTrackster, mySkeleton, otherSkeleton, isEE)) { return true; } else { - LogDebug("TracksterLinkingbySkeletons") << "Distance between closest point " << d << " Distance in z " - << max_z_distance_closest_points_[isEE] << std::endl; - bool isInCyl = isInCylinder(mySkeleton, otherSkeleton, cylinder_radius_sqr_[isEE]); - LogDebug("TracksterLinkingbySkeletons") << "Two Points are in Cylinder " << isInCyl << std::endl; - if (isInCyl) { - LogDebug("TracksterLinkingbySkeletons") << "\t\t\t Linked! " << d << std::endl; - } - return isInCyl; + return checkCylinderAlignment(mySkeleton, otherSkeleton, isEE); } } + } else { + return checkCylinderAlignment(mySkeleton, otherSkeleton, isEE); } } } +bool TracksterLinkingbySkeletons::checkCylinderAlignment(const std::array &mySkeleton, + const std::array &otherSkeleton, + int isEE) { + bool isInCyl = isInCylinder(mySkeleton, otherSkeleton, cylinder_radius_sqr_[isEE]); + if (isInCyl) { + LogDebug("TracksterLinkingbySkeletons") << "Two Points are in Cylinder " << isInCyl << " Linked! " << std::endl; + } + return isInCyl; +} + +bool TracksterLinkingbySkeletons::checkSkeletonAlignment(const ticl::Trackster &myTrackster, + const ticl::Trackster &otherTrackster) { + auto dotProdSkeletons = myTrackster.eigenvectors(0).Dot(otherTrackster.eigenvectors(0)); + bool alignedSkeletons = dotProdSkeletons > dot_prod_th_; + + LogDebug("TracksterLinkingbySkeletons") + << "\t Outer Trackster is Good, checking for skeleton alignment " << alignedSkeletons << " dotProd " + << dotProdSkeletons << " Threshold " << dot_prod_th_ << std::endl; + + if (alignedSkeletons) { + LogDebug("TracksterLinkingbySkeletons") << "\t\t Linked! " << std::endl; + } + + return alignedSkeletons; +} + +bool TracksterLinkingbySkeletons::checkClosestPoints(const ticl::Trackster &myTrackster, + const ticl::Trackster &otherTrackster, + const std::array &mySkeleton, + const std::array &otherSkeleton, + int isEE) { + int myClosestPoint = -1; + int otherClosestPoint = -1; + float minDistance_z = std::numeric_limits::max(); + + for (int i = 1; i < 3; i++) { + for (int j = 0; j < 3; j++) { + float dist_z = std::abs(mySkeleton[i].Z() - otherSkeleton[j].Z()); + if (dist_z < minDistance_z) { + myClosestPoint = i; + otherClosestPoint = j; + minDistance_z = dist_z; + } + } + } + + float d = projective_distance(mySkeleton[myClosestPoint], otherSkeleton[otherClosestPoint]); + auto const max_distance_proj_sqr_closest = computeParameter(myTrackster.raw_energy(), + lower_boundary_[isEE], + lower_distance_projective_sqr_closest_points_[isEE], + upper_boundary_[isEE], + upper_distance_projective_sqr_closest_points_[isEE]); + + LogDebug("TracksterLinkingbySkeletons") + << "\t\t Distance between closest points " << d << " TH " << 10.f << " Z Distance " << minDistance_z << " TH " + << max_distance_proj_sqr_closest << std::endl; + + if (d < max_distance_proj_sqr_closest && minDistance_z < max_z_distance_closest_points_[isEE]) { + LogDebug("TracksterLinkingbySkeletons") << "\t\t\t Linked! " << d << std::endl; + return true; + } + + LogDebug("TracksterLinkingbySkeletons") << "Distance between closest point " << d << " Distance in z " + << max_z_distance_closest_points_[isEE] << std::endl; + + return checkCylinderAlignment(mySkeleton, otherSkeleton, isEE); +} + void TracksterLinkingbySkeletons::linkTracksters( const Inputs &input, std::vector &resultTracksters, @@ -345,7 +437,7 @@ void TracksterLinkingbySkeletons::linkTracksters( std::vector maskReceivedLink(tracksters.size(), 1); std::vector isRootTracksters(tracksters.size(), 1); - std::vector allNodes; + std::vector allNodes; for (size_t it = 0; it < tracksters.size(); ++it) { allNodes.emplace_back(it); } @@ -355,12 +447,14 @@ void TracksterLinkingbySkeletons::linkTracksters( auto const &trackster = tracksters[t_idx]; auto const &skeleton = skeletons[t_idx]; - auto const bary = trackster.barycenter(); - float eta_min = std::max(abs(bary.eta()) - del_, TileConstants::minEta); - float eta_max = std::min(abs(bary.eta()) + del_, TileConstants::maxEta); + auto const &bary = trackster.barycenter(); int tileIndex = bary.eta() > 0.f; const auto &tiles = tracksterTile[tileIndex]; - std::array search_box = tiles.searchBoxEtaPhi(eta_min, eta_max, bary.phi() - del_, bary.phi() + del_); + auto const window = eta_windows_[tiles.etaBin(bary.eta())]; + float eta_min = std::max(abs(bary.eta()) - window, TileConstants::minEta); + float eta_max = std::min(abs(bary.eta()) + window, TileConstants::maxEta); + std::array search_box = tiles.searchBoxEtaPhi(eta_min, eta_max, bary.phi() - window, bary.phi() + window); + if (search_box[2] > search_box[3]) { search_box[3] += TileConstants::nPhiBins; } @@ -371,18 +465,70 @@ void TracksterLinkingbySkeletons::linkTracksters( for (auto n : neighbours) { if (t_idx == n) continue; - if (maskReceivedLink[n] == 0 or allNodes[t_idx].isInnerNeighbour(n)) - continue; - if (isGoodTrackster(trackster, skeleton, min_num_lcs_, min_trackster_energy_, pca_quality_th_)) { - LogDebug("TracksterLinkingbySkeletons") - << "Trying to Link Trackster " << t_idx << " With Trackster " << n << std::endl; - if (areCompatible(trackster, tracksters[n], skeleton, skeletons[n])) { + + auto const &tracksterOut = tracksters[n]; + auto const &skeletonOut = skeletons[n]; + auto const deltaphi = reco::deltaPhi(trackster.barycenter().phi(), tracksterOut.barycenter().phi()); + if (abs(trackster.barycenter().eta() - tracksterOut.barycenter().eta()) <= window && deltaphi <= window) { + bool isInGood = isGoodTrackster(trackster, skeleton, min_num_lcs_, min_trackster_energy_, pca_quality_th_); + bool isOutGood = + isGoodTrackster(tracksterOut, skeletonOut, min_num_lcs_, min_trackster_energy_, pca_quality_th_); + if (isInGood) { LogDebug("TracksterLinkingbySkeletons") - << "\t==== LINK: Trackster " << t_idx << " Linked with Trackster " << n << std::endl; - maskReceivedLink[n] = 0; - allNodes[t_idx].addOuterNeighbour(n); - allNodes[n].addInnerNeighbour(t_idx); - isRootTracksters[n] = 0; + << "Trying to Link Trackster " << t_idx << " With Trackster " << n << std::endl; + if (areCompatible(trackster, tracksters[n], skeleton, skeletonOut)) { + LogDebug("TracksterLinkingbySkeletons") + << "\t==== LINK: Trackster " << t_idx << " Linked with Trackster " << n << std::endl; + // maskReceivedLink[n] = 0; + if (isOutGood) { + if (abs(skeleton[0].z()) < abs(skeletonOut[0].z())) { + LogDebug("TracksterLinkingbySkeletons") << "Trackster in energy " << trackster.raw_energy() + << " Out is good " << tracksterOut.raw_energy() << " Sk In " + << skeleton[0] << " Sk out " << skeletonOut[0] << std::endl; + LogDebug("TracksterLinkingbySkeletons") << "\t " << t_idx << " --> " << n << std::endl; + allNodes[t_idx].addOuterNeighbour(n); + allNodes[n].addInnerNeighbour(t_idx); + isRootTracksters[n] = 0; + } else if (abs(skeleton[0].z()) > abs(skeletonOut[0].z())) { + LogDebug("TracksterLinkingbySkeletons") << "Trackster in energy " << trackster.raw_energy() + << " Out is good " << tracksterOut.raw_energy() << " Sk In " + << skeleton[0] << " Sk out " << skeletonOut[0] << std::endl; + LogDebug("TracksterLinkingbySkeletons") << "\t " << n << " --> " << t_idx << std::endl; + allNodes[n].addOuterNeighbour(t_idx); + allNodes[t_idx].addInnerNeighbour(n); + isRootTracksters[t_idx] = 0; + } else { + if (trackster.raw_energy() >= tracksterOut.raw_energy()) { + LogDebug("TracksterLinkingbySkeletons") + << "Trackster in energy " << trackster.raw_energy() << " Out is good " + << tracksterOut.raw_energy() << " Sk In " << skeleton[0] << " Sk out " << skeletonOut[0] + << std::endl; + LogDebug("TracksterLinkingbySkeletons") << "\t " << t_idx << " --> " << n << std::endl; + allNodes[t_idx].addOuterNeighbour(n); + allNodes[n].addInnerNeighbour(t_idx); + isRootTracksters[n] = 0; + } else { + LogDebug("TracksterLinkingbySkeletons") + << "Trackster in energy " << trackster.raw_energy() << " Out is good " + << tracksterOut.raw_energy() << " Sk In " << skeleton[0] << " Sk out " << skeletonOut[0] + << std::endl; + LogDebug("TracksterLinkingbySkeletons") << "\t " << n << " --> " << t_idx << std::endl; + allNodes[n].addOuterNeighbour(t_idx); + allNodes[t_idx].addInnerNeighbour(n); + isRootTracksters[t_idx] = 0; + } + } + } else { + LogDebug("TracksterLinkingbySkeletons") + << "Trackster in energy " << trackster.raw_energy() << " Out is NOT good " + << tracksterOut.raw_energy() << " Sk In " << skeleton[0] << " Sk out " << skeletonOut[0] + << std::endl; + LogDebug("TracksterLinkingbySkeletons") << "\t " << t_idx << " --> " << n << std::endl; + allNodes[t_idx].addOuterNeighbour(n); + allNodes[n].addInnerNeighbour(t_idx); + isRootTracksters[n] = 0; + } + } } } } @@ -390,32 +536,23 @@ void TracksterLinkingbySkeletons::linkTracksters( } } - LogDebug("TracksterLinkingbySkeletons") << "**************** FINAL GRAPH **********************" << std::endl; - for (auto const &node : allNodes) { - if (isRootTracksters[node.getId()]) { - LogDebug("TracksterLinkingbySkeletons") - << "ISROOT " - << " Node " << node.getId() << " position " << tracksters[node.getId()].barycenter() << " energy " - << tracksters[node.getId()].raw_energy() << std::endl; - } else { - LogDebug("TracksterLinkingbySkeletons") - << "Node " << node.getId() << " position " << tracksters[node.getId()].barycenter() << " energy " - << tracksters[node.getId()].raw_energy() << std::endl; - } - } - LogDebug("TracksterLinkingbySkeletons") << "********************************************************" << std::endl; - - TICLGraph graph(allNodes, isRootTracksters); + TICLGraph graph(allNodes); + auto sortedRootNodes = graph.getRootNodes(); + std::sort(sortedRootNodes.begin(), sortedRootNodes.end(), [&tracksters](const ticl::Node &n1, const ticl::Node &n2) { + unsigned int n1Id = n1.getId(); + unsigned int n2Id = n2.getId(); + return tracksters[n1Id].raw_energy() > tracksters[n2Id].raw_energy(); + }); int ic = 0; - auto const &components = graph.findSubComponents(); + auto const &components = graph.findSubComponents(sortedRootNodes); linkedTracksterIdToInputTracksterId.resize(components.size()); for (auto const &comp : components) { LogDebug("TracksterLinkingbySkeletons") << "Component " << ic << " Node: "; std::vector linkedTracksters; Trackster outTrackster; if (comp.size() == 1) { - if (input.tracksters[comp[0]].vertices().size() <= 3) { + if (input.tracksters[comp[0]].vertices().size() <= 3 && input.tracksters[comp[0]].raw_energy() < 5.f) { continue; } } @@ -425,9 +562,12 @@ void TracksterLinkingbySkeletons::linkTracksters( outTrackster.mergeTracksters(input.tracksters[node]); } linkedTracksters.push_back(resultTracksters.size()); + LogDebug("TracksterLinkingbySkeletons") << "\nOut Trackster " << outTrackster.raw_energy() << std::endl; resultTracksters.push_back(outTrackster); linkedResultTracksters.push_back(linkedTracksters); LogDebug("TracksterLinkingbySkeletons") << "\n"; ++ic; } + LogDebug("TracksterLinkingbySkeletons") << "\n"; + } // linkTracksters diff --git a/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.h b/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.h index 600d86f9ada21..6a09f7297d611 100644 --- a/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.h +++ b/RecoHGCal/TICL/plugins/TracksterLinkingbySkeletons.h @@ -45,23 +45,46 @@ namespace ticl { const std::array& mySkeleton, const std::array& otherSkeleton); + bool checkCylinderAlignment(const std::array& mySkeleton, + const std::array& otherSkeleton, + int isEE); + bool checkSkeletonAlignment(const ticl::Trackster& myTrackster, const ticl::Trackster& otherTrackster); + + bool checkClosestPoints(const ticl::Trackster& myTrackster, + const ticl::Trackster& otherTrackster, + const std::array& mySkeleton, + const std::array& otherSkeleton, + int isEE); + bool isSplitComponent(const ticl::Trackster& myTrackster, + const ticl::Trackster& otherTrackster, + const std::array& mySkeleton, + const std::array& otherSkeleton, + float proj_distance); + void initialize(const HGCalDDDConstants* hgcons, const hgcal::RecHitTools rhtools, const edm::ESHandle bfieldH, const edm::ESHandle propH) override; static void fillPSetDescription(edm::ParameterSetDescription& iDesc) { + iDesc.add("cylinder_radius_sqr_split", 9.); + iDesc.add("proj_distance_split", 5.); iDesc.add("track_time_quality_threshold", 0.5); - iDesc.add("wind", 0.036); iDesc.add("min_num_lcs", 7); iDesc.add("min_trackster_energy", 10.); iDesc.add("pca_quality_th", 0.85); iDesc.add("dot_prod_th", 0.97); - iDesc.add>("max_distance_projective_sqr", {60., 60.}); - iDesc.add>("min_distance_z", {30., 30.}); - iDesc.add>("max_distance_projective_sqr_closest_points", {60., 60.}); + iDesc.add("deltaRxy", 4.f); + iDesc.add>("lower_boundary", {10., 150.}); + iDesc.add>("upper_boundary", {3, 70.}); + iDesc.add>("upper_distance_projective_sqr", {40., 60.}); + iDesc.add>("lower_distance_projective_sqr", {10., 30.}); + iDesc.add>("min_distance_z", {35., 35.}); + iDesc.add>("upper_distance_projective_sqr_closest_points", {10., 30.}); + iDesc.add>("lower_distance_projective_sqr_closest_points", {10., 30.}); iDesc.add>("max_z_distance_closest_points", {35., 35.}); - iDesc.add>("cylinder_radius_sqr", {9., 9.}); + iDesc.add>("cylinder_radius_sqr", {10, 20}); + TracksterLinkingAlgoBase::fillPSetDescription(iDesc); } @@ -72,17 +95,25 @@ namespace ticl { void dumpLinksFound(std::vector>& resultCollection, const char* label) const; + static constexpr float z_surface = 400.f; + std::vector lower_boundary_; + std::vector upper_boundary_; + std::vector upper_distance_projective_sqr_; + std::vector lower_distance_projective_sqr_; + std::vector min_distance_z_; + std::vector upper_distance_projective_sqr_closest_points_; + std::vector lower_distance_projective_sqr_closest_points_; + std::vector max_z_distance_closest_points_; + std::vector cylinder_radius_sqr_; + + float cylinder_radius_sqr_split_; + float proj_distance_split_; float timing_quality_threshold_; - float del_; - unsigned int min_num_lcs_; float min_trackster_energy_; float pca_quality_th_; float dot_prod_th_; - std::vector max_distance_projective_sqr_; - std::vector min_distance_z_; - std::vector max_distance_projective_sqr_closest_points_; - std::vector max_z_distance_closest_points_; - std::vector cylinder_radius_sqr_; + float deltaRxy_; + unsigned int min_num_lcs_; const HGCalDDDConstants* hgcons_; @@ -93,6 +124,7 @@ namespace ticl { edm::ESHandle bfield_; edm::ESHandle propagator_; + std::array eta_windows_; }; } // namespace ticl diff --git a/RecoHGCal/TICL/python/customiseTICLFromReco.py b/RecoHGCal/TICL/python/customiseTICLFromReco.py index c22dea5fc9738..90679d67a8675 100644 --- a/RecoHGCal/TICL/python/customiseTICLFromReco.py +++ b/RecoHGCal/TICL/python/customiseTICLFromReco.py @@ -65,12 +65,12 @@ def customiseTICLFromReco(process): return process -def customiseTICLForDumper(process): +def customiseTICLForDumper(process, histoName="histo.root"): process.ticlDumper = ticlDumper.clone() process.TFileService = cms.Service("TFileService", - fileName=cms.string("histo.root") + fileName=cms.string(histoName) ) process.FEVTDEBUGHLToutput_step = cms.EndPath( process.FEVTDEBUGHLToutput + process.ticlDumper) diff --git a/RecoHGCal/TICL/python/iterativeTICL_cff.py b/RecoHGCal/TICL/python/iterativeTICL_cff.py index aa43df36379a2..baec9c294c6c1 100644 --- a/RecoHGCal/TICL/python/iterativeTICL_cff.py +++ b/RecoHGCal/TICL/python/iterativeTICL_cff.py @@ -35,6 +35,55 @@ 'ticlTrackstersCLUE3DHigh', 'ticlTrackstersRecovery' ), + linkingPSet = cms.PSet( + cylinder_radius_sqr_split = cms.double(9), + proj_distance_split = cms.double(5), + track_time_quality_threshold = cms.double(0.5), + min_num_lcs = cms.uint32(15), + min_trackster_energy = cms.double(20), + pca_quality_th = cms.double(0.85), + dot_prod_th = cms.double(0.97), + lower_boundary = cms.vdouble( + 20, + 10 + ), + upper_boundary = cms.vdouble( + 150, + 100 + ), + upper_distance_projective_sqr = cms.vdouble( + 30, + 60 + ), + lower_distance_projective_sqr = cms.vdouble( + 30, + 60 + ), + min_distance_z = cms.vdouble( + 35, + 35 + ), + upper_distance_projective_sqr_closest_points = cms.vdouble( + 5, + 30 + ), + lower_distance_projective_sqr_closest_points = cms.vdouble( + 10, + 50 + ), + max_z_distance_closest_points = cms.vdouble( + 35, + 35 + ), + cylinder_radius_sqr = cms.vdouble( + 9, + 15 + ), + deltaRxy = cms.double(4.), + algo_verbosity = cms.int32(0), + type = cms.string('Skeletons') + + ), regressionAndPid = cms.bool(True), inferenceAlgo = cms.string('TracksterInferenceByDNN'), pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet( @@ -52,7 +101,6 @@ type = cms.string('TracksterInferenceByDNN') ) ) - ticlCandidate = _ticlCandidateProducer.clone() mtdSoA = _mtdSoAProducer.clone() diff --git a/RecoHGCal/TICL/python/ticlDumper_cff.py b/RecoHGCal/TICL/python/ticlDumper_cff.py index e50ac07a1f799..32b876f7099e1 100644 --- a/RecoHGCal/TICL/python/ticlDumper_cff.py +++ b/RecoHGCal/TICL/python/ticlDumper_cff.py @@ -40,10 +40,12 @@ ), ], - associators=dumperAssociators.copy() + associators=dumperAssociators.copy(), + saveSuperclustering = cms.bool(False) ) ticl_v5.toModify(ticlDumper, ticlcandidates = cms.InputTag("ticlCandidate"), recoSuperClusters_sourceTracksterCollection=cms.InputTag("ticlCandidate")) +ticl_v5.toModify(ticlDumper, saveSuperclustering = cms.bool(True)) diff --git a/RecoHI/HiTracking/python/HILowPtConformalPixelTracks_cfi.py b/RecoHI/HiTracking/python/HILowPtConformalPixelTracks_cfi.py index 146bfe0bbf071..d2a9af667a117 100644 --- a/RecoHI/HiTracking/python/HILowPtConformalPixelTracks_cfi.py +++ b/RecoHI/HiTracking/python/HILowPtConformalPixelTracks_cfi.py @@ -132,66 +132,27 @@ hiConformalPixelTracks ) -from Configuration.ProcessModifiers.gpu_cff import gpu -from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit -from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAHIonPhase1_cfi import pixelTrackSoAFromCUDAHIonPhase1 as _pixelTracksSoA -from RecoTracker.PixelSeeding.caHitNtupletCUDAHIonPhase1_cfi import caHitNtupletCUDAHIonPhase1 as _pixelTracksCUDA -from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAHIonPhase1_cfi import pixelTrackProducerFromSoAHIonPhase1 as _pixelTrackProducerFromSoA - -from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA - -hiPixelTracksCUDA = _pixelTracksCUDA.clone(pixelRecHitSrc="siPixelRecHitsPreSplittingCUDA", idealConditions = False, - ptmin = 0.25, z0Cut = 8.0, hardCurvCut = 0.0756, doPtCut = False, - onGPU = True, - dcaCutInnerTriplet = 0.05, dcaCutOuterTriplet = 0.10, - CAThetaCutForward = 0.002, CAThetaCutBarrel = 0.001, - phiCuts = cms.vint32(19*[900]), #19 pairs - trackQualityCuts = dict( - chi2MaxPt = 10, - chi2Coeff = [0.9,1.8], - chi2Scale = 1.8, - tripletMinPt = 0.1, - tripletMaxTip = 0.3, - tripletMaxZip = 12, - quadrupletMinPt = 0.1, - quadrupletMaxTip = 0.5, - quadrupletMaxZip = 12 - )) - -# SwitchProducer providing the pixel tracks in SoA format on the CPU -hiPixelTracksSoA = SwitchProducerCUDA( - # build pixel ntuplets and pixel tracks in SoA format on the CPU - cpu = _pixelTracksCUDA.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingCPU", - idealConditions = False, - doPtCut = False, - ptmin = 0.25, - hardCurvCut = 0.0756, - onGPU = False, - phiCuts = cms.vint32(19*[900]), #19 pairs - trackQualityCuts = dict( - chi2MaxPt = 10, - chi2Coeff = [0.9,1.8], - chi2Scale = 8, - tripletMinPt = 0.5, - tripletMaxTip = 0.3, - tripletMaxZip = 12, - quadrupletMinPt = 0.3, - quadrupletMaxTip = 0.5, - quadrupletMaxZip = 12 - )) -) - -gpu.toModify(hiPixelTracksSoA, - # transfer the pixel tracks in SoA format to the host - cuda = _pixelTracksSoA.clone(src="hiPixelTracksCUDA") -) +## These are the parameters used for the offline CUDA HI Pixel Tracks +## leaving them here for the records until we have the Alpaka equivalent + +# hiPixelTracksCUDA = _pixelTracksCUDA.clone(pixelRecHitSrc="siPixelRecHitsPreSplittingCUDA", idealConditions = False, +# ptmin = 0.25, z0Cut = 8.0, hardCurvCut = 0.0756, doPtCut = False, +# onGPU = True, +# dcaCutInnerTriplet = 0.05, dcaCutOuterTriplet = 0.10, +# CAThetaCutForward = 0.002, CAThetaCutBarrel = 0.001, +# phiCuts = cms.vint32(19*[900]), #19 pairs +# trackQualityCuts = dict( +# chi2MaxPt = 10, +# chi2Coeff = [0.9,1.8], +# chi2Scale = 1.8, +# tripletMinPt = 0.1, +# tripletMaxTip = 0.3, +# tripletMaxZip = 12, +# quadrupletMinPt = 0.1, +# quadrupletMaxTip = 0.5, +# quadrupletMaxZip = 12 +# )) -pixelNtupletFit.toReplaceWith(hiConformalPixelTracks,_pixelTrackProducerFromSoA.clone( - pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting", - trackSrc = "hiPixelTracksSoA", - minQuality = "highPurity" -)) hiConformalPixelTracksTaskPhase1 = cms.Task( @@ -204,20 +165,6 @@ hiConformalPixelTracks ) -pixelNtupletFit.toReplaceWith(hiConformalPixelTracksTaskPhase1, cms.Task( - # build the pixel ntuplets and the pixel tracks in SoA format on the CPU - hiPixelTracksSoA, - # convert the pixel tracks from SoA to legacy format - hiConformalPixelTracks -)) - -(gpu & pixelNtupletFit).toReplaceWith(hiConformalPixelTracksTaskPhase1, cms.Task( - # build the pixel ntuplets and the pixel tracks in SoA format on the GPU - hiPixelTracksCUDA, - # just copying the task above - hiConformalPixelTracksTaskPhase1.copy() -)) - phase1Pixel.toReplaceWith(hiConformalPixelTracksTask, hiConformalPixelTracksTaskPhase1) from Configuration.Eras.Modifier_run3_upc_cff import run3_upc diff --git a/RecoJets/JetAlgorithms/src/CMSBoostedTauSeedingAlgorithm.cc b/RecoJets/JetAlgorithms/src/CMSBoostedTauSeedingAlgorithm.cc index dd07224634883..08dd7ea9d5fca 100644 --- a/RecoJets/JetAlgorithms/src/CMSBoostedTauSeedingAlgorithm.cc +++ b/RecoJets/JetAlgorithms/src/CMSBoostedTauSeedingAlgorithm.cc @@ -64,7 +64,7 @@ FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh if (!hasSubjets) return; std::string depth_and_idx_string_subjet1 = depth_and_idx_string; - if (depth_and_idx_string_subjet1.length() > 0) + if (!depth_and_idx_string_subjet1.empty()) depth_and_idx_string_subjet1.append("."); depth_and_idx_string_subjet1.append("0"); for (int iSpace = 0; iSpace < depth; ++iSpace) { @@ -76,7 +76,7 @@ FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh << " (constituents = " << subjet1.constituents().size() << ")" << std::endl; dumpSubJetStructure(subjet1, depth + 1, maxDepth, depth_and_idx_string_subjet1); std::string depth_and_idx_string_subjet2 = depth_and_idx_string; - if (depth_and_idx_string_subjet2.length() > 0) + if (!depth_and_idx_string_subjet2.empty()) depth_and_idx_string_subjet2.append("."); depth_and_idx_string_subjet2.append("1"); for (int iSpace = 0; iSpace < depth; ++iSpace) { diff --git a/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.cc b/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.cc index 96792a2059b32..b9d428a31bcee 100644 --- a/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.cc +++ b/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.cc @@ -16,21 +16,27 @@ #include "JetTracksAssociatorAtVertex.h" JetTracksAssociatorAtVertex::JetTracksAssociatorAtVertex(const edm::ParameterSet& fConfig) - : mAssociator(fConfig.getParameter("coneSize")), + : mJets{consumes >(fConfig.getParameter("jets"))}, + mTracks{consumes(fConfig.getParameter("tracks"))}, + mAssociator(fConfig.getParameter("coneSize")), mAssociatorAssigned(fConfig.getParameter("coneSize")), - useAssigned(false), + useAssigned(fConfig.getParameter("useAssigned")), pvSrc() { - mJets = consumes >(fConfig.getParameter("jets")); - mTracks = consumes(fConfig.getParameter("tracks")); - if (fConfig.exists("useAssigned")) { - useAssigned = fConfig.getParameter("useAssigned"); + if (useAssigned) { pvSrc = consumes(fConfig.getParameter("pvSrc")); } - produces(); } -JetTracksAssociatorAtVertex::~JetTracksAssociatorAtVertex() {} +void JetTracksAssociatorAtVertex::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("jets", edm::InputTag("")); + desc.add("tracks", edm::InputTag("generalTracks")); + desc.add("coneSize", 0.4); + desc.add("useAssigned", false); + desc.add("pvSrc", edm::InputTag("offlinePrimaryVertices")); + descriptions.addWithDefaultLabel(desc); +} void JetTracksAssociatorAtVertex::produce(edm::Event& fEvent, const edm::EventSetup& fSetup) { edm::Handle > jets_h; diff --git a/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.h b/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.h index f88dc2da108db..fcc984270ec87 100644 --- a/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.h +++ b/RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.h @@ -8,29 +8,30 @@ #ifndef JetTracksAssociatorAtVertex_h #define JetTracksAssociatorAtVertex_h -#include "FWCore/Framework/interface/stream/EDProducer.h" #include "DataFormats/Common/interface/EDProductfwd.h" -#include "FWCore/Utilities/interface/InputTag.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" - +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" #include "RecoJets/JetAssociationAlgorithms/interface/JetTracksAssociationDRVertex.h" #include "RecoJets/JetAssociationAlgorithms/interface/JetTracksAssociationDRVertexAssigned.h" class JetTracksAssociatorAtVertex : public edm::stream::EDProducer<> { public: JetTracksAssociatorAtVertex(const edm::ParameterSet&); - ~JetTracksAssociatorAtVertex() override; + ~JetTracksAssociatorAtVertex() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); void produce(edm::Event&, const edm::EventSetup&) override; private: - edm::EDGetTokenT> mJets; - edm::EDGetTokenT mTracks; + const edm::EDGetTokenT> mJets; + const edm::EDGetTokenT mTracks; - int mTrackQuality; - JetTracksAssociationDRVertex mAssociator; - JetTracksAssociationDRVertexAssigned mAssociatorAssigned; - bool useAssigned; /// if true, use the track/jet association with vertex assignment to tracks + const JetTracksAssociationDRVertex mAssociator; + const JetTracksAssociationDRVertexAssigned mAssociatorAssigned; + const bool useAssigned; /// if true, use the track/jet association with vertex assignment to tracks edm::EDGetTokenT pvSrc; /// if useAssigned, will read this PV collection. }; diff --git a/RecoJets/JetPlusTracks/plugins/JetPlusTrackCorrector.cc b/RecoJets/JetPlusTracks/plugins/JetPlusTrackCorrector.cc index 87456f5444658..1a77f20f79041 100644 --- a/RecoJets/JetPlusTracks/plugins/JetPlusTrackCorrector.cc +++ b/RecoJets/JetPlusTracks/plugins/JetPlusTrackCorrector.cc @@ -1124,25 +1124,26 @@ bool JetPlusTrackCorrector::matchMuons(TrackRefs::const_iterator& itrk, // ----------------------------------------------------------------------------- // bool JetPlusTrackCorrector::matchElectrons(TrackRefs::const_iterator& itrk, - const edm::Handle& elecs, - const edm::Handle& elec_ids) const { - if (elecs->empty()) { + const edm::Handle& gsfEles, + const edm::Handle& idDecisionMap) const { + if (!gsfEles.isValid()) { return false; } double deltaRMIN = 999.; - uint32_t electron_index = 0; - for (auto const& ielec : *elecs) { - edm::Ref electron_ref(elecs, electron_index); - electron_index++; + for (auto ele = gsfEles->begin(); ele != gsfEles->end(); ++ele) { + const edm::Ptr elePtr(gsfEles, ele - gsfEles->begin()); + bool passID = false; + if (idDecisionMap.isValid()) + passID = (*idDecisionMap)[elePtr]; - if ((*elec_ids)[electron_ref] < 1.e-6) { + if (!passID) { continue; - } //@@ Check for null value + } //@@ Check for electronID // DR matching b/w electron and track - auto dR2 = deltaR2(ielec, **itrk); + auto dR2 = deltaR2(*ele, **itrk); if (dR2 < deltaRMIN) { deltaRMIN = dR2; } diff --git a/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cff.py b/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cff.py index 5223888f23e3e..20040dbb43ccb 100644 --- a/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cff.py +++ b/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cff.py @@ -6,10 +6,22 @@ useAssigned = True, pvSrc = "offlinePrimaryVertices" ) + # ---------- Tight Electron ID -from RecoEgamma.ElectronIdentification.electronIdSequence_cff import eidTight -JPTeidTight = eidTight.clone() +from RecoEgamma.ElectronIdentification.egmGsfElectronIDs_cff import egmGsfElectronIDs +JPTegmGsfElectronIDs = egmGsfElectronIDs.clone( + physicsObjectsIDs = cms.VPSet(), + physicsObjectSrc = 'gedGsfElectrons' +) +from PhysicsTools.SelectorUtils.tools.vid_id_tools import setupVIDSelection +my_id_modules = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Winter22_122X_V1_cff'] +for id_module_name in my_id_modules: + idmod= __import__(id_module_name, globals(), locals(), ['idName','cutFlow']) + for name in dir(idmod): + item = getattr(idmod,name) + if hasattr(item,'idName') and hasattr(item,'cutFlow'): + setupVIDSelection(JPTegmGsfElectronIDs,item) # ---------- Seeds from TrackJets @@ -47,7 +59,6 @@ # Anti-Kt JetPlusTrackCorrectionsAntiKt4Task = cms.Task( - JPTeidTight, JetPlusTrackAddonSeedReco, ak4JetTracksAssociatorAtVertexJPT, ak4JetTracksAssociatorAtCaloFace, diff --git a/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cfi.py b/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cfi.py index 6766ff80f14ea..9687d80f9b5c8 100644 --- a/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cfi.py +++ b/RecoJets/JetPlusTracks/python/JetPlusTrackCorrections_cfi.py @@ -38,8 +38,8 @@ # Electrons UseElectrons = cms.bool(True), - Electrons = cms.InputTag("gedGsfElectrons"), - ElectronIds = cms.InputTag("JPTeidTight"), + Electrons = cms.InputTag("reducedGedGsfElectrons"), + ElectronIds = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-tight"), PatElectrons = cms.InputTag("slimmedElectrons"), electronDRmatch = cms.double(0.02), diff --git a/RecoJets/JetProducers/plugins/ECFAdder.cc b/RecoJets/JetProducers/plugins/ECFAdder.cc index 3eb47f98def89..8089633e2007e 100644 --- a/RecoJets/JetProducers/plugins/ECFAdder.cc +++ b/RecoJets/JetProducers/plugins/ECFAdder.cc @@ -1,3 +1,5 @@ +#include + #include "RecoJets/JetProducers/interface/ECFAdder.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" @@ -28,23 +30,27 @@ ECFAdder::ECFAdder(const edm::ParameterSet& iConfig) if (ecftype_ == "ECF" || ecftype_.empty()) { ecfN_str << "ecf" << *n; - pfunc.reset(new fastjet::contrib::EnergyCorrelator(*n, beta_, fastjet::contrib::EnergyCorrelator::pt_R)); + pfunc = std::make_shared(*n, beta_, fastjet::contrib::EnergyCorrelator::pt_R); } else if (ecftype_ == "C") { ecfN_str << "ecfC" << *n; - pfunc.reset(new fastjet::contrib::EnergyCorrelatorCseries(*n, beta_, fastjet::contrib::EnergyCorrelator::pt_R)); + pfunc = std::make_shared( + *n, beta_, fastjet::contrib::EnergyCorrelator::pt_R); } else if (ecftype_ == "D") { ecfN_str << "ecfD" << *n; - pfunc.reset( - new fastjet::contrib::EnergyCorrelatorGeneralizedD2(alpha_, beta_, fastjet::contrib::EnergyCorrelator::pt_R)); + pfunc = std::make_shared( + alpha_, beta_, fastjet::contrib::EnergyCorrelator::pt_R); } else if (ecftype_ == "N") { ecfN_str << "ecfN" << *n; - pfunc.reset(new fastjet::contrib::EnergyCorrelatorNseries(*n, beta_, fastjet::contrib::EnergyCorrelator::pt_R)); + pfunc = std::make_shared( + *n, beta_, fastjet::contrib::EnergyCorrelator::pt_R); } else if (ecftype_ == "M") { ecfN_str << "ecfM" << *n; - pfunc.reset(new fastjet::contrib::EnergyCorrelatorMseries(*n, beta_, fastjet::contrib::EnergyCorrelator::pt_R)); + pfunc = std::make_shared( + *n, beta_, fastjet::contrib::EnergyCorrelator::pt_R); } else if (ecftype_ == "U") { ecfN_str << "ecfU" << *n; - pfunc.reset(new fastjet::contrib::EnergyCorrelatorUseries(*n, beta_, fastjet::contrib::EnergyCorrelator::pt_R)); + pfunc = std::make_shared( + *n, beta_, fastjet::contrib::EnergyCorrelator::pt_R); } variables_.push_back(ecfN_str.str()); produces>(ecfN_str.str()); diff --git a/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.cc b/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.cc index 2a18ccd409991..d8f3707231bb7 100644 --- a/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.cc +++ b/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.cc @@ -1,21 +1,38 @@ -#include "RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.h" -#include "FWCore/Framework/interface/Event.h" #include "DataFormats/Common/interface/View.h" -#include "FWCore/Framework/interface/MakerMacros.h" #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" +#include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "fastjet/tools/GridMedianBackgroundEstimator.hh" + +class FixedGridRhoProducerFastjet : public edm::stream::EDProducer<> { +public: + explicit FixedGridRhoProducerFastjet(const edm::ParameterSet& iConfig); + ~FixedGridRhoProducerFastjet() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + +private: + void produce(edm::Event&, const edm::EventSetup&) override; + + fastjet::GridMedianBackgroundEstimator bge_; + const edm::InputTag pfCandidatesTag_; + const edm::EDGetTokenT > input_pfcoll_token_; +}; using namespace std; FixedGridRhoProducerFastjet::FixedGridRhoProducerFastjet(const edm::ParameterSet& iConfig) - : bge_(iConfig.getParameter("maxRapidity"), iConfig.getParameter("gridSpacing")) { - pfCandidatesTag_ = iConfig.getParameter("pfCandidatesTag"); + : bge_(iConfig.getParameter("maxRapidity"), iConfig.getParameter("gridSpacing")), + pfCandidatesTag_{iConfig.getParameter("pfCandidatesTag")}, + input_pfcoll_token_{consumes >(pfCandidatesTag_)} { produces(); - - input_pfcoll_token_ = consumes >(pfCandidatesTag_); } -FixedGridRhoProducerFastjet::~FixedGridRhoProducerFastjet() {} - void FixedGridRhoProducerFastjet::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle > pfColl; iEvent.getByToken(input_pfcoll_token_, pfColl); @@ -28,4 +45,12 @@ void FixedGridRhoProducerFastjet::produce(edm::Event& iEvent, const edm::EventSe iEvent.put(std::make_unique(bge_.rho())); } +void FixedGridRhoProducerFastjet::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("maxRapidity", 5.0); + desc.add("gridSpacing", 0.55); + desc.add("pfCandidatesTag", edm::InputTag("")); + descriptions.add("default_FixedGridRhoProducerFastjet", desc); +} + DEFINE_FWK_MODULE(FixedGridRhoProducerFastjet); diff --git a/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.h b/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.h deleted file mode 100644 index a28ef9fd2b999..0000000000000 --- a/RecoJets/JetProducers/plugins/FixedGridRhoProducerFastjet.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef RecoJets_JetProducers_plugins_FixedGridRhoProducerFastjet_h -#define RecoJets_JetProducers_plugins_FixedGridRhoProducerFastjet_h - -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h" -#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" -#include "fastjet/tools/GridMedianBackgroundEstimator.hh" - -class FixedGridRhoProducerFastjet : public edm::stream::EDProducer<> { -public: - explicit FixedGridRhoProducerFastjet(const edm::ParameterSet& iConfig); - ~FixedGridRhoProducerFastjet() override; - -private: - void produce(edm::Event&, const edm::EventSetup&) override; - - edm::InputTag pfCandidatesTag_; - fastjet::GridMedianBackgroundEstimator bge_; - - edm::EDGetTokenT > input_pfcoll_token_; -}; - -#endif diff --git a/RecoJets/JetProducers/python/fixedGridRhoProducerFastjet_cfi.py b/RecoJets/JetProducers/python/fixedGridRhoProducerFastjet_cfi.py index 984b7d9714c1c..dce3a663e1d57 100644 --- a/RecoJets/JetProducers/python/fixedGridRhoProducerFastjet_cfi.py +++ b/RecoJets/JetProducers/python/fixedGridRhoProducerFastjet_cfi.py @@ -1,19 +1,10 @@ import FWCore.ParameterSet.Config as cms - -fixedGridRhoFastjetAll = cms.EDProducer("FixedGridRhoProducerFastjet", - pfCandidatesTag = cms.InputTag("particleFlow"), - maxRapidity = cms.double(5.0), - gridSpacing = cms.double(0.55) +from RecoJets.JetProducers.default_FixedGridRhoProducerFastjet_cfi import default_FixedGridRhoProducerFastjet +fixedGridRhoFastjetAll = default_FixedGridRhoProducerFastjet.clone( + pfCandidatesTag = "particleFlow" ) - -fixedGridRhoFastjetAllCalo = cms.EDProducer("FixedGridRhoProducerFastjet", - pfCandidatesTag = cms.InputTag("towerMaker"), - maxRapidity = cms.double(5.0), - gridSpacing = cms.double(0.55) +fixedGridRhoFastjetAllCalo = default_FixedGridRhoProducerFastjet.clone( + pfCandidatesTag = "towerMaker" ) - - - - diff --git a/RecoLocalCalo/EcalRecProducers/plugins/EcalRecHitSoAToLegacy.cc b/RecoLocalCalo/EcalRecProducers/plugins/EcalRecHitSoAToLegacy.cc new file mode 100644 index 0000000000000..2837920bd19c7 --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/EcalRecHitSoAToLegacy.cc @@ -0,0 +1,96 @@ +#include "DataFormats/DetId/interface/DetId.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHitHostCollection.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/EmptyGroupDescription.h" +#include "FWCore/Utilities/interface/EDGetToken.h" +#include "FWCore/Utilities/interface/EDPutToken.h" + +class EcalRecHitSoAToLegacy : public edm::global::EDProducer<> { +public: + explicit EcalRecHitSoAToLegacy(edm::ParameterSet const &ps); + ~EcalRecHitSoAToLegacy() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions &); + +private: + using InputProduct = EcalRecHitHostCollection; + void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const override; + +private: + const bool isPhase2_; + const edm::EDGetTokenT inputTokenEB_; + const edm::EDGetTokenT inputTokenEE_; + const edm::EDPutTokenT outputTokenEB_; + const edm::EDPutTokenT outputTokenEE_; +}; + +void EcalRecHitSoAToLegacy::fillDescriptions(edm::ConfigurationDescriptions &confDesc) { + edm::ParameterSetDescription desc; + + desc.add("inputCollectionEB", edm::InputTag("ecalRecHitPortable", "EcalRecHitsEB")); + desc.add("outputLabelEB", "EcalRecHitsEB"); + desc.ifValue(edm::ParameterDescription("isPhase2", false, true), + false >> (edm::ParameterDescription( + "inputCollectionEE", edm::InputTag("ecalRecHitPortable", "EcalRecHitsEE"), true) and + edm::ParameterDescription("outputLabelEE", "EcalRecHitsEE", true)) or + true >> edm::EmptyGroupDescription()); + confDesc.add("ecalRecHitSoAToLegacy", desc); +} + +EcalRecHitSoAToLegacy::EcalRecHitSoAToLegacy(edm::ParameterSet const &ps) + : isPhase2_{ps.getParameter("isPhase2")}, + inputTokenEB_{consumes(ps.getParameter("inputCollectionEB"))}, + inputTokenEE_{isPhase2_ ? edm::EDGetTokenT{} + : consumes(ps.getParameter("inputCollectionEE"))}, + outputTokenEB_{produces(ps.getParameter("outputLabelEB"))}, + outputTokenEE_{isPhase2_ ? edm::EDPutTokenT{} + : produces(ps.getParameter("outputLabelEE"))} {} + +void EcalRecHitSoAToLegacy::produce(edm::StreamID sid, edm::Event &event, edm::EventSetup const &setup) const { + auto const &inputCollEB = event.get(inputTokenEB_); + auto const &inputCollEBView = inputCollEB.const_view(); + auto outputCollEB = std::make_unique(); + outputCollEB->reserve(inputCollEBView.size()); + + for (uint32_t i = 0; i < inputCollEBView.size(); ++i) { + // Save only if energy is >= 0 ! + // This is important because the channels that were supposed + // to be excluded get "-1" as energy + if (inputCollEBView.energy()[i] >= 0.) { + outputCollEB->emplace_back(DetId{inputCollEBView.id()[i]}, + inputCollEBView.energy()[i], + inputCollEBView.time()[i], + inputCollEBView.extra()[i], + inputCollEBView.flagBits()[i]); + } + } + event.put(outputTokenEB_, std::move(outputCollEB)); + + if (!isPhase2_) { + auto const &inputCollEE = event.get(inputTokenEE_); + auto const &inputCollEEView = inputCollEE.const_view(); + auto outputCollEE = std::make_unique(); + outputCollEE->reserve(inputCollEEView.size()); + + for (uint32_t i = 0; i < inputCollEEView.size(); ++i) { + // Save only if energy is >= 0 ! + // This is important because the channels that were supposed + // to be excluded get "-1" as energy + if (inputCollEEView.energy()[i] >= 0.) { + outputCollEE->emplace_back(DetId{inputCollEEView.id()[i]}, + inputCollEEView.energy()[i], + inputCollEEView.time()[i], + inputCollEEView.extra()[i], + inputCollEEView.flagBits()[i]); + } + } + event.put(outputTokenEE_, std::move(outputCollEE)); + } +} + +DEFINE_FWK_MODULE(EcalRecHitSoAToLegacy); diff --git a/RecoLocalCalo/EcalRecProducers/plugins/EcalUncalibRecHitSoAToLegacy.cc b/RecoLocalCalo/EcalRecProducers/plugins/EcalUncalibRecHitSoAToLegacy.cc index 32ebbf669186f..08afd4fc10cb4 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/EcalUncalibRecHitSoAToLegacy.cc +++ b/RecoLocalCalo/EcalRecProducers/plugins/EcalUncalibRecHitSoAToLegacy.cc @@ -4,14 +4,14 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/Framework/interface/global/EDProducer.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/ParameterSet/interface/EmptyGroupDescription.h" #include "FWCore/Utilities/interface/EDGetToken.h" #include "FWCore/Utilities/interface/EDPutToken.h" #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h" -class EcalUncalibRecHitSoAToLegacy : public edm::stream::EDProducer<> { +class EcalUncalibRecHitSoAToLegacy : public edm::global::EDProducer<> { public: explicit EcalUncalibRecHitSoAToLegacy(edm::ParameterSet const &ps); ~EcalUncalibRecHitSoAToLegacy() override = default; @@ -19,86 +19,84 @@ class EcalUncalibRecHitSoAToLegacy : public edm::stream::EDProducer<> { private: using InputProduct = EcalUncalibratedRecHitHostCollection; - void produce(edm::Event &, edm::EventSetup const &) override; + void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const override; private: const bool isPhase2_; - const edm::EDGetTokenT uncalibRecHitsPortableEB_; - const edm::EDGetTokenT uncalibRecHitsPortableEE_; - const edm::EDPutTokenT uncalibRecHitsCPUEBToken_; - const edm::EDPutTokenT uncalibRecHitsCPUEEToken_; + const edm::EDGetTokenT inputTokenEB_; + const edm::EDGetTokenT inputTokenEE_; + const edm::EDPutTokenT outputTokenEB_; + const edm::EDPutTokenT outputTokenEE_; }; void EcalUncalibRecHitSoAToLegacy::fillDescriptions(edm::ConfigurationDescriptions &confDesc) { edm::ParameterSetDescription desc; - desc.add("uncalibRecHitsPortableEB", + desc.add("inputCollectionEB", edm::InputTag("ecalMultiFitUncalibRecHitPortable", "EcalUncalibRecHitsEB")); - desc.add("recHitsLabelCPUEB", "EcalUncalibRecHitsEB"); + desc.add("outputLabelEB", "EcalUncalibRecHitsEB"); desc.ifValue(edm::ParameterDescription("isPhase2", false, true), false >> (edm::ParameterDescription( - "uncalibRecHitsPortableEE", + "inputCollectionEE", edm::InputTag("ecalMultiFitUncalibRecHitPortable", "EcalUncalibRecHitsEE"), true) and - edm::ParameterDescription("recHitsLabelCPUEE", "EcalUncalibRecHitsEE", true)) or + edm::ParameterDescription("outputLabelEE", "EcalUncalibRecHitsEE", true)) or true >> edm::EmptyGroupDescription()); confDesc.add("ecalUncalibRecHitSoAToLegacy", desc); } EcalUncalibRecHitSoAToLegacy::EcalUncalibRecHitSoAToLegacy(edm::ParameterSet const &ps) : isPhase2_{ps.getParameter("isPhase2")}, - uncalibRecHitsPortableEB_{consumes(ps.getParameter("uncalibRecHitsPortableEB"))}, - uncalibRecHitsPortableEE_{ - isPhase2_ ? edm::EDGetTokenT{} - : consumes(ps.getParameter("uncalibRecHitsPortableEE"))}, - uncalibRecHitsCPUEBToken_{ - produces(ps.getParameter("recHitsLabelCPUEB"))}, - uncalibRecHitsCPUEEToken_{ - isPhase2_ ? edm::EDPutTokenT{} - : produces(ps.getParameter("recHitsLabelCPUEE"))} {} + inputTokenEB_{consumes(ps.getParameter("inputCollectionEB"))}, + inputTokenEE_{isPhase2_ ? edm::EDGetTokenT{} + : consumes(ps.getParameter("inputCollectionEE"))}, + outputTokenEB_{produces(ps.getParameter("outputLabelEB"))}, + outputTokenEE_{isPhase2_ + ? edm::EDPutTokenT{} + : produces(ps.getParameter("outputLabelEE"))} {} -void EcalUncalibRecHitSoAToLegacy::produce(edm::Event &event, edm::EventSetup const &setup) { - auto const &uncalRecHitsEBColl = event.get(uncalibRecHitsPortableEB_); - auto const &uncalRecHitsEBCollView = uncalRecHitsEBColl.const_view(); - auto recHitsCPUEB = std::make_unique(); - recHitsCPUEB->reserve(uncalRecHitsEBCollView.size()); +void EcalUncalibRecHitSoAToLegacy::produce(edm::StreamID sid, edm::Event &event, edm::EventSetup const &setup) const { + auto const &inputCollEB = event.get(inputTokenEB_); + auto const &inputCollEBView = inputCollEB.const_view(); + auto outputCollEB = std::make_unique(); + outputCollEB->reserve(inputCollEBView.size()); - for (uint32_t i = 0; i < uncalRecHitsEBCollView.size(); ++i) { - recHitsCPUEB->emplace_back(DetId{uncalRecHitsEBCollView.id()[i]}, - uncalRecHitsEBCollView.amplitude()[i], - uncalRecHitsEBCollView.pedestal()[i], - uncalRecHitsEBCollView.jitter()[i], - uncalRecHitsEBCollView.chi2()[i], - uncalRecHitsEBCollView.flags()[i]); + for (uint32_t i = 0; i < inputCollEBView.size(); ++i) { + outputCollEB->emplace_back(DetId{inputCollEBView.id()[i]}, + inputCollEBView.amplitude()[i], + inputCollEBView.pedestal()[i], + inputCollEBView.jitter()[i], + inputCollEBView.chi2()[i], + inputCollEBView.flags()[i]); if (isPhase2_) { - (*recHitsCPUEB)[i].setAmplitudeError(uncalRecHitsEBCollView.amplitudeError()[i]); + (*outputCollEB)[i].setAmplitudeError(inputCollEBView.amplitudeError()[i]); } - (*recHitsCPUEB)[i].setJitterError(uncalRecHitsEBCollView.jitterError()[i]); + (*outputCollEB)[i].setJitterError(inputCollEBView.jitterError()[i]); for (uint32_t sample = 0; sample < EcalDataFrame::MAXSAMPLES; ++sample) { - (*recHitsCPUEB)[i].setOutOfTimeAmplitude(sample, uncalRecHitsEBCollView.outOfTimeAmplitudes()[i][sample]); + (*outputCollEB)[i].setOutOfTimeAmplitude(sample, inputCollEBView.outOfTimeAmplitudes()[i][sample]); } } - event.put(uncalibRecHitsCPUEBToken_, std::move(recHitsCPUEB)); + event.put(outputTokenEB_, std::move(outputCollEB)); if (!isPhase2_) { - auto const &uncalRecHitsEEColl = event.get(uncalibRecHitsPortableEE_); - auto const &uncalRecHitsEECollView = uncalRecHitsEEColl.const_view(); - auto recHitsCPUEE = std::make_unique(); - recHitsCPUEE->reserve(uncalRecHitsEECollView.size()); + auto const &inputCollEE = event.get(inputTokenEE_); + auto const &inputCollEEView = inputCollEE.const_view(); + auto outputCollEE = std::make_unique(); + outputCollEE->reserve(inputCollEEView.size()); - for (uint32_t i = 0; i < uncalRecHitsEECollView.size(); ++i) { - recHitsCPUEE->emplace_back(DetId{uncalRecHitsEECollView.id()[i]}, - uncalRecHitsEECollView.amplitude()[i], - uncalRecHitsEECollView.pedestal()[i], - uncalRecHitsEECollView.jitter()[i], - uncalRecHitsEECollView.chi2()[i], - uncalRecHitsEECollView.flags()[i]); - (*recHitsCPUEE)[i].setJitterError(uncalRecHitsEECollView.jitterError()[i]); + for (uint32_t i = 0; i < inputCollEEView.size(); ++i) { + outputCollEE->emplace_back(DetId{inputCollEEView.id()[i]}, + inputCollEEView.amplitude()[i], + inputCollEEView.pedestal()[i], + inputCollEEView.jitter()[i], + inputCollEEView.chi2()[i], + inputCollEEView.flags()[i]); + (*outputCollEE)[i].setJitterError(inputCollEEView.jitterError()[i]); for (uint32_t sample = 0; sample < EcalDataFrame::MAXSAMPLES; ++sample) { - (*recHitsCPUEE)[i].setOutOfTimeAmplitude(sample, uncalRecHitsEECollView.outOfTimeAmplitudes()[i][sample]); + (*outputCollEE)[i].setOutOfTimeAmplitude(sample, inputCollEEView.outOfTimeAmplitudes()[i][sample]); } } - event.put(uncalibRecHitsCPUEEToken_, std::move(recHitsCPUEE)); + event.put(outputTokenEE_, std::move(outputCollEE)); } } diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/DeclsForKernels.h b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/DeclsForKernels.h index 6f96b26d253d1..c7f96cb17ee7f 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/DeclsForKernels.h +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/DeclsForKernels.h @@ -127,4 +127,31 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::multifit { } // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::multifit +// +// ECAL Rechit producer +// + +namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { + + // parameters that are read from the configuration file for rechit producer + struct ConfigurationParameters { + bool killDeadChannels; + + bool recoverEBIsolatedChannels; + bool recoverEEIsolatedChannels; + bool recoverEBVFE; + bool recoverEEVFE; + bool recoverEBFE; + bool recoverEEFE; + + float EBLaserMIN; + float EELaserMIN; + float EBLaserMAX; + float EELaserMAX; + + uint32_t flagmask; + }; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit + #endif // RecoLocalCalo_EcalRecProducers_plugins_alpaka_DeclsForKernels_h diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc new file mode 100644 index 0000000000000..574d0755f4987 --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc @@ -0,0 +1,63 @@ +#include + +#include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" + +#include "EcalRecHitBuilder.h" +#include "EnergyComputationKernels.h" + +//#define DEBUG +//#define ECAL_RECO_ALPAKA_DEBUG + +namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { + + using namespace cms::alpakatools; + + // host version, to be called by the plugin + void create_ecal_rechit(Queue& queue, + InputProduct const* ebUncalibRecHits, + InputProduct const* eeUncalibRecHits, + OutputProduct& ebRecHits, + OutputProduct& eeRecHits, + EcalRecHitConditionsDevice const& conditionsDev, + EcalRecHitParametersDevice const& parametersDev, + edm::TimeValue_t const& eventTime, + ConfigurationParameters const& configParams, + bool const isPhase2) { + auto nchannels = static_cast(ebUncalibRecHits->const_view().metadata().size()); + if (!isPhase2) { + nchannels += static_cast(eeUncalibRecHits->const_view().metadata().size()); + } + + // + // kernel create rechit + // + uint32_t constexpr nchannels_per_block = 16; + auto constexpr threads = nchannels_per_block; + auto const blocks = cms::alpakatools::divide_up_by(nchannels, threads); + auto workDiv = cms::alpakatools::make_workdiv(blocks, threads); + if (!isPhase2) { + alpaka::exec(queue, + workDiv, + KernelCreateEcalRechit{}, + ebUncalibRecHits->const_view(), + eeUncalibRecHits->const_view(), + ebRecHits.view(), + eeRecHits.view(), + conditionsDev.const_view(), + parametersDev.const_data(), + eventTime, + configParams); + } else { + alpaka::exec(queue, + workDiv, + KernelCreateEcalRechitPhase2{}, + ebUncalibRecHits->const_view(), + ebRecHits.view(), + conditionsDev.const_view(), + parametersDev.const_data(), + eventTime, + configParams); + } + } + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.h b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.h new file mode 100644 index 0000000000000..42c2ae51c6e0e --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.h @@ -0,0 +1,36 @@ +#ifndef RecoLocalCalo_EcalRecProducers_plugins_alpaka_EcalRecHitBuilder_h +#define RecoLocalCalo_EcalRecProducers_plugins_alpaka_EcalRecHitBuilder_h + +// +// Builder of ECAL RecHits on GPU +// + +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h" +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" +#include "DataFormats/Provenance/interface/Timestamp.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +#include "DeclsForKernels.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { + + using InputProduct = EcalUncalibratedRecHitDeviceCollection; + using OutputProduct = EcalRecHitDeviceCollection; + + // host version, to be called by the plugin + void create_ecal_rechit(Queue& queue, + InputProduct const* ebUncalibRecHits, + InputProduct const* eeUncalibRecHits, + OutputProduct& ebRecHits, + OutputProduct& eeRecHits, + EcalRecHitConditionsDevice const& conditionsDev, + EcalRecHitParametersDevice const& parametersDev, + edm::TimeValue_t const& eventTime, + ConfigurationParameters const& configParams, + bool const isPhase2); + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit + +#endif // RecoLocalCalo_EcalRecProducers_plugins_alpaka_EcalRecHitBuilder_h diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitConditionsESProducer.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitConditionsESProducer.cc new file mode 100644 index 0000000000000..67eeeb54520b4 --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitConditionsESProducer.cc @@ -0,0 +1,198 @@ +#include "FWCore/Framework/interface/ESTransientHandle.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "CondFormats/DataRecord/interface/EcalADCToGeVConstantRcd.h" +#include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h" +#include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h" +#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRcd.h" +#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRefRcd.h" +#include "CondFormats/DataRecord/interface/EcalLaserAlphasRcd.h" +#include "CondFormats/DataRecord/interface/EcalLinearCorrectionsRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeCalibConstantsRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeOffsetConstantRcd.h" +#include "CondFormats/EcalObjects/interface/EcalADCToGeVConstant.h" +#include "CondFormats/EcalObjects/interface/EcalChannelStatus.h" +#include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h" +#include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatios.h" +#include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatiosRef.h" +#include "CondFormats/EcalObjects/interface/EcalLaserAlphas.h" +#include "CondFormats/EcalObjects/interface/EcalLinearCorrections.h" +#include "CondFormats/EcalObjects/interface/EcalTimeCalibConstants.h" +#include "CondFormats/EcalObjects/interface/EcalTimeOffsetConstant.h" + +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h" +#include "CondFormats/EcalObjects/interface/EcalRecHitConditionsSoA.h" +#include "CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h" + +#include "DataFormats/EcalDigi/interface/EcalConstants.h" + +#include "DataFormats/EcalDetId/interface/EcalElectronicsId.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ModuleFactory.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/host.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + class EcalRecHitConditionsESProducer : public ESProducer { + public: + EcalRecHitConditionsESProducer(edm::ParameterSet const& iConfig) + : ESProducer(iConfig), isPhase2_{iConfig.getParameter("isPhase2")} { + auto cc = setWhatProduced(this); + adcToGeVConstantToken_ = cc.consumes(); + intercalibConstantsToken_ = cc.consumes(); + channelStatusToken_ = cc.consumes(); + laserAPDPNRatiosToken_ = cc.consumes(); + laserAPDPNRatiosRefToken_ = cc.consumes(); + laserAlphasToken_ = cc.consumes(); + linearCorrectionsToken_ = cc.consumes(); + timeCalibConstantsToken_ = cc.consumes(iConfig.getParameter("timeCalibTag")); + timeOffsetConstantToken_ = cc.consumes(iConfig.getParameter("timeOffsetTag")); + } + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("timeCalibTag", edm::ESInputTag()); + desc.add("timeOffsetTag", edm::ESInputTag()); + desc.add("isPhase2", false); + descriptions.addWithDefaultLabel(desc); + } + + std::unique_ptr produce(EcalRecHitConditionsRcd const& iRecord) { + auto const& adcToGeVConstantData = iRecord.get(adcToGeVConstantToken_); + auto const& intercalibConstantsData = iRecord.get(intercalibConstantsToken_); + auto const& channelStatusData = iRecord.get(channelStatusToken_); + auto const& laserAPDPNRatiosData = iRecord.get(laserAPDPNRatiosToken_); + auto const& laserAPDPNRatiosRefData = iRecord.get(laserAPDPNRatiosRefToken_); + auto const& laserAlphasData = iRecord.get(laserAlphasToken_); + auto const& linearCorrectionsData = iRecord.get(linearCorrectionsToken_); + auto const& timeCalibConstantsData = iRecord.get(timeCalibConstantsToken_); + auto const& timeOffsetConstantData = iRecord.get(timeOffsetConstantToken_); + + const auto barrelSize = channelStatusData.barrelItems().size(); + auto numberOfXtals = barrelSize; + if (!isPhase2_) { + numberOfXtals += channelStatusData.endcapItems().size(); + } + + auto product = std::make_unique(numberOfXtals, cms::alpakatools::host()); + auto view = product->view(); + + // Filling crystal level conditions + auto const& intercalibConstantsEB = intercalibConstantsData.barrelItems(); + auto const& channelStatusEB = channelStatusData.barrelItems(); + auto const& laserAPDPNRatiosLaserEB = laserAPDPNRatiosData.getLaserMap().barrelItems(); + auto const& laserAPDPNRatiosTime = laserAPDPNRatiosData.getTimeMap(); + auto const& laserAPDPNRatiosRefEB = laserAPDPNRatiosRefData.barrelItems(); + auto const& laserAlphasEB = laserAlphasData.barrelItems(); + auto const& linearCorrectionsEB = linearCorrectionsData.getValueMap().barrelItems(); + auto const& linearCorrectionsTime = linearCorrectionsData.getTimeMap(); + auto const& timeCalibConstantsEB = timeCalibConstantsData.barrelItems(); + + // barrel conditions + for (unsigned int i = 0; i < barrelSize; ++i) { + auto vi = view[i]; + + vi.intercalibConstants() = intercalibConstantsEB[i]; + vi.channelStatus() = channelStatusEB[i].getEncodedStatusCode(); + + vi.laserAPDPNRatios_p1() = laserAPDPNRatiosLaserEB[i].p1; + vi.laserAPDPNRatios_p2() = laserAPDPNRatiosLaserEB[i].p2; + vi.laserAPDPNRatios_p3() = laserAPDPNRatiosLaserEB[i].p3; + + vi.laserAPDPNref() = laserAPDPNRatiosRefEB[i]; + vi.laserAlpha() = laserAlphasEB[i]; + + vi.linearCorrections_p1() = linearCorrectionsEB[i].p1; + vi.linearCorrections_p2() = linearCorrectionsEB[i].p2; + vi.linearCorrections_p3() = linearCorrectionsEB[i].p3; + + vi.timeCalibConstants() = timeCalibConstantsEB[i]; + } // end Barrel loop + + // time maps + for (unsigned int i = 0; i < laserAPDPNRatiosData.getTimeMap().size(); ++i) { + auto vi = view[i]; + vi.laserAPDPNRatios_t1() = laserAPDPNRatiosTime[i].t1.value(); + vi.laserAPDPNRatios_t2() = laserAPDPNRatiosTime[i].t2.value(); + vi.laserAPDPNRatios_t3() = laserAPDPNRatiosTime[i].t3.value(); + } + + for (unsigned int i = 0; i < linearCorrectionsData.getTimeMap().size(); ++i) { + auto vi = view[i]; + vi.linearCorrections_t1() = linearCorrectionsTime[i].t1.value(); + vi.linearCorrections_t2() = linearCorrectionsTime[i].t2.value(); + vi.linearCorrections_t3() = linearCorrectionsTime[i].t3.value(); + } + + // scalar data + // ADC to GeV constants + view.adcToGeVConstantEB() = adcToGeVConstantData.getEBValue(); + + // time offset constants + view.timeOffsetConstantEB() = timeOffsetConstantData.getEBValue(); + + // endcap conditions + if (!isPhase2_) { + auto const& intercalibConstantsEE = intercalibConstantsData.endcapItems(); + auto const& channelStatusEE = channelStatusData.endcapItems(); + auto const& laserAPDPNRatiosLaserEE = laserAPDPNRatiosData.getLaserMap().endcapItems(); + auto const& laserAPDPNRatiosRefEE = laserAPDPNRatiosRefData.endcapItems(); + auto const& laserAlphasEE = laserAlphasData.endcapItems(); + auto const& linearCorrectionsEE = linearCorrectionsData.getValueMap().endcapItems(); + auto const& timeCalibConstantsEE = timeCalibConstantsData.endcapItems(); + + const auto endcapSize = channelStatusData.endcapItems().size(); + for (unsigned int i = 0; i < endcapSize; ++i) { + auto vi = view[barrelSize + i]; + + vi.intercalibConstants() = intercalibConstantsEE[i]; + vi.channelStatus() = channelStatusEE[i].getEncodedStatusCode(); + + vi.laserAPDPNRatios_p1() = laserAPDPNRatiosLaserEE[i].p1; + vi.laserAPDPNRatios_p2() = laserAPDPNRatiosLaserEE[i].p2; + vi.laserAPDPNRatios_p3() = laserAPDPNRatiosLaserEE[i].p3; + + vi.laserAPDPNref() = laserAPDPNRatiosRefEE[i]; + vi.laserAlpha() = laserAlphasEE[i]; + + vi.linearCorrections_p1() = linearCorrectionsEE[i].p1; + vi.linearCorrections_p2() = linearCorrectionsEE[i].p2; + vi.linearCorrections_p3() = linearCorrectionsEE[i].p3; + + vi.timeCalibConstants() = timeCalibConstantsEE[i]; + } // end Endcap loop + + // scalar data + // ADC to GeV constants + view.adcToGeVConstantEE() = adcToGeVConstantData.getEEValue(); + + // time offset constants + view.timeOffsetConstantEE() = timeOffsetConstantData.getEEValue(); + } + + // number of barrel items as offset for hashed ID access to EE items of columns + view.offsetEE() = barrelSize; + + return product; + } + + private: + edm::ESGetToken adcToGeVConstantToken_; + edm::ESGetToken intercalibConstantsToken_; + edm::ESGetToken channelStatusToken_; + edm::ESGetToken laserAPDPNRatiosToken_; + edm::ESGetToken laserAPDPNRatiosRefToken_; + edm::ESGetToken laserAlphasToken_; + edm::ESGetToken linearCorrectionsToken_; + edm::ESGetToken timeCalibConstantsToken_; + edm::ESGetToken timeOffsetConstantToken_; + + bool const isPhase2_; + }; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +DEFINE_FWK_EVENTSETUP_ALPAKA_MODULE(EcalRecHitConditionsESProducer); diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc new file mode 100644 index 0000000000000..a87a1675f2038 --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc @@ -0,0 +1,98 @@ +#include "CommonTools/Utils/interface/StringToEnumValue.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "CondFormats/EcalObjects/interface/EcalChannelStatusCode.h" +#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h" +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" + +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" + +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/ModuleFactory.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/host.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" +#include "HeterogeneousCore/CUDACore/interface/JobConfigurationGPURecord.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + class EcalRecHitParametersESProducer : public ESProducer { + public: + EcalRecHitParametersESProducer(edm::ParameterSet const&); + ~EcalRecHitParametersESProducer() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions&); + std::unique_ptr produce(JobConfigurationGPURecord const&); + + private: + std::bitset channelStatusCodesToBeExcluded_; + RecoFlagBitsArray recoFlagBitsArray_; + }; + + EcalRecHitParametersESProducer::EcalRecHitParametersESProducer(edm::ParameterSet const& iConfig) + : ESProducer(iConfig), recoFlagBitsArray_() { + setWhatProduced(this); + + // Translate string representation of ChannelStatusToBeExcluded to enum values and pack into bitset + auto const& channelStatusToBeExcluded = StringToEnumValue( + iConfig.getParameter>("ChannelStatusToBeExcluded")); + for (auto const& st : channelStatusToBeExcluded) { + channelStatusCodesToBeExcluded_.set(st); + } + + // Generate map of channel status codes and corresponding recoFlag bits + auto const& fmdbRecoPset = iConfig.getParameter("flagsMapDBReco"); + auto const& recoFlagStrings = fmdbRecoPset.getParameterNames(); + for (auto const& recoFlagString : recoFlagStrings) { + auto const recoFlag = static_cast(StringToEnumValue(recoFlagString)); + auto const& channelStatusCodeStrings = fmdbRecoPset.getParameter>(recoFlagString); + for (auto const& channelStatusCodeString : channelStatusCodeStrings) { + auto const chStatCode = StringToEnumValue(channelStatusCodeString); + // set recoFlagBits for this channel status code + recoFlagBitsArray_.at(chStatCode) = static_cast(recoFlag); + } + } + } + + void EcalRecHitParametersESProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + // channel statuses to be exluded from reconstruction + desc.add>("ChannelStatusToBeExcluded", + {"kDAC", + "kNoisy", + "kNNoisy", + "kFixedG6", + "kFixedG1", + "kFixedG0", + "kNonRespondingIsolated", + "kDeadVFE", + "kDeadFE", + "kNoDataNoTP"}); + + // reco flags association to channel status flags + edm::ParameterSetDescription psd0; + psd0.add>("kGood", {"kOk", "kDAC", "kNoLaser", "kNoisy"}); + psd0.add>("kNeighboursRecovered", {"kFixedG0", "kNonRespondingIsolated", "kDeadVFE"}); + psd0.add>("kDead", {"kNoDataNoTP"}); + psd0.add>("kNoisy", {"kNNoisy", "kFixedG6", "kFixedG1"}); + psd0.add>("kTowerRecovered", {"kDeadFE"}); + desc.add("flagsMapDBReco", psd0); + + descriptions.addWithDefaultLabel(desc); + } + + std::unique_ptr EcalRecHitParametersESProducer::produce( + JobConfigurationGPURecord const& iRecord) { + auto product = std::make_unique(cms::alpakatools::host()); + auto value = product->value(); + + std::memcpy(value.recoFlagBits.data(), recoFlagBitsArray_.data(), sizeof(uint32_t) * recoFlagBitsArray_.size()); + + value.channelStatusCodesToBeExcluded = channelStatusCodesToBeExcluded_; + + return product; + } + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +DEFINE_FWK_EVENTSETUP_ALPAKA_MODULE(EcalRecHitParametersESProducer); diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitProducerPortable.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitProducerPortable.cc new file mode 100644 index 0000000000000..cc212188a16f0 --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitProducerPortable.cc @@ -0,0 +1,177 @@ +#include "CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h" +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h" +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" +#include "DataFormats/EcalRecHit/interface/RecoTypes.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/EmptyGroupDescription.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDGetToken.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/stream/EDProducer.h" +#include "HeterogeneousCore/CUDACore/interface/JobConfigurationGPURecord.h" + +#include "DeclsForKernels.h" +#include "EcalRecHitBuilder.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + class EcalRecHitProducerPortable : public stream::EDProducer<> { + public: + explicit EcalRecHitProducerPortable(edm::ParameterSet const& ps); + ~EcalRecHitProducerPortable() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions&); + + void produce(device::Event&, device::EventSetup const&) override; + + private: + bool const isPhase2_; + // input + using InputProduct = EcalUncalibratedRecHitDeviceCollection; + const device::EDGetToken uncalibRecHitsTokenEB_; + const device::EDGetToken uncalibRecHitsTokenEE_; + // output + using OutputProduct = EcalRecHitDeviceCollection; + const device::EDPutToken recHitsTokenEB_; + device::EDPutToken recHitsTokenEE_; + + // configuration parameters + ecal::rechit::ConfigurationParameters configParameters_; + + // conditions tokens + const device::ESGetToken recHitConditionsToken_; + const device::ESGetToken recHitParametersToken_; + }; + + void EcalRecHitProducerPortable::fillDescriptions(edm::ConfigurationDescriptions& confDesc) { + edm::ParameterSetDescription desc; + + desc.add("uncalibrecHitsInLabelEB", + edm::InputTag("ecalMultiFitUncalibRecHitPortable", "EcalUncalibRecHitsEB")); + desc.add("recHitsLabelEB", "EcalRecHitsEB"); + desc.add("killDeadChannels", true); + desc.add("recoverEBIsolatedChannels", false); + desc.add("recoverEBVFE", false); + desc.add("recoverEBFE", true); + + desc.add("EBLaserMIN", 0.5); + desc.add("EBLaserMAX", 3.0); + + desc.ifValue(edm::ParameterDescription("isPhase2", false, true), + false >> (edm::ParameterDescription( + "uncalibrecHitsInLabelEE", + edm::InputTag("ecalMultiFitUncalibRecHitPortable", "EcalUncalibRecHitsEE"), + true) and + edm::ParameterDescription("recHitsLabelEE", "EcalRecHitsEE", true) and + edm::ParameterDescription("recoverEEIsolatedChannels", false, true) and + edm::ParameterDescription("recoverEEVFE", false, true) and + edm::ParameterDescription("recoverEEFE", true, true) and + edm::ParameterDescription("EELaserMIN", 0.5, true) and + edm::ParameterDescription("EELaserMAX", 8.0, true)) or + true >> edm::EmptyGroupDescription()); + + confDesc.addWithDefaultLabel(desc); + } + + EcalRecHitProducerPortable::EcalRecHitProducerPortable(const edm::ParameterSet& ps) + : isPhase2_{ps.getParameter("isPhase2")}, + uncalibRecHitsTokenEB_{consumes(ps.getParameter("uncalibrecHitsInLabelEB"))}, + uncalibRecHitsTokenEE_{isPhase2_ ? device::EDGetToken{} + : consumes(ps.getParameter("uncalibrecHitsInLabelEE"))}, + recHitsTokenEB_{produces(ps.getParameter("recHitsLabelEB"))}, + recHitConditionsToken_{esConsumes()}, + recHitParametersToken_{esConsumes()} { + if (!isPhase2_) { + recHitsTokenEE_ = produces(ps.getParameter("recHitsLabelEE")); + } + configParameters_.killDeadChannels = ps.getParameter("killDeadChannels"); + configParameters_.EBLaserMIN = ps.getParameter("EBLaserMIN"); + configParameters_.EELaserMIN = isPhase2_ ? 0. : ps.getParameter("EELaserMIN"); + configParameters_.EBLaserMAX = ps.getParameter("EBLaserMAX"); + configParameters_.EELaserMAX = isPhase2_ ? 0. : ps.getParameter("EELaserMAX"); + + // do not propagate channels with these flags on + uint32_t flagmask = 0; + flagmask |= 0x1 << EcalRecHit::kNeighboursRecovered; + flagmask |= 0x1 << EcalRecHit::kTowerRecovered; + flagmask |= 0x1 << EcalRecHit::kDead; + flagmask |= 0x1 << EcalRecHit::kKilled; + flagmask |= 0x1 << EcalRecHit::kTPSaturated; + flagmask |= 0x1 << EcalRecHit::kL1SpikeFlag; + configParameters_.flagmask = flagmask; + + // for recovery and killing + configParameters_.recoverEBIsolatedChannels = ps.getParameter("recoverEBIsolatedChannels"); + configParameters_.recoverEEIsolatedChannels = + isPhase2_ ? false : ps.getParameter("recoverEEIsolatedChannels"); + configParameters_.recoverEBVFE = ps.getParameter("recoverEBVFE"); + configParameters_.recoverEEVFE = isPhase2_ ? false : ps.getParameter("recoverEEVFE"); + configParameters_.recoverEBFE = ps.getParameter("recoverEBFE"); + configParameters_.recoverEEFE = isPhase2_ ? false : ps.getParameter("recoverEEFE"); + } + + void EcalRecHitProducerPortable::produce(device::Event& event, device::EventSetup const& setup) { + auto& queue = event.queue(); + + // get device collections from event + auto const* uncalibRecHitsDevEB = &event.get(uncalibRecHitsTokenEB_); + auto const* uncalibRecHitsDevEE = isPhase2_ ? nullptr : &event.get(uncalibRecHitsTokenEE_); + + // get the size of the input collections from the metadata + auto const uncalibRecHitsSizeEB = uncalibRecHitsDevEB->const_view().metadata().size(); + auto const uncalibRecHitsSizeEE = isPhase2_ ? 0 : uncalibRecHitsDevEE->const_view().metadata().size(); + + // output device collections with the same size than the input collections + auto recHitsDevEB = std::make_unique(uncalibRecHitsSizeEB, queue); + auto recHitsDevEE = + isPhase2_ ? std::unique_ptr() : std::make_unique(uncalibRecHitsSizeEE, queue); + // reset the size scalar of the SoA + // memset takes an alpaka view that is created from the scalar in a view to the portable device collection + auto recHitSizeViewEB = cms::alpakatools::make_device_view(queue, recHitsDevEB->view().size()); + alpaka::memset(queue, recHitSizeViewEB, 0); + + if (!isPhase2_) { + auto recHitSizeViewEE = cms::alpakatools::make_device_view(queue, recHitsDevEE->view().size()); + alpaka::memset(queue, recHitSizeViewEE, 0); + } + + // stop here if there are no uncalibrated rechits + if (uncalibRecHitsSizeEB + uncalibRecHitsSizeEE > 0) { + // to get the event time from device::Event one has to access the underlying edm::Event + auto const& eventTime = static_cast(event).time().value(); + + // conditions + auto const& recHitConditionsDev = setup.getData(recHitConditionsToken_); + auto const& recHitParametersDev = setup.getData(recHitParametersToken_); + + // + // schedule algorithms + // + ecal::rechit::create_ecal_rechit(queue, + uncalibRecHitsDevEB, + uncalibRecHitsDevEE, + *recHitsDevEB, + *recHitsDevEE, + recHitConditionsDev, + recHitParametersDev, + eventTime, + configParameters_, + isPhase2_); + } + + // put collections into the event + event.put(recHitsTokenEB_, std::move(recHitsDevEB)); + if (!isPhase2_) { + event.put(recHitsTokenEE_, std::move(recHitsDevEE)); + } + } + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/MakerMacros.h" +DEFINE_FWK_ALPAKA_MODULE(EcalRecHitProducerPortable); diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc new file mode 100644 index 0000000000000..aa6c6ecdef1df --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc @@ -0,0 +1,318 @@ +#include "CondFormats/EcalObjects/interface/EcalChannelStatusCode.h" +#include "DataFormats/EcalDetId/interface/EcalSubdetector.h" +#include "DataFormats/EcalDigi/interface/EcalConstants.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" +#include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" + +#include "EnergyComputationKernels.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { + + ALPAKA_FN_ACC void makeRecHit(int const inputCh, + uint32_t const* didCh, + float const* amplitude, + float const* amplitudeError, + float const* jitter, + uint32_t const* aux, + float const* chi2_in, + uint32_t const* flags_in, + uint32_t* did, + float* energy, + float* time, + uint32_t* flagBits, + uint32_t* extra, + EcalRecHitConditionsDevice::ConstView conditionsDev, + EcalRecHitParametersDevice::Product const* parametersDev, + // time, used for time dependent corrections + edm::TimeValue_t const& eventTime, + // configuration + bool const isPhase2, + bool const killDeadChannels, + bool const recoverIsolatedChannels, + bool const recoverVFE, + bool const recoverFE, + float const laserMIN, + float const laserMAX, + uint32_t flagmask) { + // simple copy of input det id to output + did[inputCh] = didCh[inputCh]; + + auto const did_to_use = DetId{didCh[inputCh]}; + + auto const isBarrel = did_to_use.subdetId() == EcalBarrel; + auto const hashedId = isBarrel ? ecal::reconstruction::hashedIndexEB(did_to_use.rawId()) + : conditionsDev.offsetEE() + ecal::reconstruction::hashedIndexEE(did_to_use.rawId()); + + auto const intercalib = conditionsDev.intercalibConstants()[hashedId]; + + // only two values for ADC to GeV, EB or EE + auto const adc2gev_to_use = isBarrel ? conditionsDev.adcToGeVConstantEB() : conditionsDev.adcToGeVConstantEE(); + + auto const timeCalib = conditionsDev.timeCalibConstants()[hashedId]; + auto const timeOffset = isBarrel ? conditionsDev.timeOffsetConstantEB() : conditionsDev.timeOffsetConstantEE(); + + int iLM = 1; + if (isBarrel) { + iLM = ecal::reconstruction::laserMonitoringRegionEB(did_to_use.rawId()); + } else { + iLM = ecal::reconstruction::laserMonitoringRegionEE(did_to_use.rawId()); + } + + long long t_i = 0, t_f = 0; + float p_i = 0, p_f = 0; + auto const t1 = conditionsDev.laserAPDPNRatios_t1()[iLM - 1]; + auto const t2 = conditionsDev.laserAPDPNRatios_t2()[iLM - 1]; + auto const t3 = conditionsDev.laserAPDPNRatios_t3()[iLM - 1]; + auto const p1 = conditionsDev.laserAPDPNRatios_p1()[hashedId]; + auto const p2 = conditionsDev.laserAPDPNRatios_p2()[hashedId]; + auto const p3 = conditionsDev.laserAPDPNRatios_p3()[hashedId]; + + // laser + if (eventTime >= t1 && eventTime < t2) { + t_i = t1; + t_f = t2; + p_i = p1; + p_f = p2; + } else if (eventTime >= t2 && eventTime <= t3) { + t_i = t2; + t_f = t3; + p_i = p2; + p_f = p3; + } else if (eventTime < t1) { + t_i = t1; + t_f = t2; + p_i = p1; + p_f = p2; + } else if (eventTime > t3) { + t_i = t2; + t_f = t3; + p_i = p2; + p_f = p3; + } + + long long lt_i = 0, lt_f = 0; + float lp_i = 0, lp_f = 0; + auto const lt1 = conditionsDev.linearCorrections_t1()[iLM - 1]; + auto const lt2 = conditionsDev.linearCorrections_t2()[iLM - 1]; + auto const lt3 = conditionsDev.linearCorrections_t3()[iLM - 1]; + auto const lp1 = conditionsDev.linearCorrections_p1()[hashedId]; + auto const lp2 = conditionsDev.linearCorrections_p2()[hashedId]; + auto const lp3 = conditionsDev.linearCorrections_p3()[hashedId]; + + // linear corrections + if (eventTime >= lt1 && eventTime < lt2) { + lt_i = lt1; + lt_f = lt2; + lp_i = lp1; + lp_f = lp2; + } else if (eventTime >= lt2 && eventTime <= lt3) { + lt_i = lt2; + lt_f = lt3; + lp_i = lp2; + lp_f = lp3; + } else if (eventTime < lt1) { + lt_i = lt1; + lt_f = lt2; + lp_i = lp1; + lp_f = lp2; + } else if (eventTime > lt3) { + lt_i = lt2; + lt_f = lt3; + lp_i = lp2; + lp_f = lp3; + } + + // apdpnref and alpha + auto const apdpnref = conditionsDev.laserAPDPNref()[hashedId]; + auto const alpha = conditionsDev.laserAlpha()[hashedId]; + + // now calculate transparency correction + float lasercalib = 1.; + if (apdpnref != 0 && (t_i - t_f) != 0 && (lt_i - lt_f) != 0) { + long long tt = eventTime; // never subtract two unsigned! + auto const interpolatedLaserResponse = + p_i / apdpnref + static_cast(tt - t_i) * (p_f - p_i) / (apdpnref * static_cast(t_f - t_i)); + + auto interpolatedLinearResponse = + lp_i / apdpnref + + static_cast(tt - lt_i) * (lp_f - lp_i) / (apdpnref * static_cast(lt_f - lt_i)); // FIXED BY FC + + if (interpolatedLinearResponse > 2.f || interpolatedLinearResponse < 0.1f) { + interpolatedLinearResponse = 1.f; + } + if (interpolatedLaserResponse <= 0.) { + lasercalib = 1.; + } else { + auto const interpolatedTransparencyResponse = interpolatedLaserResponse / interpolatedLinearResponse; + lasercalib = 1.f / (std::pow(interpolatedTransparencyResponse, alpha) * interpolatedLinearResponse); + } + } + + // + // Check for channels to be excluded from reconstruction + // + // Default energy not to be updated if "channelStatusToBeExcluded" + energy[inputCh] = -1.; //un-physical default + + // default values for the flags + flagBits[inputCh] = 0; + extra[inputCh] = 0; + + auto const dbChStatus = static_cast(conditionsDev.channelStatus()[hashedId] & + EcalChannelStatusCode::chStatusMask); + auto const& exclChStatCodes = parametersDev->channelStatusCodesToBeExcluded; + if (exclChStatCodes[dbChStatus]) { + // skip the channel if the channel status bit is set and should be excluded + return; + } + + // Take our association map of dbChStatuses-> recHit flagbits and return the appropriate flagbit word + auto const& recoFlagBits = parametersDev->recoFlagBits[dbChStatus]; + flagBits[inputCh] = recoFlagBits; + + if ((flagmask & recoFlagBits) && killDeadChannels) { + // skip this channel + return; + } + + // + // multiply the adc counts with factors to get the energy in GeV + // + energy[inputCh] = amplitude[inputCh] * adc2gev_to_use * intercalib * lasercalib; + + // time + auto const sampPeriod = isPhase2 ? ecalPh2::Samp_Period : ecalPh1::Samp_Period; + time[inputCh] = jitter[inputCh] * sampPeriod + timeCalib + timeOffset; + + // NB: calculate the "flagBits extra" --> not really "flags", but actually an encoded version of energy uncertainty, time unc., ... + + // + // extra packing ... + // + uint32_t extravar = 0; + + // chi2 + // truncate + auto const chi2 = chi2_in[inputCh] > 64 ? 64 : chi2_in[inputCh]; + // use 7 bits + uint32_t const rawChi2 = lround(chi2 / 64.f * ((1 << 7) - 1)); + extravar = ecal::reconstruction::rechitSetMasked(extravar, rawChi2, 0, 7); + + // energy uncertainty (amplitudeError is currently not set in the portable uncalibrated rec hit producer) + auto const energyError = amplitudeError[inputCh] * adc2gev_to_use * intercalib * lasercalib; + uint32_t rawEnergy = 0; + if (energyError > 0.001) { + uint16_t const exponent = static_cast(ecal::reconstruction::rechitGetPower10(energyError)); + uint16_t significand = lround(energyError * ip10[exponent]); + // use 13 bits (3 exponent, 10 significand) + rawEnergy = exponent << 10 | significand; + } + extravar = ecal::reconstruction::rechitSetMasked(extravar, rawEnergy, 8, 13); + + // time uncertainty directly from uncalib rechit (the jitter error is currently not stored in aux in the portable uncalibrated rec hit producer) + uint8_t const timeErrBits = aux[inputCh] & 0xFF; + extravar = ecal::reconstruction::rechitSetMasked(extravar, timeErrBits, 24, 8); + + // + // set output extra variable + // + extra[inputCh] = extravar; + + // + // additional flags setting + // using correctly the flags as calculated at the UncalibRecHit stage + // + bool good = true; + if (checkUncalibRecHitFlag(flags_in[inputCh], EcalUncalibratedRecHit::Flags::kLeadingEdgeRecovered)) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kLeadingEdgeRecovered); + good = false; + } + if (checkUncalibRecHitFlag(flags_in[inputCh], EcalUncalibratedRecHit::Flags::kSaturated)) { + // leading edge recovery failed - still keep the information + // about the saturation and do not flag as dead + setFlag(flagBits[inputCh], EcalRecHit::Flags::kSaturated); + good = false; + } + if (checkUncalibRecHitFlag(flags_in[inputCh], EcalUncalibratedRecHit::Flags::kOutOfTime)) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kOutOfTime); + good = false; + } + if (checkUncalibRecHitFlag(flags_in[inputCh], EcalUncalibratedRecHit::Flags::kPoorReco)) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kPoorReco); + good = false; + } + if (checkUncalibRecHitFlag(flags_in[inputCh], EcalUncalibratedRecHit::Flags::kHasSwitchToGain6)) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kHasSwitchToGain6); + } + if (checkUncalibRecHitFlag(flags_in[inputCh], EcalUncalibratedRecHit::Flags::kHasSwitchToGain1)) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kHasSwitchToGain1); + } + + if (good) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kGood); + } + + if (lasercalib < laserMIN || lasercalib > laserMAX) { + setFlag(flagBits[inputCh], EcalRecHit::Flags::kPoorCalib); + } + + // recover, killing, and other stuff + // + // Structure: + // EB + // EE + // + // - single MVA + // - democratic sharing + // - kill all the other cases + + // recoverable channel status codes + if (dbChStatus == EcalChannelStatusCode::Code::kFixedG0 || + dbChStatus == EcalChannelStatusCode::Code::kNonRespondingIsolated || + dbChStatus == EcalChannelStatusCode::Code::kDeadVFE) { + bool is_Single = false; + bool is_FE = false; + bool is_VFE = false; + + if (dbChStatus == EcalChannelStatusCode::Code::kDeadVFE) { + is_VFE = true; + } else if (dbChStatus == EcalChannelStatusCode::Code::kDeadFE) { + is_FE = true; + } else { + is_Single = true; + } + + // EB + if (isBarrel) { + if (is_Single || is_FE || is_VFE) { + if (is_Single && (recoverIsolatedChannels || !killDeadChannels)) { + // single MVA + // TODO + } else if (is_FE && (recoverFE || !killDeadChannels)) { + // democratic sharing + // TODO + } else { + // kill all the other cases + energy[inputCh] = 0.; + // TODO: set flags + } + } + } else { // EE + if (is_Single || is_FE || is_VFE) { + if (is_Single && (recoverIsolatedChannels || !killDeadChannels)) { + // single MVA + // TODO + } else if (is_FE && (recoverFE || !killDeadChannels)) { + // democratic sharing + // TODO + } else { + // kill all the other cases + energy[inputCh] = 0.; + // TODO: set flags + } + } + } + } + } + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h new file mode 100644 index 0000000000000..1f9f73cc8236b --- /dev/null +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h @@ -0,0 +1,186 @@ +#ifndef RecoLocalCalo_EcalRecProducers_plugins_alpaka_EnergyComputationKernels_h +#define RecoLocalCalo_EcalRecProducers_plugins_alpaka_EnergyComputationKernels_h + +#include + +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h" +#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h" +#include "DataFormats/Provenance/interface/Timestamp.h" + +#include "DeclsForKernels.h" +#include "KernelHelpers.h" + +//#define DEBUG +//#define ECAL_RECO_ALPAKA_DEBUG + +namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { + + ALPAKA_STATIC_ACC_MEM_CONSTANT constexpr float ip10[] = { + 1.e5f, 1.e4f, 1.e3f, 1.e2f, 1.e1f, 1.e0f, 1.e-1f, 1.e-2f, 1.e-3f, 1.e-4}; + + ALPAKA_FN_ACC ALPAKA_FN_INLINE bool checkUncalibRecHitFlag(uint32_t const flags, EcalUncalibratedRecHit::Flags flag) { + return flags & (0x1 << flag); + } + + ALPAKA_FN_ACC ALPAKA_FN_INLINE void setFlag(uint32_t& flags, EcalRecHit::Flags flag) { flags |= (0x1 << flag); } + + ALPAKA_FN_ACC void makeRecHit(int const inputCh, + uint32_t const* didCh, + float const* amplitude, + float const* amplitudeError, + float const* jitter, + uint32_t const* aux, + float const* chi2_in, + uint32_t const* flags_in, + uint32_t* did, + float* energy, + float* time, + uint32_t* flagBits, + uint32_t* extra, + EcalRecHitConditionsDevice::ConstView conditionsDev, + EcalRecHitParametersDevice::Product const* parametersDev, + // time, used for time dependent corrections + edm::TimeValue_t const& eventTime, + // configuration + bool const isPhase2, + bool const killDeadChannels, + bool const recoverIsolatedChannels, + bool const recoverVFE, + bool const recoverFE, + float const laserMIN, + float const laserMAX, + uint32_t flagmask); + + class KernelCreateEcalRechitPhase2 { + public: + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + EcalUncalibratedRecHitDeviceCollection::ConstView uncalibRecHits, + EcalRecHitDeviceCollection::View recHits, + EcalRecHitConditionsDevice::ConstView conditionsDev, + EcalRecHitParametersDevice::Product const* parametersDev, + // time, used for time dependent corrections + edm::TimeValue_t const& eventTime, + ConfigurationParameters const& configParams) const { + auto const nchannels = uncalibRecHits.size(); + + for (auto ch : cms::alpakatools::uniform_elements(acc, nchannels)) { + // set the output collection size scalar + if (ch == 0) { + recHits.size() = nchannels; + } + + makeRecHit(ch, + uncalibRecHits.id(), + uncalibRecHits.amplitude(), + uncalibRecHits.amplitudeError(), + uncalibRecHits.jitter(), + uncalibRecHits.aux(), + uncalibRecHits.chi2(), + uncalibRecHits.flags(), + recHits.id(), + recHits.energy(), + recHits.time(), + recHits.flagBits(), + recHits.extra(), + conditionsDev, + parametersDev, + eventTime, + true, + configParams.killDeadChannels, + configParams.recoverEBIsolatedChannels, + configParams.recoverEBVFE, + configParams.recoverEBFE, + configParams.EBLaserMIN, + configParams.EBLaserMAX, + configParams.flagmask); + + } // end channel + } + }; + + class KernelCreateEcalRechit { + public: + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + EcalUncalibratedRecHitDeviceCollection::ConstView ebUncalibRecHits, + EcalUncalibratedRecHitDeviceCollection::ConstView eeUncalibRecHits, + EcalRecHitDeviceCollection::View ebRecHits, + EcalRecHitDeviceCollection::View eeRecHits, + EcalRecHitConditionsDevice::ConstView conditionsDev, + EcalRecHitParametersDevice::Product const* parametersDev, + // time, used for time dependent corrections + edm::TimeValue_t const& eventTime, + ConfigurationParameters const& configParams) const { + auto const nchannelsEB = ebUncalibRecHits.size(); + auto const nchannelsEE = eeUncalibRecHits.size(); + auto const nchannels = nchannelsEB + nchannelsEE; + + for (auto ch : cms::alpakatools::uniform_elements(acc, nchannels)) { + // set the output collection size scalars + if (ch == 0) { + ebRecHits.size() = nchannelsEB; + } else if (ch == nchannelsEB) { + eeRecHits.size() = nchannelsEE; + } + + bool const isEndcap = ch >= nchannelsEB; + int const inputCh = isEndcap ? ch - nchannelsEB : ch; + + // inputs + auto const* didCh = isEndcap ? eeUncalibRecHits.id() : ebUncalibRecHits.id(); + auto const* amplitude = isEndcap ? eeUncalibRecHits.amplitude() : ebUncalibRecHits.amplitude(); + auto const* amplitudeError = isEndcap ? eeUncalibRecHits.amplitudeError() : ebUncalibRecHits.amplitudeError(); + auto const* jitter = isEndcap ? eeUncalibRecHits.jitter() : ebUncalibRecHits.jitter(); + auto const* aux = isEndcap ? eeUncalibRecHits.aux() : ebUncalibRecHits.aux(); + auto const* chi2_in = isEndcap ? eeUncalibRecHits.chi2() : ebUncalibRecHits.chi2(); + auto const* flags_in = isEndcap ? eeUncalibRecHits.flags() : ebUncalibRecHits.flags(); + + // outputs + auto* did = isEndcap ? eeRecHits.id() : ebRecHits.id(); + auto* energy = isEndcap ? eeRecHits.energy() : ebRecHits.energy(); + auto* time = isEndcap ? eeRecHits.time() : ebRecHits.time(); + auto* flagBits = isEndcap ? eeRecHits.flagBits() : ebRecHits.flagBits(); + auto* extra = isEndcap ? eeRecHits.extra() : ebRecHits.extra(); + + bool const recoverIsolatedChannels = + isEndcap ? configParams.recoverEEIsolatedChannels : configParams.recoverEBIsolatedChannels; + bool const recoverVFE = isEndcap ? configParams.recoverEEVFE : configParams.recoverEBVFE; + bool const recoverFE = isEndcap ? configParams.recoverEEFE : configParams.recoverEBFE; + float const laserMIN = isEndcap ? configParams.EELaserMIN : configParams.EBLaserMIN; + float const laserMAX = isEndcap ? configParams.EELaserMAX : configParams.EBLaserMAX; + + makeRecHit(inputCh, + didCh, + amplitude, + amplitudeError, + jitter, + aux, + chi2_in, + flags_in, + did, + energy, + time, + flagBits, + extra, + conditionsDev, + parametersDev, + eventTime, + false, + configParams.killDeadChannels, + recoverIsolatedChannels, + recoverVFE, + recoverFE, + laserMIN, + laserMAX, + configParams.flagmask); + + } // end channel + } + }; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit + +#endif // RecoLocalCalo_EcalRecProducers_plugins_alpaka_EnergyComputationKernels_h diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.dev.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.dev.cc index 906b96fa2b6b6..4b07b170c6f01 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.dev.cc +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.dev.cc @@ -272,4 +272,22 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction { return ilmr; } + ALPAKA_FN_ACC int32_t rechitSetMasked(uint32_t value, uint32_t x, uint32_t offset, uint32_t width) { + const uint32_t mask = ((1 << width) - 1) << offset; + value &= ~mask; + value |= (x & ((1U << width) - 1)) << offset; + return value; + } + + ALPAKA_STATIC_ACC_MEM_CONSTANT constexpr float p10[] = { + 1.e-2f, 1.e-1f, 1.f, 1.e1f, 1.e2f, 1.e3f, 1.e4f, 1.e5f, 1.e6f}; + + ALPAKA_FN_ACC int32_t rechitGetPower10(float e) { + int b = e < p10[4] ? 0 : 5; + for (; b < 9; ++b) + if (e < p10[b]) + break; + return b; + } + } // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.h b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.h index 3b1772ecf2981..ab40666add850 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.h +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/KernelHelpers.h @@ -14,6 +14,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction { ALPAKA_FN_ACC int32_t laserMonitoringRegionEE(uint32_t id); + ALPAKA_FN_ACC int32_t rechitSetMasked(uint32_t value, uint32_t x, uint32_t offset, uint32_t width); + + ALPAKA_FN_ACC int32_t rechitGetPower10(float e); + } // namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction #endif // RecoLocalCalo_EcalRecProducers_plugins_alpaka_KernelHelpers_h diff --git a/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cff.py b/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cff.py index c6104c21b62db..051dd04a6be02 100644 --- a/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cff.py +++ b/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cff.py @@ -103,3 +103,9 @@ # ECAL multifit running on CPU, or convert the uncalibrated rechits from SoA to legacy format ecalMultiFitUncalibRecHit, )) + +# for alpaka validation compare the legacy CPU module with the alpaka module +from Configuration.ProcessModifiers.alpakaValidationEcal_cff import alpakaValidationEcal +alpakaValidationEcal.toModify(ecalMultiFitUncalibRecHit, cpu = ecalMultiFitUncalibRecHitCPU) +alpakaValidationEcal.toModify(ecalMultiFitUncalibRecHit, cuda = _ecalUncalibRecHitSoAToLegacy.clone()) + diff --git a/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cfi.py b/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cfi.py index 13a1f8e142642..18db151c48919 100644 --- a/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cfi.py +++ b/RecoLocalCalo/EcalRecProducers/python/ecalMultiFitUncalibRecHit_cfi.py @@ -12,8 +12,8 @@ EBtimeConstantTerm = 0.85, outOfTimeThresholdGain12pEB = 3.0, outOfTimeThresholdGain12mEB = 3.0, - outOfTimeThresholdGain61pEB = 3.0, - outOfTimeThresholdGain61mEB = 3.0, + outOfTimeThresholdGain61pEB = 12.0, + outOfTimeThresholdGain61mEB = 12.0, timeCalibTag = ':CC', timeOffsetTag = ':CC' ) diff --git a/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cff.py b/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cff.py index 71247d33d6063..432a8b550e547 100644 --- a/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cff.py +++ b/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cff.py @@ -4,14 +4,17 @@ # ECAL calibrated rechit reconstruction on CPU from RecoLocalCalo.EcalRecProducers.ecalRecHit_cfi import ecalRecHit as _ecalRecHit +ecalRecHitCPU = _ecalRecHit.clone() ecalRecHit = SwitchProducerCUDA( - cpu = _ecalRecHit.clone() + cpu = ecalRecHitCPU ) ecalCalibratedRecHitTask = cms.Task( ecalRecHit ) +from Configuration.StandardSequences.Accelerators_cff import * + # ECAL rechit calibrations on GPU from RecoLocalCalo.EcalRecProducers.ecalRechitADCToGeVConstantGPUESProducer_cfi import ecalRechitADCToGeVConstantGPUESProducer from RecoLocalCalo.EcalRecProducers.ecalRechitChannelStatusGPUESProducer_cfi import ecalRechitChannelStatusGPUESProducer @@ -65,3 +68,47 @@ # convert the rechits from SoA to legacy format ecalRecHit )) + +# modifications for alpaka +from Configuration.ProcessModifiers.alpaka_cff import alpaka + +# ECAL conditions used by the rechit producer running on the accelerator +from RecoLocalCalo.EcalRecProducers.ecalRecHitConditionsESProducer_cfi import ecalRecHitConditionsESProducer +from RecoLocalCalo.EcalRecProducers.ecalRecHitParametersESProducer_cfi import ecalRecHitParametersESProducer + +ecalRecHitParametersSource = cms.ESSource("EmptyESSource", + recordName = cms.string('JobConfigurationGPURecord'), + iovIsRunNotTime = cms.bool(True), + firstValid = cms.vuint32(1) +) + +# ECAL rechit producer running on the accelerator +from RecoLocalCalo.EcalRecProducers.ecalRecHitProducerPortable_cfi import ecalRecHitProducerPortable as _ecalRecHitProducerPortable +ecalRecHitPortable = _ecalRecHitProducerPortable.clone( + uncalibrecHitsInLabelEB = 'ecalMultiFitUncalibRecHitPortable:EcalUncalibRecHitsEB', + uncalibrecHitsInLabelEE = 'ecalMultiFitUncalibRecHitPortable:EcalUncalibRecHitsEE' +) + +# replace the SwitchProducerCUDA branches with the module to convert the rechits from SoA to legacy format +from RecoLocalCalo.EcalRecProducers.ecalRecHitSoAToLegacy_cfi import ecalRecHitSoAToLegacy as _ecalRecHitSoAToLegacy +# TODO: the portably produced ECAL calibrated rechits are not correct yet. +# When they are working and validated, remove this comment and uncomment the next lines: +#alpaka.toModify(ecalRecHit, +# cpu = _ecalRecHitSoAToLegacy.clone() +#) + +alpaka.toReplaceWith(ecalCalibratedRecHitTask, cms.Task( + # ECAL conditions and parameters used by the rechit producer running on the accelerator + ecalRecHitConditionsESProducer, + ecalRecHitParametersESProducer, + # ECAL rechit producer running on device + ecalRecHitPortable, + # ECAL rechit producer running on CPU, or convert the rechits from SoA to legacy format + ecalRecHit, +)) + +# for alpaka validation compare the legacy CPU module with the alpaka module +from Configuration.ProcessModifiers.alpakaValidationEcal_cff import alpakaValidationEcal +alpakaValidationEcal.toModify(ecalRecHit, cpu = ecalRecHitCPU) +alpakaValidationEcal.toModify(ecalRecHit, cuda = _ecalRecHitSoAToLegacy.clone()) + diff --git a/RecoLocalCalo/EcalRecProducers/test/compare_csv.py b/RecoLocalCalo/EcalRecProducers/test/compare_csv.py index 967833409ade7..fc788ab411b38 100644 --- a/RecoLocalCalo/EcalRecProducers/test/compare_csv.py +++ b/RecoLocalCalo/EcalRecProducers/test/compare_csv.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys def compare(fn1, fn2): diff --git a/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalCellPositions.h b/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalCellPositions.h index dbc662700e145..2bba2a7b82459 100644 --- a/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalCellPositions.h +++ b/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalCellPositions.h @@ -15,12 +15,6 @@ #include #include -/* -#ifdef __CUDA_ARCH__ -extern __constant__ uint32_t calo_rechit_masks[]; -#endif -*/ - class KernelManagerHGCalCellPositions { public: KernelManagerHGCalCellPositions(const size_t&); diff --git a/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalRecHit.h b/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalRecHit.h index 6e9f973df876f..8dea82df45b93 100644 --- a/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalRecHit.h +++ b/RecoLocalCalo/HGCalRecProducers/plugins/KernelManagerHGCalRecHit.h @@ -13,10 +13,6 @@ #include #include -#ifdef __CUDA_ARCH__ -extern __constant__ uint32_t calo_rechit_masks[]; -#endif - template class KernelConstantData { public: diff --git a/RecoLocalCalo/HcalRecAlgos/python/RemoveAddSevLevel.py b/RecoLocalCalo/HcalRecAlgos/python/RemoveAddSevLevel.py index 5e1be9d5d4113..5fe2f1aeb94f1 100644 --- a/RecoLocalCalo/HcalRecAlgos/python/RemoveAddSevLevel.py +++ b/RecoLocalCalo/HcalRecAlgos/python/RemoveAddSevLevel.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms diff --git a/RecoLocalCalo/HcalRecAlgos/test/test_RecHitReflagger_cfg.py b/RecoLocalCalo/HcalRecAlgos/test/test_RecHitReflagger_cfg.py index f721f976f94d6..e59054e7fbc70 100644 --- a/RecoLocalCalo/HcalRecAlgos/test/test_RecHitReflagger_cfg.py +++ b/RecoLocalCalo/HcalRecAlgos/test/test_RecHitReflagger_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms maxevents=10 diff --git a/RecoLocalFastTime/FTLClusterizer/interface/MTDClusterizerBase.h b/RecoLocalFastTime/FTLClusterizer/interface/MTDClusterizerBase.h index 67acab3dc7832..5f9b9596e0ff4 100644 --- a/RecoLocalFastTime/FTLClusterizer/interface/MTDClusterizerBase.h +++ b/RecoLocalFastTime/FTLClusterizer/interface/MTDClusterizerBase.h @@ -8,7 +8,7 @@ #include "DataFormats/FTLRecHit/interface/FTLClusterCollections.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include #include diff --git a/RecoLocalFastTime/FTLClusterizer/plugins/MTDClusterProducer.cc b/RecoLocalFastTime/FTLClusterizer/plugins/MTDClusterProducer.cc index 2987f41fbe856..65ee5dcd20623 100644 --- a/RecoLocalFastTime/FTLClusterizer/plugins/MTDClusterProducer.cc +++ b/RecoLocalFastTime/FTLClusterizer/plugins/MTDClusterProducer.cc @@ -25,7 +25,7 @@ #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/CommonTopologies/interface/Topology.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "DataFormats/Common/interface/Handle.h" #include "FWCore/Framework/interface/stream/EDProducer.h" diff --git a/RecoLocalFastTime/FTLCommonAlgos/interface/MTDTimeCalib.h b/RecoLocalFastTime/FTLCommonAlgos/interface/MTDTimeCalib.h index 88f22f26a49ce..a9b1189333fd0 100644 --- a/RecoLocalFastTime/FTLCommonAlgos/interface/MTDTimeCalib.h +++ b/RecoLocalFastTime/FTLCommonAlgos/interface/MTDTimeCalib.h @@ -4,7 +4,7 @@ #include "DataFormats/ForwardDetId/interface/MTDDetId.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" diff --git a/RecoLocalFastTime/FTLRecProducers/plugins/MTDTimeCalibESProducer.cc b/RecoLocalFastTime/FTLRecProducers/plugins/MTDTimeCalibESProducer.cc index 62fff48a3a3d6..87d1df62e2c24 100644 --- a/RecoLocalFastTime/FTLRecProducers/plugins/MTDTimeCalibESProducer.cc +++ b/RecoLocalFastTime/FTLRecProducers/plugins/MTDTimeCalibESProducer.cc @@ -4,7 +4,7 @@ #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "RecoLocalFastTime/FTLCommonAlgos/interface/MTDTimeCalib.h" diff --git a/RecoLocalMuon/CSCSegment/python/cscSegments_cfi.py b/RecoLocalMuon/CSCSegment/python/cscSegments_cfi.py index b42fcc812201c..9a8f280739435 100644 --- a/RecoLocalMuon/CSCSegment/python/cscSegments_cfi.py +++ b/RecoLocalMuon/CSCSegment/python/cscSegments_cfi.py @@ -6,7 +6,8 @@ from RecoLocalMuon.CSCSegment.CSCSegmentAlgorithmST_cfi import * from RecoLocalMuon.CSCSegment.CSCSegmentAlgorithmRU_cfi import * -cscSegments = cms.EDProducer("CSCSegmentProducer", +from RecoLocalMuon.CSCSegment.cscSegmentProducer_cfi import cscSegmentProducer as _cscSegmentProducer +cscSegments = _cscSegmentProducer.clone( # Define input inputObjects = cms.InputTag("csc2DRecHits"), # Choice of the building algo: 1 SK, 2 TC, 3 DF, 4 ST, 5 RU, ... diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.cc b/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.cc index 1aa82c2383975..7caf67e2cadc2 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.cc +++ b/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.cc @@ -23,7 +23,7 @@ CSCSegmentBuilder::CSCSegmentBuilder(const edm::ParameterSet& ps) : geom_(nullpt int chosenAlgo = ps.getParameter("algo_type") - 1; // Find appropriate ParameterSets for each algo type - std::vector algoPSets = ps.getParameter >("algo_psets"); + std::vector algoPSets = ps.getParameter>("algo_psets"); // Now load the right parameter set // Algo name @@ -33,14 +33,14 @@ CSCSegmentBuilder::CSCSegmentBuilder(const edm::ParameterSet& ps) : geom_(nullpt // SegAlgo parameter set std::vector segAlgoPSet = - algoPSets[chosenAlgo].getParameter >("algo_psets"); + algoPSets[chosenAlgo].getParameter>("algo_psets"); // Chamber types to handle - std::vector chType = algoPSets[chosenAlgo].getParameter >("chamber_types"); + std::vector chType = algoPSets[chosenAlgo].getParameter>("chamber_types"); LogDebug("CSCSegment|CSC") << "No. of chamber types to handle: " << chType.size(); // Algo to chamber type - std::vector algoToType = algoPSets[chosenAlgo].getParameter >("parameters_per_chamber_type"); + std::vector algoToType = algoPSets[chosenAlgo].getParameter>("parameters_per_chamber_type"); // Trap if we don't have enough parameter sets or haven't assigned an algo to every type if (algoToType.size() != chType.size()) { @@ -101,3 +101,30 @@ void CSCSegmentBuilder::build(const CSCRecHit2DCollection* recHits, CSCSegmentCo } void CSCSegmentBuilder::setGeometry(const CSCGeometry* geom) { geom_ = geom; } + +void CSCSegmentBuilder::fillPSetDescription(edm::ParameterSetDescription& desc) { + /// Top-level parameters + desc.add("algo_type", 5)->setComment("Choice of the building algo: 1 SK, 2 TC, 3 DF, 4 ST, 5 RU, ..."); + + // Define the nested PSet for individual configurations + edm::ParameterSetDescription algoPSet; + algoPSet.add>("parameters_per_chamber_type", {1, 2, 3, 4, 5, 6, 5, 6, 5, 6}); + + // Define the VPSet inside algo_psets + edm::ParameterSetDescription innerPSet; + // Allow any parameter in the innerPSet + innerPSet.setAllowAnything(); + + // Fill the VPSet for algo_psets + edm::ParameterSetDescription innerAlgoPSet; + innerAlgoPSet.addVPSet("algo_psets", innerPSet); + + // Additional top-level keys + algoPSet.addVPSet("algo_psets", innerPSet); + algoPSet.add("algo_name", "CSCSegAlgoRU"); + algoPSet.add>( + "chamber_types", {"ME1/a", "ME1/b", "ME1/2", "ME1/3", "ME2/1", "ME2/2", "ME3/1", "ME3/2", "ME4/1", "ME4/2"}); + + // Add to the top-level VPSet + desc.addVPSet("algo_psets", algoPSet); +} diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.h b/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.h index 938554ca37393..478b364524f14 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.h +++ b/RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.h @@ -14,10 +14,10 @@ * */ -#include -#include - -#include +#include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h" +#include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" class CSCGeometry; class CSCSegmentAlgorithm; @@ -32,6 +32,8 @@ class CSCSegmentBuilder { /// Destructor ~CSCSegmentBuilder(); + static void fillPSetDescription(edm::ParameterSetDescription& desc); + /** Find rechits in each CSCChamber, build CSCSegment's in each chamber, * and fill into output collection. */ diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.cc b/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.cc index 310ced6db7122..b45b0b02ba2b8 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.cc +++ b/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.cc @@ -2,16 +2,16 @@ * */ -#include -#include +#include "RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.h" +#include "RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.h" -#include -#include -#include -#include +#include "DataFormats/Common/interface/Handle.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Utilities/interface/InputTag.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include -#include +#include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h" +#include "DataFormats/CSCRecHit/interface/CSCSegment.h" CSCSegmentProducer::CSCSegmentProducer(const edm::ParameterSet& pas) : iev(0) { m_token = consumes(pas.getParameter("inputObjects")); @@ -22,6 +22,13 @@ CSCSegmentProducer::CSCSegmentProducer(const edm::ParameterSet& pas) : iev(0) { produces(); } +void CSCSegmentProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("inputObjects", edm::InputTag("csc2DRecHits"))->setComment("define input"); + CSCSegmentBuilder::fillPSetDescription(desc); + descriptions.addWithDefaultLabel(desc); +} + CSCSegmentProducer::~CSCSegmentProducer() { LogDebug("CSCSegment|CSC") << "deleting CSCSegmentBuilder after " << iev << " events w/csc data."; delete segmentBuilder_; diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.h b/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.h index e98c668f58546..b1ad175c46c8b 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.h +++ b/RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.h @@ -16,6 +16,9 @@ #include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h" #include "Geometry/Records/interface/MuonGeometryRecord.h" #include "Geometry/CSCGeometry/interface/CSCGeometry.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" class CSCSegmentBuilder; @@ -28,6 +31,8 @@ class CSCSegmentProducer : public edm::stream::EDProducer<> { /// Produce the CSCSegment collection void produce(edm::Event&, const edm::EventSetup&) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: int iev; // events through CSCSegmentBuilder* segmentBuilder_; diff --git a/RecoLocalMuon/RPCRecHit/plugins/DTSegtoRPC.cc b/RecoLocalMuon/RPCRecHit/plugins/DTSegtoRPC.cc index d563795c2b4db..aa14febec4449 100644 --- a/RecoLocalMuon/RPCRecHit/plugins/DTSegtoRPC.cc +++ b/RecoLocalMuon/RPCRecHit/plugins/DTSegtoRPC.cc @@ -278,7 +278,7 @@ std::unique_ptr DTSegtoRPC::thePoints(const DTRecSegment4DC if (debug) LogDebug("DTSegtoRPC") << "DT \t \t \t No, Exrtrapolation too long!, canceled" << std::endl; } //D so big - } //loop over all the rolls asociated + } //loop over all the rolls asociated } } diff --git a/RecoLocalTracker/SiPixelClusterizer/plugins/PixelThresholdClusterizer.cc b/RecoLocalTracker/SiPixelClusterizer/plugins/PixelThresholdClusterizer.cc index f5c80d6be258b..30273146b16e9 100644 --- a/RecoLocalTracker/SiPixelClusterizer/plugins/PixelThresholdClusterizer.cc +++ b/RecoLocalTracker/SiPixelClusterizer/plugins/PixelThresholdClusterizer.cc @@ -390,7 +390,9 @@ SiPixelCluster PixelThresholdClusterizer::make_cluster(const SiPixelCluster::Pix AccretionCluster acluster, cldata; acluster.add(pix, seed_adc); - cldata.add(pix, seed_adc); + if (!theFakePixels[pix.row() * theNumOfCols + pix.col()]) { + cldata.add(pix, seed_adc); + } //Here we search all pixels adjacent to all pixels in the cluster. bool dead_flag = false; diff --git a/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelPhase2DigiToCluster.cc b/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelPhase2DigiToCluster.cc index 4b97366b060be..cd8445e9c25b8 100644 --- a/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelPhase2DigiToCluster.cc +++ b/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelPhase2DigiToCluster.cc @@ -1,5 +1,6 @@ // C++ includes #include +#include #include #include #include @@ -43,16 +44,13 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { const edm::ESGetToken geomToken_; const edm::EDGetTokenT> pixelDigiToken_; - - device::EDPutToken digiPutToken_; - device::EDPutToken clusterPutToken_; - - Algo Algo_; - + const device::EDPutToken digiPutToken_; + const device::EDPutToken clusterPutToken_; const SiPixelClusterThresholds clusterThresholds_; - uint32_t nDigis_ = 0; - SiPixelDigisSoACollection digis_d; + Algo algo_; + uint32_t nDigis_ = 0; + std::optional digis_d_; }; SiPixelPhase2DigiToCluster::SiPixelPhase2DigiToCluster(const edm::ParameterSet& iConfig) @@ -87,19 +85,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { const TrackerGeometry* geom_ = &iSetup.getData(geomToken_); - uint32_t nDigis = 0; - + nDigis_ = 0; for (const auto& det : input) { - nDigis += det.size(); + nDigis_ += det.size(); } + digis_d_ = SiPixelDigisSoACollection(nDigis_, iEvent.queue()); - if (nDigis == 0) + if (nDigis_ == 0) return; - nDigis_ = nDigis; SiPixelDigisHost digis_h(nDigis_, iEvent.queue()); - nDigis = 0; + uint32_t nDigis = 0; for (const auto& det : input) { unsigned int detid = det.detId(); DetId detIdObject(detid); @@ -107,39 +104,31 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { auto const gind = genericDet->index(); for (auto const& px : det) { digis_h.view()[nDigis].moduleId() = uint16_t(gind); - digis_h.view()[nDigis].xx() = uint16_t(px.row()); digis_h.view()[nDigis].yy() = uint16_t(px.column()); digis_h.view()[nDigis].adc() = uint16_t(px.adc()); - digis_h.view()[nDigis].clus() = 0; - digis_h.view()[nDigis].pdigi() = uint32_t(px.packedData()); - digis_h.view()[nDigis].rawIdArr() = uint32_t(detid); - - nDigis++; + ++nDigis; } } + assert(nDigis == nDigis_); - digis_d = SiPixelDigisSoACollection(nDigis, iEvent.queue()); - alpaka::memcpy(iEvent.queue(), digis_d.buffer(), digis_h.buffer()); - - Algo_.makePhase2ClustersAsync(iEvent.queue(), clusterThresholds_, digis_d.view(), nDigis_); + alpaka::memcpy(iEvent.queue(), digis_d_->buffer(), digis_h.buffer()); + algo_.makePhase2ClustersAsync(iEvent.queue(), clusterThresholds_, digis_d_->view(), nDigis_); } void SiPixelPhase2DigiToCluster::produce(device::Event& iEvent, device::EventSetup const& iSetup) { if (nDigis_ == 0) { - SiPixelClustersSoACollection clusters_d{pixelTopology::Phase2::numberOfModules, iEvent.queue()}; - SiPixelDigisSoACollection digis_d_zero{nDigis_, iEvent.queue()}; - iEvent.emplace(digiPutToken_, std::move(digis_d_zero)); - iEvent.emplace(clusterPutToken_, std::move(clusters_d)); - return; + iEvent.emplace(digiPutToken_, std::move(*digis_d_)); + iEvent.emplace(clusterPutToken_, pixelTopology::Phase2::numberOfModules, iEvent.queue()); + } else { + digis_d_->setNModules(algo_.nModules()); + iEvent.emplace(digiPutToken_, std::move(*digis_d_)); + iEvent.emplace(clusterPutToken_, algo_.getClusters()); } - - digis_d.setNModules(Algo_.nModules()); - iEvent.emplace(digiPutToken_, std::move(digis_d)); - iEvent.emplace(clusterPutToken_, Algo_.getClusters()); + digis_d_.reset(); } } // namespace ALPAKA_ACCELERATOR_NAMESPACE diff --git a/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelRawToCluster.cc b/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelRawToCluster.cc index 8f14c50f09263..7eafcbf336cd3 100644 --- a/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelRawToCluster.cc +++ b/RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/SiPixelRawToCluster.cc @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -262,10 +263,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // are no valid pointers to clusters' Collection columns, instantiation // of TrackingRecHits fail. Example: workflow 11604.0 - iEvent.emplace(digiPutToken_, nDigis_, iEvent.queue()); + iEvent.emplace(digiPutToken_, 0, iEvent.queue()); iEvent.emplace(clusterPutToken_, pixelTopology::Phase1::numberOfModules, iEvent.queue()); if (includeErrors_) { - iEvent.emplace(digiErrorPutToken_); + iEvent.emplace(digiErrorPutToken_, 0, iEvent.queue()); iEvent.emplace(fmtErrorToken_); } return; diff --git a/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizerPreSplitting_cfi.py b/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizerPreSplitting_cfi.py index 2732b4641da19..68161bddd572e 100644 --- a/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizerPreSplitting_cfi.py +++ b/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizerPreSplitting_cfi.py @@ -1,34 +1,11 @@ import FWCore.ParameterSet.Config as cms -from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA # SiPixelGainCalibrationServiceParameters from CondTools.SiPixel.SiPixelGainCalibrationService_cfi import * # legacy pixel cluster producer from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters -siPixelClustersPreSplitting = SwitchProducerCUDA( - cpu = _siPixelClusters.clone() -) - -from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -from Configuration.ProcessModifiers.gpu_cff import gpu - -# ensure the same results when running on GPU (which supports only the 'HLT' payload) and CPU -# but not for phase-2 where we don't calibrate digis in the clusterizer (yet) -(gpu & ~phase2_tracker).toModify(siPixelClustersPreSplitting, - cpu = dict( - payloadType = 'HLT' - ) -) - -# SwitchProducer wrapping the legacy pixel cluster producer or an alias for the pixel clusters information converted from SoA -gpu.toModify(siPixelClustersPreSplitting, - cuda = cms.EDAlias( - siPixelDigisClustersPreSplitting = cms.VPSet( - cms.PSet(type = cms.string("SiPixelClusteredmNewDetSetVector")) - ) - ) -) +siPixelClustersPreSplitting = _siPixelClusters.clone() from Configuration.ProcessModifiers.siPixelDigiMorphing_cff import siPixelDigiMorphing siPixelDigiMorphing.toModify( diff --git a/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizer_cfi.py b/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizer_cfi.py index 1bbaef1910a19..9226180d24c46 100644 --- a/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizer_cfi.py +++ b/RecoLocalTracker/SiPixelClusterizer/python/SiPixelClusterizer_cfi.py @@ -17,8 +17,7 @@ ) # Run3, changes in the gain calibration scheme -#from Configuration.Eras.Era_Run3_cff import Run3 -#Run3.toModify(siPixelClusters, + from Configuration.Eras.Modifier_run3_common_cff import run3_common run3_common.toModify(siPixelClusters, VCaltoElectronGain = 1, # all gains=1, pedestals=0 @@ -46,7 +45,3 @@ (premix_stage2 & phase2_tracker).toModify(siPixelClusters, src = "mixData:Pixel" ) -from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit -(phase2_tracker & pixelNtupletFit).toModify(siPixelClusters, #at the moment the duplicate dropping is not imnplemented in Phase2 - DropDuplicates = False -) diff --git a/RecoLocalTracker/SiPixelClusterizer/python/siPixelClustersPreSplitting_cff.py b/RecoLocalTracker/SiPixelClusterizer/python/siPixelClustersPreSplitting_cff.py index 71d2ff35cadce..1ae9cc4bc2610 100644 --- a/RecoLocalTracker/SiPixelClusterizer/python/siPixelClustersPreSplitting_cff.py +++ b/RecoLocalTracker/SiPixelClusterizer/python/siPixelClustersPreSplitting_cff.py @@ -1,101 +1,20 @@ import FWCore.ParameterSet.Config as cms from HeterogeneousCore.AlpakaCore.functions import * from Configuration.Eras.Modifier_run3_common_cff import run3_common -from Configuration.ProcessModifiers.gpu_cff import gpu from Configuration.ProcessModifiers.alpaka_cff import alpaka -# conditions used *only* by the modules running on GPU -from CalibTracker.SiPixelESProducers.siPixelROCsStatusAndMappingWrapperESProducer_cfi import siPixelROCsStatusAndMappingWrapperESProducer -from CalibTracker.SiPixelESProducers.siPixelGainCalibrationForHLTGPU_cfi import siPixelGainCalibrationForHLTGPU - -# SwitchProducer wrapping the legacy pixel cluster producer or an alias for the pixel clusters information converted from SoA -from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizerPreSplitting_cfi import siPixelClustersPreSplitting - -siPixelClustersPreSplittingTask = cms.Task( - # SwitchProducer wrapping the legacy pixel cluster producer or an alias for the pixel clusters information converted from SoA - siPixelClustersPreSplitting -) - -# reconstruct the pixel digis and clusters on the gpu -from RecoLocalTracker.SiPixelClusterizer.siPixelRawToClusterCUDAPhase1_cfi import siPixelRawToClusterCUDAPhase1 as _siPixelRawToClusterCUDA -from RecoLocalTracker.SiPixelClusterizer.siPixelRawToClusterCUDAHIonPhase1_cfi import siPixelRawToClusterCUDAHIonPhase1 as _siPixelRawToClusterCUDAHIonPhase1 - -siPixelClustersPreSplittingCUDA = _siPixelRawToClusterCUDA.clone() - # HIon Modifiers from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA # Phase 2 Tracker Modifier from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -(pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelClustersPreSplittingCUDA, _siPixelRawToClusterCUDAHIonPhase1.clone()) - -run3_common.toModify(siPixelClustersPreSplittingCUDA, - # use the pixel channel calibrations scheme for Run 3 - clusterThreshold_layer1 = 4000, - VCaltoElectronGain = 1, # all gains=1, pedestals=0 - VCaltoElectronGain_L1 = 1, - VCaltoElectronOffset = 0, - VCaltoElectronOffset_L1 = 0) - -from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAPhase1_cfi import siPixelDigisClustersFromSoAPhase1 as _siPixelDigisClustersFromSoAPhase1 -from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAPhase2_cfi import siPixelDigisClustersFromSoAPhase2 as _siPixelDigisClustersFromSoAPhase2 - -siPixelDigisClustersPreSplitting = _siPixelDigisClustersFromSoAPhase1.clone() - -from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAHIonPhase1_cfi import siPixelDigisClustersFromSoAHIonPhase1 as _siPixelDigisClustersFromSoAHIonPhase1 -(pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelDigisClustersPreSplitting, _siPixelDigisClustersFromSoAHIonPhase1.clone()) - - -run3_common.toModify(siPixelDigisClustersPreSplitting, - clusterThreshold_layer1 = 4000) - -gpu.toReplaceWith(siPixelClustersPreSplittingTask, cms.Task( - # conditions used *only* by the modules running on GPU - siPixelROCsStatusAndMappingWrapperESProducer, - siPixelGainCalibrationForHLTGPU, - # reconstruct the pixel digis and clusters on the gpu - siPixelClustersPreSplittingCUDA, - # convert the pixel digis (except errors) and clusters to the legacy format - siPixelDigisClustersPreSplitting, - # SwitchProducer wrapping the legacy pixel cluster producer or an alias for the pixel clusters information converted from SoA - siPixelClustersPreSplittingTask.copy() -)) - -from RecoLocalTracker.SiPixelClusterizer.siPixelPhase2DigiToClusterCUDA_cfi import siPixelPhase2DigiToClusterCUDA as _siPixelPhase2DigiToClusterCUDA -# for phase2 no pixel raw2digi is available at the moment -# so we skip the raw2digi step and run on pixel digis copied to gpu - -from SimTracker.SiPhase2Digitizer.phase2TrackerDigitizer_cfi import PixelDigitizerAlgorithmCommon - -phase2_tracker.toReplaceWith(siPixelClustersPreSplittingCUDA,_siPixelPhase2DigiToClusterCUDA.clone( - Phase2ReadoutMode = PixelDigitizerAlgorithmCommon.Phase2ReadoutMode.value(), # Flag to decide Readout Mode : linear TDR (-1), dual slope with slope parameters (+1,+2,+3,+4 ...) with threshold subtraction - Phase2DigiBaseline = int(PixelDigitizerAlgorithmCommon.ThresholdInElectrons_Barrel.value()), #Same for barrel and endcap - Phase2KinkADC = 8, - ElectronPerADCGain = PixelDigitizerAlgorithmCommon.ElectronPerAdc.value() -)) +# The legacy pixel cluster producer +from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizerPreSplitting_cfi import siPixelClustersPreSplitting -from EventFilter.SiPixelRawToDigi.siPixelDigisSoAFromCUDA_cfi import siPixelDigisSoAFromCUDA as _siPixelDigisSoAFromCUDA -siPixelDigisPhase2SoA = _siPixelDigisSoAFromCUDA.clone( - src = "siPixelClustersPreSplittingCUDA" +siPixelClustersPreSplittingTask = cms.Task( + siPixelClustersPreSplitting ) -phase2_tracker.toReplaceWith(siPixelDigisClustersPreSplitting, _siPixelDigisClustersFromSoAPhase2.clone( - clusterThreshold_layer1 = 4000, - clusterThreshold_otherLayers = 4000, - src = "siPixelDigisPhase2SoA", - #produceDigis = False - )) - -(gpu & phase2_tracker).toReplaceWith(siPixelClustersPreSplittingTask, cms.Task( - # reconstruct the pixel clusters on the gpu from copied digis - siPixelClustersPreSplittingCUDA, - # copy from gpu to cpu - siPixelDigisPhase2SoA, - # convert the pixel digis (except errors) and clusters to the legacy format - siPixelDigisClustersPreSplitting, - # SwitchProducer wrapping the legacy pixel cluster producer or an alias for the pixel clusters information converted from SoA - siPixelClustersPreSplitting)) - ###################################################################### ### Alpaka Pixel Clusters Reco @@ -127,6 +46,10 @@ def _addProcessCalibTrackerAlpakaES(process): from RecoLocalTracker.SiPixelClusterizer.siPixelPhase2DigiToCluster_cfi import siPixelPhase2DigiToCluster as _siPixelPhase2DigiToCluster +# for phase2 no pixel raw2digi is available at the moment +# so we skip the raw2digi step and run on pixel digis copied to gpu +from SimTracker.SiPhase2Digitizer.phase2TrackerDigitizer_cfi import PixelDigitizerAlgorithmCommon + (alpaka & phase2_tracker).toReplaceWith(siPixelClustersPreSplittingAlpaka, _siPixelPhase2DigiToCluster.clone( Phase2ReadoutMode = PixelDigitizerAlgorithmCommon.Phase2ReadoutMode.value(), # flag to decide Readout Mode : linear TDR (-1), dual slope with slope parameters (+1,+2,+3,+4 ...) with threshold subtraction Phase2DigiBaseline = int(PixelDigitizerAlgorithmCommon.ThresholdInElectrons_Barrel.value()), # same for barrel and endcap @@ -141,15 +64,15 @@ def _addProcessCalibTrackerAlpakaES(process): from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAAlpakaPhase2_cfi import siPixelDigisClustersFromSoAAlpakaPhase2 as _siPixelDigisClustersFromSoAAlpakaPhase2 from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAAlpakaHIonPhase1_cfi import siPixelDigisClustersFromSoAAlpakaHIonPhase1 as _siPixelDigisClustersFromSoAAlpakaHIonPhase1 -(alpaka & ~phase2_tracker).toReplaceWith(siPixelDigisClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaPhase1.clone( +alpaka.toReplaceWith(siPixelClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaPhase1.clone( src = "siPixelClustersPreSplittingAlpaka" )) -(alpaka & pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelDigisClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaHIonPhase1.clone( +(alpaka & pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaHIonPhase1.clone( src = "siPixelClustersPreSplittingAlpaka" )) -(alpaka & phase2_tracker).toReplaceWith(siPixelDigisClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaPhase2.clone( +(alpaka & phase2_tracker).toReplaceWith(siPixelClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaPhase2.clone( clusterThreshold_layer1 = 4000, clusterThreshold_otherLayers = 4000, src = "siPixelClustersPreSplittingAlpaka", @@ -157,14 +80,6 @@ def _addProcessCalibTrackerAlpakaES(process): produceDigis = False )) -alpaka.toModify(siPixelClustersPreSplitting, - cpu = cms.EDAlias( - siPixelDigisClustersPreSplitting = cms.VPSet( - cms.PSet(type = cms.string("SiPixelClusteredmNewDetSetVector")) - ) - ) -) - # These produce pixelDigiErrors in Alpaka; they are constructed here because they need # siPixelClustersPreSplittingAlpaka* as input from EventFilter.SiPixelRawToDigi.siPixelDigiErrorsFromSoAAlpaka_cfi import siPixelDigiErrorsFromSoAAlpaka as _siPixelDigiErrorsFromSoAAlpaka @@ -189,10 +104,8 @@ def _addProcessCalibTrackerAlpakaES(process): siPixelDigiErrorsAlpaka, siPixelDigiErrorsAlpakaSerial, # convert from host SoA to legacy formats (digis and clusters) - siPixelDigisClustersPreSplitting, - # EDAlias for the clusters - siPixelClustersPreSplitting) -) + siPixelClustersPreSplitting +)) # Phase 2 (alpaka & phase2_tracker).toReplaceWith(siPixelClustersPreSplittingTask, cms.Task( @@ -204,7 +117,5 @@ def _addProcessCalibTrackerAlpakaES(process): siPixelDigiErrorsAlpaka, siPixelDigiErrorsAlpakaSerial, # convert the pixel digis (except errors) and clusters to the legacy format - siPixelDigisClustersPreSplitting, - # SwitchProducer wrapping the legacy pixel cluster producer or an alias for the pixel clusters information converted from SoA - siPixelClustersPreSplitting) -) + siPixelClustersPreSplitting +)) diff --git a/RecoLocalTracker/SiPixelRecHits/plugins/SiPixelRecHitConverter.cc b/RecoLocalTracker/SiPixelRecHits/plugins/SiPixelRecHitConverter.cc index 2c9c773598b62..e63d44763b9e7 100644 --- a/RecoLocalTracker/SiPixelRecHits/plugins/SiPixelRecHitConverter.cc +++ b/RecoLocalTracker/SiPixelRecHits/plugins/SiPixelRecHitConverter.cc @@ -56,7 +56,9 @@ #include "FWCore/Framework/interface/MakerMacros.h" #include "DataFormats/Common/interface/Handle.h" #include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/Utilities/interface/EDPutToken.h" #include "FWCore/Utilities/interface/ESGetToken.h" @@ -95,6 +97,8 @@ namespace cms { explicit SiPixelRecHitConverter(const edm::ParameterSet& conf); ~SiPixelRecHitConverter() override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + //--- Factory method to make CPE's depending on the ParameterSet //--- Not sure if we need to make more than one CPE to run concurrently //--- on different parts of the detector (e.g., one for the barrel and the @@ -258,4 +262,11 @@ namespace cms { using cms::SiPixelRecHitConverter; +void SiPixelRecHitConverter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("src", edm::InputTag("siPixelClusters")); + desc.add("CPE", "PixelCPEGeneric"); + descriptions.addWithDefaultLabel(desc); +} + DEFINE_FWK_MODULE(SiPixelRecHitConverter); diff --git a/RecoLocalTracker/SiPixelRecHits/python/PixelCPEESProducers_cff.py b/RecoLocalTracker/SiPixelRecHits/python/PixelCPEESProducers_cff.py index 054e8b7c461ea..d0532d33ff260 100644 --- a/RecoLocalTracker/SiPixelRecHits/python/PixelCPEESProducers_cff.py +++ b/RecoLocalTracker/SiPixelRecHits/python/PixelCPEESProducers_cff.py @@ -11,9 +11,6 @@ # 2. Pixel Generic CPE # from RecoLocalTracker.SiPixelRecHits.PixelCPEGeneric_cfi import * -from RecoLocalTracker.SiPixelRecHits.pixelCPEFastESProducerPhase1_cfi import * -from RecoLocalTracker.SiPixelRecHits.pixelCPEFastESProducerPhase2_cfi import * -from RecoLocalTracker.SiPixelRecHits.pixelCPEFastESProducerHIonPhase1_cfi import * # # 3. ESProducer for the Magnetic-field dependent template records # diff --git a/RecoLocalTracker/SiPixelRecHits/python/SiPixelRecHits_cfi.py b/RecoLocalTracker/SiPixelRecHits/python/SiPixelRecHits_cfi.py index cb539a2b1c6e4..0d1c3194e4787 100644 --- a/RecoLocalTracker/SiPixelRecHits/python/SiPixelRecHits_cfi.py +++ b/RecoLocalTracker/SiPixelRecHits/python/SiPixelRecHits_cfi.py @@ -1,130 +1,26 @@ import FWCore.ParameterSet.Config as cms from HeterogeneousCore.AlpakaCore.functions import * -from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA -from Configuration.ProcessModifiers.gpu_cff import gpu from Configuration.ProcessModifiers.alpaka_cff import alpaka -# legacy pixel rechit producer -siPixelRecHits = cms.EDProducer("SiPixelRecHitConverter", - src = cms.InputTag("siPixelClusters"), - CPE = cms.string('PixelCPEGeneric'), - VerboseLevel = cms.untracked.int32(0) -) -# SwitchProducer wrapping the legacy pixel rechit producer -siPixelRecHitsPreSplitting = SwitchProducerCUDA( - cpu = siPixelRecHits.clone( - src = 'siPixelClustersPreSplitting' - ) -) +# legacy pixel rechit producer +from RecoLocalTracker.SiPixelRecHits.siPixelRecHitConverter_cfi import siPixelRecHitConverter as _siPixelRecHitConverter +siPixelRecHits = _siPixelRecHitConverter.clone() -# phase 2 tracker modifier -from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -# HIon modifiers +# HIon Modifiers from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA +# Phase 2 Tracker Modifier +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -# convert the pixel rechits from legacy to SoA format on CPU -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromLegacyPhase1_cfi import siPixelRecHitSoAFromLegacyPhase1 as _siPixelRecHitsPreSplittingSoA -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromLegacyPhase2_cfi import siPixelRecHitSoAFromLegacyPhase2 as _siPixelRecHitsPreSplittingSoAPhase2 -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromLegacyHIonPhase1_cfi import siPixelRecHitSoAFromLegacyHIonPhase1 as _siPixelRecHitsPreSplittingSoAHIonPhase1 - -siPixelRecHitsPreSplittingCPU = _siPixelRecHitsPreSplittingSoA.clone(convertToLegacy=True) -(pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelRecHitsPreSplittingCPU, _siPixelRecHitsPreSplittingSoAHIonPhase1.clone(convertToLegacy=True, CPE = cms.string('PixelCPEFastHIonPhase1'))) -phase2_tracker.toReplaceWith(siPixelRecHitsPreSplittingCPU, _siPixelRecHitsPreSplittingSoAPhase2.clone(convertToLegacy=True, CPE = cms.string('PixelCPEFastPhase2'))) - -# modifier used to prompt patatrack pixel tracks reconstruction on cpu -from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit -pixelNtupletFit.toModify(siPixelRecHitsPreSplitting, - cpu = cms.EDAlias( - siPixelRecHitsPreSplittingCPU = cms.VPSet( - cms.PSet(type = cms.string("SiPixelRecHitedmNewDetSetVector")), - cms.PSet(type = cms.string("uintAsHostProduct")) - ) -)) - +# The legacy pixel rechit producer +siPixelRecHitsPreSplitting = siPixelRecHits.clone( + src = 'siPixelClustersPreSplitting' +) siPixelRecHitsPreSplittingTask = cms.Task( - # SwitchProducer wrapping the legacy pixel rechit producer or the cpu SoA producer siPixelRecHitsPreSplitting ) -# reconstruct the pixel rechits on the gpu -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitCUDAPhase1_cfi import siPixelRecHitCUDAPhase1 as _siPixelRecHitCUDAPhase1 -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitCUDAPhase2_cfi import siPixelRecHitCUDAPhase2 as _siPixelRecHitCUDAPhase2 -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitCUDAHIonPhase1_cfi import siPixelRecHitCUDAHIonPhase1 as _siPixelRecHitCUDAHIonPhase1 - -siPixelRecHitsPreSplittingCUDA = _siPixelRecHitCUDAPhase1.clone( - beamSpot = "offlineBeamSpotToCUDA" -) -(pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelRecHitsPreSplittingCUDA,_siPixelRecHitCUDAHIonPhase1.clone( - beamSpot = "offlineBeamSpotToCUDA" -)) -phase2_tracker.toReplaceWith(siPixelRecHitsPreSplittingCUDA,_siPixelRecHitCUDAPhase2.clone( - beamSpot = "offlineBeamSpotToCUDA" -)) - -#this is an alias for the SoA on GPU or CPU to be used for DQM -siPixelRecHitsPreSplittingSoA = SwitchProducerCUDA( - cpu = cms.EDAlias( - siPixelRecHitsPreSplittingCPU = cms.VPSet( - cms.PSet(type = cms.string("pixelTopologyPhase1TrackingRecHitSoAHost")), - cms.PSet(type = cms.string("uintAsHostProduct")) - )), -) - -(pp_on_AA & ~phase2_tracker).toModify(siPixelRecHitsPreSplittingSoA, - cpu = cms.EDAlias( - siPixelRecHitsPreSplittingCPU = cms.VPSet( - cms.PSet(type = cms.string("pixelTopologyHIonPhase1TrackingRecHitSoAHost")), - cms.PSet(type = cms.string("uintAsHostProduct")) - ))) - -phase2_tracker.toModify(siPixelRecHitsPreSplittingSoA, - cpu = cms.EDAlias( - siPixelRecHitsPreSplittingCPU = cms.VPSet( - cms.PSet(type = cms.string("pixelTopologyPhase2TrackingRecHitSoAHost")), - cms.PSet(type = cms.string("uintAsHostProduct")) - ))) - -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromCUDAPhase1_cfi import siPixelRecHitSoAFromCUDAPhase1 as _siPixelRecHitSoAFromCUDA -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromCUDAHIonPhase1_cfi import siPixelRecHitSoAFromCUDAHIonPhase1 as _siPixelRecHitSoAFromCUDAHIonPhase1 -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromCUDAPhase2_cfi import siPixelRecHitSoAFromCUDAPhase2 as _siPixelRecHitSoAFromCUDAPhase2 - -(gpu & pixelNtupletFit).toModify(siPixelRecHitsPreSplittingSoA, cuda = _siPixelRecHitSoAFromCUDA.clone()) -(gpu & pixelNtupletFit & phase2_tracker).toModify(siPixelRecHitsPreSplittingSoA, cuda = _siPixelRecHitSoAFromCUDAPhase2.clone()) - -# transfer the pixel rechits to the host and convert them from SoA -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromCUDAPhase1_cfi import siPixelRecHitFromCUDAPhase1 as _siPixelRecHitFromCUDA -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromCUDAHIonPhase1_cfi import siPixelRecHitFromCUDAHIonPhase1 as _siPixelRecHitFromCUDAHIonPhase1 -from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromCUDAPhase2_cfi import siPixelRecHitFromCUDAPhase2 as _siPixelRecHitFromCUDAPhase2 - -(gpu & pixelNtupletFit).toModify(siPixelRecHitsPreSplitting, cuda = _siPixelRecHitFromCUDA.clone()) -(gpu & pixelNtupletFit & pp_on_AA).toModify(siPixelRecHitsPreSplitting, cuda = _siPixelRecHitFromCUDAHIonPhase1.clone()) -(gpu & pixelNtupletFit & phase2_tracker).toModify(siPixelRecHitsPreSplitting, cuda = _siPixelRecHitFromCUDAPhase2.clone()) - - -pixelNtupletFit.toReplaceWith(siPixelRecHitsPreSplittingTask, cms.Task( - cms.Task( - # reconstruct the pixel rechits on the cpu - siPixelRecHitsPreSplittingCPU, - # SwitchProducer wrapping an EDAlias on cpu or the converter from SoA to legacy on gpu - siPixelRecHitsPreSplittingTask.copy(), - # producing and converting on cpu (if needed) - siPixelRecHitsPreSplittingSoA) - ) - ) - -(gpu & pixelNtupletFit).toReplaceWith(siPixelRecHitsPreSplittingTask, cms.Task( - # reconstruct the pixel rechits on the gpu or on the cpu - # (normally only one of the two is run because only one is consumed from later stages) - siPixelRecHitsPreSplittingCUDA, - siPixelRecHitsPreSplittingCPU, - # SwitchProducer wrapping an EDAlias on cpu or the converter from SoA to legacy on gpu - siPixelRecHitsPreSplittingTask.copy(), - # producing and converting on cpu (if needed) - siPixelRecHitsPreSplittingSoA -)) - ###################################################################### ### Alpaka Pixel Hits Reco @@ -153,20 +49,17 @@ from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromSoAAlpakaPhase2_cfi import siPixelRecHitFromSoAAlpakaPhase2 as _siPixelRecHitFromSoAAlpakaPhase2 from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromSoAAlpakaHIonPhase1_cfi import siPixelRecHitFromSoAAlpakaHIonPhase1 as _siPixelRecHitFromSoAAlpakaHIonPhase1 -(alpaka & ~phase2_tracker).toModify(siPixelRecHitsPreSplitting, - cpu = _siPixelRecHitFromSoAAlpakaPhase1.clone( +(alpaka & ~phase2_tracker).toReplaceWith(siPixelRecHitsPreSplitting, _siPixelRecHitFromSoAAlpakaPhase1.clone( pixelRecHitSrc = cms.InputTag('siPixelRecHitsPreSplittingAlpaka'), src = cms.InputTag('siPixelClustersPreSplitting')) ) -(alpaka & phase2_tracker).toModify(siPixelRecHitsPreSplitting, - cpu = _siPixelRecHitFromSoAAlpakaPhase2.clone( +(alpaka & phase2_tracker).toReplaceWith(siPixelRecHitsPreSplitting, _siPixelRecHitFromSoAAlpakaPhase2.clone( pixelRecHitSrc = cms.InputTag('siPixelRecHitsPreSplittingAlpaka'), src = cms.InputTag('siPixelClustersPreSplitting')) ) -(alpaka & pp_on_AA & ~phase2_tracker).toModify(siPixelRecHitsPreSplitting, - cpu = _siPixelRecHitFromSoAAlpakaHIonPhase1.clone( +(alpaka & pp_on_AA & ~phase2_tracker).toModify(siPixelRecHitsPreSplitting, _siPixelRecHitFromSoAAlpakaHIonPhase1.clone( pixelRecHitSrc = cms.InputTag('siPixelRecHitsPreSplittingAlpaka'), src = cms.InputTag('siPixelClustersPreSplitting')) ) diff --git a/RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h b/RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h index 2c4551ef40550..268aac8451306 100644 --- a/RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h +++ b/RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h @@ -1,8 +1,16 @@ #ifndef RecoLocalTracker_SiStripClusterizer_ThreeThresholdAlgorithm_h #define RecoLocalTracker_SiStripClusterizer_ThreeThresholdAlgorithm_h + +#include "DataFormats/SiStripCluster/interface/SiStripCluster.h" +#include "DataFormats/SiStripCluster/interface/SiStripClusterTools.h" +#include "DataFormats/SiStripDigi/interface/SiStripDigi.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" #include "RecoLocalTracker/SiStripClusterizer/interface/StripClusterizerAlgorithm.h" #include "RecoLocalTracker/SiStripClusterizer/interface/SiStripApvShotCleaner.h" +#include +#include + class ThreeThresholdAlgorithm final : public StripClusterizerAlgorithm { friend class StripClusterizerAlgorithmFactory; @@ -64,4 +72,112 @@ class ThreeThresholdAlgorithm final : public StripClusterizerAlgorithm { float minGoodCharge; }; +template +inline void ThreeThresholdAlgorithm::clusterizeDetUnit_(const digiDetSet& digis, output_t::TSFastFiller& output) const { + const auto& cond = conditions(); + if (cond.isModuleBad(digis.detId())) + return; + + auto const& det = cond.findDetId(digis.detId()); + if (!det.valid()) + return; + +#ifdef EDM_ML_DEBUG + if (!cond.isModuleUsable(digis.detId())) + edm::LogWarning("ThreeThresholdAlgorithm") << " id " << digis.detId() << " not usable???" << std::endl; +#endif + + typename digiDetSet::const_iterator scan(digis.begin()), end(digis.end()); + + SiStripApvShotCleaner ApvCleaner; + if (RemoveApvShots) { + ApvCleaner.clean(digis, scan, end); + } + + output.reserve(16); + State state(det); + while (scan != end) { + while (scan != end && !candidateEnded(state, scan->strip())) + addToCandidate(state, *scan++); + endCandidate(state, output); + } +} + +inline bool ThreeThresholdAlgorithm::candidateEnded(State const& state, const uint16_t& testStrip) const { + uint16_t holes = testStrip - state.lastStrip - 1; + return (((!state.ADCs.empty()) & // a candidate exists, and + (holes > MaxSequentialHoles) // too many holes if not all are bad strips, and + ) && + (holes > MaxSequentialBad || // (too many bad strips anyway, or + !state.det().allBadBetween(state.lastStrip, testStrip) // not all holes are bad strips) + )); +} + +inline void ThreeThresholdAlgorithm::addToCandidate(State& state, uint16_t strip, uint8_t adc) const { + float Noise = state.det().noise(strip); + if (adc < static_cast(Noise * ChannelThreshold) || state.det().bad(strip)) + return; + + if (state.candidateLacksSeed) + state.candidateLacksSeed = adc < static_cast(Noise * SeedThreshold); + if (state.ADCs.empty()) + state.lastStrip = strip - 1; // begin candidate + while (++state.lastStrip < strip) + state.ADCs.push_back(0); // pad holes + + if (state.ADCs.size() <= MaxClusterSize) + state.ADCs.push_back(adc); + state.noiseSquared += Noise * Noise; +} + +inline void ThreeThresholdAlgorithm::clusterizeDetUnit(const edmNew::DetSet& digis, + output_t::TSFastFiller& output) const { + clusterizeDetUnit_(digis, output); +} + +template +inline void ThreeThresholdAlgorithm::endCandidate(State& state, T& out) const { + if (candidateAccepted(state)) { + applyGains(state); + if (MaxAdjacentBad > 0) + appendBadNeighbors(state); + if (minGoodCharge <= 0 || + siStripClusterTools::chargePerCM(state.det().detId, state.ADCs.begin(), state.ADCs.end()) > minGoodCharge) + out.push_back(std::move(SiStripCluster(firstStrip(state), state.ADCs.begin(), state.ADCs.end()))); + } + clearCandidate(state); +} + +inline bool ThreeThresholdAlgorithm::candidateAccepted(State const& state) const { + return (!state.candidateLacksSeed && state.ADCs.size() <= MaxClusterSize && + state.noiseSquared * ClusterThresholdSquared <= + std::pow(float(std::accumulate(state.ADCs.begin(), state.ADCs.end(), int(0))), 2.f)); +} + +inline void ThreeThresholdAlgorithm::applyGains(State& state) const { + uint16_t strip = firstStrip(state); + for (auto& adc : state.ADCs) { +#ifdef EDM_ML_DEBUG + // if(adc > 255) throw InvalidChargeException( SiStripDigi(strip,adc) ); +#endif + // if(adc > 253) continue; //saturated, do not scale + auto charge = int(float(adc) * state.det().weight(strip++) + 0.5f); //adding 0.5 turns truncation into rounding + if (adc < 254) + adc = (charge > 1022 ? 255 : (charge > 253 ? 254 : charge)); + } +} + +inline void ThreeThresholdAlgorithm::appendBadNeighbors(State& state) const { + uint8_t max = MaxAdjacentBad; + while (0 < max--) { + if (state.det().bad(firstStrip(state) - 1)) { + state.ADCs.insert(state.ADCs.begin(), 0); + } + if (state.det().bad(state.lastStrip + 1)) { + state.ADCs.push_back(0); + state.lastStrip++; + } + } +} + #endif diff --git a/RecoLocalTracker/SiStripClusterizer/plugins/ClustersFromRawProducer.cc b/RecoLocalTracker/SiStripClusterizer/plugins/ClustersFromRawProducer.cc index 4bd751dc2511d..bd9358d098761 100644 --- a/RecoLocalTracker/SiStripClusterizer/plugins/ClustersFromRawProducer.cc +++ b/RecoLocalTracker/SiStripClusterizer/plugins/ClustersFromRawProducer.cc @@ -4,6 +4,7 @@ #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripRawProcessingFactory.h" #include "RecoLocalTracker/SiStripClusterizer/interface/StripClusterizerAlgorithm.h" +#include "RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h" #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripRawProcessingAlgorithms.h" #include "DataFormats/SiStripCluster/interface/SiStripCluster.h" @@ -89,10 +90,11 @@ namespace { return buffer; } + template class ClusterFiller final : public StripClusterizerAlgorithm::output_t::Getter { public: ClusterFiller(const FEDRawDataCollection& irawColl, - StripClusterizerAlgorithm& iclusterizer, + const AlgoT& iclusterizer, SiStripRawProcessingAlgorithms& irawAlgos, bool idoAPVEmulatorCheck, bool legacy, @@ -119,7 +121,7 @@ namespace { const FEDRawDataCollection& rawColl; - StripClusterizerAlgorithm& clusterizer; + const AlgoT& clusterizer; const SiStripClusterizerConditions& conditions; SiStripRawProcessingAlgorithms& rawAlgos; @@ -181,7 +183,7 @@ class SiStripClusterizerFromRaw final : public edm::stream::EDProducer<> { legacy_(conf.getParameter("LegacyUnpacker")), hybridZeroSuppressed_(conf.getParameter("HybridZeroSuppressed")) { productToken_ = consumes(conf.getParameter("ProductLabel")); - produces >(); + produces>(); assert(clusterizer_.get()); assert(rawAlgos_.get()); } @@ -193,12 +195,23 @@ class SiStripClusterizerFromRaw final : public edm::stream::EDProducer<> { edm::Handle rawData; ev.getByToken(productToken_, rawData); - std::unique_ptr > output( - onDemand ? new edmNew::DetSetVector( - std::shared_ptr::Getter>(std::make_shared( - *rawData, *clusterizer_, *rawAlgos_, doAPVEmulatorCheck_, legacy_, hybridZeroSuppressed_)), - clusterizer_->conditions().allDetIds()) - : new edmNew::DetSetVector()); + const ThreeThresholdAlgorithm* clusterizer3 = dynamic_cast(clusterizer_.get()); + std::unique_ptr> output; + if (onDemand) { + if (clusterizer3 == nullptr) + output = std::make_unique>(edmNew::DetSetVector( + std::shared_ptr::Getter>( + std::make_shared>( + *rawData, *clusterizer_, *rawAlgos_, doAPVEmulatorCheck_, legacy_, hybridZeroSuppressed_)), + clusterizer_->conditions().allDetIds())); + else + output = std::make_unique>(edmNew::DetSetVector( + std::shared_ptr::Getter>( + std::make_shared>( + *rawData, *clusterizer3, *rawAlgos_, doAPVEmulatorCheck_, legacy_, hybridZeroSuppressed_)), + clusterizer_->conditions().allDetIds())); + } else + output = std::make_unique>(edmNew::DetSetVector()); if (onDemand) assert(output->onDemand()); @@ -266,20 +279,38 @@ void SiStripClusterizerFromRaw::initialize(const edm::EventSetup& es) { } void SiStripClusterizerFromRaw::run(const FEDRawDataCollection& rawColl, edmNew::DetSetVector& output) { - ClusterFiller filler(rawColl, *clusterizer_, *rawAlgos_, doAPVEmulatorCheck_, legacy_, hybridZeroSuppressed_); + const ThreeThresholdAlgorithm* clusterizer3 = dynamic_cast(clusterizer_.get()); + if (clusterizer3 == nullptr) { + ClusterFiller filler( + rawColl, *clusterizer_, *rawAlgos_, doAPVEmulatorCheck_, legacy_, hybridZeroSuppressed_); - // loop over good det in cabling - for (auto idet : clusterizer_->conditions().allDetIds()) { - StripClusterizerAlgorithm::output_t::TSFastFiller record(output, idet); + // loop over good det in cabling + for (auto idet : clusterizer_->conditions().allDetIds()) { + StripClusterizerAlgorithm::output_t::TSFastFiller record(output, idet); - filler.fill(record); + filler.fill(record); - if (record.empty()) - record.abort(); - } // end loop over dets + if (record.empty()) + record.abort(); + } // end loop over dets + } else { + ClusterFiller filler( + rawColl, *clusterizer3, *rawAlgos_, doAPVEmulatorCheck_, legacy_, hybridZeroSuppressed_); + + // loop over good det in cabling + for (auto idet : clusterizer_->conditions().allDetIds()) { + StripClusterizerAlgorithm::output_t::TSFastFiller record(output, idet); + + filler.fill(record); + + if (record.empty()) + record.abort(); + } // end loop over dets + } } namespace { + template class StripByStripAdder { public: typedef std::output_iterator_tag iterator_category; @@ -288,7 +319,7 @@ namespace { typedef void pointer; typedef void reference; - StripByStripAdder(StripClusterizerAlgorithm& clusterizer, + StripByStripAdder(const AlgoT& clusterizer, StripClusterizerAlgorithm::State& state, StripClusterizerAlgorithm::output_t::TSFastFiller& record) : clusterizer_(clusterizer), state_(state), record_(record) {} @@ -303,7 +334,7 @@ namespace { StripByStripAdder& operator++(int) { return *this; } private: - StripClusterizerAlgorithm& clusterizer_; + const AlgoT& clusterizer_; StripClusterizerAlgorithm::State& state_; StripClusterizerAlgorithm::output_t::TSFastFiller& record_; }; @@ -326,7 +357,8 @@ namespace { }; } // namespace -void ClusterFiller::fill(StripClusterizerAlgorithm::output_t::TSFastFiller& record) const { +template +void ClusterFiller::fill(StripClusterizerAlgorithm::output_t::TSFastFiller& record) const { try { // edmNew::CapacityExaustedException incReady(); @@ -393,7 +425,7 @@ void ClusterFiller::fill(StripClusterizerAlgorithm::output_t::TSFastFiller& reco using namespace sistrip; if LIKELY (fedchannelunpacker::isZeroSuppressed(mode, legacy_, lmode)) { - auto perStripAdder = StripByStripAdder(clusterizer, state, record); + auto perStripAdder = StripByStripAdder(clusterizer, state, record); const auto isNonLite = fedchannelunpacker::isNonLiteZS(mode, legacy_, lmode); const uint8_t pCode = (isNonLite ? buffer->packetCode(legacy_, fedCh) : 0); auto st_ch = fedchannelunpacker::StatusCode::SUCCESS; diff --git a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.cc b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.cc index 200085bbfafba..cd05ca4b43a62 100644 --- a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.cc +++ b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.cc @@ -36,6 +36,23 @@ void SiStripClusterizer::produce(edm::Event& event, const edm::EventSetup& es) { event.put(std::move(output)); } +void SiStripClusterizer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add>("DigiProducersList", + {edm::InputTag("siStripDigis", "ZeroSuppressed"), + edm::InputTag("siStripZeroSuppression", "VirginRaw"), + edm::InputTag("siStripZeroSuppression", "ProcessedRaw"), + edm::InputTag("siStripZeroSuppression", "ScopeMode")}); + + { + edm::ParameterSetDescription ClusterizerPSet; + StripClusterizerAlgorithmFactory::fillDescriptions(ClusterizerPSet); + desc.add("Clusterizer", ClusterizerPSet); + } + + descriptions.addWithDefaultLabel(desc); +} + template inline bool SiStripClusterizer::findInput(const edm::EDGetTokenT& tag, edm::Handle& handle, const edm::Event& e) { e.getByToken(tag, handle); diff --git a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.h b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.h index e1a52fb78c2b1..87c198209fe83 100644 --- a/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.h +++ b/RecoLocalTracker/SiStripClusterizer/plugins/SiStripClusterizer.h @@ -4,7 +4,9 @@ #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/stream/EDProducer.h" #include "RecoLocalTracker/SiStripClusterizer/interface/StripClusterizerAlgorithm.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" #include @@ -14,6 +16,7 @@ class SiStripClusterizer : public edm::stream::EDProducer<> { public: explicit SiStripClusterizer(const edm::ParameterSet& conf); void produce(edm::Event&, const edm::EventSetup&) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: template diff --git a/RecoLocalTracker/SiStripClusterizer/python/SiStripClusterizer_RealData_cfi.py b/RecoLocalTracker/SiStripClusterizer/python/SiStripClusterizer_RealData_cfi.py index 82b8e07527547..3a63fd2e78585 100644 --- a/RecoLocalTracker/SiStripClusterizer/python/SiStripClusterizer_RealData_cfi.py +++ b/RecoLocalTracker/SiStripClusterizer/python/SiStripClusterizer_RealData_cfi.py @@ -2,14 +2,8 @@ from RecoLocalTracker.SiStripClusterizer.DefaultClusterizer_cff import * -siStripClusters = cms.EDProducer("SiStripClusterizer", - Clusterizer = DefaultClusterizer, - DigiProducersList = cms.VInputTag( - cms.InputTag('siStripDigis','ZeroSuppressed'), - cms.InputTag('siStripZeroSuppression','VirginRaw'), - cms.InputTag('siStripZeroSuppression','ProcessedRaw'), - cms.InputTag('siStripZeroSuppression','ScopeMode')), - ) +from RecoLocalTracker.SiStripClusterizer.siStripClusterizer_cfi import siStripClusterizer as _siStripClusterizer +siStripClusters = _siStripClusterizer.clone() from Configuration.ProcessModifiers.approxSiStripClusters_cff import approxSiStripClusters from RecoLocalTracker.SiStripClusterizer.SiStripApprox2Clusters_cfi import SiStripApprox2Clusters diff --git a/RecoLocalTracker/SiStripClusterizer/src/ThreeThresholdAlgorithm.cc b/RecoLocalTracker/SiStripClusterizer/src/ThreeThresholdAlgorithm.cc index c2cf5b8962896..329e6310993b5 100644 --- a/RecoLocalTracker/SiStripClusterizer/src/ThreeThresholdAlgorithm.cc +++ b/RecoLocalTracker/SiStripClusterizer/src/ThreeThresholdAlgorithm.cc @@ -1,11 +1,4 @@ #include "RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h" -#include "DataFormats/SiStripDigi/interface/SiStripDigi.h" -#include "DataFormats/SiStripCluster/interface/SiStripCluster.h" -#include -#include -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include "DataFormats/SiStripCluster/interface/SiStripClusterTools.h" ThreeThresholdAlgorithm::ThreeThresholdAlgorithm( const edm::ESGetToken& conditionsToken, @@ -29,117 +22,10 @@ ThreeThresholdAlgorithm::ThreeThresholdAlgorithm( RemoveApvShots(removeApvShots), minGoodCharge(minGoodCharge) {} -template -inline void ThreeThresholdAlgorithm::clusterizeDetUnit_(const digiDetSet& digis, output_t::TSFastFiller& output) const { - const auto& cond = conditions(); - if (cond.isModuleBad(digis.detId())) - return; - - auto const& det = cond.findDetId(digis.detId()); - if (!det.valid()) - return; - -#ifdef EDM_ML_DEBUG - if (!cond.isModuleUsable(digis.detId())) - edm::LogWarning("ThreeThresholdAlgorithm") << " id " << digis.detId() << " not usable???" << std::endl; -#endif - - typename digiDetSet::const_iterator scan(digis.begin()), end(digis.end()); - - SiStripApvShotCleaner ApvCleaner; - if (RemoveApvShots) { - ApvCleaner.clean(digis, scan, end); - } - - output.reserve(16); - State state(det); - while (scan != end) { - while (scan != end && !candidateEnded(state, scan->strip())) - addToCandidate(state, *scan++); - endCandidate(state, output); - } -} - -inline bool ThreeThresholdAlgorithm::candidateEnded(State const& state, const uint16_t& testStrip) const { - uint16_t holes = testStrip - state.lastStrip - 1; - return (((!state.ADCs.empty()) & // a candidate exists, and - (holes > MaxSequentialHoles) // too many holes if not all are bad strips, and - ) && - (holes > MaxSequentialBad || // (too many bad strips anyway, or - !state.det().allBadBetween(state.lastStrip, testStrip) // not all holes are bad strips) - )); -} - -inline void ThreeThresholdAlgorithm::addToCandidate(State& state, uint16_t strip, uint8_t adc) const { - float Noise = state.det().noise(strip); - if (adc < static_cast(Noise * ChannelThreshold) || state.det().bad(strip)) - return; - - if (state.candidateLacksSeed) - state.candidateLacksSeed = adc < static_cast(Noise * SeedThreshold); - if (state.ADCs.empty()) - state.lastStrip = strip - 1; // begin candidate - while (++state.lastStrip < strip) - state.ADCs.push_back(0); // pad holes - - if (state.ADCs.size() <= MaxClusterSize) - state.ADCs.push_back(adc); - state.noiseSquared += Noise * Noise; -} - -template -inline void ThreeThresholdAlgorithm::endCandidate(State& state, T& out) const { - if (candidateAccepted(state)) { - applyGains(state); - if (MaxAdjacentBad > 0) - appendBadNeighbors(state); - if (minGoodCharge <= 0 || - siStripClusterTools::chargePerCM(state.det().detId, state.ADCs.begin(), state.ADCs.end()) > minGoodCharge) - out.push_back(std::move(SiStripCluster(firstStrip(state), state.ADCs.begin(), state.ADCs.end()))); - } - clearCandidate(state); -} - -inline bool ThreeThresholdAlgorithm::candidateAccepted(State const& state) const { - return (!state.candidateLacksSeed && state.ADCs.size() <= MaxClusterSize && - state.noiseSquared * ClusterThresholdSquared <= - std::pow(float(std::accumulate(state.ADCs.begin(), state.ADCs.end(), int(0))), 2.f)); -} - -inline void ThreeThresholdAlgorithm::applyGains(State& state) const { - uint16_t strip = firstStrip(state); - for (auto& adc : state.ADCs) { -#ifdef EDM_ML_DEBUG - // if(adc > 255) throw InvalidChargeException( SiStripDigi(strip,adc) ); -#endif - // if(adc > 253) continue; //saturated, do not scale - auto charge = int(float(adc) * state.det().weight(strip++) + 0.5f); //adding 0.5 turns truncation into rounding - if (adc < 254) - adc = (charge > 1022 ? 255 : (charge > 253 ? 254 : charge)); - } -} - -inline void ThreeThresholdAlgorithm::appendBadNeighbors(State& state) const { - uint8_t max = MaxAdjacentBad; - while (0 < max--) { - if (state.det().bad(firstStrip(state) - 1)) { - state.ADCs.insert(state.ADCs.begin(), 0); - } - if (state.det().bad(state.lastStrip + 1)) { - state.ADCs.push_back(0); - state.lastStrip++; - } - } -} - void ThreeThresholdAlgorithm::clusterizeDetUnit(const edm::DetSet& digis, output_t::TSFastFiller& output) const { clusterizeDetUnit_(digis, output); } -void ThreeThresholdAlgorithm::clusterizeDetUnit(const edmNew::DetSet& digis, - output_t::TSFastFiller& output) const { - clusterizeDetUnit_(digis, output); -} void ThreeThresholdAlgorithm::stripByStripAdd(State& state, uint16_t strip, diff --git a/RecoLocalTracker/SiStripClusterizer/test/shotTest_withReClustering_cfg.py b/RecoLocalTracker/SiStripClusterizer/test/shotTest_withReClustering_cfg.py index 4f3455655a44c..9b653e67dde62 100644 --- a/RecoLocalTracker/SiStripClusterizer/test/shotTest_withReClustering_cfg.py +++ b/RecoLocalTracker/SiStripClusterizer/test/shotTest_withReClustering_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process('CALIB') diff --git a/RecoLocalTracker/SiStripZeroSuppression/python/customiseHybrid.py b/RecoLocalTracker/SiStripZeroSuppression/python/customiseHybrid.py index 42efe243f56cc..7415d7a64ad0c 100644 --- a/RecoLocalTracker/SiStripZeroSuppression/python/customiseHybrid.py +++ b/RecoLocalTracker/SiStripZeroSuppression/python/customiseHybrid.py @@ -8,9 +8,15 @@ def runOnHybridZS(process): zsInputs = process.siStripZeroSuppression.RawDigiProducersList clusInputs = process.siStripClusters.DigiProducersList unpackedZS = cms.InputTag("siStripDigis", "ZeroSuppressed") + + # Convert string elements to cms.InputTag objects if necessary + clusInputs = [cms.InputTag(x) if isinstance(x, str) else x for x in clusInputs] + zsInputs.append(unpackedZS) - clusInputs.remove(unpackedZS) - clusInputs.append(cms.InputTag("siStripZeroSuppression","ZeroSuppressed")) + if unpackedZS in clusInputs: + clusInputs.remove(unpackedZS) + clusInputs.append(cms.InputTag("siStripZeroSuppression", "ZeroSuppressed")) + # for on-demand clusterizer from FWCore.ParameterSet.MassReplace import massReplaceParameter massReplaceParameter(process, "HybridZeroSuppressed", cms.bool(False), cms.bool(True)) diff --git a/RecoLocalTracker/SubCollectionProducers/src/JetCoreClusterSplitter.cc b/RecoLocalTracker/SubCollectionProducers/src/JetCoreClusterSplitter.cc index 6730c8946c49e..03329eb0258b0 100644 --- a/RecoLocalTracker/SubCollectionProducers/src/JetCoreClusterSplitter.cc +++ b/RecoLocalTracker/SubCollectionProducers/src/JetCoreClusterSplitter.cc @@ -1,14 +1,14 @@ #include "FWCore/Framework/interface/stream/EDProducer.h" +#include "DataFormats/Common/interface/DetSetVectorNew.h" +#include "DataFormats/Common/interface/Handle.h" +#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" +#include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "DataFormats/Common/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" -#include "DataFormats/Common/interface/DetSetVectorNew.h" #include "RecoLocalTracker/ClusterParameterEstimator/interface/PixelClusterParameterEstimator.h" #include "RecoLocalTracker/Records/interface/TkPixelCPERecord.h" @@ -30,11 +30,12 @@ class JetCoreClusterSplitter : public edm::stream::EDProducer<> { public: - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); JetCoreClusterSplitter(const edm::ParameterSet& iConfig); - ~JetCoreClusterSplitter() override; + ~JetCoreClusterSplitter() override = default; void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: bool split(const SiPixelCluster& aCluster, edmNew::DetSetVector::FastFiller& filler, @@ -129,8 +130,6 @@ JetCoreClusterSplitter::JetCoreClusterSplitter(const edm::ParameterSet& iConfig) produces>(); } -JetCoreClusterSplitter::~JetCoreClusterSplitter() {} - bool SortPixels(const SiPixelCluster::Pixel& i, const SiPixelCluster::Pixel& j) { return (i.adc > j.adc); } void JetCoreClusterSplitter::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { diff --git a/RecoLuminosity/LumiDB/python/csvLumibyLSParser.py b/RecoLuminosity/LumiDB/python/csvLumibyLSParser.py index cd03ee6ff538e..605b4411a4f32 100755 --- a/RecoLuminosity/LumiDB/python/csvLumibyLSParser.py +++ b/RecoLuminosity/LumiDB/python/csvLumibyLSParser.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Note: this is specifically to parse a .csv file generated from a command like # pixelLumiCalc.py lumibyls -i json_DCSONLY_pp.txt --hltpath "HLT_Photon75_CaloIdVL_IsoL*" -o myHLTtest.out # format: Run,LS,HLTpath,L1bit,HLTpresc,L1presc,Recorded(/ub),Effective(/ub) diff --git a/RecoLuminosity/LumiDB/python/pileupParser.py b/RecoLuminosity/LumiDB/python/pileupParser.py index 6d50fcc03bceb..4194e385f294f 100755 --- a/RecoLuminosity/LumiDB/python/pileupParser.py +++ b/RecoLuminosity/LumiDB/python/pileupParser.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from __future__ import print_function import json class pileupParser(object): def __init__(self,selectStr): diff --git a/RecoLuminosity/LumiDB/python/selectionParser.py b/RecoLuminosity/LumiDB/python/selectionParser.py index 1a3e70167f479..d29ab3bceda82 100644 --- a/RecoLuminosity/LumiDB/python/selectionParser.py +++ b/RecoLuminosity/LumiDB/python/selectionParser.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import json class selectionParser(object): diff --git a/RecoLuminosity/LumiDB/scripts/makePileupJSON.py b/RecoLuminosity/LumiDB/scripts/makePileupJSON.py index b2e3c1fc57d1f..5bd02ea247c0e 100755 --- a/RecoLuminosity/LumiDB/scripts/makePileupJSON.py +++ b/RecoLuminosity/LumiDB/scripts/makePileupJSON.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import argparse import RecoLuminosity.LumiDB.LumiConstants as LumiConstants import re diff --git a/RecoLuminosity/LumiDB/scripts/pileupCalc.py b/RecoLuminosity/LumiDB/scripts/pileupCalc.py index 60740decba23e..232b3b0802a13 100755 --- a/RecoLuminosity/LumiDB/scripts/pileupCalc.py +++ b/RecoLuminosity/LumiDB/scripts/pileupCalc.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range VERSION='1.00' import os, sys, time diff --git a/RecoLuminosity/LumiDB/scripts/pileupReCalc_HLTpaths.py b/RecoLuminosity/LumiDB/scripts/pileupReCalc_HLTpaths.py index beb6fd6598ee3..0264b80962433 100755 --- a/RecoLuminosity/LumiDB/scripts/pileupReCalc_HLTpaths.py +++ b/RecoLuminosity/LumiDB/scripts/pileupReCalc_HLTpaths.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function VERSION='1.00' import os,sys,time import optparse diff --git a/RecoLuminosity/LumiDB/scripts/pileupReCalc_Lumis.py b/RecoLuminosity/LumiDB/scripts/pileupReCalc_Lumis.py index f290faf45b00e..c9b28a4ab8e18 100755 --- a/RecoLuminosity/LumiDB/scripts/pileupReCalc_Lumis.py +++ b/RecoLuminosity/LumiDB/scripts/pileupReCalc_Lumis.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function VERSION='1.00' import os,sys,time import optparse diff --git a/RecoLuminosity/LumiProducer/plugins/Lumi2DB.cc b/RecoLuminosity/LumiProducer/plugins/Lumi2DB.cc index 513565b6c1976..710f4c0dff93e 100644 --- a/RecoLuminosity/LumiProducer/plugins/Lumi2DB.cc +++ b/RecoLuminosity/LumiProducer/plugins/Lumi2DB.cc @@ -680,7 +680,7 @@ void lumi::Lumi2DB::cleanTemporaryMemory(lumi::Lumi2DB::LumiResult::iterator lum lumi::Lumi2DB::Lumi2DB(const std::string& dest) : DataPipe(dest) {} void lumi::Lumi2DB::parseSourceString(lumi::Lumi2DB::LumiSource& result) const { //parse lumi source file name - if (m_source.length() == 0) + if (m_source.empty()) throw lumi::Exception("lumi source is not set", "parseSourceString", "Lumi2DB"); //std::cout<<"source "<("siteconfpath", ""); - if (siteconfpath.length() == 0) { + if (siteconfpath.empty()) { std::string url = (std::filesystem::path("SITECONF") / std::filesystem::path("local") / std::filesystem::path("JobConfig") / std::filesystem::path("site-local-config.xml")) .string(); diff --git a/RecoMET/METFilters/plugins/MultiEventFilter.cc b/RecoMET/METFilters/plugins/MultiEventFilter.cc index 8416dea909510..b9e43e58ad815 100644 --- a/RecoMET/METFilters/plugins/MultiEventFilter.cc +++ b/RecoMET/METFilters/plugins/MultiEventFilter.cc @@ -36,7 +36,7 @@ MultiEventFilter::MultiEventFilter(const edm::ParameterSet& iConfig) : eventList_(iConfig.getParameter >("EventList")), taggingMode_(iConfig.getParameter("taggingMode")) { edm::FileInPath fp = iConfig.getParameter("file"); - std::string fFile = fp.fullPath(); + const std::string& fFile = fp.fullPath(); std::ifstream inStream(fFile.c_str()); for (unsigned int i = 0; i < eventList_.size(); ++i) { diff --git a/RecoMET/METFilters/python/GenerateHcalLaserBadRunList.py b/RecoMET/METFilters/python/GenerateHcalLaserBadRunList.py index 240a783cbc538..261f154edf841 100644 --- a/RecoMET/METFilters/python/GenerateHcalLaserBadRunList.py +++ b/RecoMET/METFilters/python/GenerateHcalLaserBadRunList.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function -from __future__ import absolute_import from builtins import range import sys, os, string import time diff --git a/RecoMET/METFilters/python/hcalLaserEventFilter_cfi.py b/RecoMET/METFilters/python/hcalLaserEventFilter_cfi.py index 24a13b64d31e4..87915a4523391 100644 --- a/RecoMET/METFilters/python/hcalLaserEventFilter_cfi.py +++ b/RecoMET/METFilters/python/hcalLaserEventFilter_cfi.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from RecoMET.METFilters.hcallaserevent_cfi import * # from fillDescriptions try: diff --git a/RecoMET/METFilters/test/filters_cfg.py b/RecoMET/METFilters/test/filters_cfg.py index f5d8092df8281..1b50d35a65472 100644 --- a/RecoMET/METFilters/test/filters_cfg.py +++ b/RecoMET/METFilters/test/filters_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function ##____________________________________________________________________________|| from PhysicsTools.PatAlgos.patTemplate_cfg import * diff --git a/RecoMET/METProducers/interface/CSCHaloDataProducer.h b/RecoMET/METProducers/interface/CSCHaloDataProducer.h index 50385a4d2b1b5..e054e40b65468 100644 --- a/RecoMET/METProducers/interface/CSCHaloDataProducer.h +++ b/RecoMET/METProducers/interface/CSCHaloDataProducer.h @@ -96,6 +96,8 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/PluginManager/interface/ModuleDef.h" #include "Geometry/CommonDetUnit/interface/GeomDet.h" @@ -130,7 +132,9 @@ namespace reco { class CSCHaloDataProducer : public edm::stream::EDProducer<> { public: explicit CSCHaloDataProducer(const edm::ParameterSet &); - ~CSCHaloDataProducer() override; + ~CSCHaloDataProducer() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions &descriptions); private: void produce(edm::Event &, const edm::EventSetup &) override; diff --git a/RecoMET/METProducers/interface/EcalHaloDataProducer.h b/RecoMET/METProducers/interface/EcalHaloDataProducer.h index a81cea5230a98..c884163aff402 100644 --- a/RecoMET/METProducers/interface/EcalHaloDataProducer.h +++ b/RecoMET/METProducers/interface/EcalHaloDataProducer.h @@ -76,6 +76,8 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/PluginManager/interface/ModuleDef.h" #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" @@ -94,7 +96,9 @@ namespace reco { class EcalHaloDataProducer : public edm::stream::EDProducer<> { public: explicit EcalHaloDataProducer(const edm::ParameterSet&); - ~EcalHaloDataProducer() override; + ~EcalHaloDataProducer() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: void produce(edm::Event&, const edm::EventSetup&) override; diff --git a/RecoMET/METProducers/interface/GlobalHaloDataProducer.h b/RecoMET/METProducers/interface/GlobalHaloDataProducer.h index d2622f09b815f..9ad745c1485b5 100644 --- a/RecoMET/METProducers/interface/GlobalHaloDataProducer.h +++ b/RecoMET/METProducers/interface/GlobalHaloDataProducer.h @@ -129,7 +129,9 @@ #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/PluginManager/interface/ModuleDef.h" #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" @@ -182,6 +184,8 @@ namespace reco { explicit GlobalHaloDataProducer(const edm::ParameterSet&); ~GlobalHaloDataProducer() override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: void produce(edm::Event&, const edm::EventSetup&) override; diff --git a/RecoMET/METProducers/interface/HcalHaloDataProducer.h b/RecoMET/METProducers/interface/HcalHaloDataProducer.h index f719cd54a9425..ee3c2274fd020 100644 --- a/RecoMET/METProducers/interface/HcalHaloDataProducer.h +++ b/RecoMET/METProducers/interface/HcalHaloDataProducer.h @@ -68,6 +68,8 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/PluginManager/interface/ModuleDef.h" #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" @@ -86,7 +88,9 @@ namespace reco { class HcalHaloDataProducer : public edm::stream::EDProducer<> { public: explicit HcalHaloDataProducer(const edm::ParameterSet&); - ~HcalHaloDataProducer() override; + ~HcalHaloDataProducer() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: void produce(edm::Event&, const edm::EventSetup&) override; diff --git a/RecoMET/METProducers/python/CSCHaloData_cfi.py b/RecoMET/METProducers/python/CSCHaloData_cfi.py index e5a48b2528010..a6be49cb8a4f7 100644 --- a/RecoMET/METProducers/python/CSCHaloData_cfi.py +++ b/RecoMET/METProducers/python/CSCHaloData_cfi.py @@ -5,79 +5,5 @@ # Description: Module to build CSCHaloData and put into the event # Date: Oct. 15, 2009 -CSCHaloData = cms.EDProducer("CSCHaloDataProducer", - - # Digi Level - L1MuGMTReadoutLabel = cms.InputTag("gtDigis"), - - # HLT - HLTResultLabel = cms.InputTag("TriggerResults::HLT"), - HLTBitLabel = cms.VInputTag( cms.InputTag("HLT_CSCBeamHalo"), - cms.InputTag("HLT_CSCBeamHaloOverlapRing1"), - cms.InputTag("HLT_CSCBeamHaloOverlapRing2"), - cms.InputTag("HLT_CSCBeamHaloRing2or3") - ), - - # Chamber Level Trigger Primitive - ALCTDigiLabel = cms.InputTag("muonCSCDigis","MuonCSCALCTDigi"), - - # RecHit Level - CSCRecHitLabel = cms.InputTag("csc2DRecHits"), - - # Calo rec hits - HBHErhLabel = cms.InputTag("hbhereco"), - ECALBrhLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB"), - ECALErhLabel = cms.InputTag("ecalRecHit","EcalRecHitsEE"), - - # Higher Level Reco - CSCSegmentLabel= cms.InputTag("cscSegments"), - CosmicMuonLabel= cms.InputTag("muonsFromCosmics"), - MuonLabel = cms.InputTag("muons"), - SALabel = cms.InputTag("standAloneMuons"), - - # Muon-Segment matching - MatchParameters = cms.PSet( - CSCsegments = cms.InputTag("cscSegments"), - DTradius = cms.double(0.01), - DTsegments = cms.InputTag("dt4DSegments"), - RPChits = cms.InputTag("rpcRecHits"), - TightMatchDT = cms.bool(False), - TightMatchCSC = cms.bool(True) - ), - - DetaParam = cms.double(0.1), - DphiParam = cms.double(1.00), - NormChi2Param = cms.double(8.), - InnerRMinParam = cms.double(0.), - OuterRMinParam = cms.double(0.), - InnerRMaxParam = cms.double(99999.), - OuterRMaxParam = cms.double(99999.), - - MinOuterMomentumTheta = cms.double(.10), - MaxOuterMomentumTheta = cms.double(3.0), - MatchingDPhiThreshold = cms.double(0.18), - MatchingDEtaThreshold = cms.double(0.4), - MatchingDWireThreshold = cms.int32(5), - # The expected time of a collision recHit will be t = time_0 + time-of-flight - # A recHit more than +/- time_window from collision timing will be declared "out-of-time" - # recHit times are in [ns] - RecHitTime0 = cms.double(0.), - RecHitTimeWindow = cms.double(25.), - - # If this is Data, the expected collision bx will be 3 instead of 6 - #ExpectedBX = cms.int32(3), # if Data - ExpectedBX = cms.int32(6), # if MC - - # If this is halo we expect free inverse beta to be less than MaxFreeInverseBeta - MaxFreeInverseBeta = cms.double(0.0), - - # If this is halo we expect ( T_outer_segment - T_inner_segment) to be less than MaxDtMuonSegment - MaxDtMuonSegment = cms.double(-10.0), - - # MLR - # Default values for identifying CSCSegments that are halo-like - MaxSegmentRDiff = cms.double(10.0), - MaxSegmentPhiDiff = cms.double(0.1), - MaxSegmentTheta = cms.double(0.7) - # End MLR - ) +from RecoMET.METProducers.cscHaloDataProducer_cfi import cscHaloDataProducer as _cscHaloDataProducer +CSCHaloData = _cscHaloDataProducer.clone() diff --git a/RecoMET/METProducers/python/EcalHaloData_cfi.py b/RecoMET/METProducers/python/EcalHaloData_cfi.py index aed45dee32e9e..6f709967104df 100644 --- a/RecoMET/METProducers/python/EcalHaloData_cfi.py +++ b/RecoMET/METProducers/python/EcalHaloData_cfi.py @@ -4,27 +4,7 @@ # Description: Module to build EcalHaloData Object and put into the event # Date: Oct. 15, 2009 -EcalHaloData= cms.EDProducer("EcalHaloDataProducer", - # RecHit Level - EBRecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB"), - EERecHitLabel = cms.InputTag("ecalRecHit", "EcalRecHitsEE"), - ESRecHitLabel = cms.InputTag("ecalPreshowerRecHit","EcalRecHitsES"), - HBHERecHitLabel = cms.InputTag("hbhereco"), - # Higher Level Reco - SuperClusterLabel = cms.InputTag("correctedHybridSuperClusters"), -# SuperClusterLabel = cms.InputTag("cosmicSuperClusters","CosmicBarrelSuperClusters"), - PhotonLabel = cms.InputTag(""), - - EBRecHitEnergyThresholdParam = cms.double(0.3), - EERecHitEnergyThresholdParam = cms.double(0.3), - ESRecHitEnergyThresholdParam = cms.double(0.3), - SumEcalEnergyThresholdParam = cms.double(10.), - NHitsEcalThresholdParam = cms.int32(4), - - # Shower Shape cut parameters (defaults need to be optimized) - RoundnessCutParam = cms.double(0.41), - AngleCutParam = cms.double(0.51), - - ) +from RecoMET.METProducers.ecalHaloDataProducer_cfi import ecalHaloDataProducer as _ecalHaloDataProducer +EcalHaloData = _ecalHaloDataProducer.clone() diff --git a/RecoMET/METProducers/python/GlobalHaloData_cfi.py b/RecoMET/METProducers/python/GlobalHaloData_cfi.py index 21444d0d2c3b1..64784580126f7 100644 --- a/RecoMET/METProducers/python/GlobalHaloData_cfi.py +++ b/RecoMET/METProducers/python/GlobalHaloData_cfi.py @@ -4,54 +4,7 @@ # Description: Module to build GlobalHaloData Object and put into the event # Date: Oct. 15, 2009 -GlobalHaloData = cms.EDProducer("GlobalHaloDataProducer", - # Higher Level Reco - metLabel = cms.InputTag("caloMet"), - calotowerLabel = cms.InputTag("towerMaker"), - CSCSegmentLabel = cms.InputTag("cscSegments"), - CSCRecHitLabel = cms.InputTag("csc2DRecHits"), - MuonLabel = cms.InputTag("muons"), - EcalMinMatchingRadiusParam = cms.double(110.), - EcalMaxMatchingRadiusParam = cms.double(330.), - - HcalMinMatchingRadiusParam = cms.double(110.), - HcalMaxMatchingRadiusParam = cms.double(490.), - - CSCHaloDataLabel = cms.InputTag("CSCHaloData"), - EcalHaloDataLabel = cms.InputTag("EcalHaloData"), - HcalHaloDataLabel = cms.InputTag("HcalHaloData"), - - CaloTowerEtThresholdParam = cms.double(0.3), - - #Parameters for CSC-calo matching - MaxSegmentTheta = cms.double(0.7), - - rh_et_threshforcscmatching_eb = cms.double(10.), - rcalominrsegm_lowthresh_eb = cms.double(-30.), - rcalominrsegm_highthresh_eb = cms.double(15.), - dtcalosegm_thresh_eb = cms.double(15.), - dphicalosegm_thresh_eb = cms.double(0.04), - - rh_et_threshforcscmatching_ee = cms.double(10.), - rcalominrsegm_lowthresh_ee = cms.double(-30.), - rcalominrsegm_highthresh_ee = cms.double(30.), - dtcalosegm_thresh_ee = cms.double(15.), - dphicalosegm_thresh_ee = cms.double(0.04), - - rh_et_threshforcscmatching_hb = cms.double(20.), - rcalominrsegm_lowthresh_hb = cms.double(-100.), - rcalominrsegm_highthresh_hb = cms.double(20.), - dtcalosegm_thresh_hb = cms.double(15.), - dphicalosegm_thresh_hb = cms.double(0.15), - - rh_et_threshforcscmatching_he = cms.double(20.), - rcalominrsegm_lowthresh_he = cms.double(-30.), - rcalominrsegm_highthresh_he = cms.double(30.), - dtcalosegm_thresh_he = cms.double(15.), - dphicalosegm_thresh_he = cms.double(0.1), - IsHLT = cms.bool(False) - - - ) +from RecoMET.METProducers.globalHaloDataProducer_cfi import globalHaloDataProducer as _globalHaloDataProducer +GlobalHaloData = _globalHaloDataProducer.clone() diff --git a/RecoMET/METProducers/python/HcalHaloData_cfi.py b/RecoMET/METProducers/python/HcalHaloData_cfi.py index 03873bc90330e..b286738636cc6 100644 --- a/RecoMET/METProducers/python/HcalHaloData_cfi.py +++ b/RecoMET/METProducers/python/HcalHaloData_cfi.py @@ -4,23 +4,7 @@ # Description: Module to build HcalHaloData Object and put into the event # Date: Oct. 15, 2009 -HcalHaloData = cms.EDProducer("HcalHaloDataProducer", - # RecHit Level - EBRecHitLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB"), - EERecHitLabel = cms.InputTag("ecalRecHit", "EcalRecHitsEE"), - HBHERecHitLabel = cms.InputTag("hbhereco"), - HORecHitLabel = cms.InputTag("horeco"), - HFRecHitLabel = cms.InputTag("hfreco"), - - caloTowerCollName = cms.InputTag('towerMaker'), - - HcalMinMatchingRadiusParam = cms.double(110.), - HcalMaxMatchingRadiusParam = cms.double(490.), - HBRecHitEnergyThresholdParam = cms.double(0.5), - HERecHitEnergyThresholdParam = cms.double(0.5), - SumHcalEnergyThresholdParam = cms.double(18), - NHitsHcalThresholdParam = cms.int32(4), - - ) +from RecoMET.METProducers.hcalHaloDataProducer_cfi import hcalHaloDataProducer as _hcalHaloDataProducer +HcalHaloData = _hcalHaloDataProducer.clone() diff --git a/RecoMET/METProducers/src/CSCHaloDataProducer.cc b/RecoMET/METProducers/src/CSCHaloDataProducer.cc index d89ab6efcf155..7c734138bc54f 100644 --- a/RecoMET/METProducers/src/CSCHaloDataProducer.cc +++ b/RecoMET/METProducers/src/CSCHaloDataProducer.cc @@ -82,6 +82,75 @@ CSCHaloDataProducer::CSCHaloDataProducer(const edm::ParameterSet& iConfig) : CSC produces(); } +void CSCHaloDataProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + + //Digi Level + desc.add("L1MuGMTReadoutLabel", edm::InputTag("gtDigis")); + + // HLT + desc.add("HLTResultLabel", edm::InputTag("TriggerResults::HLT")); + desc.add >("HLTBitLabel", + {edm::InputTag("HLT_CSCBeamHalo"), + edm::InputTag("HLT_CSCBeamHaloOverlapRing1"), + edm::InputTag("HLT_CSCBeamHaloOverlapRing2"), + edm::InputTag("HLT_CSCBeamHaloRing2or3")}); + + // RecHit Level + desc.add("CSCRecHitLabel", edm::InputTag("csc2DRecHits")); + desc.add("HBHErhLabel", edm::InputTag("hbhereco")); + desc.add("ECALBrhLabel", edm::InputTag("ecalRecHit", "EcalRecHitsEB")); + desc.add("ECALErhLabel", edm::InputTag("ecalRecHit", "EcalRecHitsEE")); + + //Higher Level Reco + desc.add("CSCSegmentLabel", edm::InputTag("cscSegments")); + desc.add("CosmicMuonLabel", edm::InputTag("muonsFromCosmics")); + desc.add("MuonLabel", edm::InputTag("muons")); + desc.add("SALabel", edm::InputTag("standAloneMuons")); + desc.add("ALCTDigiLabel", edm::InputTag("muonCSCDigis", "MuonCSCALCTDigi")) + ->setComment("Chamber Level Trigger Primitive"); + + { + // Muon-Segment matching + edm::ParameterSetDescription matchParametersPSet; + MuonSegmentMatcher::fillPSetDescription(matchParametersPSet); + desc.add("MatchParameters", matchParametersPSet); + } + + desc.add("DetaParam", 0.1); + desc.add("DphiParam", 1.00); + desc.add("InnerRMinParam", 0.); + desc.add("InnerRMaxParam", 99999.); + desc.add("OuterRMinParam", 0.); + desc.add("OuterRMaxParam", 99999.); + desc.add("NormChi2Param", 8.); + + // MLR + // Default values for identifying CSCSegments that are halo-like + desc.add("MaxSegmentRDiff", 10.0); + desc.add("MaxSegmentPhiDiff", 0.1); + desc.add("MaxSegmentTheta", 0.7); + // end MLR + + desc.add("MaxDtMuonSegment", -10.0) + ->setComment("if this is halo we expect ( T_outer_segment - T_inner_segment) to be less than MaxDtMuonSegment"); + desc.add("MaxFreeInverseBeta", 0.0) + ->setComment("if this is halo we expect free inverse beta to be less than MaxFreeInverseBeta"); + desc.add("ExpectedBX", 6)->setComment("if this is Data, the expected collision bx will be 3 instead of 6"); + + // The expected time of a collision recHit will be t = time_0 + time-of-flight + // A recHit more than +/- time_window from collision timing will be declared "out-of-time" + // recHit times are in [ns] + desc.add("RecHitTime0", 0.)->setComment("rechit time in ns"); + desc.add("RecHitTimeWindow", 25.)->setComment("rechit time in ns"); + desc.add("MinOuterMomentumTheta", .10); + desc.add("MaxOuterMomentumTheta", 3.0); + desc.add("MatchingDPhiThreshold", 0.18); + desc.add("MatchingDEtaThreshold", 0.4); + desc.add("MatchingDWireThreshold", 5); + descriptions.addWithDefaultLabel(desc); +} + void CSCHaloDataProducer::produce(Event& iEvent, const EventSetup& iSetup) { //Get CSC Geometry edm::ESHandle TheCSCGeometry = iSetup.getHandle(cscGeometry_token); @@ -158,5 +227,3 @@ void CSCHaloDataProducer::produce(Event& iEvent, const EventSetup& iSetup) { iSetup))); return; } - -CSCHaloDataProducer::~CSCHaloDataProducer() {} diff --git a/RecoMET/METProducers/src/EcalHaloDataProducer.cc b/RecoMET/METProducers/src/EcalHaloDataProducer.cc index 29e8f5d63371c..07c69242e374b 100644 --- a/RecoMET/METProducers/src/EcalHaloDataProducer.cc +++ b/RecoMET/METProducers/src/EcalHaloDataProducer.cc @@ -34,9 +34,6 @@ EcalHaloDataProducer::EcalHaloDataProducer(const edm::ParameterSet& iConfig) : E SumEcalEnergyThreshold = (float)iConfig.getParameter("SumEcalEnergyThresholdParam"); NHitsEcalThreshold = iConfig.getParameter("NHitsEcalThresholdParam"); - RoundnessCut = iConfig.getParameter("RoundnessCutParam"); - AngleCut = iConfig.getParameter("AngleCutParam"); - ebrechit_token_ = consumes(IT_EBRecHit); eerechit_token_ = consumes(IT_EERecHit); esrechit_token_ = consumes(IT_ESRecHit); @@ -93,4 +90,23 @@ void EcalHaloDataProducer::produce(Event& iEvent, const EventSetup& iSetup) { return; } -EcalHaloDataProducer::~EcalHaloDataProducer() {} +void EcalHaloDataProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + // RecHit level + desc.add("EBRecHitLabel", edm::InputTag("ecalRecHit", "EcalRecHitsEB")); + desc.add("EERecHitLabel", edm::InputTag("ecalRecHit", "EcalRecHitsEE")); + desc.add("ESRecHitLabel", edm::InputTag("ecalPreshowerRecHit", "EcalRecHitsES")); + // Higher level Reco + desc.add("HBHERecHitLabel", edm::InputTag("hbhereco")); + desc.add("SuperClusterLabel", edm::InputTag("correctedHybridSuperClusters")); + desc.add("PhotonLabel", edm::InputTag("")); + desc.add("EBRecHitEnergyThresholdParam", 0.3); + desc.add("EERecHitEnergyThresholdParam", 0.3); + desc.add("ESRecHitEnergyThresholdParam", 0.3); + desc.add("SumEcalEnergyThresholdParam", 10); + desc.add("NHitsEcalThresholdParam", 4); + // Shower Shape cut parameters (defaults need to be optimized) + desc.add("RoundnessCutParam", 0.41); + desc.add("AngleCutParam", 0.51); + descriptions.addWithDefaultLabel(desc); +} diff --git a/RecoMET/METProducers/src/GlobalHaloDataProducer.cc b/RecoMET/METProducers/src/GlobalHaloDataProducer.cc index 389ca0613834d..fbef27d3a14bd 100644 --- a/RecoMET/METProducers/src/GlobalHaloDataProducer.cc +++ b/RecoMET/METProducers/src/GlobalHaloDataProducer.cc @@ -12,6 +12,50 @@ using namespace edm; using namespace std; using namespace reco; +void GlobalHaloDataProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("IsHLT", false); + + // Higher Level Reco + desc.add("metLabel", edm::InputTag("caloMet")); + desc.add("calotowerLabel", edm::InputTag("towerMaker")); + desc.add("CSCSegmentLabel", edm::InputTag("cscSegments")); + desc.add("CSCRecHitLabel", edm::InputTag("csc2DRecHits")); + desc.add("MuonLabel", edm::InputTag("muons")); + desc.add("CSCHaloDataLabel", edm::InputTag("CSCHaloData")); + desc.add("EcalHaloDataLabel", edm::InputTag("EcalHaloData")); + desc.add("HcalHaloDataLabel", edm::InputTag("HcalHaloData")); + desc.add("EcalMinMatchingRadiusParam", 110.); + desc.add("EcalMaxMatchingRadiusParam", 330.); + desc.add("HcalMinMatchingRadiusParam", 110.); + desc.add("HcalMaxMatchingRadiusParam", 490.); + desc.add("CaloTowerEtThresholdParam", 0.3); + + // Parameters for CSC-calo matching + desc.add("MaxSegmentTheta", 0.7); + desc.add("rh_et_threshforcscmatching_eb", 10.); + desc.add("rcalominrsegm_lowthresh_eb", -30.); + desc.add("rcalominrsegm_highthresh_eb", 15.); + desc.add("dtcalosegm_thresh_eb", 15.); + desc.add("dphicalosegm_thresh_eb", 0.04); + desc.add("rh_et_threshforcscmatching_ee", 10.); + desc.add("rcalominrsegm_lowthresh_ee", -30.); + desc.add("rcalominrsegm_highthresh_ee", 30.); + desc.add("dtcalosegm_thresh_ee", 15.); + desc.add("dphicalosegm_thresh_ee", 0.04); + desc.add("rh_et_threshforcscmatching_hb", 20.); + desc.add("rcalominrsegm_lowthresh_hb", -100.); + desc.add("rcalominrsegm_highthresh_hb", 20.); + desc.add("dtcalosegm_thresh_hb", 15.); + desc.add("dphicalosegm_thresh_hb", 0.15); + desc.add("rh_et_threshforcscmatching_he", 20.); + desc.add("rcalominrsegm_lowthresh_he", -30.); + desc.add("rcalominrsegm_highthresh_he", 30.); + desc.add("dtcalosegm_thresh_he", 15.); + desc.add("dphicalosegm_thresh_he", 0.1); + descriptions.addWithDefaultLabel(desc); +} + GlobalHaloDataProducer::GlobalHaloDataProducer(const edm::ParameterSet& iConfig) { ishlt = iConfig.getParameter("IsHLT"); diff --git a/RecoMET/METProducers/src/HcalHaloDataProducer.cc b/RecoMET/METProducers/src/HcalHaloDataProducer.cc index 4b25f906038f6..09e3d2ff7d46e 100644 --- a/RecoMET/METProducers/src/HcalHaloDataProducer.cc +++ b/RecoMET/METProducers/src/HcalHaloDataProducer.cc @@ -71,4 +71,18 @@ void HcalHaloDataProducer::produce(Event& iEvent, const EventSetup& iSetup) { return; } -HcalHaloDataProducer::~HcalHaloDataProducer() {} +void HcalHaloDataProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + // RecHit Level + desc.add("EBRecHitLabel", edm::InputTag("ecalRecHit", "EcalRecHitsEB")); + desc.add("EERecHitLabel", edm::InputTag("ecalRecHit", "EcalRecHitsEE")); + desc.add("HBHERecHitLabel", edm::InputTag("hbhereco")); + desc.add("HFRecHitLabel", edm::InputTag("horeco")); + desc.add("HORecHitLabel", edm::InputTag("hfreco")); + desc.add("caloTowerCollName", edm::InputTag("towerMaker")); + desc.add("HBRecHitEnergyThresholdParam", 0.5); + desc.add("HERecHitEnergyThresholdParam", 0.5); + desc.add("SumHcalEnergyThresholdParam", 18); + desc.add("NHitsHcalThresholdParam", 4); + descriptions.addWithDefaultLabel(desc); +} diff --git a/RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h b/RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h index 0e34b0862fa52..536d847df371b 100644 --- a/RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h +++ b/RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h @@ -9,7 +9,7 @@ */ #include -#include +#include #include class DetLayer; diff --git a/RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h b/RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h index 35fbb822d3336..7270827ae0c4c 100644 --- a/RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h +++ b/RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h @@ -9,7 +9,7 @@ */ #include -#include +#include #include class DetLayer; diff --git a/RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h b/RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h index 57a4cd620c6b7..b4af972382a17 100644 --- a/RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h +++ b/RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h @@ -12,7 +12,7 @@ #include "DataFormats/DetId/interface/DetId.h" #include "TrackingTools/DetLayers/interface/DetLayerGeometry.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include #include diff --git a/RecoMTD/DetLayers/interface/MTDDetSector.h b/RecoMTD/DetLayers/interface/MTDDetSector.h index 06b378000d089..2011a00ad7a2d 100644 --- a/RecoMTD/DetLayers/interface/MTDDetSector.h +++ b/RecoMTD/DetLayers/interface/MTDDetSector.h @@ -3,7 +3,7 @@ #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h" #include "DataFormats/GeometrySurface/interface/BoundDiskSector.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include diff --git a/RecoMTD/DetLayers/interface/MTDDetTray.h b/RecoMTD/DetLayers/interface/MTDDetTray.h index f79168322a973..de24081df0ee7 100644 --- a/RecoMTD/DetLayers/interface/MTDDetTray.h +++ b/RecoMTD/DetLayers/interface/MTDDetTray.h @@ -12,6 +12,9 @@ #include "TrackingTools/DetLayers/interface/DetRodOneR.h" #include "TrackingTools/DetLayers/interface/PeriodicBinFinderInZ.h" #include "Utilities/BinningTools/interface/GenericBinFinderInZ.h" + +#include + class GeomDet; class MTDDetTray : public DetRodOneR { diff --git a/RecoMTD/DetLayers/plugins/MTDDetLayerGeometryESProducer.cc b/RecoMTD/DetLayers/plugins/MTDDetLayerGeometryESProducer.cc index 6fd869bc030cc..14bdf1614751b 100644 --- a/RecoMTD/DetLayers/plugins/MTDDetLayerGeometryESProducer.cc +++ b/RecoMTD/DetLayers/plugins/MTDDetLayerGeometryESProducer.cc @@ -16,7 +16,7 @@ #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h" #include "RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h" diff --git a/RecoMTD/DetLayers/src/BTLDetLayerGeometryBuilder.cc b/RecoMTD/DetLayers/src/BTLDetLayerGeometryBuilder.cc index a814be8b2ad48..34017c356e341 100644 --- a/RecoMTD/DetLayers/src/BTLDetLayerGeometryBuilder.cc +++ b/RecoMTD/DetLayers/src/BTLDetLayerGeometryBuilder.cc @@ -6,7 +6,6 @@ #include #include #include -#include #include #include @@ -27,65 +26,30 @@ vector BTLDetLayerGeometryBuilder::buildLayers(const MTDGeometry& geo vector btlDetTrays; - const int mtdTopologyMode = topo.getMTDTopologyMode(); - BTLDetId::CrysLayout btlL = MTDTopologyMode::crysLayoutFromTopoMode(mtdTopologyMode); - - if (btlL != BTLDetId::CrysLayout::v2 && btlL != BTLDetId::CrysLayout::v3) { - for (unsigned tray = 1; tray <= BTLDetId::HALF_ROD; ++tray) { - vector geomDets; - for (unsigned module = 1; module <= BTLDetId::kModulesPerRODBarPhiFlat; ++module) { - for (unsigned side = 0; side <= 1; ++side) { - const GeomDet* geomDet = geo.idToDet(BTLDetId(side, tray, module, 0, 1)); - if (geomDet != nullptr) { - geomDets.push_back(geomDet); - LogTrace("MTDDetLayers") << "get BTL module " << std::hex << BTLDetId(side, tray, module, 0, 1).rawId() - << std::dec << " at R=" << geomDet->position().perp() - << ", phi=" << geomDet->position().phi(); - } - } - } - - if (!geomDets.empty()) { - precomputed_value_sort(geomDets.begin(), geomDets.end(), geomsort::DetZ()); - btlDetTrays.push_back(new MTDDetTray(geomDets)); - LogTrace("MTDDetLayers") << " New BTLDetTray with " << geomDets.size() - << " modules at R=" << btlDetTrays.back()->position().perp() - << ", phi=" << btlDetTrays.back()->position().phi(); - } + vector geomDets; + + // logical tracking trays are now rows along z of modules, 3 per each mechanical tray, running from -z to z + // MTDGeometry is already built with the proper ordering, it is enough to exploit that + geomDets.reserve(topo.btlModulesPerRod()); + + uint32_t index(0); + for (const auto& det : geo.detsBTL()) { + index++; + geomDets.emplace_back(det); + if (index == topo.btlModulesPerRod()) { + btlDetTrays.emplace_back(new MTDDetTray(geomDets)); + LogTrace("MTDDetLayers") << " New BTLDetTray with " << geomDets.size() + << " modules at R=" << btlDetTrays.back()->position().perp() + << ", phi=" << btlDetTrays.back()->position().phi(); + index = 0; + geomDets.clear(); } - - precomputed_value_sort(btlDetTrays.begin(), btlDetTrays.end(), geomsort::ExtractPhi()); - result.push_back(new MTDTrayBarrelLayer(btlDetTrays)); - LogTrace("MTDDetLayers") << "BTLDetLayerGeometryBuilder: new MTDTrayBarrelLayer with " << btlDetTrays.size() - << " rods, at R " << result.back()->specificSurface().radius(); - } else { - vector geomDets; - - // logical tracking trays are now rows along z of modules, 3 per each mechanical tray, running from -z to z - // MTDGeometry is already built with the proper ordering, it is enough to exploit that - const uint32_t modulesPerDetTray = - 2 * BTLDetId::kRUPerTypeV2 * BTLDetId::kCrystalTypes * BTLDetId::kModulesPerRUV2 / BTLDetId::kModulesPerTrkV2; - geomDets.reserve(modulesPerDetTray); - - uint32_t index(0); - for (const auto& det : geo.detsBTL()) { - index++; - geomDets.emplace_back(det); - if (index == modulesPerDetTray) { - btlDetTrays.emplace_back(new MTDDetTray(geomDets)); - LogTrace("MTDDetLayers") << " New BTLDetTray with " << geomDets.size() - << " modules at R=" << btlDetTrays.back()->position().perp() - << ", phi=" << btlDetTrays.back()->position().phi(); - index = 0; - geomDets.clear(); - } - } - - result.emplace_back(new MTDTrayBarrelLayer(btlDetTrays)); - LogTrace("MTDDetLayers") << "BTLDetLayerGeometryBuilder: new MTDTrayBarrelLayer with " << btlDetTrays.size() - << " rods, at R " << result.back()->specificSurface().radius(); } + result.emplace_back(new MTDTrayBarrelLayer(btlDetTrays)); + LogTrace("MTDDetLayers") << "BTLDetLayerGeometryBuilder: new MTDTrayBarrelLayer with " << btlDetTrays.size() + << " rods, at R " << result.back()->specificSurface().radius(); + for (vector::const_iterator it = result.begin(); it != result.end(); it++) detlayers.push_back((DetLayer*)(*it)); diff --git a/RecoMTD/DetLayers/src/MTDDetLayerGeometry.cc b/RecoMTD/DetLayers/src/MTDDetLayerGeometry.cc index 5472945566382..66bda88bc4a05 100644 --- a/RecoMTD/DetLayers/src/MTDDetLayerGeometry.cc +++ b/RecoMTD/DetLayers/src/MTDDetLayerGeometry.cc @@ -78,7 +78,7 @@ DetId MTDDetLayerGeometry::makeDetLayerId(const DetLayer* detLayer) const { return ETLDetId(id.mtdSide(), 0, 0, 0, 0); // Constructor of new geometry is compatible with prev8 } else if (detLayer->subDetector() == GeomDetEnumerators::TimingBarrel) { BTLDetId id(detLayer->basicComponents().front()->geographicalId().rawId()); - return BTLDetId(id.mtdSide(), 0, 0, 0, 0); + return BTLDetId(id.mtdSide(), 0, 0, 0, 0, 0); } else throw cms::Exception("InvalidModuleIdentification"); // << detLayer->module(); } @@ -108,7 +108,7 @@ const DetLayer* MTDDetLayerGeometry::idToLayer(const DetId& id) const { idout = ETLDetId(etlId.mtdSide(), 0, 0, 0, 0); } else if (detId.mtdSubDetector() == 1) { // 1 is BTL BTLDetId btlId(detId.rawId()); - idout = BTLDetId(btlId.mtdSide(), 0, 0, 0, 0); + idout = BTLDetId(btlId.mtdSide(), 0, 0, 0, 0, 0); } else throw cms::Exception("InvalidSubdetId") << detId.subdetId(); diff --git a/RecoMTD/DetLayers/src/MTDDetTray.cc b/RecoMTD/DetLayers/src/MTDDetTray.cc index cd26dc486148a..8665913ddbc3f 100644 --- a/RecoMTD/DetLayers/src/MTDDetTray.cc +++ b/RecoMTD/DetLayers/src/MTDDetTray.cc @@ -13,7 +13,10 @@ #include +#include "DataFormats/Math/interface/Rounding.h" + using namespace std; +using namespace cms_rounding; MTDDetTray::MTDDetTray(vector::const_iterator first, vector::const_iterator last) : DetRodOneR(first, last) { diff --git a/RecoMTD/DetLayers/test/BuildFile.xml b/RecoMTD/DetLayers/test/BuildFile.xml index c9fb7147c279b..01b04f104a000 100644 --- a/RecoMTD/DetLayers/test/BuildFile.xml +++ b/RecoMTD/DetLayers/test/BuildFile.xml @@ -2,18 +2,15 @@ - + - + - - - diff --git a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc index 65a87f9c8ecae..a0b8b566456ae 100644 --- a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc +++ b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc @@ -14,7 +14,7 @@ #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h" diff --git a/RecoMTD/DetLayers/test/TestBTLNavigation.cc b/RecoMTD/DetLayers/test/TestBTLNavigation.cc new file mode 100644 index 0000000000000..4d37ce28ddb95 --- /dev/null +++ b/RecoMTD/DetLayers/test/TestBTLNavigation.cc @@ -0,0 +1,177 @@ +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/global/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/ESTransientHandle.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/Utilities/interface/StreamID.h" + +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" +#include "Geometry/Records/interface/MTDTopologyRcd.h" + +#include "RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h" +#include "RecoMTD/Records/interface/MTDRecoGeometryRecord.h" + +#include "RecoMTD/DetLayers/interface/MTDTrayBarrelLayer.h" +#include "RecoMTD/DetLayers/interface/MTDDetTray.h" + +#include + +#include + +#include "DataFormats/Math/interface/Rounding.h" + +using namespace std; +using namespace edm; +using namespace cms_rounding; + +class TestBTLNavigation : public global::EDAnalyzer<> { +public: + TestBTLNavigation(const ParameterSet& pset); + + void analyze(edm::StreamID, edm::Event const&, edm::EventSetup const&) const override; + +private: + inline std::string fround(const double in, const size_t prec) const { + std::stringstream ss; + ss << std::setprecision(prec) << std::fixed << std::setw(14) << roundIfNear0(in); + return ss.str(); + } + + inline std::string fvecround(const GlobalPoint vecin, const size_t prec) const { + std::stringstream ss; + ss << std::setprecision(prec) << std::fixed << std::setw(14) << roundVecIfNear0(vecin); + return ss.str(); + } + + const edm::ESInputTag tag_; + edm::ESGetToken geomToken_; + edm::ESGetToken topoToken_; +}; + +TestBTLNavigation::TestBTLNavigation(const ParameterSet& iConfig) : tag_(edm::ESInputTag{"", ""}) { + geomToken_ = esConsumes(tag_); + topoToken_ = esConsumes(tag_); +} + +void TestBTLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetup const& es) const { + auto geo = es.getTransientHandle(geomToken_); + auto topo = es.getTransientHandle(topoToken_); + + const vector& layers = geo->allBTLLayers(); + + // dump of BTL layers structure + + LogVerbatim("MTDLayerDumpFull") << "\n\nTest of BTL navigation \n\n"; + LogVerbatim("MTDLayerDump") << "\n\nTest of BTL navigation \n\n"; + + for (const auto& ilay : layers) { + const MTDTrayBarrelLayer* layer = static_cast(ilay); + + LogVerbatim("MTDLayerDumpFull") << std::fixed << "\nBTL layer " << std::setw(4) << layer->subDetector() + << " at z = " << fround(layer->surface().position().z(), 4) + << " rods = " << std::setw(14) << layer->rods().size() + << " dets = " << std::setw(14) << layer->basicComponents().size(); + LogVerbatim("MTDLayerDump") << std::fixed << "\nBTL layer " << std::setw(4) << layer->subDetector() + << " at z = " << fround(layer->surface().position().z(), 2) + << " rods = " << std::setw(14) << layer->rods().size() << " dets = " << std::setw(14) + << layer->basicComponents().size(); + + unsigned int irodInd(0); + unsigned int imodInd(0); + for (const auto& irod : layer->rods()) { + irodInd++; + LogVerbatim("MTDLayerDumpFull") << std::fixed << "\nTray " << std::setw(4) << irodInd << "\n" + << " MTDDetTray at " << std::fixed << std::setprecision(3) + << roundVecIfNear0(irod->specificSurface().position()) << std::endl + << " L/W/T : " << fround(irod->specificSurface().bounds().length(), 2) << " / " + << fround(irod->specificSurface().bounds().width(), 2) << " / " + << fround(irod->specificSurface().bounds().thickness(), 2) + << " normal phi = " << fround(irod->specificSurface().normalVector().phi(), 2) + << std::endl; + LogVerbatim("MTDLayerDump") << std::fixed << "\nTray " << std::setw(4) << irodInd << "\n" + << " MTDDetTray at " << std::fixed << std::setprecision(3) + << roundVecIfNear0(irod->specificSurface().position()) << std::endl + << " L/W/T : " << fround(irod->specificSurface().bounds().length(), 2) << " / " + << fround(irod->specificSurface().bounds().width(), 2) << " / " + << fround(irod->specificSurface().bounds().thickness(), 2) + << " normal phi = " << fround(irod->specificSurface().normalVector().phi(), 2) + << std::endl; + for (const auto& imod : irod->basicComponents()) { + imodInd++; + BTLDetId modId(imod->geographicalId().rawId()); + auto topoId = topo.product()->btlIndex(modId.rawId()); + auto topoDetId = topo.product()->btlidFromIndex(topoId.first, topoId.second); + LogVerbatim("MTDLayerDumpFull") << std::fixed << std::setw(5) << imodInd << " BTLDetId " << modId.rawId() + << " iphi/ieta = " << std::setw(4) << topoId.first << " / " << std::setw(4) + << topoId.second << " side = " << std::setw(4) << modId.mtdSide() + << " RU = " << std::setw(4) << modId.runit() << " mod = " << std::setw(4) + << modId.module() << " pos = " << fvecround(imod->position(), 4); + LogVerbatim("MTDLayerDump") << std::fixed << std::setw(5) << imodInd << " BTLDetId " << modId.rawId() + << " iphi/ieta = " << std::setw(4) << topoId.first << " / " << std::setw(4) + << topoId.second << " side = " << std::setw(4) << modId.mtdSide() + << " RU = " << std::setw(4) << modId.runit() << " mod = " << std::setw(4) + << modId.module() << " pos = " << fvecround(imod->position(), 2); + if (topoDetId != modId.rawId()) { + LogVerbatim("MTDLayerDumpFull") + << "DIFFERENCE BtlDetId " << modId.rawId() << " not equal to MTDTopology " << topoDetId; + LogVerbatim("MTDLayerDump") << "DIFFERENCE BtlDetId " << modId.rawId() << " not equal to MTDTopology " + << topoDetId; + } + for (int iside = -1; iside <= 1; iside += 2) { + size_t idetNew = topo.product()->phishiftBTL(modId.rawId(), iside); + if (idetNew >= layer->basicComponents().size()) { + LogVerbatim("MTDLayerDumpFull") + << "...............phishift= " << std::fixed << std::setw(2) << iside << " out of range"; + LogVerbatim("MTDLayerDump") << "...............phishift= " << std::fixed << std::setw(2) << iside + << " out of range"; + } else { + BTLDetId newId(layer->basicComponents()[idetNew]->geographicalId().rawId()); + auto const& newTopoId = topo.product()->btlIndex(newId.rawId()); + LogVerbatim("MTDLayerDumpFull") + << std::fixed << "...............phishift= " + << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) << newTopoId.second + << std::setw(4) << iside << " side = " << std::setw(4) << newId.mtdSide() << " RU = " << std::setw(4) + << newId.runit() << " mod = " << std::setw(4) << newId.module() + << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 4); + LogVerbatim("MTDLayerDump") << std::fixed << "...............phishift= " + << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) + << newTopoId.second << std::setw(4) << iside << " side = " << std::setw(4) + << newId.mtdSide() << " RU = " << std::setw(4) << newId.runit() + << " mod = " << std::setw(4) << newId.module() + << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 2); + } + } + for (int iside = -1; iside <= 1; iside += 2) { + auto idetNew = topo.product()->etashiftBTL(modId, iside); + if (idetNew >= layer->basicComponents().size()) { + LogVerbatim("MTDLayerDumpFull") + << "...............etashift= " << std::fixed << std::setw(2) << iside << " out of range"; + LogVerbatim("MTDLayerDump") << "...............etashift= " << std::fixed << std::setw(2) << iside + << " out of range"; + } else { + BTLDetId newId(layer->basicComponents()[idetNew]->geographicalId().rawId()); + auto const& newTopoId = topo.product()->btlIndex(newId.rawId()); + LogVerbatim("MTDLayerDumpFull") + << std::fixed << "...............etashift= " + << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) << newTopoId.second + << std::setw(4) << iside << " side = " << std::setw(4) << newId.mtdSide() << " RU = " << std::setw(4) + << newId.runit() << " mod = " << std::setw(4) << newId.module() + << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 4); + LogVerbatim("MTDLayerDump") << std::fixed << "...............etashift= " + << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) + << newTopoId.second << std::setw(4) << iside << " side = " << std::setw(4) + << newId.mtdSide() << " RU = " << std::setw(4) << newId.runit() + << " mod = " << std::setw(4) << newId.module() + << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 2); + } + } + } + } + } +} + +//define this as a plug-in +#include +DEFINE_FWK_MODULE(TestBTLNavigation); diff --git a/RecoMTD/DetLayers/test/mtd_cfg.py b/RecoMTD/DetLayers/test/mtd_cfg.py index 3880b14ad87ff..c4a36421478b0 100644 --- a/RecoMTD/DetLayers/test/mtd_cfg.py +++ b/RecoMTD/DetLayers/test/mtd_cfg.py @@ -62,6 +62,7 @@ process.Timing = cms.Service("Timing") process.prod = cms.EDAnalyzer("MTDRecoGeometryAnalyzer") -process.prod1 = cms.EDAnalyzer("TestETLNavigation") +process.prod1 = cms.EDAnalyzer("TestBTLNavigation") +process.prod2 = cms.EDAnalyzer("TestETLNavigation") -process.p1 = cms.Path(cms.wait(process.prod)+process.prod1) +process.p1 = cms.Path(cms.wait(process.prod)+cms.wait(process.prod1)+process.prod2) diff --git a/RecoMTD/TimingIDTools/plugins/BuildFile.xml b/RecoMTD/TimingIDTools/plugins/BuildFile.xml index 4fefd35177d86..359da6392cd6d 100644 --- a/RecoMTD/TimingIDTools/plugins/BuildFile.xml +++ b/RecoMTD/TimingIDTools/plugins/BuildFile.xml @@ -5,4 +5,6 @@ + + diff --git a/RecoMTD/TimingIDTools/plugins/MVATrainingNtuple.cc b/RecoMTD/TimingIDTools/plugins/MVATrainingNtuple.cc new file mode 100644 index 0000000000000..0ee37dde7ca88 --- /dev/null +++ b/RecoMTD/TimingIDTools/plugins/MVATrainingNtuple.cc @@ -0,0 +1,840 @@ +#include +#include "TTree.h" +#include "TFile.h" +#include "CommonTools/UtilAlgos/interface/TFileService.h" + +#include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "DataFormats/VertexReco/interface/Vertex.h" +#include "DataFormats/TrackerRecHit2D/interface/MTDTrackingRecHit.h" + +#include "SimDataFormats/Associations/interface/TrackToTrackingParticleAssociator.h" +#include "SimDataFormats/Associations/interface/MtdSimLayerClusterToTPAssociatorBaseImpl.h" +#include "SimDataFormats/Associations/interface/MtdRecoClusterToSimLayerClusterAssociationMap.h" + +#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h" +#include "TrackingTools/Records/interface/TransientTrackRecord.h" +#include "RecoVertex/PrimaryVertexProducer/interface/HITrackFilterForPVFinding.h" + +using reco::TrackCollection; + +class MVATrainingNtuple : public edm::one::EDAnalyzer { + typedef math::XYZTLorentzVector LorentzVector; + + // auxiliary class holding simulated vertices (originally from Primary4DVertexValidation) + struct simPrimaryVertex { + simPrimaryVertex(double x1, double y1, double z1, double t1, int k1) : x(x1), y(y1), z(z1), t(t1), key(k1) {}; + double x, y, z, t; + int key; + int eventId; + int bunchCrossing; + TrackingVertexRef sim_vertex; + int OriginalIndex = -1; + bool is_LV; + }; + +public: + explicit MVATrainingNtuple(const edm::ParameterSet&); + ~MVATrainingNtuple() override; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + +private: + void analyze(const edm::Event&, const edm::EventSetup&) override; + + const edm::Ref>* getAnyMatchedTP(const reco::TrackBaseRef&); + double timeFromTrueMass(double, double, double, double); + + bool isSameCluster(const FTLCluster&, const FTLCluster&); + + std::vector getSimPVs(const edm::Handle&); + + edm::Service fs_; + + // ----------member data --------------------------- + const edm::ESGetToken theTTBToken; + TrackFilterForPVFindingBase* theTrackFilter; + + static constexpr double simUnit_ = 1e9; //sim time in s while reco time in ns + static constexpr double c_ = 2.99792458e1; //c in cm/ns + static constexpr double BTL_eta_cut = 1.5; + std::string fileName_; + + bool saveNtupleforBDT_; + bool saveNtupleforGNN_; + + // cuts for BDT training input + static constexpr double BDT_track_eta_cut = 3.0; + static constexpr double BDT_track_pt_cut = 0.5; + + const reco::RecoToSimCollection* r2s_; + const reco::SimToRecoCollection* s2r_; + + // GNN input variables + std::vector gnn_pt, gnn_eta, gnn_phi, gnn_z_pca, gnn_dz, gnn_t_Pi, gnn_t_K, gnn_t_P, gnn_t0safe, gnn_t0pid, + gnn_sigma_t0safe, gnn_mtdTime, gnn_sigma_tmtd, gnn_mva_qual, gnn_btlMatchChi2, gnn_btlMatchTimeChi2, + gnn_etlMatchChi2, gnn_etlMatchTimeChi2, gnn_pathLength, gnn_probPi, gnn_probK, gnn_probP, gnn_trk_chi2, + gnn_trk_ndof, gnn_sigma_tof_Pi, gnn_sigma_tof_K, gnn_sigma_tof_P, gnn_sim_vertex_z, gnn_sim_vertex_t, gnn_tp_tEst, + gnn_outermostHitPosition; + std::vector gnn_npixBarrel, gnn_npixEndcap, gnn_sim_vertex_evID, gnn_sim_vertex_BX, gnn_sim_vertex_index, + gnn_tp_pdgId, gnn_trk_validhits; + std::vector gnn_is_matched_tp, gnn_sim_vertex_isLV; + + // BDT input variables + std::vector Ttrack_pt, Ttrack_eta, Ttrack_phi, Ttrack_dz, Ttrack_dxy, Ttrack_chi2, Ttrack_BTLchi2, + Ttrack_BTLtime_chi2, Ttrack_ETLchi2, Ttrack_ETLtime_chi2, Ttrack_t0, Ttrack_sigmat0, Ttrack_Tmtd, + Ttrack_sigmaTmtd, Ttrack_lenght, Ttrack_MtdMVA, Ttrack_lHitPos, TtrackTP_pt, TtrackTP_eta, TtrackTP_phi; + std::vector Ttrack_ndof, Ttrack_nValidHits, Ttrack_npixBarrelValidHits, Ttrack_npixEndcapValidHits, + TtrackTP_nValidHits; + std::vector Ttrack_Signal, Ttrack_Associated; + + edm::EDGetTokenT> btlMatchChi2Token_; + edm::EDGetTokenT> btlMatchTimeChi2Token_; + edm::EDGetTokenT> etlMatchChi2Token_; + edm::EDGetTokenT> etlMatchTimeChi2Token_; + edm::EDGetTokenT> npixBarrelToken_; + edm::EDGetTokenT> npixEndcapToken_; + edm::EDGetTokenT> outermostHitPositionToken_; + + edm::EDGetTokenT RecTrackToken_; + edm::EDGetTokenT RecMTDTrackToken_; + edm::EDGetTokenT> RecVertexToken_; + edm::EDGetTokenT RecBeamSpotToken_; + edm::EDGetTokenT trackingParticleCollectionToken_; + edm::EDGetTokenT recoToSimAssociationToken_; + edm::EDGetTokenT simToRecoAssociationToken_; + edm::EDGetTokenT trackingVertexCollectionToken_; + edm::EDGetTokenT> trackAssocToken_; + edm::EDGetTokenT tp2SimAssociationMapToken_; + edm::EDGetTokenT r2sAssociationMapToken_; + edm::EDGetTokenT btlRecCluToken_; + edm::EDGetTokenT etlRecCluToken_; + + edm::EDGetTokenT> pathLengthToken_; + edm::EDGetTokenT> momentumToken_; + edm::EDGetTokenT> sigmatimeToken_; + edm::EDGetTokenT> t0SrcToken_; + edm::EDGetTokenT> Sigmat0SrcToken_; + edm::EDGetTokenT> t0PidToken_; + edm::EDGetTokenT> t0SafePidToken_; + edm::EDGetTokenT> sigmat0SafePidToken_; + edm::EDGetTokenT> trackMVAQualToken_; + edm::EDGetTokenT> sigmatofpiToken_; + edm::EDGetTokenT> sigmatofkToken_; + edm::EDGetTokenT> sigmatofpToken_; + edm::EDGetTokenT> tmtdToken_; + edm::EDGetTokenT> tofPiToken_; + edm::EDGetTokenT> tofKToken_; + edm::EDGetTokenT> tofPToken_; + edm::EDGetTokenT> probPiToken_; + edm::EDGetTokenT> probKToken_; + edm::EDGetTokenT> probPToken_; +}; + +MVATrainingNtuple::MVATrainingNtuple(const edm::ParameterSet& iConfig) + : theTTBToken(esConsumes(edm::ESInputTag("", "TransientTrackBuilder"))), + fileName_(iConfig.getUntrackedParameter("fileName")) { + RecTrackToken_ = consumes(iConfig.getParameter("inputTracks")); + RecMTDTrackToken_ = consumes(iConfig.getParameter("inputTagT")); + RecVertexToken_ = consumes>(iConfig.getParameter("inputTagV")); + tp2SimAssociationMapToken_ = + consumes(iConfig.getParameter("tp2SimAssociationMapTag")); + r2sAssociationMapToken_ = consumes( + iConfig.getParameter("r2sAssociationMapTag")); + trackAssocToken_ = consumes>(iConfig.getParameter("trackAssocSrc")); + RecBeamSpotToken_ = consumes(iConfig.getParameter("offlineBS")); + trackingParticleCollectionToken_ = + consumes(iConfig.getParameter("SimTag")); + recoToSimAssociationToken_ = + consumes(iConfig.getParameter("TPtoRecoTrackAssoc")); + simToRecoAssociationToken_ = + consumes(iConfig.getParameter("TPtoRecoTrackAssoc")); + trackingVertexCollectionToken_ = consumes(iConfig.getParameter("SimTag")); + btlRecCluToken_ = consumes(iConfig.getParameter("recCluTagBTL")); + etlRecCluToken_ = consumes(iConfig.getParameter("recCluTagETL")); + pathLengthToken_ = consumes>(iConfig.getParameter("pathLengthSrc")); + momentumToken_ = consumes>(iConfig.getParameter("momentumSrc")); + sigmatimeToken_ = consumes>(iConfig.getParameter("sigmaSrc")); + t0SrcToken_ = consumes>(iConfig.getParameter("t0Src")); + Sigmat0SrcToken_ = consumes>(iConfig.getParameter("sigmat0Src")); + t0PidToken_ = consumes>(iConfig.getParameter("t0PID")); + t0SafePidToken_ = consumes>(iConfig.getParameter("t0SafePID")); + sigmat0SafePidToken_ = consumes>(iConfig.getParameter("sigmat0SafePID")); + trackMVAQualToken_ = consumes>(iConfig.getParameter("trackMVAQual")); + tmtdToken_ = consumes>(iConfig.getParameter("tmtd")); + tofPiToken_ = consumes>(iConfig.getParameter("tofPi")); + tofKToken_ = consumes>(iConfig.getParameter("tofK")); + tofPToken_ = consumes>(iConfig.getParameter("tofP")); + probPiToken_ = consumes>(iConfig.getParameter("probPi")); + probKToken_ = consumes>(iConfig.getParameter("probK")); + probPToken_ = consumes>(iConfig.getParameter("probP")); + sigmatofpiToken_ = consumes>(iConfig.getParameter("sigmatofpiSrc")); + sigmatofkToken_ = consumes>(iConfig.getParameter("sigmatofkSrc")); + sigmatofpToken_ = consumes>(iConfig.getParameter("sigmatofpSrc")); + btlMatchChi2Token_ = consumes>(iConfig.getParameter("btlMatchChi2Src")); + btlMatchTimeChi2Token_ = consumes>(iConfig.getParameter("btlMatchTimeChi2Src")); + etlMatchChi2Token_ = consumes>(iConfig.getParameter("etlMatchChi2Src")); + etlMatchTimeChi2Token_ = consumes>(iConfig.getParameter("etlMatchTimeChi2Src")); + npixBarrelToken_ = consumes>(iConfig.getParameter("npixBarrelSrc")); + npixEndcapToken_ = consumes>(iConfig.getParameter("npixEndcapSrc")); + outermostHitPositionToken_ = + consumes>(iConfig.getParameter("outermostHitPositionSrc")); + saveNtupleforBDT_ = iConfig.getParameter("ntupleforBDT"); + saveNtupleforGNN_ = iConfig.getParameter("ntupleforGNN"); + // select and configure the track selection + std::string trackSelectionAlgorithm = + iConfig.getParameter("TkFilterParameters").getParameter("algorithm"); + if (trackSelectionAlgorithm == "filter") { + theTrackFilter = new TrackFilterForPVFinding(iConfig.getParameter("TkFilterParameters")); + } else if (trackSelectionAlgorithm == "filterWithThreshold") { + theTrackFilter = new HITrackFilterForPVFinding(iConfig.getParameter("TkFilterParameters")); + } else { + edm::LogWarning("MVATrainingNtuple: unknown track selection algorithm: " + trackSelectionAlgorithm); + } +} + +MVATrainingNtuple::~MVATrainingNtuple() { + if (theTrackFilter) + delete theTrackFilter; +} + +const edm::Ref>* MVATrainingNtuple::getAnyMatchedTP(const reco::TrackBaseRef& recoTrack) { + auto found = r2s_->find(recoTrack); + + // reco track not matched to any TP + if (found == r2s_->end()) + return nullptr; + + //matched TP equal to any TP + for (const auto& tp : found->val) { + return &tp.first; + } + + // reco track not matched to any TP from vertex + return nullptr; +} + +double MVATrainingNtuple::timeFromTrueMass(double mass, double pathlength, double momentum, double time) { + if (time > 0 && pathlength > 0 && mass > 0) { + double gammasq = 1. + momentum * momentum / (mass * mass); + double v = c_ * std::sqrt(1. - 1. / gammasq); // cm / ns + double t_est = time - (pathlength / v); + + return t_est; + } else { + return -1; + } +} + +bool MVATrainingNtuple::isSameCluster(const FTLCluster& clu1, const FTLCluster& clu2) { + return clu1.id() == clu2.id() && clu1.size() == clu2.size() && clu1.x() == clu2.x() && clu1.y() == clu2.y() && + clu1.time() == clu2.time(); +} + +std::vector MVATrainingNtuple::getSimPVs( + const edm::Handle& tVC) { + std::vector simpv; + + int current_event = -1; + int s = -1; + for (TrackingVertexCollection::const_iterator v = tVC->begin(); v != tVC->end(); ++v) { + // LV is the first vertex in each event, keep only at BX=0 + int eventId = v->eventId().event(); + int bunchCrossing = v->eventId().bunchCrossing(); + + if (bunchCrossing != 0) + continue; + + bool is_LV = true; + if (eventId != current_event) { + current_event = eventId; + } else { + is_LV = false; + } + s++; + + // could be a new vertex, check all primaries found so far to avoid multiple entries + int key = std::distance(tVC->begin(), v); + simPrimaryVertex sv(v->position().x(), v->position().y(), v->position().z(), v->position().t(), key); + sv.eventId = eventId; + sv.bunchCrossing = bunchCrossing; + sv.sim_vertex = TrackingVertexRef(tVC, key); + sv.OriginalIndex = s; + sv.is_LV = is_LV; + + simPrimaryVertex* vp = nullptr; // will become non-NULL if a vertex is found and then point to it + for (std::vector::iterator v0 = simpv.begin(); v0 != simpv.end(); v0++) { + if ((sv.eventId == v0->eventId) && (sv.bunchCrossing == v0->bunchCrossing) && (std::abs(sv.x - v0->x) < 1e-5) && + (std::abs(sv.y - v0->y) < 1e-5) && (std::abs(sv.z - v0->z) < 1e-5)) { + vp = &(*v0); + break; + } + } + if (!vp) { + // this is a new vertex, add it to the list of sim-vertices + simpv.push_back(sv); + } + + } // End of for loop on tracking vertices + + // In case of no simulated vertices, break here + if (simpv.empty()) + return simpv; + + return simpv; +} + +// ------------ method called for each event ------------ +void MVATrainingNtuple::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { + using namespace edm; + using namespace std; + using edm::Handle; + using std::vector; + using namespace reco; + + edm::Handle tracksH; + iEvent.getByToken(RecTrackToken_, tracksH); + + const auto& theB = &iSetup.getData(theTTBToken); + std::vector t_tks; + + edm::Handle TPCollectionH; + iEvent.getByToken(trackingParticleCollectionToken_, TPCollectionH); + if (!TPCollectionH.isValid()) + edm::LogWarning("MVATrainingNtuple") << "TPCollectionH is not valid"; + + edm::Handle recoToSimH; + iEvent.getByToken(recoToSimAssociationToken_, recoToSimH); + if (recoToSimH.isValid()) + r2s_ = recoToSimH.product(); + else + edm::LogWarning("MVATrainingNtuple") << "recoToSimH is not valid"; + + reco::BeamSpot beamSpot; + edm::Handle BeamSpotH; + iEvent.getByToken(RecBeamSpotToken_, BeamSpotH); + if (!BeamSpotH.isValid()) + edm::LogWarning("MVATrainingNtuple") << "BeamSpotH is not valid"; + beamSpot = *BeamSpotH; + + edm::Handle TVCollectionH; + iEvent.getByToken(trackingVertexCollectionToken_, TVCollectionH); + if (!TVCollectionH.isValid()) + edm::LogWarning("MVATrainingNtuple") << "TVCollectionH is not valid"; + + std::vector simpv; + simpv = getSimPVs(TVCollectionH); + + const auto& trackAssoc = iEvent.get(trackAssocToken_); + + std::vector vertices; + edm::Handle> RecVertexHandle; + iEvent.getByToken(RecVertexToken_, RecVertexHandle); + vertices = *RecVertexHandle; + + const auto& tp2SimAssociationMap = iEvent.get(tp2SimAssociationMapToken_); + const auto& r2sAssociationMap = iEvent.get(r2sAssociationMapToken_); + + const auto& btlRecCluHandle = iEvent.getHandle(btlRecCluToken_); + const auto& etlRecCluHandle = iEvent.getHandle(etlRecCluToken_); + + const auto& pathLength = iEvent.get(pathLengthToken_); + const auto& momentum = iEvent.get(momentumToken_); + const auto& sigmatimemtd = iEvent.get(sigmatimeToken_); + const auto& t0Src = iEvent.get(t0SrcToken_); + const auto& Sigmat0Src = iEvent.get(Sigmat0SrcToken_); + const auto& t0Pid = iEvent.get(t0PidToken_); + const auto& t0Safe = iEvent.get(t0SafePidToken_); + const auto& sigmat0Safe = iEvent.get(sigmat0SafePidToken_); + const auto& mtdQualMVA = iEvent.get(trackMVAQualToken_); + const auto& tMtd = iEvent.get(tmtdToken_); + const auto& tofPi = iEvent.get(tofPiToken_); + const auto& tofK = iEvent.get(tofKToken_); + const auto& tofP = iEvent.get(tofPToken_); + const auto& probPi = iEvent.get(probPiToken_); + const auto& probK = iEvent.get(probKToken_); + const auto& probP = iEvent.get(probPToken_); + const auto& sigmatofpi = iEvent.get(sigmatofpiToken_); + const auto& sigmatofk = iEvent.get(sigmatofkToken_); + const auto& sigmatofp = iEvent.get(sigmatofpToken_); + const auto& btlMatchChi2 = iEvent.get(btlMatchChi2Token_); + const auto& btlMatchTimeChi2 = iEvent.get(btlMatchTimeChi2Token_); + const auto& etlMatchChi2 = iEvent.get(etlMatchChi2Token_); + const auto& etlMatchTimeChi2 = iEvent.get(etlMatchTimeChi2Token_); + const auto& npixBarrel = iEvent.get(npixBarrelToken_); + const auto& npixEndcap = iEvent.get(npixEndcapToken_); + const auto& outermostHitPosition = iEvent.get(outermostHitPositionToken_); + + // Fill TTree with input variables for GNN + if (saveNtupleforGNN_) { + std::string GNNtreeName = "GNNtree_" + std::to_string(iEvent.id().event()); + TTree* GNNtree = fs_->make(GNNtreeName.c_str(), "Tree for GNN tracks"); + + GNNtree->Branch("gnn_pt", &gnn_pt); + GNNtree->Branch("gnn_eta", &gnn_eta); + GNNtree->Branch("gnn_phi", &gnn_phi); + GNNtree->Branch("gnn_z_pca", &gnn_z_pca); + GNNtree->Branch("gnn_dz", &gnn_dz); + GNNtree->Branch("gnn_t_Pi", &gnn_t_Pi); + GNNtree->Branch("gnn_t_K", &gnn_t_K); + GNNtree->Branch("gnn_t_P", &gnn_t_P); + GNNtree->Branch("gnn_sigma_t0safe", &gnn_sigma_t0safe); + GNNtree->Branch("gnn_sigma_tmtd", &gnn_sigma_tmtd); + GNNtree->Branch("gnn_t0safe", &gnn_t0safe); + GNNtree->Branch("gnn_t0pid", &gnn_t0pid); + GNNtree->Branch("gnn_mva_qual", &gnn_mva_qual); + GNNtree->Branch("gnn_btlMatchChi2", &gnn_btlMatchChi2); + GNNtree->Branch("gnn_btlMatchTimeChi2", &gnn_btlMatchTimeChi2); + GNNtree->Branch("gnn_etlMatchChi2", &gnn_etlMatchChi2); + GNNtree->Branch("gnn_etlMatchTimeChi2", &gnn_etlMatchTimeChi2); + GNNtree->Branch("gnn_pathLength", &gnn_pathLength); + GNNtree->Branch("gnn_npixBarrel", &gnn_npixBarrel); + GNNtree->Branch("gnn_npixEndcap", &gnn_npixEndcap); + GNNtree->Branch("gnn_outermostHitPosition", &gnn_outermostHitPosition); + GNNtree->Branch("gnn_mtdTime", &gnn_mtdTime); + GNNtree->Branch("gnn_is_matched_tp", &gnn_is_matched_tp); + GNNtree->Branch("gnn_tp_tEst", &gnn_tp_tEst); + GNNtree->Branch("gnn_tp_pdgId", &gnn_tp_pdgId); + GNNtree->Branch("gnn_probPi", &gnn_probPi); + GNNtree->Branch("gnn_probK", &gnn_probK); + GNNtree->Branch("gnn_probP", &gnn_probP); + GNNtree->Branch("gnn_sigma_tof_Pi", &gnn_sigma_tof_Pi); + GNNtree->Branch("gnn_sigma_tof_K", &gnn_sigma_tof_K); + GNNtree->Branch("gnn_sigma_tof_P", &gnn_sigma_tof_P); + GNNtree->Branch("gnn_trk_chi2", &gnn_trk_chi2); + GNNtree->Branch("gnn_trk_ndof", &gnn_trk_ndof); + GNNtree->Branch("gnn_trk_validhits", &gnn_trk_validhits); + GNNtree->Branch("gnn_sim_vertex_evID", &gnn_sim_vertex_evID); + GNNtree->Branch("gnn_sim_vertex_BX", &gnn_sim_vertex_BX); + GNNtree->Branch("gnn_sim_vertex_index", &gnn_sim_vertex_index); + GNNtree->Branch("gnn_sim_vertex_z", &gnn_sim_vertex_z); + GNNtree->Branch("gnn_sim_vertex_t", &gnn_sim_vertex_t); + GNNtree->Branch("gnn_sim_vertex_isLV", &gnn_sim_vertex_isLV); + + gnn_pt.clear(); + gnn_eta.clear(); + gnn_phi.clear(); + gnn_z_pca.clear(); + gnn_dz.clear(); + gnn_t_Pi.clear(); + gnn_t_K.clear(); + gnn_t_P.clear(); + gnn_sigma_t0safe.clear(); + gnn_sigma_tmtd.clear(); + gnn_t0safe.clear(); + gnn_t0pid.clear(); + gnn_mva_qual.clear(); + gnn_btlMatchChi2.clear(); + gnn_btlMatchTimeChi2.clear(); + gnn_etlMatchChi2.clear(); + gnn_etlMatchTimeChi2.clear(); + gnn_pathLength.clear(); + gnn_npixBarrel.clear(); + gnn_npixEndcap.clear(); + gnn_outermostHitPosition.clear(); + gnn_mtdTime.clear(); + gnn_is_matched_tp.clear(); + gnn_tp_tEst.clear(); + gnn_tp_pdgId.clear(); + gnn_probPi.clear(); + gnn_probK.clear(); + gnn_probP.clear(); + gnn_sigma_tof_Pi.clear(); + gnn_sigma_tof_K.clear(); + gnn_sigma_tof_P.clear(); + gnn_trk_chi2.clear(); + gnn_trk_ndof.clear(); + gnn_trk_validhits.clear(); + gnn_sim_vertex_evID.clear(); + gnn_sim_vertex_BX.clear(); + gnn_sim_vertex_index.clear(); + gnn_sim_vertex_z.clear(); + gnn_sim_vertex_t.clear(); + gnn_sim_vertex_isLV.clear(); + + // build TransientTracks + t_tks = (*theB).build(tracksH, beamSpot, t0Safe, sigmat0Safe); + + // track filter + std::vector&& seltks = theTrackFilter->select(t_tks); + + for (std::vector::const_iterator itk = seltks.begin(); itk != seltks.end(); itk++) { + reco::TrackBaseRef trackref = (*itk).trackBaseRef(); + + gnn_pt.push_back((*itk).track().pt()); + gnn_eta.push_back((*itk).track().eta()); + gnn_phi.push_back((*itk).track().phi()); + gnn_z_pca.push_back((*itk).track().vz()); + gnn_dz.push_back((*itk).track().dzError()); + gnn_t_Pi.push_back(tMtd[trackref] - tofPi[trackref]); + gnn_t_K.push_back(tMtd[trackref] - tofK[trackref]); + gnn_t_P.push_back(tMtd[trackref] - tofP[trackref]); + gnn_sigma_t0safe.push_back(sigmat0Safe[trackref]); + gnn_sigma_tmtd.push_back(sigmatimemtd[trackref]); + gnn_t0safe.push_back(t0Safe[trackref]); + gnn_t0pid.push_back(t0Pid[trackref]); + gnn_mva_qual.push_back(mtdQualMVA[trackref]); + gnn_btlMatchChi2.push_back(btlMatchChi2[trackref]); + gnn_btlMatchTimeChi2.push_back(btlMatchTimeChi2[trackref]); + gnn_etlMatchChi2.push_back(etlMatchChi2[trackref]); + gnn_etlMatchTimeChi2.push_back(etlMatchTimeChi2[trackref]); + gnn_pathLength.push_back(pathLength[trackref]); + gnn_npixBarrel.push_back(npixBarrel[trackref]); + gnn_npixEndcap.push_back(npixEndcap[trackref]); + gnn_outermostHitPosition.push_back(outermostHitPosition[trackref]); + gnn_mtdTime.push_back(tMtd[trackref]); + gnn_probPi.push_back(probPi[trackref]); + gnn_probK.push_back(probK[trackref]); + gnn_probP.push_back(probP[trackref]); + gnn_sigma_tof_Pi.push_back(sigmatofpi[trackref]); + gnn_sigma_tof_K.push_back(sigmatofk[trackref]); + gnn_sigma_tof_P.push_back(sigmatofp[trackref]); + gnn_trk_chi2.push_back((*itk).track().chi2()); + gnn_trk_ndof.push_back((*itk).track().ndof()); + gnn_trk_validhits.push_back((*itk).track().numberOfValidHits()); + + auto anytp_info = getAnyMatchedTP(trackref); + if (anytp_info != nullptr) { + gnn_is_matched_tp.push_back(true); + double anytp_mass = (*anytp_info)->mass(); + gnn_tp_tEst.push_back(timeFromTrueMass(anytp_mass, pathLength[trackref], momentum[trackref], tMtd[trackref])); + gnn_tp_pdgId.push_back(std::abs((*anytp_info)->pdgId())); + + TrackingVertexRef parentVertexRef = (*anytp_info)->parentVertex(); + + // Loop on TV Collection to retrive info on sim vertices + bool vertex_match = false; + for (const auto& vsim : simpv) { + if (vsim.sim_vertex == parentVertexRef) { + vertex_match = true; + // Found the matching simPrimaryVertex + gnn_sim_vertex_z.push_back(vsim.z); + gnn_sim_vertex_t.push_back(vsim.t * simUnit_); + gnn_sim_vertex_evID.push_back(vsim.eventId); + gnn_sim_vertex_BX.push_back(vsim.bunchCrossing); + gnn_sim_vertex_index.push_back(vsim.key); + gnn_sim_vertex_isLV.push_back(vsim.is_LV); + } + } + if (vertex_match == false) { + gnn_sim_vertex_z.push_back(-999.); + gnn_sim_vertex_t.push_back(-999.); + gnn_sim_vertex_evID.push_back(-999); + gnn_sim_vertex_BX.push_back(-999); + gnn_sim_vertex_index.push_back(-999); + gnn_sim_vertex_isLV.push_back(false); + } + + } else { + gnn_is_matched_tp.push_back(false); + gnn_tp_tEst.push_back(-999.); + gnn_tp_pdgId.push_back(-999); + gnn_sim_vertex_z.push_back(-999.); + gnn_sim_vertex_t.push_back(-999.); + gnn_sim_vertex_evID.push_back(-999); + gnn_sim_vertex_BX.push_back(-999); + gnn_sim_vertex_index.push_back(-999); + gnn_sim_vertex_isLV.push_back(false); + } + + } // loop on sel tracks + + GNNtree->Fill(); + + } // ntuple for GNN + + // Fill TTree with input variables for BDT + if (saveNtupleforBDT_) { + std::string BDTtreeName = "BDTtree_" + std::to_string(iEvent.id().event()); + TTree* BDTtree = fs_->make(BDTtreeName.c_str(), "Tree for BDT tracks"); + + BDTtree->Branch("Track_pt", &Ttrack_pt); + BDTtree->Branch("Track_eta", &Ttrack_eta); + BDTtree->Branch("Track_phi", &Ttrack_phi); + BDTtree->Branch("Track_dz", &Ttrack_dz); + BDTtree->Branch("Track_dxy", &Ttrack_dxy); + BDTtree->Branch("Track_chi2", &Ttrack_chi2); + BDTtree->Branch("Track_ndof", &Ttrack_ndof); + BDTtree->Branch("Track_nValidHits", &Ttrack_nValidHits); + BDTtree->Branch("TrackTP_pt", &TtrackTP_pt); + BDTtree->Branch("TrackTP_eta", &TtrackTP_eta); + BDTtree->Branch("TrackTP_phi", &TtrackTP_phi); + BDTtree->Branch("TrackTP_nValidHits", &TtrackTP_nValidHits); + BDTtree->Branch("Track_npixBarrelValidHits", &Ttrack_npixBarrelValidHits); + BDTtree->Branch("Track_npixEndcapValidHits", &Ttrack_npixEndcapValidHits); + BDTtree->Branch("Track_Signal", &Ttrack_Signal); + BDTtree->Branch("Track_Associated", &Ttrack_Associated); + BDTtree->Branch("Track_BTLchi2", &Ttrack_BTLchi2); + BDTtree->Branch("Track_BTLtime_chi2", &Ttrack_BTLtime_chi2); + BDTtree->Branch("Track_ETLchi2", &Ttrack_ETLchi2); + BDTtree->Branch("Track_ETLtime_chi2", &Ttrack_ETLtime_chi2); + BDTtree->Branch("Track_t0", &Ttrack_t0); + BDTtree->Branch("Track_sigmat0", &Ttrack_sigmat0); + BDTtree->Branch("Track_Tmtd", &Ttrack_Tmtd); + BDTtree->Branch("Track_MtdMVA", &Ttrack_MtdMVA); + BDTtree->Branch("Track_lHitPos", &Ttrack_lHitPos); + BDTtree->Branch("Track_sigmaTmtd", &Ttrack_sigmaTmtd); + BDTtree->Branch("Track_lenght", &Ttrack_lenght); + + Ttrack_pt.clear(); + Ttrack_eta.clear(); + Ttrack_phi.clear(); + Ttrack_dz.clear(); + Ttrack_dxy.clear(); + Ttrack_chi2.clear(); + Ttrack_ndof.clear(); + Ttrack_nValidHits.clear(); + TtrackTP_pt.clear(); + TtrackTP_eta.clear(); + TtrackTP_phi.clear(); + TtrackTP_nValidHits.clear(); + Ttrack_npixBarrelValidHits.clear(); + Ttrack_npixEndcapValidHits.clear(); + Ttrack_Signal.clear(); + Ttrack_Associated.clear(); + Ttrack_BTLchi2.clear(); + Ttrack_BTLtime_chi2.clear(); + Ttrack_ETLchi2.clear(); + Ttrack_ETLtime_chi2.clear(); + Ttrack_t0.clear(); + Ttrack_sigmat0.clear(); + Ttrack_Tmtd.clear(); + Ttrack_MtdMVA.clear(); + Ttrack_lHitPos.clear(); + Ttrack_sigmaTmtd.clear(); + Ttrack_lenght.clear(); + + unsigned int index = 0; + for (const auto& trackGen : *tracksH) { + const reco::TrackRef trackref(iEvent.getHandle(RecTrackToken_), index); + index++; + + if (trackAssoc[trackref] == -1) { + LogInfo("mtdTracks") << "Extended track not associated"; + continue; + } + + const reco::TrackRef mtdTrackref = reco::TrackRef(iEvent.getHandle(RecMTDTrackToken_), trackAssoc[trackref]); + const reco::Track& track = *mtdTrackref; + + if (std::abs(trackGen.eta()) < BDT_track_eta_cut && trackGen.pt() > BDT_track_pt_cut) { + const reco::TrackBaseRef trkrefb(trackref); + auto found = r2s_->find(trkrefb); // Find TP! + if (found != r2s_->end()) { + bool good_association = false; + + Ttrack_pt.push_back(trackGen.pt()); + Ttrack_phi.push_back(trackGen.phi()); + Ttrack_eta.push_back(trackGen.eta()); + Ttrack_dz.push_back(std::abs(trackGen.dz(beamSpot.position()))); + Ttrack_dxy.push_back(std::abs(trackGen.dxy(beamSpot.position()))); + Ttrack_chi2.push_back(trackGen.chi2()); + Ttrack_ndof.push_back(trackGen.ndof()); + Ttrack_nValidHits.push_back(trackGen.numberOfValidHits()); + + Ttrack_npixBarrelValidHits.push_back(npixBarrel[trackref]); + Ttrack_npixEndcapValidHits.push_back(npixEndcap[trackref]); + Ttrack_BTLchi2.push_back(btlMatchChi2[trackref]); + Ttrack_BTLtime_chi2.push_back(btlMatchTimeChi2[trackref]); + Ttrack_ETLchi2.push_back(etlMatchChi2[trackref]); + Ttrack_ETLtime_chi2.push_back(etlMatchTimeChi2[trackref]); + + Ttrack_t0.push_back(t0Src[trackref]); + Ttrack_sigmat0.push_back(Sigmat0Src[trackref]); + Ttrack_Tmtd.push_back(tMtd[trackref]); + Ttrack_sigmaTmtd.push_back(sigmatimemtd[trackref]); + Ttrack_lenght.push_back(pathLength[trackref]); + Ttrack_MtdMVA.push_back(mtdQualMVA[trackref]); + Ttrack_lHitPos.push_back(outermostHitPosition[trackref]); + + const auto& tp = (found->val) + [0]; // almost all tracks have just one TP, a few have 2. (can scan through with "for(const auto& tp : found->val)") + + TtrackTP_pt.push_back(tp.first->pt()); + TtrackTP_eta.push_back(tp.first->eta()); + TtrackTP_phi.push_back(tp.first->phi()); + TtrackTP_nValidHits.push_back(tp.first->numberOfHits()); + + auto simClustersRefs = tp2SimAssociationMap.find(tp.first); // finds a simClusterReference!! + const bool withMTD = (simClustersRefs != tp2SimAssociationMap.end()); + + // 1) Link track RecHit to MTdTrackingRecHit (I know which RecHits, hit MTD) + // 2) Get the MTD Reco Cluster from MTDTrackingRecHit info + // 3) Find the MTD sim cluster that is linked to MTD reco cluster in the previous step + // 4) Check if the MTD sim cluster found in previous step is the same as MTD Sim cluster that is linked to TP. + + if (withMTD) { // TP link to MTDsimCluster + + // In test file, all TPs had only 1 simCluster linked to them + const auto& SimCluRefs = (simClustersRefs->val)[0]; + if ((*SimCluRefs).trackIdOffset() == 0) { // SimCluster linked to TP is from DirectHit!!! + + for (const auto& hit : track.recHits()) { // Extended track with MTD + if (good_association) + continue; // if goodd assoc found, do not go through all the following checks. + if (hit->isValid() == false) + continue; + + MTDDetId Hit = hit->geographicalId(); + + if ((Hit.det() == 6) && (Hit.subdetId() == 1) && + (Hit.mtdSubDetector() == 1 || Hit.mtdSubDetector() == 2)) { // trackingRecHit is a hit in MTD + + const MTDTrackingRecHit* mtdhit1 = static_cast( + hit); // Why I can't I access the mtdcluster info directly from TrackingRecHit? + const FTLCluster& hit_cluster_check = mtdhit1->mtdCluster(); + + if (abs(track.eta()) < BTL_eta_cut) { // Should be a BTL cluster + for (const auto& DetSetCluBTL : *btlRecCluHandle) { // BTL check + if (good_association) + break; + for (const auto& clusterBTL : DetSetCluBTL) { // Scan throguh btl reco clusters to find a match + if (good_association) + break; + if (isSameCluster(hit_cluster_check, + clusterBTL)) { // find the reco Cluster inside the recoCluster collections + + edm::Ref, FTLCluster> clusterRefBTL = edmNew::makeRefTo( + btlRecCluHandle, + &clusterBTL); // get the reference to reco cluster inside the collections + auto itp = r2sAssociationMap.equal_range(clusterRefBTL); // find the linked simCluster + if (itp.first != itp.second) { // find the linked simCluster + std::vector simClustersRefs_RecoMatchBTL = + (*itp.first).second; // the range of itp.first, itp.second should be always 1 + + for (unsigned int i = 0; i < simClustersRefs_RecoMatchBTL.size(); i++) { + auto simClusterRef_RecoMatchBTL = simClustersRefs_RecoMatchBTL[i]; + + if ((*simClusterRef_RecoMatchBTL).simLCTime() == + (*SimCluRefs) + .simLCTime()) { // check if the sim cluster linked to reco cluster is the same as the one linked to TP. + good_association = true; + break; + } + } + } + } else { + continue; + } // mtd hit matched to btl reco cluster + } // loop through BTL reco clusters + } // loop thorugh set of BTL reco clusters + } else { // Should be an ETL cluster + for (const auto& DetSetCluETL : *etlRecCluHandle) { // ETL check + if (good_association) + break; + for (const auto& clusterETL : DetSetCluETL) { // Scan throguh etl reco clusters to find a match + if (good_association) + break; + if (isSameCluster(hit_cluster_check, clusterETL)) { + edm::Ref, FTLCluster> clusterRefETL = + edmNew::makeRefTo(etlRecCluHandle, &clusterETL); + auto itp = r2sAssociationMap.equal_range(clusterRefETL); + if (itp.first != itp.second) { + std::vector simClustersRefs_RecoMatchETL = + (*itp.first).second; // the range of itp.first, itp.second should be always 1 + + for (unsigned int i = 0; i < simClustersRefs_RecoMatchETL.size(); i++) { + auto simClusterRef_RecoMatchETL = simClustersRefs_RecoMatchETL[i]; + + if ((*simClusterRef_RecoMatchETL).simLCTime() == (*SimCluRefs).simLCTime()) { + good_association = true; + break; + } + } + } + } else { + continue; + } // mtd hit matched to etl reco cluster + } // loop through ETL reco clusters + } // loop thorugh set of ETL reco clusters + } // BTL/ETL cluster search split + + } else { // trackingRecHit is a hit in MTD + continue; + } // Hits in MTD + } // Loop through trackHits + } + } // TP link to MTDsimCluster + + if (tp.first->eventId().bunchCrossing() == 0 && + tp.first->eventId().event() == 0) { // Signal vs PU seperation + Ttrack_Signal.push_back(true); // Signal track + } else { + Ttrack_Signal.push_back(false); // PU track? + } + + Ttrack_Associated.push_back(good_association); + + // Found TP that is matched to the GTrack + } + + } // basic track eta/pT cuts + + } // Loop on reco tracks + + BDTtree->Fill(); + + } // ntuple for BDT +} + +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void MVATrainingNtuple::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("inputTracks", edm::InputTag("generalTracks")); + desc.add("inputTagT", edm::InputTag("trackExtenderWithMTD")); + desc.add("inputTagV", edm::InputTag("offlinePrimaryVertices4D")); + desc.add("TPtoRecoTrackAssoc", edm::InputTag("trackingParticleRecoTrackAsssociation")); + desc.add("tp2SimAssociationMapTag", edm::InputTag("mtdSimLayerClusterToTPAssociation")); + desc.add("r2sAssociationMapTag", edm::InputTag("mtdRecoClusterToSimLayerClusterAssociation")); + desc.add("SimTag", edm::InputTag("mix", "MergedTrackTruth")); + desc.add("offlineBS", edm::InputTag("offlineBeamSpot")); + desc.add("trackAssocSrc", edm::InputTag("trackExtenderWithMTD:generalTrackassoc")) + ->setComment("Association between General and MTD Extended tracks"); + desc.add("recCluTagBTL", edm::InputTag("mtdClusters", "FTLBarrel")); + desc.add("recCluTagETL", edm::InputTag("mtdClusters", "FTLEndcap")); + desc.add("pathLengthSrc", edm::InputTag("trackExtenderWithMTD:generalTrackPathLength")); + desc.add("momentumSrc", edm::InputTag("trackExtenderWithMTD:generalTrackp")); + desc.add("tmtd", edm::InputTag("trackExtenderWithMTD:generalTracktmtd")); + desc.add("sigmaSrc", edm::InputTag("trackExtenderWithMTD:generalTracksigmatmtd")); + desc.add("t0Src", edm::InputTag("trackExtenderWithMTD:generalTrackt0")); + desc.add("sigmat0Src", edm::InputTag("trackExtenderWithMTD:generalTracksigmat0")); + desc.add("t0PID", edm::InputTag("tofPID:t0")); + desc.add("sigmat0PID", edm::InputTag("tofPID:sigmat0")); + desc.add("t0SafePID", edm::InputTag("tofPID:t0safe")); + desc.add("sigmat0SafePID", edm::InputTag("tofPID:sigmat0safe")); + desc.add("trackMVAQual", edm::InputTag("mtdTrackQualityMVA:mtdQualMVA")); + desc.add("tofPi", edm::InputTag("trackExtenderWithMTD:generalTrackTofPi")); + desc.add("tofK", edm::InputTag("trackExtenderWithMTD:generalTrackTofK")); + desc.add("tofP", edm::InputTag("trackExtenderWithMTD:generalTrackTofP")); + desc.add("probPi", edm::InputTag("tofPID:probPi")); + desc.add("probK", edm::InputTag("tofPID:probK")); + desc.add("probP", edm::InputTag("tofPID:probP")); + desc.add("sigmatofpiSrc", edm::InputTag("trackExtenderWithMTD:generalTrackSigmaTofPi")); + desc.add("sigmatofkSrc", edm::InputTag("trackExtenderWithMTD:generalTrackSigmaTofK")); + desc.add("sigmatofpSrc", edm::InputTag("trackExtenderWithMTD:generalTrackSigmaTofP")); + desc.add("btlMatchChi2Src", edm::InputTag("trackExtenderWithMTD", "btlMatchChi2")); + desc.add("btlMatchTimeChi2Src", edm::InputTag("trackExtenderWithMTD", "btlMatchTimeChi2")); + desc.add("etlMatchChi2Src", edm::InputTag("trackExtenderWithMTD", "etlMatchChi2")); + desc.add("etlMatchTimeChi2Src", edm::InputTag("trackExtenderWithMTD", "etlMatchTimeChi2")); + desc.add("npixBarrelSrc", edm::InputTag("trackExtenderWithMTD", "npixBarrel")); + desc.add("npixEndcapSrc", edm::InputTag("trackExtenderWithMTD", "npixEndcap")); + desc.add("outermostHitPositionSrc", + edm::InputTag("trackExtenderWithMTD", "generalTrackOutermostHitPosition")); + desc.addUntracked("fileName", "file.root"); + desc.add("ntupleforBDT", false); + desc.add("ntupleforGNN", true); + { + edm::ParameterSetDescription psd0; + HITrackFilterForPVFinding::fillPSetDescription(psd0); // extension of TrackFilterForPVFinding + desc.add("TkFilterParameters", psd0); + } + + descriptions.add("mvaTrainingNtuple", desc); +} + +//define this as a plug-in +DEFINE_FWK_MODULE(MVATrainingNtuple); diff --git a/RecoMTD/TimingIDTools/test/mvaTrainingSaveNtuple_cfg.py b/RecoMTD/TimingIDTools/test/mvaTrainingSaveNtuple_cfg.py new file mode 100644 index 0000000000000..c4c98e4069978 --- /dev/null +++ b/RecoMTD/TimingIDTools/test/mvaTrainingSaveNtuple_cfg.py @@ -0,0 +1,35 @@ + +import FWCore.ParameterSet.Config as cms + +process = cms.Process("SaveNtuple") + +process.load('Configuration.StandardSequences.Services_cff') +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load('Configuration.EventContent.EventContent_cff') +process.load('Configuration.Geometry.GeometryExtended2026D110Reco_cff') +process.load('Configuration.StandardSequences.MagneticField_cff') +process.load('Configuration.StandardSequences.Reconstruction_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') + +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic_T33', '') + +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(1) ) + +process.TFileService = cms.Service("TFileService", + fileName = cms.string("output_ntuple.root"), + closeFileFast = cms.untracked.bool(True) +) + +process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring( + 'file:step3.root' + ) +) + +from RecoMTD.TimingIDTools.mvaTrainingNtuple_cfi import mvaTrainingNtuple + +process.mvaTrainingNtuple = mvaTrainingNtuple + +process.p = cms.Path(process.mvaTrainingNtuple) + diff --git a/RecoMTD/TrackExtender/plugins/TrackExtenderWithMTD.cc b/RecoMTD/TrackExtender/plugins/TrackExtenderWithMTD.cc index 454d084b242d5..5c13f5a5a6695 100644 --- a/RecoMTD/TrackExtender/plugins/TrackExtenderWithMTD.cc +++ b/RecoMTD/TrackExtender/plugins/TrackExtenderWithMTD.cc @@ -620,6 +620,8 @@ class TrackExtenderWithMTDT : public edm::stream::EDProducer<> { const bool useSimVertex_; const float dzCut_; const float bsTimeSpread_; + + static constexpr float trackMaxBtlEta_ = 1.5; }; template @@ -1004,9 +1006,15 @@ void TrackExtenderWithMTDT::produce(edm::Event& ev, const edm:: #endif npixBarrel.push_back(backtrack.hitPattern().numberOfValidPixelBarrelHits()); npixEndcap.push_back(backtrack.hitPattern().numberOfValidPixelEndcapHits()); - outermostHitPosition.push_back( - mBTL.hit ? (float)(*track).outerRadius() - : (float)(*track).outerZ()); // save R of the outermost hit for BTL, z for ETL. + + if (mBTL.hit || mETL.hit) { + outermostHitPosition.push_back( + mBTL.hit ? (float)(*track).outerRadius() + : (float)(*track).outerZ()); // save R of the outermost hit for BTL, z for ETL. + } else { + outermostHitPosition.push_back(std::abs(track->eta()) < trackMaxBtlEta_ ? (float)(*track).outerRadius() + : (float)(*track).outerZ()); + } LogTrace("TrackExtenderWithMTD") << "TrackExtenderWithMTD: tmtd " << tmtdMap << " +/- " << sigmatmtdMap << " t0 " << t0Map << " +/- " << sigmat0Map << " tof pi/K/p " << tofpiMap diff --git a/RecoMuon/L2MuonProducer/plugins/L2MuonCandidateProducer.cc b/RecoMuon/L2MuonProducer/plugins/L2MuonCandidateProducer.cc index 6e8de309b18be..eca91367b808e 100644 --- a/RecoMuon/L2MuonProducer/plugins/L2MuonCandidateProducer.cc +++ b/RecoMuon/L2MuonProducer/plugins/L2MuonCandidateProducer.cc @@ -26,7 +26,9 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/global/EDProducer.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" class L2MuonCandidateProducer : public edm::global::EDProducer<> { @@ -40,22 +42,31 @@ class L2MuonCandidateProducer : public edm::global::EDProducer<> { /// produce candidates void produce(edm::StreamID sid, edm::Event& event, const edm::EventSetup&) const override; + /// fillDescriptions + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: // StandAlone Collection Label - edm::InputTag theSACollectionLabel; - edm::EDGetTokenT tracksToken; + const edm::InputTag theSACollectionLabel; + const edm::EDGetTokenT tracksToken; }; /// constructor with config -L2MuonCandidateProducer::L2MuonCandidateProducer(const edm::ParameterSet& parameterSet) { +L2MuonCandidateProducer::L2MuonCandidateProducer(const edm::ParameterSet& parameterSet) + : // StandAlone Collection Label + theSACollectionLabel{parameterSet.getParameter("InputObjects")}, + tracksToken{consumes(theSACollectionLabel)} { LogTrace("Muon|RecoMuon|L2MuonCandidateProducer") << " constructor called"; - - // StandAlone Collection Label - theSACollectionLabel = parameterSet.getParameter("InputObjects"); - tracksToken = consumes(theSACollectionLabel); produces(); } +void L2MuonCandidateProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("InputObjects", edm::InputTag("L2Muons", "UpdatedAtVtx")) + ->setComment("Standalone Collection Label"); + descriptions.addWithDefaultLabel(desc); +} + /// destructor L2MuonCandidateProducer::~L2MuonCandidateProducer() { LogTrace("Muon|RecoMuon|L2MuonCandidateProducer") << " L2MuonCandidateProducer destructor called"; diff --git a/RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.cc b/RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.cc new file mode 100644 index 0000000000000..4c7855f37238f --- /dev/null +++ b/RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.cc @@ -0,0 +1,862 @@ +/** \class phase2L2MuonSeedCreator + * See header file for a description of this class + * \author Luca Ferragina (INFN BO), 2024 + */ + +#include "RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.h" +#include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" +#include "RecoMuon/TrackingTools/interface/MuonPatternRecoDumper.h" + +#include "MagneticField/Engine/interface/MagneticField.h" +#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" + +#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" +#include "TrackingTools/DetLayers/interface/DetLayer.h" + +#include "DataFormats/Common/interface/OwnVector.h" +#include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h" +#include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h" +#include "DataFormats/GeometrySurface/interface/BoundCylinder.h" +#include "DataFormats/L1TMuonPhase2/interface/TrackerMuon.h" +#include "DataFormats/Math/interface/deltaR.h" +#include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h" +#include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeedCollection.h" +#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" +#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" +#include "DataFormats/TrajectoryState/interface/LocalTrajectoryParameters.h" +#include "DataFormats/TrajectoryState/interface/PTrajectoryStateOnDet.h" + +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include +#include +#include + +#include + +// Constructor +Phase2L2MuonSeedCreator::Phase2L2MuonSeedCreator(const edm::ParameterSet& pset) + : l1TkMuCollToken_{consumes(pset.getParameter("inputObjects"))}, + cscSegmentCollToken_{consumes(pset.getParameter("cscRecSegmentLabel"))}, + dtSegmentCollToken_{consumes(pset.getParameter("dtRecSegmentLabel"))}, + cscGeometryToken_{esConsumes()}, + dtGeometryToken_{esConsumes()}, + magneticFieldToken_{esConsumes()}, + minMomentum_{pset.getParameter("minPL1Tk")}, + maxMomentum_{pset.getParameter("maxPL1Tk")}, + matchingPhiWindow_{pset.getParameter("stubMatchDPhi")}, + matchingThetaWindow_{pset.getParameter("stubMatchDTheta")}, + extrapolationDeltaPhiClose_{pset.getParameter("extrapolationWindowClose")}, + extrapolationDeltaPhiFar_{pset.getParameter("extrapolationWindowFar")}, + maxEtaBarrel_{pset.getParameter("maximumEtaBarrel")}, + maxEtaOverlap_{pset.getParameter("maximumEtaOverlap")}, + propagatorName_{pset.getParameter("propagator")} { + // Service parameters + edm::ParameterSet serviceParameters = pset.getParameter("serviceParameters"); + // Services + service_ = std::make_unique(serviceParameters, consumesCollector()); + estimator_ = std::make_unique(pset.getParameter("estimatorMaxChi2")); + produces(); +} + +void Phase2L2MuonSeedCreator::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("inputObjects", edm::InputTag("l1tTkMuonsGmt")); + desc.add("cscRecSegmentLabel", edm::InputTag("hltCscSegments")); + desc.add("dtRecSegmentLabel", edm::InputTag("hltDt4DSegments")); + desc.add("minPL1Tk", 3.5); + desc.add("maxPL1Tk", 200); + desc.add("stubMatchDPhi", 0.05); + desc.add("stubMatchDTheta", 0.1); + desc.add("extrapolationWindowClose", 0.1); + desc.add("extrapolationWindowFar", 0.05); + desc.add("maximumEtaBarrel", 0.7); + desc.add("maximumEtaOverlap", 1.3); + desc.add("propagator", "SteppingHelixPropagatorAny"); + + // Service parameters + edm::ParameterSetDescription psd0; + psd0.addUntracked>("Propagators", {"SteppingHelixPropagatorAny"}); + psd0.add("RPCLayers", true); + psd0.addUntracked("UseMuonNavigation", true); + desc.add("serviceParameters", psd0); + desc.add("estimatorMaxChi2", 1000.0); + descriptions.add("Phase2L2MuonSeedCreator", desc); +} + +void Phase2L2MuonSeedCreator::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + const std::string metname = "RecoMuon|Phase2L2MuonSeedCreator"; + + auto output = std::make_unique(); + + auto const l1TkMuColl = iEvent.getHandle(l1TkMuCollToken_); + + auto cscHandle = iEvent.getHandle(cscSegmentCollToken_); + auto cscSegments = *cscHandle; + auto dtHandle = iEvent.getHandle(dtSegmentCollToken_); + auto dtSegments = *dtHandle; + + cscGeometry_ = iSetup.getHandle(cscGeometryToken_); + dtGeometry_ = iSetup.getHandle(dtGeometryToken_); + + auto magneticFieldHandle = iSetup.getHandle(magneticFieldToken_); + + LogDebug(metname) << "Number of L1 Tracker Muons in the Event: " << l1TkMuColl->size(); + + // Loop on all L1TkMu in event + for (size_t l1TkMuIndex = 0; l1TkMuIndex != l1TkMuColl->size(); ++l1TkMuIndex) { + l1t::TrackerMuonRef l1TkMuRef(l1TkMuColl, l1TkMuIndex); + + // Physical info of L1TkMu + const float pt = l1TkMuRef->phPt(); + if (pt < minMomentum_) { + continue; + } + const float eta = l1TkMuRef->phEta(); + const float phi = l1TkMuRef->phPhi(); + const int charge = l1TkMuRef->phCharge(); + + // Calculate theta once to use it for stub-segment matching + // theta == 2 * atan(e^(-eta)) + const float theta = 2 * vdt::fast_atanf(vdt::fast_expf(-eta)); + + // Precompute trig functions for theta + float sinTheta, cosTheta; + vdt::fast_sincosf(theta, sinTheta, cosTheta); + + // Precompute trig functions for phi + float sinPhi, cosPhi; + vdt::fast_sincosf(phi, sinPhi, cosPhi); + + LogDebug(metname) << "L1TKMu pT: " << pt << ", eta: " << eta << ", phi: " << phi; + Type muonType = overlap; + if (std::abs(eta) < maxEtaBarrel_) { + muonType = barrel; + LogDebug(metname) << "L1TkMu found in the barrel"; + } else if (std::abs(eta) > maxEtaOverlap_) { + muonType = endcap; + LogDebug(metname) << "L1TkMu found in the endcap"; + } + + // Starting seed creation + LogDebug(metname) << "Start seed creation"; + + l1t::MuonStubRefVector stubRefs = l1TkMuRef->stubs(); + + LogDebug(metname) << "Number of stubs per L1TkMu: " << stubRefs.size(); + LogDebug(metname) << "Number of DT segments in event: " << dtSegments.size(); + LogDebug(metname) << "Number of CSC segments in event: " << cscSegments.size(); + + // Pairs segIndex, segQuality for matches in Barrel/Overlap/Endcap + std::map> matchesInBarrel; + std::map> matchesInEndcap; + + // Matching info + bool atLeastOneMatch = false; + bool bestInDt = false; + + // Variables for matches in Overlap + int totalBarrelQuality = 0; + int totalEndcapQuality = 0; + unsigned int nDtHits = 0; + unsigned int nCscHits = 0; + + // Loop on L1TkMu stubs to find best association to DT/CSC segments + for (auto stub : stubRefs) { +#ifdef EDM_ML_DEBUG + stub->print(); +#endif + // Separate barrel, endcap and overlap cases + switch (muonType) { + case barrel: { + if (!stub->isBarrel()) { + continue; // skip all non-barrel stubs + } + // Create detId for stub + DTChamberId stubId = DTChamberId(stub->etaRegion(), // wheel + stub->depthRegion(), // station + stub->phiRegion() + 1); // sector, online to offline + LogDebug(metname) << "Stub DT detId: " << stubId << ". RawId: " << stubId.rawId(); + + auto& tmpMatch = matchingStubSegment(stubId, stub, dtSegments, theta); + + // Found a match -> update matching info + if (tmpMatch.first != -1) { + matchesInBarrel.emplace(stubId, tmpMatch); + atLeastOneMatch = true; + bestInDt = true; + } + +#ifdef EDM_ML_DEBUG + LogDebug(metname) << "BARREL best segments:"; + for (const auto& [detId, matchingPair] : matchesInBarrel) { + LogDebug(metname) << "Station " << detId.station() << " (" << matchingPair.first << ", " + << matchingPair.second << ")"; + } +#endif + break; + } // End barrel + + case endcap: { + if (!stub->isEndcap()) { + continue; // skip all non-endcap stubs + } + // Create detId for stub + int endcap = (eta > 0) ? 1 : 2; // CSC DetId endcap (1 -> Forward, 2 -> Backwards) + CSCDetId stubId = CSCDetId(endcap, + stub->depthRegion(), // station + 6 - std::abs(stub->etaRegion()), // ring, online to offline + stub->phiRegion()); // chamber + LogDebug(metname) << "Stub CSC detId: " << stubId << ". RawId: " << stubId.rawId(); + + auto& tmpMatch = matchingStubSegment(stubId, stub, cscSegments, theta); + + // Found a match -> update matching info + if (tmpMatch.first != -1) { + matchesInEndcap.emplace(stubId, tmpMatch); + atLeastOneMatch = true; + } + +#ifdef EDM_ML_DEBUG + LogDebug(metname) << "ENDCAP best segments:"; + for (const auto& [detId, matchingPair] : matchesInEndcap) { + LogDebug(metname) << "Station " << detId.station() << " (" << matchingPair.first << ", " + << matchingPair.second << ")"; + } +#endif + break; + } // End endcap + + case overlap: { + // Overlap runs on both DTs and CSCs and picks the best overall match + if (stub->isBarrel()) { + // Check DTs + LogDebug(metname) << "OVERLAP stub in DTs, checking " << dtSegments.size() << " DT segments"; + // Create detId for stub + DTChamberId stubId = DTChamberId(stub->etaRegion(), // wheel + stub->depthRegion(), // station + stub->phiRegion() + 1); // sector, online to offline + LogDebug(metname) << "Stub DT detId: " << stubId << ". RawId: " << stubId.rawId(); + + auto& tmpMatch = matchingStubSegment(stubId, stub, dtSegments, theta); + totalBarrelQuality += tmpMatch.second; + + // Found a match -> update matching info + if (tmpMatch.first != -1) { + matchesInBarrel.emplace(stubId, tmpMatch); + atLeastOneMatch = true; + auto dtSegment = dtSegments.begin() + tmpMatch.first; + nDtHits += (dtSegment->hasPhi() ? dtSegment->phiSegment()->recHits().size() : 0); + nDtHits += (dtSegment->hasZed() ? dtSegment->zSegment()->recHits().size() : 0); + } + +#ifdef EDM_ML_DEBUG + LogDebug(metname) << "OVERLAP best segments in DTs:"; + for (auto& [detId, matchingPair] : matchesInBarrel) { + LogDebug(metname) << "Station " << detId.station() << " (" << matchingPair.first << ", " + << matchingPair.second << ")"; + } +#endif + } else if (stub->isEndcap()) { + // Check CSCs + LogDebug(metname) << "OVERLAP stub in CSCs, checking " << cscSegments.size() << " CSC segments"; + int endcap = (eta > 0) ? 1 : 2; // CSC DetId endcap (1 -> Forward, 2 -> Backwards) + CSCDetId stubId = CSCDetId(endcap, + stub->depthRegion(), // station + 6 - std::abs(stub->etaRegion()), // ring, online to offline + stub->phiRegion()); // chamber + LogDebug(metname) << "Stub CSC detId: " << stubId << ". RawId: " << stubId.rawId(); + + auto& tmpMatch = matchingStubSegment(stubId, stub, cscSegments, theta); + totalEndcapQuality += tmpMatch.second; + + // Found a match -> update matching info + if (tmpMatch.first != -1) { + matchesInEndcap.emplace(stubId, tmpMatch); + atLeastOneMatch = true; + auto cscSegment = cscSegments.begin() + tmpMatch.first; + nCscHits += cscSegment->nRecHits(); + } + +#ifdef EDM_ML_DEBUG + LogDebug(metname) << "OVERLAP best segments in CSCs:"; + for (auto& [detId, matchingPair] : matchesInEndcap) { + LogDebug(metname) << "Station " << detId.station() << " (" << matchingPair.first << ", " + << matchingPair.second << ")"; + } +#endif + } + + LogDebug(metname) << "OVERLAP comparing total qualities. DT: " << totalBarrelQuality + << ", CSC: " << totalEndcapQuality; + + // Pick segments in DTs / CSCs based on quality + bestInDt = (totalBarrelQuality > totalEndcapQuality) ? true : false; + + // Same qualities, pick higher number of hits + if (totalBarrelQuality == totalEndcapQuality and totalBarrelQuality > -1) { + LogDebug(metname) << "Same quality " << totalBarrelQuality << ". Checking total number of hits"; + LogDebug(metname) << "DT hits: " << nDtHits << ", CSC hits: " << nCscHits; + LogDebug(metname) << (nDtHits > nCscHits ? "More hits in DT segment" : "More hits in CSC segment"); + bestInDt = (nDtHits >= nCscHits) ? true : false; + } +#ifdef EDM_ML_DEBUG + LogDebug(metname) << "OVERLAP best segments:"; + if (bestInDt) { + LogDebug(metname) << "OVERLAP best match in DTs:"; + for (auto& [detId, matchingPair] : matchesInBarrel) { + LogDebug(metname) << "Station " << detId.station() << " (" << matchingPair.first << ", " + << matchingPair.second << ")"; + } + } else if (!bestInDt) { + LogDebug(metname) << "OVERLAP best match in CSCs:"; + for (auto& [detId, matchingPair] : matchesInEndcap) { + LogDebug(metname) << "Station " << detId.station() << " (" << matchingPair.first << ", " + << matchingPair.second << ")"; + } + } +#endif + break; + } // End overlap + + default: + edm::LogError("L1TkMu must be either barrel, endcap or overlap"); + break; + } + } // End loop on stubs + + // Emplace seeds in output + if (!atLeastOneMatch) { + LogDebug(metname) << "No matching stub found, skipping seed"; + continue; // skip unmatched L1TkMu + } else { + // Info for propagation to MB2 or ME2 + service_->update(iSetup); + const DetLayer* detLayer = nullptr; + float radius = 0.; + + DetId propagateToId; + + edm::OwnVector container; + if (bestInDt) { + // Found at least one matching segment in DT -> propagate to Muon Barrel 2 (MB2) for track finding + LogDebug(metname) << "Found matching segment(s) in DTs, propagating L1TkMu info to MB2 to seed"; + // MB2 detId + propagateToId = DTChamberId(0, 2, 0); + detLayer = service_->detLayerGeometry()->idToLayer(propagateToId); + const BoundSurface* sur = &(detLayer->surface()); + const BoundCylinder* bc = dynamic_cast(sur); + radius = std::abs(bc->radius() / sinTheta); + + // Propagate matched segments to the seed and try to extrapolate in unmatched chambers + std::vector matchedStations; + matchedStations.reserve(4); + for (auto& [detId, matchingPair] : matchesInBarrel) { + // Add matched segments to the seed + LogDebug(metname) << "Adding matched DT segment in station " << detId.station() << " to the seed"; + container.push_back(dtSegments[matchingPair.first]); + matchedStations.push_back(detId.station()); + } + // Loop over all barrel muon stations (1-4) + for (int station = DTChamberId::minStationId; station <= DTChamberId::maxStationId; ++station) { + if (std::find(matchedStations.begin(), matchedStations.end(), station) == matchedStations.end()) { + // Try to extrapolate from stations with a match to the ones without + LogDebug(metname) << "No matching DT segment found in station " << station; + auto extrapolatedMatch = extrapolateToNearbyStation(station, matchesInBarrel, dtSegments); + if (extrapolatedMatch.first != -1) { + LogDebug(metname) << "Adding extrapolated DT segment " << extrapolatedMatch.first << " with quality " + << extrapolatedMatch.second << " found in station " << station << " to the seed"; + container.push_back(dtSegments[extrapolatedMatch.first]); + } + } + } + } else if (!bestInDt) { + // Found a matching segment in CSC -> propagate to Muon Endcap 2 (ME2) for track finding + LogDebug(metname) << "Found matching segment(s) in CSCs, propagating L1TkMu info to ME2 to seed"; + // ME2 detId + propagateToId = eta > 0 ? CSCDetId(1, 2, 0, 0, 0) : CSCDetId(2, 2, 0, 0, 0); + detLayer = service_->detLayerGeometry()->idToLayer(propagateToId); + radius = std::abs(detLayer->position().z() / cosTheta); + + // Fill seed with matched segment(s) + for (auto& [detId, matchingPair] : matchesInEndcap) { + LogDebug(metname) << "Adding matched CSC segment in station " << detId.station() << " to the seed"; + container.push_back(cscSegments[matchingPair.first]); + } + } + // Get Global point and direction + GlobalPoint pos(radius * cosPhi * sinTheta, radius * sinPhi * sinTheta, radius * cosTheta); + GlobalVector mom(pt * cosPhi, pt * sinPhi, pt * cosTheta / sinTheta); + + GlobalTrajectoryParameters param(pos, mom, charge, &*magneticFieldHandle); + + AlgebraicSymMatrix55 mat; + + mat[0][0] = bestInDt ? (0.25 / pt) * (0.25 / pt) : (0.4 / pt) * (0.4 / pt); // sigma^2(charge/abs_momentum) + mat[1][1] = 0.05 * 0.05; // sigma^2(lambda) + mat[2][2] = 0.2 * 0.2; // sigma^2(phi) + mat[3][3] = 20. * 20.; // sigma^2(x_transverse) + mat[4][4] = 20. * 20.; // sigma^2(y_transverse) + + CurvilinearTrajectoryError error(mat); + + const FreeTrajectoryState state(param, error); + + // Create the TrajectoryStateOnSurface + TrajectoryStateOnSurface tsos = service_->propagator(propagatorName_)->propagate(state, detLayer->surface()); + // Find valid detectors with states + auto detsWithStates = detLayer->compatibleDets(tsos, *service_->propagator(propagatorName_), *estimator_); + // Check that at least one valid detector was found + if (detsWithStates.size() > 0) { + // Update the detId with the one from the first valid detector with measurments found + propagateToId = detsWithStates.front().first->geographicalId(); + // Create the Trajectory State on that detector's surface + tsos = detsWithStates.front().second; + } else if (detsWithStates.empty() and bestInDt) { + // Propagation to MB2 failed, fallback to ME2 (might be an overlap edge case) + LogDebug(metname) << "Warning: detsWithStates collection is empty for a barrel collection. Falling back to ME2"; + // Get ME2 DetLayer + DetId fallback_id = eta > 0 ? CSCDetId(1, 2, 0, 0, 0) : CSCDetId(2, 2, 0, 0, 0); + const DetLayer* ME2DetLayer = service_->detLayerGeometry()->idToLayer(fallback_id); + // Trajectory state on ME2 DetLayer + tsos = service_->propagator(propagatorName_)->propagate(state, ME2DetLayer->surface()); + // Find the detectors with states on ME2 + detsWithStates = ME2DetLayer->compatibleDets(tsos, *service_->propagator(propagatorName_), *estimator_); + } + // Use the valid detector found to produce the persistentState for the seed + if (!detsWithStates.empty()) { + LogDebug(metname) << "Found a compatible detWithStates"; + TrajectoryStateOnSurface newTSOS = detsWithStates.front().second; + const GeomDet* newTSOSDet = detsWithStates.front().first; + LogDebug(metname) << "Most compatible detector: " << newTSOSDet->geographicalId().rawId(); + if (newTSOS.isValid()) { + LogDebug(metname) << "pos: (r=" << newTSOS.globalPosition().mag() + << ", phi=" << newTSOS.globalPosition().phi() << ", eta=" << newTSOS.globalPosition().eta() + << ")"; + LogDebug(metname) << "mom: (q*pt=" << newTSOS.charge() * newTSOS.globalMomentum().perp() + << ", phi=" << newTSOS.globalMomentum().phi() << ", eta=" << newTSOS.globalMomentum().eta() + << ")"; + // Transform the TrajectoryStateOnSurface in a Persistent TrajectoryStateOnDet + const PTrajectoryStateOnDet& seedTSOS = + trajectoryStateTransform::persistentState(newTSOS, newTSOSDet->geographicalId().rawId()); + + // Emplace seed in output + LogDebug(metname) << "Emplacing seed in output"; + output->emplace_back(L2MuonTrajectorySeed(seedTSOS, container, alongMomentum, l1TkMuRef)); + } + } + } // End seed emplacing (one seed per L1TkMu) + } // End loop on L1TkMu + LogDebug(metname) << "All L1TkMu in event processed"; + iEvent.put(std::move(output)); +} + +// In DT station 4 the top and bottom sectors are made of two chambers +// due to material requirements. Online is not split: +// Online sector 4 == offline sector 4 or 13, Online sector 10 == offline sector 10 or 14 +const std::vector Phase2L2MuonSeedCreator::matchingIds(const DTChamberId& stubId) const { + std::vector matchingDtIds; + matchingDtIds.reserve(2); + matchingDtIds.push_back(stubId); + if (stubId.station() == 4) { + if (stubId.sector() == 4) { + matchingDtIds.emplace_back(DTChamberId(stubId.wheel(), stubId.station(), 13)); + } + if (stubId.sector() == 10) { + matchingDtIds.emplace_back(DTChamberId(stubId.wheel(), stubId.station(), 14)); + } + } + return matchingDtIds; +} + +// Pair bestSegIndex, quality for DT segments matching +const std::pair Phase2L2MuonSeedCreator::matchingStubSegment(const DTChamberId& stubId, + const l1t::MuonStubRef stub, + const DTRecSegment4DCollection& segments, + const float l1TkMuTheta) const { + const std::string metname = "RecoMuon|Phase2L2MuonSeedCreator"; + + int bestSegIndex = -1; + int quality = -1; + unsigned int nHitsPhiBest = 0; + unsigned int nHitsThetaBest = 0; + + LogDebug(metname) << "Matching stub with DT segment"; + int nMatchingIds = 0; + + for (DTChamberId id : matchingIds(stubId)) { + DTRecSegment4DCollection::range segmentsInChamber = segments.get(id); + for (DTRecSegment4DCollection::const_iterator segment = segmentsInChamber.first; + segment != segmentsInChamber.second; + ++segment) { + ++nMatchingIds; + DTChamberId segId = segment->chamberId(); + LogDebug(metname) << "Segment DT detId: " << segId << ". RawId: " << segId.rawId(); + + // Global position of the segment + GlobalPoint segPos = dtGeometry_->idToDet(segId)->toGlobal(segment->localPosition()); + + // Check delta phi + double deltaPhi = std::abs(segPos.phi() - stub->offline_coord1()); + LogDebug(metname) << "deltaPhi: " << deltaPhi; + + double deltaTheta = std::abs(segPos.theta() - l1TkMuTheta); + LogDebug(metname) << "deltaTheta: " << deltaTheta; + + // Skip segments outside phi window or very far in the theta view + if (deltaPhi > matchingPhiWindow_ or deltaTheta > 4 * matchingThetaWindow_) { + continue; + } + + // Inside phi window -> check hit multiplicity + unsigned int nHitsPhi = (segment->hasPhi() ? segment->phiSegment()->recHits().size() : 0); + unsigned int nHitsTheta = (segment->hasZed() ? segment->zSegment()->recHits().size() : 0); + LogDebug(metname) << "DT found match in deltaPhi: " << std::distance(segments.begin(), segment) << " with " + << nHitsPhi << " hits in phi and " << nHitsTheta << " hits in theta"; + + if (nHitsPhi == nHitsPhiBest and segment->hasZed()) { + // Same phi hit multiplicity -> check delta theta + LogDebug(metname) << "DT found segment with same hits in phi as previous best (" << nHitsPhiBest + << "), checking theta window"; + + // More precise check in theta window + if (deltaTheta > matchingThetaWindow_) { + continue; // skip segments outside theta window + } + + LogDebug(metname) << "DT found match in deltaTheta: " << std::distance(segments.begin(), segment) << " with " + << nHitsPhi << " hits in phi and " << nHitsTheta << " hits in theta"; + + // Inside theta window -> check hit multiplicity (theta) + if (nHitsTheta > nHitsThetaBest) { + // More hits in theta -> update bestSegment and quality + LogDebug(metname) << "DT found segment with more hits in theta than previous best"; + bestSegIndex = std::distance(segments.begin(), segment); + quality = 2; + LogDebug(metname) << "DT updating bestSegIndex (nHitsTheta): " << bestSegIndex << " with " + << nHitsPhi + nHitsTheta << ">" << nHitsPhiBest + nHitsThetaBest + << " total hits and quality " << quality; + nHitsThetaBest = nHitsTheta; + } + } else if (nHitsPhi > nHitsPhiBest) { + // More hits in phi -> update bestSegment and quality + LogDebug(metname) << "DT found segment with more hits in phi than previous best"; + bestSegIndex = std::distance(segments.begin(), segment); + quality = 1; + LogDebug(metname) << "DT updating bestSegIndex (nHitsPhi): " << bestSegIndex << " with " << nHitsPhi << ">" + << nHitsPhiBest << " hits in phi, " << nHitsTheta << " hits in theta and quality " << quality; + nHitsPhiBest = nHitsPhi; + nHitsThetaBest = nHitsTheta; + } + } // End loop on segments + } + + LogDebug(metname) << "DT looped over " << nMatchingIds << (nMatchingIds > 1 ? " segments" : " segment") + << " with same DT detId as stub"; + + if (quality < 0) { + LogDebug(metname) << "DT proposed match: " << bestSegIndex << " with quality " << quality << ". Not good enough!"; + return std::make_pair(-1, -1); + } else { + LogDebug(metname) << "Found DT segment match"; + LogDebug(metname) << "New DT segment: " << bestSegIndex << " with " << nHitsPhiBest + nHitsThetaBest + << " total hits and quality " << quality; + return std::make_pair(bestSegIndex, quality); + } +} + +// Match online-level CSCDetIds to offline labels +const std::vector Phase2L2MuonSeedCreator::matchingIds(const CSCDetId& stubId) const { + std::vector matchingCscIds; + matchingCscIds.push_back(stubId); + + if (stubId.station() == 1 and stubId.ring() == 1) { + matchingCscIds.emplace_back(CSCDetId(stubId.endcap(), stubId.station(), 4, stubId.chamber())); + } + + return matchingCscIds; +} + +// Pair bestSegIndex, quality for CSC segments matching +const std::pair Phase2L2MuonSeedCreator::matchingStubSegment(const CSCDetId& stubId, + const l1t::MuonStubRef stub, + const CSCSegmentCollection& segments, + const float l1TkMuTheta) const { + const std::string metname = "RecoMuon|Phase2L2MuonSeedCreator"; + + int bestSegIndex = -1; + int quality = -1; + unsigned int nHitsBest = 0; + + LogDebug(metname) << "Matching stub with CSC segment"; + int nMatchingIds = 0; + for (CSCDetId id : matchingIds(stubId)) { + CSCSegmentCollection::range segmentsInChamber = segments.get(id); + for (CSCSegmentCollection::const_iterator segment = segmentsInChamber.first; segment != segmentsInChamber.second; + ++segment) { + ++nMatchingIds; + CSCDetId segId = segment->cscDetId(); + LogDebug(metname) << "Segment CSC detId: " << segId << ". RawId: " << segId.rawId(); + + // Global position of the segment + GlobalPoint segPos = cscGeometry_->idToDet(segId)->toGlobal(segment->localPosition()); + + // Check delta phi + double deltaPhi = std::abs(segPos.phi() - stub->offline_coord1()); + LogDebug(metname) << "deltaPhi: " << deltaPhi; + + double deltaTheta = std::abs(segPos.theta() - l1TkMuTheta); + LogDebug(metname) << "deltaTheta: " << deltaTheta; + + // Theta mainly used in cases where multiple matches are found + // to keep only the best one. Still skip segments way outside + // a reasonable window + const double roughThetaWindow = 0.4; + if (deltaPhi > matchingPhiWindow_ or deltaTheta > roughThetaWindow) { + continue; // skip segments outside phi window + } + + // Inside phi window -> check hit multiplicity + unsigned int nHits = segment->nRecHits(); + LogDebug(metname) << "CSC found match in deltaPhi: " << std::distance(segments.begin(), segment) << " with " + << nHits << " hits"; + + if (nHits == nHitsBest) { + // Same hit multiplicity -> check delta theta + LogDebug(metname) << "Found CSC segment with same hits (" << nHitsBest + << ") as previous best, checking theta window"; + + if (deltaTheta > matchingThetaWindow_) { + continue; // skip segments outside theta window + } + + // Inside theta window -> update bestSegment and quality + bestSegIndex = std::distance(segments.begin(), segment); + quality = 1; + LogDebug(metname) << "CSC found match in deltaTheta: " << bestSegIndex << " with " << nHits + << " hits and quality " << quality; + } else if (nHits > nHitsBest) { + // More hits -> update bestSegment and quality + bestSegIndex = std::distance(segments.begin(), segment); + quality = 2; + LogDebug(metname) << "Found CSC segment with more hits. Index: " << bestSegIndex << " with " << nHits << ">" + << nHitsBest << " hits and quality " << quality; + nHitsBest = nHits; + } + } // End loop on segments + } + + LogDebug(metname) << "CSC looped over " << nMatchingIds << (nMatchingIds != 1 ? " segments" : " segment") + << " with same CSC detId as stub"; + + if (quality < 0) { + LogDebug(metname) << "CSC proposed match: " << bestSegIndex << " with quality " << quality << ". Not good enough!"; + return std::make_pair(-1, -1); + } else { + LogDebug(metname) << "Found CSC segment match"; + LogDebug(metname) << "New CSC segment: " << bestSegIndex << " with " << nHitsBest << " hits and quality " + << quality; + return std::make_pair(bestSegIndex, quality); + } +} + +const std::pair Phase2L2MuonSeedCreator::extrapolateToNearbyStation( + const int endingStation, + const std::map>& matchesInBarrel, + const DTRecSegment4DCollection& segments) const { + const std::string metname = "RecoMuon|Phase2L2MuonSeedCreator"; + + std::pair extrapolatedMatch = std::make_pair(-1, -1); + bool foundExtrapolatedMatch = false; + switch (endingStation) { + case 1: { + // Station 1. Extrapolate 2->1 or 3->1 (4->1) + int startingStation = 2; + while (startingStation < 5) { + for (auto& [detId, matchingPair] : matchesInBarrel) { + if (detId.station() == startingStation) { + LogDebug(metname) << "Extrapolating from station " << startingStation << " to station " << endingStation; + extrapolatedMatch = extrapolateMatch(matchingPair.first, endingStation, segments); + if (extrapolatedMatch.first != -1) { + LogDebug(metname) << "Found extrapolated match in station " << endingStation << " from station " + << startingStation; + foundExtrapolatedMatch = true; + break; + } + } + } + if (foundExtrapolatedMatch) { + break; + } + ++startingStation; + } + break; + } + case 2: { + // Station 2. Extrapolate 1->2 or 3->2 (4->2) + int startingStation = 1; + while (startingStation < 5) { + for (auto& [detId, matchingPair] : matchesInBarrel) { + if (detId.station() == startingStation) { + LogDebug(metname) << "Extrapolating from station " << startingStation << " to station " << endingStation; + extrapolatedMatch = extrapolateMatch(matchingPair.first, endingStation, segments); + if (extrapolatedMatch.first != -1) { + LogDebug(metname) << "Found extrapolated match in station " << endingStation << " from station " + << startingStation; + foundExtrapolatedMatch = true; + break; + } + } + } + if (foundExtrapolatedMatch) { + break; + } + startingStation = startingStation == 1 ? startingStation + 2 : startingStation + 1; + } + break; + } + case 3: { + // Station 3. Extrapolate 2->3 or 4->3 (1->3) + int startingStation = 2; + while (startingStation > 0) { + for (auto& [detId, matchingPair] : matchesInBarrel) { + if (detId.station() == startingStation) { + LogDebug(metname) << "Extrapolating from station " << startingStation << " to station " << endingStation; + extrapolatedMatch = extrapolateMatch(matchingPair.first, endingStation, segments); + if (extrapolatedMatch.first != -1) { + LogDebug(metname) << "Found extrapolated match in station " << endingStation << " from station " + << startingStation; + foundExtrapolatedMatch = true; + break; + } + } + } + if (foundExtrapolatedMatch) { + break; + } + startingStation = startingStation == 2 ? startingStation + 2 : startingStation - 3; + } + break; + } + case 4: { + // Station 4. Extrapolate 2->4 or 3->4 (1->4) + int startingStation = 2; + while (startingStation > 0) { + for (auto& [detId, matchingPair] : matchesInBarrel) { + if (detId.station() == startingStation) { + LogDebug(metname) << "Extrapolating from station " << startingStation << " to station " << endingStation; + extrapolatedMatch = extrapolateMatch(matchingPair.first, endingStation, segments); + if (extrapolatedMatch.first != -1) { + LogDebug(metname) << "Found extrapolated match in station " << endingStation << " from station " + << startingStation; + foundExtrapolatedMatch = true; + break; + } + } + } + if (foundExtrapolatedMatch) { + break; + } + startingStation = startingStation == 2 ? startingStation + 1 : startingStation - 2; + } + break; + } + default: + std::cerr << "Muon stations only go from 1 to 4" << std::endl; + break; + } // end endingStation switch + return extrapolatedMatch; +} + +const std::pair Phase2L2MuonSeedCreator::extrapolateMatch(const int bestStartingSegIndex, + const int endingStation, + const DTRecSegment4DCollection& segments) const { + const std::string metname = "RecoMuon|Phase2L2MuonSeedCreator"; + + const auto& segmentInStartingStation = segments.begin() + bestStartingSegIndex; + auto matchId = segmentInStartingStation->chamberId(); + GlobalPoint matchPos = dtGeometry_->idToDet(matchId)->toGlobal(segmentInStartingStation->localPosition()); + + int bestSegIndex = -1; + int quality = -1; + unsigned int nHitsPhiBest = 0; + unsigned int nHitsThetaBest = 0; + + // Find possible extrapolation from startingStation to endingStation + for (DTRecSegment4DCollection::const_iterator segment = segments.begin(), last = segments.end(); segment != last; + ++segment) { + auto segId = segment->chamberId(); + + if (segId.station() != endingStation) { + continue; // skip segments outside of endingStation + } + + // Global positions of the segment + GlobalPoint segPos = dtGeometry_->idToDet(segId)->toGlobal(segment->localPosition()); + + double deltaPhi = std::abs(segPos.phi() - matchPos.phi()); + LogDebug(metname) << "Extrapolation deltaPhi: " << deltaPhi; + + double deltaTheta = std::abs(segPos.theta() - matchPos.theta()); + LogDebug(metname) << "Extrapolation deltaTheta: " << deltaTheta; + + double matchingDeltaPhi = + std::abs(matchId.station() - endingStation) == 1 ? extrapolationDeltaPhiClose_ : extrapolationDeltaPhiFar_; + + // Theta mainly used in cases where multiple matches are found + // to keep only the best one. Still skip segments way outside + // a reasonable window + const double roughThetaWindow = 0.4; + if (deltaPhi > matchingDeltaPhi or deltaTheta > roughThetaWindow) { + continue; + } + + // Inside phi window -> check hit multiplicity + unsigned int nHitsPhi = (segment->hasPhi() ? segment->phiSegment()->recHits().size() : 0); + unsigned int nHitsTheta = (segment->hasZed() ? segment->zSegment()->recHits().size() : 0); + LogDebug(metname) << "Extrapolation found match in deltaPhi: " << std::distance(segments.begin(), segment) + << " with " << nHitsPhi << " hits in phi and " << nHitsTheta << " hits in theta"; + + if (nHitsPhi == nHitsPhiBest and segment->hasZed()) { + // Same phi hit multiplicity -> check delta theta + LogDebug(metname) << "Extrapolation found segment with same hits in phi as previous best (" << nHitsPhiBest + << "), checking theta window"; + double deltaTheta = std::abs(segPos.theta() - matchPos.theta()); + LogDebug(metname) << "Extrapolation deltaTheta: " << deltaTheta; + + if (deltaTheta > matchingThetaWindow_) { + continue; // skip segments outside theta window + } + + LogDebug(metname) << "Extrapolation found match in deltaTheta: " << std::distance(segments.begin(), segment) + << " with " << nHitsPhi << " hits in phi and " << nHitsTheta << " hits in theta"; + + // Inside theta window -> check hit multiplicity (theta) + if (nHitsTheta > nHitsThetaBest) { + // More hits in theta -> update bestSegment and quality + LogDebug(metname) << "Extrapolation found segment with more hits in theta than previous best"; + bestSegIndex = std::distance(segments.begin(), segment); + quality = 2; + LogDebug(metname) << "Extrapolation updating bestSegIndex (nHitsTheta): " << bestSegIndex << " with " + << nHitsPhi + nHitsTheta << ">" << nHitsPhiBest + nHitsThetaBest << " total hits and quality " + << quality; + nHitsThetaBest = nHitsTheta; + } + } else if (nHitsPhi > nHitsPhiBest) { + // More hits in phi -> update bestSegment and quality + LogDebug(metname) << "Extrapolation found segment with more hits in phi than previous best"; + bestSegIndex = std::distance(segments.begin(), segment); + quality = 1; + LogDebug(metname) << "Extrapolation updating bestSegIndex (nHitsPhi): " << bestSegIndex << " with " << nHitsPhi + << ">" << nHitsPhiBest << " hits in phi, " << nHitsTheta << " hits in theta and quality " + << quality; + nHitsPhiBest = nHitsPhi; + nHitsThetaBest = nHitsTheta; + } + } // end loop on segments + return std::make_pair(bestSegIndex, quality); +} + +DEFINE_FWK_MODULE(Phase2L2MuonSeedCreator); diff --git a/RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.h b/RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.h new file mode 100644 index 0000000000000..d77ac4f1898c7 --- /dev/null +++ b/RecoMuon/L2MuonSeedGenerator/src/Phase2L2MuonSeedCreator.h @@ -0,0 +1,151 @@ +#ifndef RecoMuon_L2MuonSeedCreator_Phase2L2MuonSeedCreator_H +#define RecoMuon_L2MuonSeedCreator_Phase2L2MuonSeedCreator_H + +/** \class Phase2L2MuonSeedCreator + * + * Standalone Muon seeds for Phase-2 + * This class takes in input the full L1 Tracker Muon collection + * and the collections of (DT/CSC) segments in the muon chambers. + * For each L1 Tracker Muon, the stubs used to produce it are + * matched with segments in the muon chambers looking, in order, + * at deltaPhi, number of hits, and deltaTheta. All matched segments + * are added to the seed, together with the pT information from the + * tracker muon itself. Specifically for the barrel region and in + * stations where no stub is found, a simple extrapolation is + * attempted from nearby stations with a match (e.g no stub found in + * station 2, attempt to match segments extrapolating from station + * 1, 3, and 4 in this order). + * + * The logic allows a single-step extension to seed displaced muons + * (currently not implemented) + * + * \author Luca Ferragina (INFN BO), 2024 + */ + +#include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h" +#include "DataFormats/L1TMuonPhase2/interface/TrackerMuon.h" + +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/Utilities/interface/ESGetToken.h" +#include "FWCore/Utilities/interface/InputTag.h" + +#include "DataFormats/L1TMuonPhase2/interface/MuonStub.h" +#include "DataFormats/CSCRecHit/interface/CSCSegment.h" +#include "DataFormats/DTRecHit/interface/DTRecSegment4D.h" +#include "DataFormats/MuonDetId/interface/DTChamberId.h" +#include "DataFormats/MuonDetId/interface/CSCDetId.h" + +#include "Geometry/CSCGeometry/interface/CSCGeometry.h" +#include "Geometry/DTGeometry/interface/DTGeometry.h" +#include "Geometry/Records/interface/MuonGeometryRecord.h" + +#include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" +#include "RecoMuon/MeasurementDet/interface/MuonDetLayerMeasurements.h" +#include "RecoMuon/DetLayers/interface/MuonDetLayerGeometry.h" +#include "RecoMuon/Records/interface/MuonRecoGeometryRecord.h" +#include "MagneticField/Engine/interface/MagneticField.h" +#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" +#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" + +#include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h" + +#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" + +#include +#include + +class RecHit; +class Plane; +class GeomDet; +class MagneticField; +class MuonTransientTrackingRecHit; + +enum Type { barrel, overlap, endcap }; + +class Phase2L2MuonSeedCreator : public edm::stream::EDProducer<> { +public: + typedef MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer; + + // Constructor + explicit Phase2L2MuonSeedCreator(const edm::ParameterSet& pset); + + // Destructor + ~Phase2L2MuonSeedCreator() override = default; + + // Operations + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + void produce(edm::Event&, const edm::EventSetup&) override; + +private: + // Tokens + const edm::EDGetTokenT l1TkMuCollToken_; + const edm::EDGetTokenT cscSegmentCollToken_; + const edm::EDGetTokenT dtSegmentCollToken_; + + const edm::ESGetToken cscGeometryToken_; + const edm::ESGetToken dtGeometryToken_; + const edm::ESGetToken magneticFieldToken_; + + // Miminum and maximum pt momentum of a track + const double minMomentum_; + const double maxMomentum_; + + // Parameters to match L1 stubs to DT/CSC segments + const double matchingPhiWindow_; + const double matchingThetaWindow_; + + // Parameters to extrapolate matches in nearby stations + const double extrapolationDeltaPhiClose_; + const double extrapolationDeltaPhiFar_; + + const double maxEtaBarrel_; // barrel with |eta| < 0.7 + const double maxEtaOverlap_; // overlap with |eta| < 1.3, endcap after that + + // Handles + edm::ESHandle cscGeometry_; + edm::ESHandle dtGeometry_; + + std::unique_ptr service_; + std::unique_ptr estimator_; + + const std::string propagatorName_; + + // In DT station 4 the top and bottom sectors are made of two chambers + // due to material requirements. Online is not split: + // Online sector 4 == offline sector 4 or 10, Online sector 10 == offline sector 10 or 14 + const std::vector matchingIds(const DTChamberId& stubId) const; + + // Match online-level CSCDetIds with offline + const std::vector matchingIds(const CSCDetId& stubId) const; + + // Logic to match L1 stubs to DT segments + const std::pair matchingStubSegment(const DTChamberId& stubId, + const l1t::MuonStubRef stub, + const DTRecSegment4DCollection& segments, + const float l1TkMuTheta) const; + + // Logic to match L1 stubs to CSC segments + const std::pair matchingStubSegment(const CSCDetId& stubId, + const l1t::MuonStubRef stub, + const CSCSegmentCollection& segments, + const float l1TkMuTheta) const; + + // Logic to extrapolate from nearby stations in the barrel + const std::pair extrapolateToNearbyStation(const int endingStation, + const std::map>& matchesInBarrel, + const DTRecSegment4DCollection& segments) const; + + const std::pair extrapolateMatch(const int bestStartingSegIndex, + const int endingStation, + const DTRecSegment4DCollection& segments) const; +}; +#endif diff --git a/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.cc b/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.cc index 4fd42ab3e6f67..7d881156e08b8 100644 --- a/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.cc +++ b/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.cc @@ -41,39 +41,45 @@ static const char category[] = "Muon|RecoMuon|L3MuonCandidateProducer"; /// constructor with config L3MuonCandidateProducer::L3MuonCandidateProducer(const ParameterSet& parameterSet) { - LogTrace(category) << " constructor called"; + LogTrace(category) << "Constructor called"; // StandAlone Collection Label theL3CollectionLabel = parameterSet.getParameter("InputObjects"); trackToken_ = consumes(theL3CollectionLabel); - // use links - theUseLinks = parameterSet.existsAs("InputLinksObjects"); + // Use links + theL3LinksLabel = parameterSet.getParameter("InputLinksObjects"); + theUseLinks = !theL3LinksLabel.label().empty() && theL3LinksLabel.label() != "unused"; if (theUseLinks) { - theL3LinksLabel = parameterSet.getParameter("InputLinksObjects"); linkToken_ = consumes(theL3LinksLabel); - if (theL3LinksLabel.label().empty() or theL3LinksLabel.label() == "unused") - theUseLinks = false; } - // use global, standalone or tracker pT/4-vector assignment - const std::string& muon_track_for_momentum = parameterSet.existsAs("MuonPtOption") - ? parameterSet.getParameter("MuonPtOption") - : "Global"; - if (muon_track_for_momentum == std::string("Tracker")) + // Use global, standalone or tracker pT/4-vector assignment + const std::string& muon_track_for_momentum = parameterSet.getParameter("MuonPtOption"); + if (muon_track_for_momentum == "Tracker") theType = InnerTrack; - else if (muon_track_for_momentum == std::string("Standalone")) + else if (muon_track_for_momentum == "Standalone") theType = OuterTrack; - else if (muon_track_for_momentum == std::string("Global")) + else if (muon_track_for_momentum == "Global") theType = CombinedTrack; else { - LogError(category) << "invalid value for MuonPtOption, please choose among 'Tracker', 'Standalone', 'Global'"; + LogError(category) << "Invalid value for MuonPtOption, please choose among 'Tracker', 'Standalone', 'Global'"; theType = CombinedTrack; } produces(); } +/// fillDescriptions +void L3MuonCandidateProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("InputObjects", edm::InputTag("L3Muons"))->setComment("Input tag for L3 muon tracks"); + desc.add("InputLinksObjects", edm::InputTag("unused"))->setComment("Input tag for track links"); + desc.add("MuonPtOption", "Global") + ->setComment("Option to determine muon momentum: 'Tracker', 'Standalone', or 'Global'"); + descriptions.addWithDefaultLabel(desc); +} + /// destructor L3MuonCandidateProducer::~L3MuonCandidateProducer() { LogTrace(category) << " L3MuonCandidateProducer destructor called"; diff --git a/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.h b/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.h index c7c1e7801ad84..8732fc9ed1de2 100644 --- a/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.h +++ b/RecoMuon/L3MuonProducer/src/L3MuonCandidateProducer.h @@ -18,12 +18,14 @@ * \author J.Alcaraz */ -#include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Utilities/interface/InputTag.h" +#include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" -#include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" namespace edm { class ParameterSet; @@ -44,6 +46,8 @@ class L3MuonCandidateProducer : public edm::global::EDProducer<> { /// produce candidates void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: // L3/GLB Collection Label edm::InputTag theL3CollectionLabel; diff --git a/RecoMuon/L3TrackFinder/interface/HLTMuonL2SelectorForL3IO.h b/RecoMuon/L3TrackFinder/interface/HLTMuonL2SelectorForL3IO.h deleted file mode 100644 index 6a6a2cb76e5ec..0000000000000 --- a/RecoMuon/L3TrackFinder/interface/HLTMuonL2SelectorForL3IO.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef RecoMuon_HLTMuonL2SelectorForL3IO_HLTMuonL2SelectorForL3IO_H -#define RecoMuon_HLTMuonL2SelectorForL3IO_HLTMuonL2SelectorForL3IO_H - -/** \class HLTMuonL2SelectorForL3IO - * - * L2 muon selector for L3 IO: - * finds L2 muons not previous converted into (good) L3 muons - * - * \author Benjamin Radburn-Smith, Santiago Folgueras - Purdue University - */ - -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" -#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" -#include "DataFormats/MuonReco/interface/MuonFwd.h" -#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h" -#include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h" - -namespace edm { - class ParameterSet; - class Event; - class EventSetup; -} // namespace edm - -class HLTMuonL2SelectorForL3IO : public edm::stream::EDProducer<> { -public: - /// constructor with config - HLTMuonL2SelectorForL3IO(const edm::ParameterSet&); - - /// destructor - ~HLTMuonL2SelectorForL3IO() override; - - /// default values - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - /// select muons - void produce(edm::Event&, const edm::EventSetup&) override; - -private: - const edm::EDGetTokenT l2Src_; - const edm::EDGetTokenT l3OISrc_; - const edm::EDGetTokenT l3linkToken_; - const bool applyL3Filters_; - const double max_NormalizedChi2_, max_PtDifference_; - const int min_Nhits_, min_NmuonHits_; -}; - -#endif diff --git a/RecoMuon/L3TrackFinder/interface/MuonCkfTrajectoryBuilder.h b/RecoMuon/L3TrackFinder/interface/MuonCkfTrajectoryBuilder.h deleted file mode 100644 index 932d56d73cfc0..0000000000000 --- a/RecoMuon/L3TrackFinder/interface/MuonCkfTrajectoryBuilder.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef RecoMuon_L3TrackFinder_MuonCkfTrajectoryBuilder_H -#define RecoMuon_L3TrackFinder_MuonCkfTrajectoryBuilder_H - -#include "FWCore/Framework/interface/ESWatcher.h" -#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" -#include "RecoTracker/CkfPattern/interface/CkfTrajectoryBuilder.h" - -class TrackingComponentsRecord; - -class MuonCkfTrajectoryBuilder : public CkfTrajectoryBuilder { -public: - MuonCkfTrajectoryBuilder(const edm::ParameterSet& conf, edm::ConsumesCollector& iC); - ~MuonCkfTrajectoryBuilder() override; - - static void fillPSetDescription(edm::ParameterSetDescription& iDesc); - -protected: - void setEvent_(const edm::Event& iEvent, const edm::EventSetup& iSetup) override; - - void collectMeasurement(const DetLayer* layer, - const std::vector& nl, - const TrajectoryStateOnSurface& currentState, - std::vector& result, - int& invalidHits, - const Propagator*) const; - - void findCompatibleMeasurements(const TrajectorySeed& seed, - const TempTrajectory& traj, - std::vector& result) const override; - - //and other fields - bool theUseSeedLayer; - double theRescaleErrorIfFail; - const double theDeltaEta; - const double theDeltaPhi; - const std::string theProximityPropagatorName; - const Propagator* theProximityPropagator; - const edm::ESGetToken thePropagatorToken; - edm::ESWatcher theEstimatorWatcher; - std::unique_ptr theEtaPhiEstimator; -}; - -#endif diff --git a/RecoMuon/L3TrackFinder/src/EtaPhiEstimator.h b/RecoMuon/L3TrackFinder/plugins/EtaPhiEstimator.h similarity index 100% rename from RecoMuon/L3TrackFinder/src/EtaPhiEstimator.h rename to RecoMuon/L3TrackFinder/plugins/EtaPhiEstimator.h diff --git a/RecoMuon/L3TrackFinder/src/HLTMuonL2SelectorForL3IO.cc b/RecoMuon/L3TrackFinder/plugins/HLTMuonL2SelectorForL3IO.cc similarity index 77% rename from RecoMuon/L3TrackFinder/src/HLTMuonL2SelectorForL3IO.cc rename to RecoMuon/L3TrackFinder/plugins/HLTMuonL2SelectorForL3IO.cc index 9932b278bed30..c092b7091eb11 100644 --- a/RecoMuon/L3TrackFinder/src/HLTMuonL2SelectorForL3IO.cc +++ b/RecoMuon/L3TrackFinder/plugins/HLTMuonL2SelectorForL3IO.cc @@ -1,17 +1,47 @@ /** \class HLTMuonL2SelectorForL3IO * * L2 muon selector for L3 IO: - * finds L2 muons not previous converted into (good) L3 muons + * finds L2 muons not previous converted into (good) L3 muons * * \author Benjamin Radburn-Smith, Santiago Folgueras - Purdue University */ -#include "RecoMuon/L3TrackFinder/interface/HLTMuonL2SelectorForL3IO.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/Math/interface/deltaR.h" +#include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeed.h" #include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeedCollection.h" +#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h" +#include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +class HLTMuonL2SelectorForL3IO : public edm::stream::EDProducer<> { +public: + /// constructor with config + HLTMuonL2SelectorForL3IO(const edm::ParameterSet&); + + /// destructor + ~HLTMuonL2SelectorForL3IO() override = default; + + /// default values + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + /// select muons + void produce(edm::Event&, const edm::EventSetup&) override; + +private: + const edm::EDGetTokenT l2Src_; + const edm::EDGetTokenT l3OISrc_; + const edm::EDGetTokenT l3linkToken_; + const bool applyL3Filters_; + const double max_NormalizedChi2_, max_PtDifference_; + const int min_Nhits_, min_NmuonHits_; +}; /// constructor with config HLTMuonL2SelectorForL3IO::HLTMuonL2SelectorForL3IO(const edm::ParameterSet& iConfig) @@ -27,9 +57,6 @@ HLTMuonL2SelectorForL3IO::HLTMuonL2SelectorForL3IO(const edm::ParameterSet& iCon produces(); } -/// destructor -HLTMuonL2SelectorForL3IO::~HLTMuonL2SelectorForL3IO() {} - /// create collection of L2 muons not already reconstructed as L3 muons void HLTMuonL2SelectorForL3IO::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { const std::string metname = "Muon|RecoMuon|HLTMuonL2SelectorForL3IO"; @@ -109,3 +136,6 @@ void HLTMuonL2SelectorForL3IO::fillDescriptions(edm::ConfigurationDescriptions& desc.add("MaxPtDifference", 999.0); //relative difference descriptions.add("HLTMuonL2SelectorForL3IO", desc); } + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(HLTMuonL2SelectorForL3IO); diff --git a/RecoMuon/L3TrackFinder/src/MuonCkfTrajectoryBuilder.cc b/RecoMuon/L3TrackFinder/plugins/MuonCkfTrajectoryBuilder.cc similarity index 84% rename from RecoMuon/L3TrackFinder/src/MuonCkfTrajectoryBuilder.cc rename to RecoMuon/L3TrackFinder/plugins/MuonCkfTrajectoryBuilder.cc index b95c59f37f79b..80a1df931b0fa 100644 --- a/RecoMuon/L3TrackFinder/src/MuonCkfTrajectoryBuilder.cc +++ b/RecoMuon/L3TrackFinder/plugins/MuonCkfTrajectoryBuilder.cc @@ -1,19 +1,59 @@ -#include "RecoMuon/L3TrackFinder/interface/MuonCkfTrajectoryBuilder.h" +#include +#include "FWCore/Framework/interface/ESWatcher.h" +#include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" -#include "TrackingTools/PatternTools/interface/TrajMeasLessEstim.h" +#include "RecoTracker/CkfPattern/interface/BaseCkfTrajectoryBuilderFactory.h" +#include "RecoTracker/CkfPattern/interface/CkfTrajectoryBuilder.h" #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h" #include "RecoTracker/MeasurementDet/interface/MeasurementTrackerEvent.h" -#include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h" +#include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" +#include "TrackingTools/DetLayers/interface/NavigationSchool.h" #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimatorBase.h" -#include "TrackingTools/TrajectoryFiltering/interface/TrajectoryFilter.h" +#include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h" +#include "TrackingTools/PatternTools/interface/TrajMeasLessEstim.h" #include "TrackingTools/PatternTools/interface/TransverseImpactPointExtrapolator.h" -#include "TrackingTools/DetLayers/interface/NavigationSchool.h" -#include "RecoMuon/L3TrackFinder/src/EtaPhiEstimator.h" -#include +#include "TrackingTools/TrajectoryFiltering/interface/TrajectoryFilter.h" +#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" + +#include "EtaPhiEstimator.h" + +class TrackingComponentsRecord; + +class MuonCkfTrajectoryBuilder : public CkfTrajectoryBuilder { +public: + MuonCkfTrajectoryBuilder(const edm::ParameterSet& conf, edm::ConsumesCollector& iC); + ~MuonCkfTrajectoryBuilder() override; + + static void fillPSetDescription(edm::ParameterSetDescription& iDesc); + +protected: + void setEvent_(const edm::Event& iEvent, const edm::EventSetup& iSetup) override; + + void collectMeasurement(const DetLayer* layer, + const std::vector& nl, + const TrajectoryStateOnSurface& currentState, + std::vector& result, + int& invalidHits, + const Propagator*) const; + + void findCompatibleMeasurements(const TrajectorySeed& seed, + const TempTrajectory& traj, + std::vector& result) const override; + + //and other fields + bool theUseSeedLayer; + double theRescaleErrorIfFail; + const double theDeltaEta; + const double theDeltaPhi; + const std::string theProximityPropagatorName; + const Propagator* theProximityPropagator; + const edm::ESGetToken thePropagatorToken; + edm::ESWatcher theEstimatorWatcher; + std::unique_ptr theEtaPhiEstimator; +}; MuonCkfTrajectoryBuilder::MuonCkfTrajectoryBuilder(const edm::ParameterSet& conf, edm::ConsumesCollector& iC) : CkfTrajectoryBuilder(conf, iC), @@ -233,3 +273,6 @@ void MuonCkfTrajectoryBuilder::findCompatibleMeasurements(const TrajectorySeed& //analyseMeasurements( result, traj); } + +#include "FWCore/ParameterSet/interface/ValidatedPluginMacros.h" +DEFINE_EDM_VALIDATED_PLUGIN(BaseCkfTrajectoryBuilderFactory, MuonCkfTrajectoryBuilder, "MuonCkfTrajectoryBuilder"); diff --git a/RecoMuon/L3TrackFinder/plugins/Phase2HLTMuonSelectorForL3.cc b/RecoMuon/L3TrackFinder/plugins/Phase2HLTMuonSelectorForL3.cc new file mode 100644 index 0000000000000..bcb7d02553f08 --- /dev/null +++ b/RecoMuon/L3TrackFinder/plugins/Phase2HLTMuonSelectorForL3.cc @@ -0,0 +1,268 @@ +/** \class Phase2HLTMuonSelectorForL3 + * + * Phase-2 L3 selector for Muons + * This module allows to choose whether to perform + * Inside-Out or Outside-In reconstruction first for L3 Muons, + * performing the second pass only on candidates that were not + * reconstructed or whose quality was not good enough. Required + * quality criteria are configurable, the default parameters + * match the requests of HLT Muon ID. + * When Inside-Out reconstruction is performed first, the resulting + * L3 Tracks are filtered and geometrically matched with L2 + * Standalone Muons. If either the match is unsuccessful, or + * the L3 track is not of good-enough quality, the associated + * Standalone Muon will be re-used to seed the Outside-In step. + * The Outside-In first approach follows a similar logic by + * matching the L3 tracks directly with L1 Tracker Muons. + * Then, when either the match fails or the track is not of + * good-enough quality, the L1 Tracker Muon is re-used to seed + * the Inside-Out reconstruction. + * + * \author Luca Ferragina (INFN BO), 2024 + */ + +#include "DataFormats/L1TMuonPhase2/interface/TrackerMuon.h" +#include "DataFormats/Math/interface/deltaR.h" +#include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeedCollection.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/ESGetToken.h" +#include "FWCore/Utilities/interface/InputTag.h" + +#include + +class Phase2HLTMuonSelectorForL3 : public edm::stream::EDProducer<> { +public: + // Constructor + Phase2HLTMuonSelectorForL3(const edm::ParameterSet&); + + // Destructor + ~Phase2HLTMuonSelectorForL3() override = default; + + // Default values + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + // Select objects to be reused + void produce(edm::Event&, const edm::EventSetup&) override; + +private: + const edm::EDGetTokenT l1TkMuCollToken_; + const edm::EDGetTokenT l2MuCollectionToken_; + const edm::EDGetTokenT l3TrackCollectionToken_; + + const bool IOFirst_; + const double matchingDr_; + const bool applyL3Filters_; + const double maxNormalizedChi2_, maxPtDifference_; + const int minNhits_, minNhitsMuons_, minNhitsPixel_, minNhitsTracker_; + + // Check L3 inner track quality parameters + const bool rejectL3Track(l1t::TrackerMuonRef l1TkMuRef, reco::TrackRef l3TrackRef) const; +}; + +// Constructor +Phase2HLTMuonSelectorForL3::Phase2HLTMuonSelectorForL3(const edm::ParameterSet& iConfig) + : l1TkMuCollToken_(consumes(iConfig.getParameter("l1TkMuons"))), + l2MuCollectionToken_(consumes(iConfig.getParameter("l2MuonsUpdVtx"))), + l3TrackCollectionToken_(consumes(iConfig.getParameter("l3Tracks"))), + IOFirst_(iConfig.getParameter("IOFirst")), + matchingDr_(iConfig.getParameter("matchingDr")), + applyL3Filters_(iConfig.getParameter("applyL3Filters")), + maxNormalizedChi2_(iConfig.getParameter("MaxNormalizedChi2")), + maxPtDifference_(iConfig.getParameter("MaxPtDifference")), + minNhits_(iConfig.getParameter("MinNhits")), + minNhitsMuons_(iConfig.getParameter("MinNhitsMuons")), + minNhitsPixel_(iConfig.getParameter("MinNhitsPixel")), + minNhitsTracker_(iConfig.getParameter("MinNhitsTracker")) { + if (IOFirst_) { + produces("L2MuToReuse"); + produces("L3IOTracksFiltered"); + } else { + produces("L1TkMuToReuse"); + produces("L3OITracksFiltered"); + } +} + +void Phase2HLTMuonSelectorForL3::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("l1TkMuons", edm::InputTag("l1tTkMuonsGmt")); + desc.add("l2MuonsUpdVtx", edm::InputTag("hltL2MuonsFromL1TkMuon", "UpdatedAtVtx")); + desc.add("l3Tracks", edm::InputTag("hltIter2Phase2L3FromL1TkMuonMerged")); + desc.add("IOFirst", true); + desc.add("matchingDr", 0.02); + desc.add("applyL3Filters", true); + desc.add("MinNhits", 1); + desc.add("MaxNormalizedChi2", 5.0); + desc.add("MinNhitsMuons", 0); + desc.add("MinNhitsPixel", 1); + desc.add("MinNhitsTracker", 6); + desc.add("MaxPtDifference", 999.0); //relative difference + descriptions.add("Phase2HLTMuonSelectorForL3", desc); +} + +// IO first -> collection of L2 muons not already matched to a L3 inner track +// OI first -> collection of L1Tk Muons not matched to a L3 track +void Phase2HLTMuonSelectorForL3::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + const std::string metname = "RecoMuon|Phase2HLTMuonSelectorForL3"; + + // L3 tracks (IO or OI) + auto l3TracksCollectionH = iEvent.getHandle(l3TrackCollectionToken_); + + if (IOFirst_) { + LogDebug(metname) << "Inside-Out reconstruction done first, looping over L2 muons"; + + // L2 Muons collection + auto const l2MuonsCollectionH = iEvent.getHandle(l2MuCollectionToken_); + + // Output + std::unique_ptr L2MuToReuse = std::make_unique(); + std::unique_ptr L3IOTracksFiltered = std::make_unique(); + + // Indexes of good L3 Tracks + std::unordered_set goodL3Indexes; + + // Loop over L2 Muons + for (size_t l2MuIndex = 0; l2MuIndex != l2MuonsCollectionH->size(); ++l2MuIndex) { + reco::TrackRef l2MuRef(l2MuonsCollectionH, l2MuIndex); + bool reuseL2 = true; + + // Extract L1TkMu from L2 Muon + edm::RefToBase seedRef = l2MuRef->seedRef(); + edm::Ref l2Seed = seedRef.castTo>(); + l1t::TrackerMuonRef l1TkMuRef = l2Seed->l1TkMu(); + + // Check validity of cast (actually found a L1TkMu) + if (l1TkMuRef.isNonnull()) { + // Loop over L3 tracks + LogDebug(metname) << "Looping over L3 tracks"; + for (size_t l3MuIndex = 0; l3MuIndex != l3TracksCollectionH->size(); ++l3MuIndex) { + reco::TrackRef l3TrackRef(l3TracksCollectionH, l3MuIndex); + bool rejectL3 = true; + // Filter L3 Tracks + if (applyL3Filters_) { + LogDebug(metname) << "Checking L3 Track quality"; + rejectL3 = rejectL3Track(l1TkMuRef, l3TrackRef); + if (!rejectL3) { + LogDebug(metname) << "Adding good quality L3 IO track to filtered collection"; + goodL3Indexes.insert(l3MuIndex); + } + } + // Check match in dR + float dR2 = deltaR2(l1TkMuRef->phEta(), l1TkMuRef->phPhi(), l3TrackRef->eta(), l3TrackRef->phi()); + LogDebug(metname) << "deltaR2: " << dR2; + if (dR2 < matchingDr_ * matchingDr_) { + LogDebug(metname) << "Found L2 muon that matches the L3 track"; + reuseL2 = applyL3Filters_ ? rejectL3 : false; + LogDebug(metname) << "Reuse L2: " << reuseL2; + } + } // End loop over L3 Tracks + } else { + LogDebug(metname) << "Found L2 muon without an associated L1TkMu"; + } + if (reuseL2) { + LogDebug(metname) << "Found a L2 muon to be reused"; + L2MuToReuse->push_back(*l2MuRef); + } + } // End loop over L2 Muons + + // Fill L3 IO Tracks Filtered + for (const size_t index : goodL3Indexes) { + L3IOTracksFiltered->push_back(*(reco::TrackRef(l3TracksCollectionH, index))); + } + + LogDebug(metname) << "Placing L2 Muons to be reused in the event"; + iEvent.put(std::move(L2MuToReuse), "L2MuToReuse"); + LogDebug(metname) << "Placing good quality L3 IO Tracks in the event"; + iEvent.put(std::move(L3IOTracksFiltered), "L3IOTracksFiltered"); + } else { + LogDebug(metname) << "Outside-In reconstruction done first, looping over L1Tk muons"; + + // L1Tk Muons collection + auto const l1TkMuonsCollectionH = iEvent.getHandle(l1TkMuCollToken_); + + // Output + std::unique_ptr L1TkMuToReuse = std::make_unique(); + std::unique_ptr L3OITracksFiltered = std::make_unique(); + + // Indexes of good L3 Tracks + std::unordered_set goodL3Indexes; + + // Loop over L1Tk Muons + for (size_t l1TkMuIndex = 0; l1TkMuIndex != l1TkMuonsCollectionH->size(); ++l1TkMuIndex) { + l1t::TrackerMuonRef l1TkMuRef(l1TkMuonsCollectionH, l1TkMuIndex); + bool reuseL1TkMu = true; + + // Loop over L3 tracks + LogDebug(metname) << "Looping over L3 tracks"; + for (size_t l3MuIndex = 0; l3MuIndex != l3TracksCollectionH->size(); ++l3MuIndex) { + reco::TrackRef l3TrackRef(l3TracksCollectionH, l3MuIndex); + bool rejectL3 = true; + // Filter L3 Tracks + if (applyL3Filters_) { + LogDebug(metname) << "Checking L3 Track quality"; + rejectL3 = rejectL3Track(l1TkMuRef, l3TrackRef); + if (!rejectL3) { + LogDebug(metname) << "Adding good quality L3 OI track to filtered collection"; + goodL3Indexes.insert(l3MuIndex); + } + } + // Check match in dR + float dR2 = deltaR2(l1TkMuRef->phEta(), l1TkMuRef->phPhi(), l3TrackRef->eta(), l3TrackRef->phi()); + LogDebug(metname) << "deltaR2: " << dR2; + if (dR2 < matchingDr_ * matchingDr_) { + LogDebug(metname) << "Found L1TkMu that matches the L3 track"; + reuseL1TkMu = applyL3Filters_ ? rejectL3 : false; + LogDebug(metname) << "Reuse L1TkMu: " << reuseL1TkMu; + } + } // End loop over L3 Tracks + if (reuseL1TkMu) { + LogDebug(metname) << "Found a L1TkMu to be reused"; + L1TkMuToReuse->push_back(*l1TkMuRef); + } + } // End loop over L1Tk Muons + + // Fill L3 OI Tracks Filtered + for (const size_t index : goodL3Indexes) { + L3OITracksFiltered->push_back(*(reco::TrackRef(l3TracksCollectionH, index))); + } + + LogDebug(metname) << "Placing L1Tk Muons to be reused in the event"; + iEvent.put(std::move(L1TkMuToReuse), "L1TkMuToReuse"); + LogDebug(metname) << "Placing good quality L3 OI Tracks in the event"; + iEvent.put(std::move(L3OITracksFiltered), "L3OITracksFiltered"); + } +} + +const bool Phase2HLTMuonSelectorForL3::rejectL3Track(l1t::TrackerMuonRef l1TkMuRef, reco::TrackRef l3TrackRef) const { + const std::string metname = "RecoMuon|Phase2HLTMuonSelectorForL3"; + + bool nHitsCut = l3TrackRef->numberOfValidHits() < minNhits_; + bool chi2Cut = l3TrackRef->normalizedChi2() > maxNormalizedChi2_; + bool nHitsMuonsCut = l3TrackRef->hitPattern().numberOfValidMuonHits() < minNhitsMuons_; + bool nHitsPixelCut = l3TrackRef->hitPattern().numberOfValidPixelHits() < minNhitsPixel_; + bool nHitsTrackerCut = l3TrackRef->hitPattern().trackerLayersWithMeasurement() < minNhitsTracker_; + bool ptCut = std::abs(l3TrackRef->pt() - l1TkMuRef->phPt()) > maxPtDifference_ * l3TrackRef->pt(); + + bool reject = nHitsCut or chi2Cut or nHitsMuonsCut or nHitsPixelCut or nHitsTrackerCut or ptCut; + + LogDebug(metname) << "nHits: " << l3TrackRef->numberOfValidHits() << " | chi2: " << l3TrackRef->normalizedChi2() + << " | nHitsMuon: " << l3TrackRef->hitPattern().numberOfValidMuonHits() + << " | nHitsPixel: " << l3TrackRef->hitPattern().numberOfValidPixelHits() + << " | nHitsTracker: " << l3TrackRef->hitPattern().trackerLayersWithMeasurement(); + LogDebug(metname) << "Reject L3 Track: " << reject; + return reject; +} + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(Phase2HLTMuonSelectorForL3); diff --git a/RecoMuon/L3TrackFinder/plugins/SealModules.cc b/RecoMuon/L3TrackFinder/plugins/SealModules.cc deleted file mode 100644 index 66528331f148f..0000000000000 --- a/RecoMuon/L3TrackFinder/plugins/SealModules.cc +++ /dev/null @@ -1,9 +0,0 @@ -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ValidatedPluginMacros.h" - -#include "RecoMuon/L3TrackFinder/interface/MuonCkfTrajectoryBuilder.h" -#include "RecoTracker/CkfPattern/interface/BaseCkfTrajectoryBuilderFactory.h" -#include "RecoMuon/L3TrackFinder/interface/HLTMuonL2SelectorForL3IO.h" - -DEFINE_EDM_VALIDATED_PLUGIN(BaseCkfTrajectoryBuilderFactory, MuonCkfTrajectoryBuilder, "MuonCkfTrajectoryBuilder"); -DEFINE_FWK_MODULE(HLTMuonL2SelectorForL3IO); diff --git a/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.cc b/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.cc index 9b14683206e5a..f36a7ec7c6d15 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.cc +++ b/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.cc @@ -9,31 +9,25 @@ // // system include files +#include #include // user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" - +#include "DataFormats/Common/interface/Handle.h" +#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" +#include "DataFormats/TrackReco/interface/Track.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" - +#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/Common/interface/Handle.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "RecoMuon/MuonIdentification/plugins/MuonLinksProducer.h" -#include - -MuonLinksProducer::MuonLinksProducer(const edm::ParameterSet& iConfig) { +MuonLinksProducer::MuonLinksProducer(const edm::ParameterSet& iConfig) + : m_inputCollection{iConfig.getParameter("inputCollection")}, + muonToken_{consumes(m_inputCollection)} { produces(); - m_inputCollection = iConfig.getParameter("inputCollection"); - muonToken_ = consumes(m_inputCollection); } -MuonLinksProducer::~MuonLinksProducer() {} - void MuonLinksProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const { auto output = std::make_unique(); edm::Handle muons; @@ -46,3 +40,9 @@ void MuonLinksProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::Ev } iEvent.put(std::move(output)); } + +void MuonLinksProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("inputCollection", edm::InputTag("muons", "", "@skipCurrentProcess")); + descriptions.addWithDefaultLabel(desc); +} diff --git a/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.h b/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.h index e5bd1f9200966..a9c962f49db04 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.h +++ b/RecoMuon/MuonIdentification/plugins/MuonLinksProducer.h @@ -17,23 +17,26 @@ // // user include files +#include "DataFormats/MuonReco/interface/Muon.h" +#include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/MuonReco/interface/MuonFwd.h" -#include "DataFormats/MuonReco/interface/Muon.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" class MuonLinksProducer : public edm::global::EDProducer<> { public: explicit MuonLinksProducer(const edm::ParameterSet&); - - ~MuonLinksProducer() override; + ~MuonLinksProducer() override = default; void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: - edm::InputTag m_inputCollection; - edm::EDGetTokenT muonToken_; + const edm::InputTag m_inputCollection; + const edm::EDGetTokenT muonToken_; }; #endif diff --git a/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.cc b/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.cc index 3f2909502ad4b..f22105b688f91 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.cc +++ b/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.cc @@ -8,31 +8,23 @@ // user include files #include "FWCore/Framework/interface/Frameworkfwd.h" - #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" - #include "FWCore/ParameterSet/interface/ParameterSet.h" - #include "DataFormats/Common/interface/Handle.h" #include "RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.h" -//#include - -MuonLinksProducerForHLT::MuonLinksProducerForHLT(const edm::ParameterSet& iConfig) { +MuonLinksProducerForHLT::MuonLinksProducerForHLT(const edm::ParameterSet& iConfig) + : theLinkCollectionInInput_{iConfig.getParameter("LinkCollection")}, + theInclusiveTrackCollectionInInput_{iConfig.getParameter("InclusiveTrackerTrackCollection")}, + linkToken_{consumes(theLinkCollectionInInput_)}, + trackToken_{consumes(theInclusiveTrackCollectionInInput_)}, + ptMin_{iConfig.getParameter("ptMin")}, + pMin_{iConfig.getParameter("pMin")}, + shareHitFraction_{iConfig.getParameter("shareHitFraction")} { produces(); - theLinkCollectionInInput = iConfig.getParameter("LinkCollection"); - theInclusiveTrackCollectionInInput = iConfig.getParameter("InclusiveTrackerTrackCollection"); - ptMin = iConfig.getParameter("ptMin"); - pMin = iConfig.getParameter("pMin"); - shareHitFraction = iConfig.getParameter("shareHitFraction"); - - linkToken_ = consumes(theLinkCollectionInInput); - trackToken_ = consumes(theInclusiveTrackCollectionInInput); } -MuonLinksProducerForHLT::~MuonLinksProducerForHLT() {} - void MuonLinksProducerForHLT::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const { auto output = std::make_unique(); @@ -48,9 +40,9 @@ void MuonLinksProducerForHLT::produce(edm::StreamID, edm::Event& iEvent, const e unsigned int muonTrackHits = link->trackerTrack()->extra()->recHitsSize(); for (reco::TrackCollection::const_iterator track = incTracks->begin(); track != incTracks->end(); ++track, ++trackIndex) { - if (track->pt() < ptMin) + if (track->pt() < ptMin_) continue; - if (track->p() < pMin) + if (track->p() < pMin_) continue; //std::cout << "pt (muon/track) " << link->trackerTrack()->pt() << " " << track->pt() << std::endl; unsigned trackHits = track->extra()->recHitsSize(); @@ -70,7 +62,7 @@ void MuonLinksProducerForHLT::produce(edm::StreamID, edm::Event& iEvent, const e } double fraction = (double)numberOfCommonDetIds / smallestNumberOfHits; // std::cout << "Overlap/Smallest/fraction = " << numberOfCommonDetIds << " " << smallestNumberOfHits << " " << fraction << std::endl; - if (fraction > shareHitFraction) { + if (fraction > shareHitFraction_) { output->push_back( reco::MuonTrackLinks(reco::TrackRef(incTracks, trackIndex), link->standAloneTrack(), link->globalTrack())); found = true; @@ -82,3 +74,13 @@ void MuonLinksProducerForHLT::produce(edm::StreamID, edm::Event& iEvent, const e } iEvent.put(std::move(output)); } + +void MuonLinksProducerForHLT::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("LinkCollection", edm::InputTag("hltPFMuonMerging")); + desc.add("InclusiveTrackerTrackCollection", edm::InputTag("hltL3MuonsLinksCombination")); + desc.add("ptMin", 2.5); + desc.add("pMin", 2.5); + desc.add("shareHitFraction", 0.80); + descriptions.addWithDefaultLabel(desc); +} diff --git a/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.h b/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.h index ceea901b78390..3e0f8b25d769f 100644 --- a/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.h +++ b/RecoMuon/MuonIdentification/plugins/MuonLinksProducerForHLT.h @@ -11,31 +11,33 @@ */ // user include files +#include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/MuonReco/interface/MuonFwd.h" -//#include "DataFormats/MuonReco/interface/Muon.h" -#include "DataFormats/MuonReco/interface/MuonTrackLinks.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" class MuonLinksProducerForHLT : public edm::global::EDProducer<> { public: explicit MuonLinksProducerForHLT(const edm::ParameterSet&); - - ~MuonLinksProducerForHLT() override; + ~MuonLinksProducerForHLT() override = default; void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: - edm::InputTag theLinkCollectionInInput; - edm::InputTag theInclusiveTrackCollectionInInput; - edm::EDGetTokenT linkToken_; - edm::EDGetTokenT trackToken_; - double ptMin; - double pMin; - double shareHitFraction; + const edm::InputTag theLinkCollectionInInput_; + const edm::InputTag theInclusiveTrackCollectionInInput_; + const edm::EDGetTokenT linkToken_; + const edm::EDGetTokenT trackToken_; + const double ptMin_; + const double pMin_; + const double shareHitFraction_; }; #endif diff --git a/RecoMuon/MuonIdentification/python/links_cfi.py b/RecoMuon/MuonIdentification/python/links_cfi.py index bca452e03a8a3..3f790cbb3f74c 100644 --- a/RecoMuon/MuonIdentification/python/links_cfi.py +++ b/RecoMuon/MuonIdentification/python/links_cfi.py @@ -1,5 +1,7 @@ import FWCore.ParameterSet.Config as cms -globalMuonLinks = cms.EDProducer("MuonLinksProducer", + +from RecoMuon.MuonIdentificationp.muonLinksProducer_cfi import muonLinksProducer +globalMuonLinks = muonLinksProducer.clone( inputCollection = cms.InputTag("muons","","@skipCurrentProcess") ) diff --git a/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.cc b/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.cc index 73b54d3ff0b49..101ad60791508 100644 --- a/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.cc +++ b/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.cc @@ -540,3 +540,16 @@ TrajectorySeed CosmicMuonSeedGenerator::tsosToSeed(const TrajectoryStateOnSurfac TrajectorySeed seed(seedTSOS, container, alongMomentum); return seed; } + +void CosmicMuonSeedGenerator::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("EnableDTMeasurement", true); + desc.add("EnableCSCMeasurement", true); + desc.add("DTRecSegmentLabel", edm::InputTag("dt4DSegments")); + desc.add("CSCRecSegmentLabel", edm::InputTag("cscSegments")); + desc.add("MaxSeeds", 1000); + desc.add("MaxDTChi2", 300.0); + desc.add("MaxCSCChi2", 300.0); + desc.add("ForcePointDown", true); + descriptions.addWithDefaultLabel(desc); +} diff --git a/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.h b/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.h index f7f4d307f9f9d..d08779c6a9fbc 100644 --- a/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.h +++ b/RecoMuon/MuonSeedGenerator/plugins/CosmicMuonSeedGenerator.h @@ -11,6 +11,8 @@ #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/Utilities/interface/ESGetToken.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" @@ -40,6 +42,9 @@ class CosmicMuonSeedGenerator : public edm::stream::EDProducer<> { /// Destructor ~CosmicMuonSeedGenerator() override; + /// fillDescriptions + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + // Operations /// reconstruct muon's seeds diff --git a/RecoMuon/MuonSeedGenerator/python/CosmicMuonSeedProducer_cfi.py b/RecoMuon/MuonSeedGenerator/python/CosmicMuonSeedProducer_cfi.py index bc442d5f0b719..dcfd189326ceb 100644 --- a/RecoMuon/MuonSeedGenerator/python/CosmicMuonSeedProducer_cfi.py +++ b/RecoMuon/MuonSeedGenerator/python/CosmicMuonSeedProducer_cfi.py @@ -1,15 +1,6 @@ import FWCore.ParameterSet.Config as cms -CosmicMuonSeed = cms.EDProducer("CosmicMuonSeedGenerator", - MaxSeeds = cms.int32(1000), - CSCRecSegmentLabel = cms.InputTag("cscSegments"), - EnableDTMeasurement = cms.bool(True), - MaxCSCChi2 = cms.double(300.0), - MaxDTChi2 = cms.double(300.0), - DTRecSegmentLabel = cms.InputTag("dt4DSegments"), - EnableCSCMeasurement = cms.bool(True), - ForcePointDown = cms.bool(True) -) - +from RecoMuon.MuonSeedGenerator.cosmicMuonSeedGenerator_cfi import cosmicMuonSeedGenerator as _cosmicMuonSeedGenerator +CosmicMuonSeed = _cosmicMuonSeedGenerator.clone() diff --git a/RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h b/RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h deleted file mode 100644 index d798928a2bdea..0000000000000 --- a/RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RecoMuon_TrackerSeedGenerator_RedundantSeedCleaner_H -#define RecoMuon_TrackerSeedGenerator_RedundantSeedCleaner_H - -/** \class RedundantSeedCleaner - * Description: - * RedundantSeedCleaner (TrackerSeedGenerator) duplicate removal from triplets pairs pixel seeds . - * - * \author Alessandro Grelli, Jean-Roch Vlimant -*/ - -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeed.h" -#include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeedCollection.h" - -// --------------------- -// -- Class Interface -- -// --------------------- - -class MuonSeedCombiner; - -class RedundantSeedCleaner { -public: - ///constructor - RedundantSeedCleaner() {} - ///destructor - ~RedundantSeedCleaner() {} - /// clean - void clean(const std::vector &, std::vector &); - /// collection definition - void define(std::vector &); - -private: - std::vector seedTriplets; - - std::string theCategory; -}; - -#endif diff --git a/RecoMuon/TrackerSeedGenerator/interface/TrackerSeedCleaner.h b/RecoMuon/TrackerSeedGenerator/interface/TrackerSeedCleaner.h index 55824812654f5..e9f3f497f5537 100644 --- a/RecoMuon/TrackerSeedGenerator/interface/TrackerSeedCleaner.h +++ b/RecoMuon/TrackerSeedGenerator/interface/TrackerSeedCleaner.h @@ -18,7 +18,6 @@ #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" #include "TrackingTools/Records/interface/TransientRecHitRecord.h" #include "RecoTracker/TkTrackingRegions/interface/RectangularEtaPhiTrackingRegion.h" -#include "RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h" #include "DataFormats/BeamSpot/interface/BeamSpot.h" #include "FWCore/Framework/interface/ConsumesCollector.h" @@ -61,14 +60,19 @@ class TrackerSeedCleaner { /// setEvent virtual void setEvent(const edm::Event&); + tkSeeds nonRedundantSeeds(tkSeeds const&) const; + private: + bool seedIsNotRedundant(std::vector const& seeds, + TrajectorySeed const& s1, + std::vector const& tripletsIdx) const; + const MuonServiceProxy* theProxyService; const edm::Event* theEvent; edm::InputTag theBeamSpotTag; //beam spot edm::Handle bsHandle_; edm::EDGetTokenT beamspotToken_; - RedundantSeedCleaner* theRedundantCleaner; std::string builderName_; edm::ESHandle theTTRHBuilder; diff --git a/RecoMuon/TrackerSeedGenerator/plugins/CollectionCombiner.h b/RecoMuon/TrackerSeedGenerator/plugins/CollectionCombiner.h index 14095633eb35e..a6d802e0b636f 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/CollectionCombiner.h +++ b/RecoMuon/TrackerSeedGenerator/plugins/CollectionCombiner.h @@ -22,12 +22,16 @@ #include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" template class CollectionCombiner : public edm::global::EDProducer<> { public: explicit CollectionCombiner(const edm::ParameterSet&); - ~CollectionCombiner() override; + ~CollectionCombiner() override = default; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; @@ -44,8 +48,6 @@ CollectionCombiner::CollectionCombiner(const edm::ParameterSet& iCon for (unsigned int i = 0; i < labels.size(); ++i) collectionTokens.push_back(consumes(labels.at(i))); } -template -CollectionCombiner::~CollectionCombiner() {} template void CollectionCombiner::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& es) const { @@ -59,4 +61,11 @@ void CollectionCombiner::produce(edm::StreamID, edm::Event& iEvent, iEvent.put(std::move(merged)); } +template +void CollectionCombiner::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add >("labels", {}); + descriptions.addWithDefaultLabel(desc); +} + #endif diff --git a/RecoMuon/TrackerSeedGenerator/plugins/MuonHLTSeedMVAClassifierPhase2.cc b/RecoMuon/TrackerSeedGenerator/plugins/MuonHLTSeedMVAClassifierPhase2.cc index 3f6a6a75a2d5e..159587343de15 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/MuonHLTSeedMVAClassifierPhase2.cc +++ b/RecoMuon/TrackerSeedGenerator/plugins/MuonHLTSeedMVAClassifierPhase2.cc @@ -142,23 +142,12 @@ MuonHLTSeedMVAClassifierPhase2::MuonHLTSeedMVAClassifierPhase2(const edm::Parame void MuonHLTSeedMVAClassifierPhase2::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { auto result = std::make_unique(); - edm::ESHandle trkGeom = iSetup.getHandle(trackerGeometryESToken_); - edm::ESHandle geomDet = iSetup.getHandle(geomDetESToken_); - edm::ESHandle trkTopo = iSetup.getHandle(trackerTopologyESToken_); - - GeometricSearchTrackerBuilder builder; - GeometricSearchTracker geomTracker = *(builder.build(&(*geomDet), &(*trkGeom), &(*trkTopo))); - edm::Handle h_L1TkMu; bool hasL1TkMu = iEvent.getByToken(t_L1TkMu_, h_L1TkMu); edm::Handle h_Seed; bool hasSeed = iEvent.getByToken(t_Seed_, h_Seed); - edm::ESHandle magfieldH = iSetup.getHandle(magFieldESToken_); - edm::ESHandle propagatorAlongH = iSetup.getHandle(propagatorESToken_); - std::unique_ptr propagatorAlong = SetPropagationDirection(*propagatorAlongH, alongMomentum); - if (!(hasL1TkMu && hasSeed)) { edm::LogError("SeedClassifierError") << "Error! Cannot find L1TkMuon or TrajectorySeed\n" << "hasL1TkMu : " << hasL1TkMu << "\n" @@ -166,6 +155,30 @@ void MuonHLTSeedMVAClassifierPhase2::produce(edm::Event& iEvent, const edm::Even return; } + if (h_L1TkMu->empty() or h_Seed->empty()) { + if (!h_Seed->empty()) { + edm::LogInfo("SeedClassifierError") << "Empty L1TkMu collection" << '\n'; + } + if (!h_L1TkMu->empty()) { + edm::LogInfo("SeedClassifierError") << "Empty Muon Pixel seeds collection" << '\n'; + } else { + edm::LogInfo("SeedClassifierError") << "Empty L1TkMu and Muon Pixel seeds collections" << '\n'; + } + iEvent.put(std::move(result)); + return; + } + + edm::ESHandle trkGeom = iSetup.getHandle(trackerGeometryESToken_); + edm::ESHandle geomDet = iSetup.getHandle(geomDetESToken_); + edm::ESHandle trkTopo = iSetup.getHandle(trackerTopologyESToken_); + + GeometricSearchTrackerBuilder builder; + GeometricSearchTracker geomTracker = *(builder.build(&(*geomDet), &(*trkGeom), &(*trkTopo))); + + edm::ESHandle magfieldH = iSetup.getHandle(magFieldESToken_); + edm::ESHandle propagatorAlongH = iSetup.getHandle(propagatorESToken_); + std::unique_ptr propagatorAlong = SetPropagationDirection(*propagatorAlongH, alongMomentum); + // -- sort seeds by MVA score and chooes top nSeedsMax_B_ / nSeedsMax_E_ if (doSort_) { std::vector> pairSeedIdxMvaScore_B = {}; @@ -204,19 +217,21 @@ void MuonHLTSeedMVAClassifierPhase2::produce(edm::Event& iEvent, const edm::Even pairSeedIdxMvaScore_E.push_back(make_pair(i, logistic)); } - std::sort(pairSeedIdxMvaScore_B.begin(), pairSeedIdxMvaScore_B.end(), sortByMvaScorePhase2); - std::sort(pairSeedIdxMvaScore_E.begin(), pairSeedIdxMvaScore_E.end(), sortByMvaScorePhase2); + std::partial_sort(pairSeedIdxMvaScore_B.begin(), + std::min(pairSeedIdxMvaScore_B.begin() + nSeedsMax_B_, pairSeedIdxMvaScore_B.end()), + pairSeedIdxMvaScore_B.end(), + sortByMvaScorePhase2); + std::partial_sort(pairSeedIdxMvaScore_E.begin(), + std::min(pairSeedIdxMvaScore_E.begin() + nSeedsMax_E_, pairSeedIdxMvaScore_E.end()), + pairSeedIdxMvaScore_E.end(), + sortByMvaScorePhase2); - for (auto i = 0U; i < pairSeedIdxMvaScore_B.size(); ++i) { - if ((int)i == nSeedsMax_B_) - break; + for (size_t i = 0; i < std::min(pairSeedIdxMvaScore_B.size(), static_cast(nSeedsMax_B_)); ++i) { const auto& seed(h_Seed->at(pairSeedIdxMvaScore_B.at(i).first)); result->emplace_back(seed); } - for (auto i = 0U; i < pairSeedIdxMvaScore_E.size(); ++i) { - if ((int)i == nSeedsMax_E_) - break; + for (size_t i = 0; i < std::min(pairSeedIdxMvaScore_E.size(), static_cast(nSeedsMax_E_)); ++i) { const auto& seed(h_Seed->at(pairSeedIdxMvaScore_E.at(i).first)); result->emplace_back(seed); } diff --git a/RecoMuon/TrackerSeedGenerator/src/RedundantSeedCleaner.cc b/RecoMuon/TrackerSeedGenerator/src/RedundantSeedCleaner.cc deleted file mode 100644 index 8b3ecd89e2299..0000000000000 --- a/RecoMuon/TrackerSeedGenerator/src/RedundantSeedCleaner.cc +++ /dev/null @@ -1,93 +0,0 @@ -/** \class RedundantSeedCleaner - * Description: - * RedundantSeedCleaner (TrackerSeedGenerator) duplicate removal from triplets pairs pixel seeds . - * - * \author Alessandro Grelli, Jean-Roch Vlimant -*/ - -#include "RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h" - -//------------------------------- -// Collaborating Class Headers -- -//------------------------------- - -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeed.h" -#include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeedCollection.h" - -using namespace edm; -using namespace reco; - -// -// definition of vectors -// - -void RedundantSeedCleaner::define(std::vector& coll) { - std::vector triplets; - - //search for triplest - for (TrajectorySeedCollection::iterator itr = coll.begin(); itr != coll.end(); ++itr) { - //fill vector of triplets - if (itr->nHits() == 3) - triplets.push_back(*itr); - } - - // clean from shared input - if (!triplets.empty()) - clean(triplets, coll); -} - -// -// the sharedHits cleaner -// - -void RedundantSeedCleaner::clean(const std::vector& seedTr, std::vector& seed) { - // loop over triplets - std::vector result; - - std::vector maskPairs = std::vector(seed.size(), true); - int iPair = 0; - - for (TrajectorySeedCollection::iterator s1 = seed.begin(); s1 != seed.end(); ++s1) { - //rechits from seed - - for (TrajectorySeedCollection::const_iterator s2 = seedTr.begin(); s2 != seedTr.end(); ++s2) { - //empty - if (s2->nHits() == 0) - continue; - - //number of shared hits; - int shared = 0; - - for (auto const& h2 : s2->recHits()) { - for (auto const& h1 : s1->recHits()) { - if (h2.sharesInput(&h1, TrackingRecHit::all)) - shared++; - if (s1->nHits() != 3) - LogDebug(theCategory) << shared << " shared hits counter if 2 erease the seed."; - } - } - - if (shared == 2 && s1->nHits() != 3) { - maskPairs[iPair] = false; - } - - } //end triplets loop - ++iPair; - } // end pairs loop - - iPair = 0; - //remove pairs in triplets - for (TrajectorySeedCollection::iterator s1 = seed.begin(); s1 != seed.end(); ++s1) { - if (maskPairs[iPair]) - result.push_back(*s1); - ++iPair; - } - - // cleaned collection - seed.swap(result); -} diff --git a/RecoMuon/TrackerSeedGenerator/src/TrackerSeedCleaner.cc b/RecoMuon/TrackerSeedGenerator/src/TrackerSeedCleaner.cc index bc747b9875e3e..633cddedf942e 100644 --- a/RecoMuon/TrackerSeedGenerator/src/TrackerSeedCleaner.cc +++ b/RecoMuon/TrackerSeedGenerator/src/TrackerSeedCleaner.cc @@ -37,11 +37,7 @@ using namespace edm; // // inizialization // -void TrackerSeedCleaner::init(const MuonServiceProxy* service) { - theProxyService = service; - - theRedundantCleaner = new RedundantSeedCleaner(); -} +void TrackerSeedCleaner::init(const MuonServiceProxy* service) { theProxyService = service; } // // @@ -55,8 +51,9 @@ void TrackerSeedCleaner::clean(const reco::TrackRef& muR, const RectangularEtaPhiTrackingRegion& region, tkSeeds& seeds) { // call the shared input cleaner - if (cleanBySharedHits) - theRedundantCleaner->define(seeds); + if (cleanBySharedHits) { + seeds = nonRedundantSeeds(seeds); + } theTTRHBuilder = theProxyService->eventSetup().getHandle(theTTRHBuilderToken); @@ -147,3 +144,62 @@ void TrackerSeedCleaner::clean(const reco::TrackRef& muR, return; } + +TrackerSeedCleaner::tkSeeds TrackerSeedCleaner::nonRedundantSeeds(tkSeeds const& seeds) const { + std::vector idxTriplets{}, idxNonTriplets{}; + idxTriplets.reserve(seeds.size()); + idxNonTriplets.reserve(seeds.size()); + + for (uint i1 = 0; i1 < seeds.size(); ++i1) { + auto const& s1 = seeds[i1]; + if (s1.nHits() == 3) + idxTriplets.emplace_back(i1); + else + idxNonTriplets.emplace_back(i1); + } + + if (idxTriplets.empty()) { + return seeds; + } + + std::vector keepSeedFlags(seeds.size(), true); + for (uint j1 = 0; j1 < idxNonTriplets.size(); ++j1) { + auto const i1 = idxNonTriplets[j1]; + auto const& seed = seeds[i1]; + keepSeedFlags[i1] = seedIsNotRedundant(seeds, seed, idxTriplets); + } + + tkSeeds result{}; + result.reserve(seeds.size()); + + for (uint i1 = 0; i1 < seeds.size(); ++i1) { + if (keepSeedFlags[i1]) { + result.emplace_back(seeds[i1]); + } + } + + return result; +} + +bool TrackerSeedCleaner::seedIsNotRedundant(tkSeeds const& seeds, + TrajectorySeed const& s1, + std::vector const& otherIdxs) const { + auto const& rh1s = s1.recHits(); + for (uint j2 = 0; j2 < otherIdxs.size(); ++j2) { + auto const& s2 = seeds[otherIdxs[j2]]; + // number of shared hits + uint shared = 0; + for (auto const& h2 : s2.recHits()) { + for (auto const& h1 : rh1s) { + if (h2.sharesInput(&h1, TrackingRecHit::all)) { + ++shared; + } + } + } + if (shared == 2) { + return false; + } + } + + return true; +} diff --git a/RecoMuon/TrackingTools/interface/MuonSegmentMatcher.h b/RecoMuon/TrackingTools/interface/MuonSegmentMatcher.h index 6c29e3db45d0d..a918ab2b9b25e 100644 --- a/RecoMuon/TrackingTools/interface/MuonSegmentMatcher.h +++ b/RecoMuon/TrackingTools/interface/MuonSegmentMatcher.h @@ -7,6 +7,7 @@ #include "FWCore/Utilities/interface/InputTag.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "DataFormats/DTRecHit/interface/DTRecSegment2D.h" #include "DataFormats/DTRecHit/interface/DTRecSegment4D.h" @@ -41,6 +42,8 @@ class MuonSegmentMatcher { std::vector matchRPC(const reco::Track& muon, const edm::Event& event); + static void fillPSetDescription(edm::ParameterSetDescription& desc); + protected: private: const MuonServiceProxy* theService; diff --git a/RecoMuon/TrackingTools/src/MuonErrorMatrix.cc b/RecoMuon/TrackingTools/src/MuonErrorMatrix.cc index e4dd8d866a01d..b3985f051c411 100644 --- a/RecoMuon/TrackingTools/src/MuonErrorMatrix.cc +++ b/RecoMuon/TrackingTools/src/MuonErrorMatrix.cc @@ -120,7 +120,7 @@ MuonErrorMatrix::MuonErrorMatrix(const edm::ParameterSet &iConfig) : theD(nullpt if (!madeFromCff) { edm::LogInfo(theCategory) << "using an error matrix object from: " << fileName; edm::FileInPath data(fileName); - std::string fullpath = data.fullPath(); + const std::string &fullpath = data.fullPath(); gROOT->cd(); theD = new TFile(fullpath.c_str()); theD->SetWritable(false); diff --git a/RecoMuon/TrackingTools/src/MuonSegmentMatcher.cc b/RecoMuon/TrackingTools/src/MuonSegmentMatcher.cc index 7b4a143642812..072af8d7f02ff 100644 --- a/RecoMuon/TrackingTools/src/MuonSegmentMatcher.cc +++ b/RecoMuon/TrackingTools/src/MuonSegmentMatcher.cc @@ -54,6 +54,15 @@ MuonSegmentMatcher::MuonSegmentMatcher(const edm::ParameterSet& matchParameters, rpcRecHitsToken = iC.consumes(RPCHitTags_); } +void MuonSegmentMatcher::fillPSetDescription(edm::ParameterSetDescription& desc) { + desc.add("DTsegments", edm::InputTag("dt4DSegments")); + desc.add("CSCsegments", edm::InputTag("cscSegments")); + desc.add("DTradius", 0.01); + desc.add("TightMatchDT", false); + desc.add("TightMatchCSC", false); + desc.add("RPChits", edm::InputTag("rpcRecHits")); +} + MuonSegmentMatcher::~MuonSegmentMatcher() {} // member functions diff --git a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterECLCC.h b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterECLCC.h index abf63c01e9531..2b6fba2c69d5c 100644 --- a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterECLCC.h +++ b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterECLCC.h @@ -1,10 +1,11 @@ #ifndef RecoParticleFlow_PFClusterProducer_plugins_alpaka_PFClusterECLCC_h #define RecoParticleFlow_PFClusterProducer_plugins_alpaka_PFClusterECLCC_h +#include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitDeviceCollection.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" -#include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusteringVarsDeviceCollection.h" #include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusteringEdgeVarsDeviceCollection.h" +#include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusteringVarsDeviceCollection.h" // The following comment block is required in using the ECL-CC algorithm for topological clustering @@ -79,9 +80,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // Initial step of ECL-CC. Uses ID of first neighbour in edgeList with a smaller ID class ECLCCInit { public: - template >> - ALPAKA_FN_ACC void operator()(const TAcc& acc, - reco::PFRecHitHostCollection::ConstView pfRecHits, + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection::View pfClusteringEdgeVars) const { const int nRH = pfRecHits.size(); @@ -103,9 +103,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // Processes vertices class ECLCCCompute1 { public: - template >> - ALPAKA_FN_ACC void operator()(const TAcc& acc, - reco::PFRecHitHostCollection::ConstView pfRecHits, + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection::View pfClusteringEdgeVars) const { const int nRH = pfRecHits.size(); @@ -148,9 +147,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { /* link all vertices to sink */ class ECLCCFlatten { public: - template >> - ALPAKA_FN_ACC void operator()(const TAcc& acc, - reco::PFRecHitHostCollection::ConstView pfRecHits, + ALPAKA_FN_ACC void operator()(Acc1D const& acc, + reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection::View pfClusteringEdgeVars) const { const int nRH = pfRecHits.size(); diff --git a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducer.cc b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducer.cc index 65c0e4f5c33f3..ac5cbe5ab6ba2 100644 --- a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducer.cc +++ b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducer.cc @@ -1,7 +1,7 @@ #include #include -#include "DataFormats/ParticleFlowReco/interface/PFRecHitHostCollection.h" +#include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitDeviceCollection.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" @@ -16,12 +16,14 @@ #include "RecoParticleFlow/PFRecHitProducer/interface/PFRecHitTopologyRecord.h" namespace ALPAKA_ACCELERATOR_NAMESPACE { + class PFClusterSoAProducer : public stream::SynchronizingEDProducer<> { public: PFClusterSoAProducer(edm::ParameterSet const& config) : pfClusParamsToken(esConsumes(config.getParameter("pfClusterParams"))), topologyToken_(esConsumes(config.getParameter("topology"))), inputPFRecHitSoA_Token_{consumes(config.getParameter("pfRecHits"))}, + inputPFRecHitNum_Token_{consumes(config.getParameter("pfRecHits"))}, outputPFClusterSoA_Token_{produces()}, outputPFRHFractionSoA_Token_{produces()}, numRHF_{cms::alpakatools::make_host_buffer()}, @@ -30,10 +32,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { void acquire(device::Event const& event, device::EventSetup const& setup) override { const reco::PFClusterParamsDeviceCollection& params = setup.getData(pfClusParamsToken); const reco::PFRecHitHCALTopologyDeviceCollection& topology = setup.getData(topologyToken_); - const reco::PFRecHitHostCollection& pfRecHits = event.get(inputPFRecHitSoA_Token_); - int nRH = 0; - if (pfRecHits->metadata().size() != 0) - nRH = pfRecHits->size(); + const reco::PFRecHitDeviceCollection& pfRecHits = event.get(inputPFRecHitSoA_Token_); + int nRH = event.get(inputPFRecHitNum_Token_); pfClusteringVars_.emplace(nRH, event.queue()); pfClusteringEdgeVars_.emplace(nRH * 8, event.queue()); @@ -42,13 +42,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { *numRHF_ = 0; if (nRH != 0) { - PFClusterProducerKernel kernel(event.queue(), pfRecHits); + PFClusterProducerKernel kernel(event.queue()); kernel.seedTopoAndContract(event.queue(), params, topology, *pfClusteringVars_, *pfClusteringEdgeVars_, pfRecHits, + nRH, *pfClusters_, numRHF_.data()); } @@ -57,23 +58,21 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { void produce(device::Event& event, device::EventSetup const& setup) override { const reco::PFClusterParamsDeviceCollection& params = setup.getData(pfClusParamsToken); const reco::PFRecHitHCALTopologyDeviceCollection& topology = setup.getData(topologyToken_); - const reco::PFRecHitHostCollection& pfRecHits = event.get(inputPFRecHitSoA_Token_); - int nRH = 0; + const reco::PFRecHitDeviceCollection& pfRecHits = event.get(inputPFRecHitSoA_Token_); std::optional pfrhFractions; - if (pfRecHits->metadata().size() != 0) - nRH = pfRecHits->size(); - + int nRH = event.get(inputPFRecHitNum_Token_); if (nRH != 0) { - pfrhFractions.emplace(*numRHF_.data(), event.queue()); - PFClusterProducerKernel kernel(event.queue(), pfRecHits); + pfrhFractions.emplace(*numRHF_, event.queue()); + PFClusterProducerKernel kernel(event.queue()); kernel.cluster(event.queue(), params, topology, *pfClusteringVars_, *pfClusteringEdgeVars_, pfRecHits, + nRH, *pfClusters_, *pfrhFractions); } else { @@ -99,7 +98,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { private: const device::ESGetToken pfClusParamsToken; const device::ESGetToken topologyToken_; - const edm::EDGetTokenT inputPFRecHitSoA_Token_; + const device::EDGetToken inputPFRecHitSoA_Token_; + const edm::EDGetTokenT inputPFRecHitNum_Token_; const device::EDPutToken outputPFClusterSoA_Token_; const device::EDPutToken outputPFRHFractionSoA_Token_; cms::alpakatools::host_buffer numRHF_; diff --git a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.dev.cc b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.dev.cc index e0c5e8d5a24fa..b9ec4e557009c 100644 --- a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.dev.cc +++ b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.dev.cc @@ -1,13 +1,12 @@ #include +#include "DataFormats/ParticleFlowReco/interface/PFLayer.h" #include "FWCore/Utilities/interface/bit_cast.h" +#include "HeterogeneousCore/AlpakaInterface/interface/atomicMaxF.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" -#include "HeterogeneousCore/AlpakaInterface/interface/atomicMaxF.h" - -#include "DataFormats/ParticleFlowReco/interface/PFLayer.h" -#include "RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.h" #include "RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterECLCC.h" +#include "RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.h" namespace ALPAKA_ACCELERATOR_NAMESPACE { @@ -1088,7 +1087,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, const reco::PFClusterParamsDeviceCollection::ConstView pfClusParams, const reco::PFRecHitHCALTopologyDeviceCollection::ConstView topology, - const reco::PFRecHitHostCollection::ConstView pfRecHits, + const reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusterDeviceCollection::View clusterView, uint32_t* __restrict__ nSeeds) const { const int nRH = pfRecHits.size(); @@ -1165,7 +1164,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { public: template >> ALPAKA_FN_ACC void operator()(const TAcc& acc, - const reco::PFRecHitHostCollection::ConstView pfRecHits, + const reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection::View pfClusteringEdgeVars, uint32_t* __restrict__ nSeeds) const { @@ -1195,7 +1194,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { public: template >> ALPAKA_FN_ACC void operator()(const TAcc& acc, - const reco::PFRecHitHostCollection::ConstView pfRecHits, + const reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, reco::PFClusterDeviceCollection::View clusterView, uint32_t* __restrict__ nSeeds, @@ -1319,7 +1318,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { public: template >> ALPAKA_FN_ACC void operator()(const TAcc& acc, - const reco::PFRecHitHostCollection::ConstView pfRecHits, + const reco::PFRecHitDeviceCollection::ConstView pfRecHits, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, reco::PFRecHitFractionDeviceCollection::View fracView) const { const int nRH = pfRecHits.size(); @@ -1350,7 +1349,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { public: template >> ALPAKA_FN_ACC void operator()(const TAcc& acc, - const reco::PFRecHitHostCollection::ConstView pfRecHits, + const reco::PFRecHitDeviceCollection::ConstView pfRecHits, const reco::PFClusterParamsDeviceCollection::ConstView pfClusParams, const reco::PFRecHitHCALTopologyDeviceCollection::ConstView topology, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, @@ -1412,7 +1411,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { public: template >> ALPAKA_FN_ACC void operator()(const TAcc& acc, - const reco::PFRecHitHostCollection::ConstView pfRecHits, + const reco::PFRecHitDeviceCollection::ConstView pfRecHits, const reco::PFClusterParamsDeviceCollection::ConstView pfClusParams, const reco::PFRecHitHCALTopologyDeviceCollection::ConstView topology, reco::PFClusteringVarsDeviceCollection::View pfClusteringVars, @@ -1454,7 +1453,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { } }; - PFClusterProducerKernel::PFClusterProducerKernel(Queue& queue, const reco::PFRecHitHostCollection& pfRecHits) + PFClusterProducerKernel::PFClusterProducerKernel(Queue& queue) : nSeeds(cms::alpakatools::make_device_buffer(queue)), globalClusterPos( cms::alpakatools::make_device_buffer(queue, blocksForExoticClusters * maxTopoInput)), @@ -1473,10 +1472,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { const reco::PFRecHitHCALTopologyDeviceCollection& topology, reco::PFClusteringVarsDeviceCollection& pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection& pfClusteringEdgeVars, - const reco::PFRecHitHostCollection& pfRecHits, + const reco::PFRecHitDeviceCollection& pfRecHits, + int nRH, reco::PFClusterDeviceCollection& pfClusters, uint32_t* __restrict__ nRHF) { - const int nRH = pfRecHits->size(); const int threadsPerBlock = 256; const int blocks = divide_up_by(nRH, threadsPerBlock); @@ -1533,11 +1532,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { const reco::PFRecHitHCALTopologyDeviceCollection& topology, reco::PFClusteringVarsDeviceCollection& pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection& pfClusteringEdgeVars, - const reco::PFRecHitHostCollection& pfRecHits, + const reco::PFRecHitDeviceCollection& pfRecHits, + int nRH, reco::PFClusterDeviceCollection& pfClusters, reco::PFRecHitFractionDeviceCollection& pfrhFractions) { - const int nRH = pfRecHits->size(); - // fillRhfIndex alpaka::exec(queue, make_workdiv({divide_up_by(nRH, 32), divide_up_by(nRH, 32)}, {32, 32}), diff --git a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.h b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.h index 32c68a64f4b24..cfc79b8d7ad69 100644 --- a/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.h +++ b/RecoParticleFlow/PFClusterProducer/plugins/alpaka/PFClusterSoAProducerKernel.h @@ -1,15 +1,14 @@ #ifndef RecoParticleFlow_PFClusterProducer_PFClusterProducerAlpakaKernel_h #define RecoParticleFlow_PFClusterProducer_PFClusterProducerAlpakaKernel_h -#include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitDeviceCollection.h" -#include "DataFormats/ParticleFlowReco/interface/PFRecHitHostCollection.h" #include "DataFormats/ParticleFlowReco/interface/alpaka/PFClusterDeviceCollection.h" +#include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitDeviceCollection.h" #include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitFractionDeviceCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusterParamsDeviceCollection.h" -#include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusteringVarsDeviceCollection.h" #include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusteringEdgeVarsDeviceCollection.h" +#include "RecoParticleFlow/PFClusterProducer/interface/alpaka/PFClusteringVarsDeviceCollection.h" #include "RecoParticleFlow/PFRecHitProducer/interface/alpaka/PFRecHitTopologyDeviceCollection.h" -#include "HeterogeneousCore/AlpakaInterface/interface/config.h" namespace ALPAKA_ACCELERATOR_NAMESPACE { @@ -37,14 +36,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class PFClusterProducerKernel { public: - PFClusterProducerKernel(Queue& queue, const reco::PFRecHitHostCollection& pfRecHits); + explicit PFClusterProducerKernel(Queue& queue); void seedTopoAndContract(Queue& queue, const reco::PFClusterParamsDeviceCollection& params, const reco::PFRecHitHCALTopologyDeviceCollection& topology, reco::PFClusteringVarsDeviceCollection& pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection& pfClusteringEdgeVars, - const reco::PFRecHitHostCollection& pfRecHits, + const reco::PFRecHitDeviceCollection& pfRecHits, + int nRH, reco::PFClusterDeviceCollection& pfClusters, uint32_t* __restrict__ nRHF); @@ -53,7 +53,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { const reco::PFRecHitHCALTopologyDeviceCollection& topology, reco::PFClusteringVarsDeviceCollection& pfClusteringVars, reco::PFClusteringEdgeVarsDeviceCollection& pfClusteringEdgeVars, - const reco::PFRecHitHostCollection& pfRecHits, + const reco::PFRecHitDeviceCollection& pfRecHits, + int nRH, reco::PFClusterDeviceCollection& pfClusters, reco::PFRecHitFractionDeviceCollection& pfrhFractions); diff --git a/RecoParticleFlow/PFClusterProducer/python/particleFlowClusterECALUncorrected_cfi.py b/RecoParticleFlow/PFClusterProducer/python/particleFlowClusterECALUncorrected_cfi.py index e86856d6a048b..42e37f7aa692d 100644 --- a/RecoParticleFlow/PFClusterProducer/python/particleFlowClusterECALUncorrected_cfi.py +++ b/RecoParticleFlow/PFClusterProducer/python/particleFlowClusterECALUncorrected_cfi.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from .particleFlowCaloResolution_cfi import _timeResolutionECALBarrel, _timeResolutionECALEndcap diff --git a/RecoParticleFlow/PFProducer/interface/PFAlgo.h b/RecoParticleFlow/PFProducer/interface/PFAlgo.h index 143d127d5082a..b87da635c90c4 100644 --- a/RecoParticleFlow/PFProducer/interface/PFAlgo.h +++ b/RecoParticleFlow/PFProducer/interface/PFAlgo.h @@ -112,10 +112,18 @@ class PFAlgo { reco::PFCandidateCollection& getCleanedCandidates() { return pfCleanedCandidates_; } /// \return the collection of candidates - reco::PFCandidateCollection makeConnectedCandidates() { return connector_.connect(*pfCandidates_); } + reco::PFCandidateCollection makeConnectedCandidates() { return connector_.connect(pfCandidates_); } friend std::ostream& operator<<(std::ostream& out, const PFAlgo& algo); + void clear() { + pfCandidates_.clear(); + pfCleanedCandidates_.clear(); + if (useVertices_) { + primaryVertex_ = decltype(primaryVertex_)(); + } + }; + private: void egammaFilters(const reco::PFBlockRef& blockref, std::vector& active, PFEGammaFilters const* pfegamma); void conversionAlgo(const edm::OwnVector& elements, std::vector& active); @@ -223,7 +231,7 @@ class PFAlgo { double nSigmaHFEM(double clusterEnergy) const; double nSigmaHFHAD(double clusterEnergy) const; - std::unique_ptr pfCandidates_; + reco::PFCandidateCollection pfCandidates_; // the post-HF-cleaned candidates reco::PFCandidateCollection pfCleanedCandidates_; diff --git a/RecoParticleFlow/PFProducer/plugins/PFProducer.cc b/RecoParticleFlow/PFProducer/plugins/PFProducer.cc index f955711853319..938bd6cdd6b42 100644 --- a/RecoParticleFlow/PFProducer/plugins/PFProducer.cc +++ b/RecoParticleFlow/PFProducer/plugins/PFProducer.cc @@ -291,8 +291,8 @@ void PFProducer::produce(Event& iEvent, const EventSetup& iSetup) { } // Write in the event - iEvent.emplace(pfCandidatesToken_, pOutputCandidateCollection); - iEvent.emplace(pfCleanedCandidatesToken_, pfAlgo_.getCleanedCandidates()); + iEvent.emplace(pfCandidatesToken_, std::move(pOutputCandidateCollection)); + iEvent.emplace(pfCleanedCandidatesToken_, std::move(pfAlgo_.getCleanedCandidates())); if (postMuonCleaning_) { auto& muAlgo = *pfAlgo_.getPFMuonAlgo(); @@ -309,6 +309,7 @@ void PFProducer::produce(Event& iEvent, const EventSetup& iSetup) { // Save added muon candidates iEvent.put(muAlgo.transferAddedMuonCandidates(), "AddedMuonsAndHadrons"); } + pfAlgo_.clear(); } void PFProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { diff --git a/RecoParticleFlow/PFProducer/src/PFAlgo.cc b/RecoParticleFlow/PFProducer/src/PFAlgo.cc index 8216bbbb91a93..dc6873c2ca59a 100644 --- a/RecoParticleFlow/PFProducer/src/PFAlgo.cc +++ b/RecoParticleFlow/PFProducer/src/PFAlgo.cc @@ -20,7 +20,7 @@ PFAlgo::PFAlgo(double nSigmaECAL, PFEnergyCalibration& calibration, PFEnergyCalibrationHF& thepfEnergyCalibrationHF, const edm::ParameterSet& pset) - : pfCandidates_(new PFCandidateCollection), + : pfCandidates_(), nSigmaECAL_(nSigmaECAL), nSigmaHCAL_(nSigmaHCAL), nSigmaHFEM_(nSigmaHFEM), @@ -131,7 +131,7 @@ void PFAlgo::reconstructParticles(const reco::PFBlockHandle& blockHandle, PFEGam auto const& blocks = *blockHandle; // reset output collection - pfCandidates_->clear(); + pfCandidates_.clear(); LogTrace("PFAlgo|reconstructParticles") << "start of function PFAlgo::reconstructParticles, blocks.size()=" << blocks.size(); @@ -207,14 +207,14 @@ void PFAlgo::reconstructParticles(const reco::PFBlockHandle& blockHandle, PFEGam } //Muon post cleaning - pfmu_->postClean(pfCandidates_.get()); + pfmu_->postClean(&pfCandidates_); //Add Missing muons if (muonHandle_.isValid()) - pfmu_->addMissingMuons(muonHandle_, pfCandidates_.get()); + pfmu_->addMissingMuons(muonHandle_, &pfCandidates_); LogTrace("PFAlgo|reconstructParticles") - << "end of function PFAlgo::reconstructParticles, pfCandidates_->size()=" << pfCandidates_->size(); + << "end of function PFAlgo::reconstructParticles, pfCandidates_.size()=" << pfCandidates_.size(); } void PFAlgo::egammaFilters(const reco::PFBlockRef& blockref, @@ -322,7 +322,7 @@ void PFAlgo::egammaFilters(const reco::PFBlockRef& blockref, LogTrace("PFAlgo|egammaFilters") << "Creating PF electron: pt=" << myPFElectron.pt() << " eta=" << myPFElectron.eta() << " phi=" << myPFElectron.phi(); - pfCandidates_->push_back(myPFElectron); + pfCandidates_.emplace_back(std::move(myPFElectron)); } else { LogTrace("PFAlgo|egammaFilters") << "PFAlgo: Electron DISCARDED, NOT SAFE FOR JETMET "; @@ -359,7 +359,7 @@ void PFAlgo::egammaFilters(const reco::PFBlockRef& blockref, } LogTrace("PFAlgo|egammaFilters") << "Creating PF photon: pt=" << myPFPhoton.pt() << " eta=" << myPFPhoton.eta() << " phi=" << myPFPhoton.phi(); - pfCandidates_->push_back(myPFPhoton); + pfCandidates_.emplace_back(std::move(myPFPhoton)); } // end isSafe } // end isGoodPhoton @@ -504,12 +504,12 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, // No ECAL cluster either ... continue... if (ecalElems.empty()) { - (*pfCandidates_)[tmpi[0]].setEcalEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setPs1Energy(0); - (*pfCandidates_)[tmpi[0]].setPs2Energy(0); - (*pfCandidates_)[tmpi[0]].addElementInBlock(blockref, kTrack[0]); + pfCandidates_[tmpi[0]].setEcalEnergy(0., 0.); + pfCandidates_[tmpi[0]].setHcalEnergy(0., 0.); + pfCandidates_[tmpi[0]].setHoEnergy(0., 0.); + pfCandidates_[tmpi[0]].setPs1Energy(0); + pfCandidates_[tmpi[0]].setPs2Energy(0); + pfCandidates_[tmpi[0]].addElementInBlock(blockref, kTrack[0]); return true; } @@ -520,12 +520,12 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, // Set ECAL energy for muons if (thisIsAMuon) { - (*pfCandidates_)[tmpi[0]].setEcalEnergy(clusterRef->energy(), std::min(clusterRef->energy(), muonECAL_[0])); - (*pfCandidates_)[tmpi[0]].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setPs1Energy(0); - (*pfCandidates_)[tmpi[0]].setPs2Energy(0); - (*pfCandidates_)[tmpi[0]].addElementInBlock(blockref, kTrack[0]); + pfCandidates_[tmpi[0]].setEcalEnergy(clusterRef->energy(), std::min(clusterRef->energy(), muonECAL_[0])); + pfCandidates_[tmpi[0]].setHcalEnergy(0., 0.); + pfCandidates_[tmpi[0]].setHoEnergy(0., 0.); + pfCandidates_[tmpi[0]].setPs1Energy(0); + pfCandidates_[tmpi[0]].setPs2Energy(0); + pfCandidates_[tmpi[0]].addElementInBlock(blockref, kTrack[0]); } double slopeEcal = 1.; @@ -550,12 +550,12 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, LogTrace("PFAlgo|recoTracksNotHCAL") << " the closest track to ECAL " << thisEcal << " is " << sortedTracks.begin()->second << " which is not the one being processed. Will skip ECAL linking for this track"; - (*pfCandidates_)[tmpi[0]].setEcalEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi[0]].setPs1Energy(0); - (*pfCandidates_)[tmpi[0]].setPs2Energy(0); - (*pfCandidates_)[tmpi[0]].addElementInBlock(blockref, kTrack[0]); + pfCandidates_[tmpi[0]].setEcalEnergy(0., 0.); + pfCandidates_[tmpi[0]].setHcalEnergy(0., 0.); + pfCandidates_[tmpi[0]].setHoEnergy(0., 0.); + pfCandidates_[tmpi[0]].setPs1Energy(0); + pfCandidates_[tmpi[0]].setPs2Energy(0); + pfCandidates_[tmpi[0]].addElementInBlock(blockref, kTrack[0]); return true; } else { LogTrace("PFAlgo|recoTracksNotHCAL") @@ -639,12 +639,12 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, active[jTrack] = false; if (thatIsAMuon) { - (*pfCandidates_)[tmpi.back()].setEcalEnergy(clusterRef->energy(), std::min(clusterRef->energy(), muonECAL_[0])); - (*pfCandidates_)[tmpi.back()].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi.back()].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi.back()].setPs1Energy(0); - (*pfCandidates_)[tmpi.back()].setPs2Energy(0); - (*pfCandidates_)[tmpi.back()].addElementInBlock(blockref, kTrack.back()); + pfCandidates_[tmpi.back()].setEcalEnergy(clusterRef->energy(), std::min(clusterRef->energy(), muonECAL_[0])); + pfCandidates_[tmpi.back()].setHcalEnergy(0., 0.); + pfCandidates_[tmpi.back()].setHoEnergy(0., 0.); + pfCandidates_[tmpi.back()].setPs1Energy(0); + pfCandidates_[tmpi.back()].setPs2Energy(0); + pfCandidates_[tmpi.back()].addElementInBlock(blockref, kTrack.back()); } } @@ -725,7 +725,7 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, std::multimap assTracks; block.associatedElements(index, linkData, assTracks, reco::PFBlockElement::TRACK, reco::PFBlock::LINKTEST_ALL); - auto& ecalCand = (*pfCandidates_)[reconstructCluster( + auto& ecalCand = pfCandidates_[reconstructCluster( *clusterRef, ecalEnergyCalibrated)]; // KH: use the PF ECAL cluster calibrated energy ecalCand.setEcalEnergy(clusterRef->energy(), ecalEnergyCalibrated); ecalCand.setHcalEnergy(0., 0.); @@ -751,7 +751,7 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, iEcal = index; active[index] = false; for (unsigned ic : tmpi) - (*pfCandidates_)[ic].addElementInBlock(blockref, iEcal); + pfCandidates_[ic].addElementInBlock(blockref, iEcal); } // Loop ecal elements @@ -802,47 +802,47 @@ bool PFAlgo::recoTracksNotHCAL(const reco::PFBlock& block, if (neutralEnergy > std::max(0.5, nSigmaECAL_ * resol)) { neutralEnergy /= slopeEcal; unsigned tmpj = reconstructCluster(*pivotalRef, neutralEnergy); - (*pfCandidates_)[tmpj].setEcalEnergy(pivotalRef->energy(), neutralEnergy); - (*pfCandidates_)[tmpj].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpj].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpj].setPs1Energy(0.); - (*pfCandidates_)[tmpj].setPs2Energy(0.); - (*pfCandidates_)[tmpj].addElementInBlock(blockref, iEcal); + pfCandidates_[tmpj].setEcalEnergy(pivotalRef->energy(), neutralEnergy); + pfCandidates_[tmpj].setHcalEnergy(0., 0.); + pfCandidates_[tmpj].setHoEnergy(0., 0.); + pfCandidates_[tmpj].setPs1Energy(0.); + pfCandidates_[tmpj].setPs2Energy(0.); + pfCandidates_[tmpj].addElementInBlock(blockref, iEcal); bNeutralProduced = true; for (unsigned ic = 0; ic < kTrack.size(); ++ic) - (*pfCandidates_)[tmpj].addElementInBlock(blockref, kTrack[ic]); + pfCandidates_[tmpj].addElementInBlock(blockref, kTrack[ic]); } // End neutral energy // Set elements in blocks and ECAL energies to all tracks for (unsigned ic = 0; ic < tmpi.size(); ++ic) { // Skip muons - if ((*pfCandidates_)[tmpi[ic]].particleId() == reco::PFCandidate::mu) + if (pfCandidates_[tmpi[ic]].particleId() == reco::PFCandidate::mu) continue; - double fraction = trackMomentum > 0 ? (*pfCandidates_)[tmpi[ic]].trackRef()->p() / trackMomentum : 0; + double fraction = trackMomentum > 0 ? pfCandidates_[tmpi[ic]].trackRef()->p() / trackMomentum : 0; double ecalCal = bNeutralProduced ? (calibEcal - neutralEnergy * slopeEcal) * fraction : calibEcal * fraction; double ecalRaw = totalEcal * fraction; LogTrace("PFAlgo|recoTracksNotHCAL") << "The fraction after photon supression is " << fraction << " calibrated ecal = " << ecalCal; - (*pfCandidates_)[tmpi[ic]].setEcalEnergy(ecalRaw, ecalCal); - (*pfCandidates_)[tmpi[ic]].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi[ic]].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi[ic]].setPs1Energy(0); - (*pfCandidates_)[tmpi[ic]].setPs2Energy(0); - (*pfCandidates_)[tmpi[ic]].addElementInBlock(blockref, kTrack[ic]); + pfCandidates_[tmpi[ic]].setEcalEnergy(ecalRaw, ecalCal); + pfCandidates_[tmpi[ic]].setHcalEnergy(0., 0.); + pfCandidates_[tmpi[ic]].setHoEnergy(0., 0.); + pfCandidates_[tmpi[ic]].setPs1Energy(0); + pfCandidates_[tmpi[ic]].setPs2Energy(0); + pfCandidates_[tmpi[ic]].addElementInBlock(blockref, kTrack[ic]); } } // End connected ECAL // Fill the element_in_block for tracks that are eventually linked to no ECAL clusters at all. for (unsigned ic = 0; ic < tmpi.size(); ++ic) { - const PFCandidate& pfc = (*pfCandidates_)[tmpi[ic]]; + const PFCandidate& pfc = pfCandidates_[tmpi[ic]]; const PFCandidate::ElementsInBlocks& eleInBlocks = pfc.elementsInBlocks(); if (eleInBlocks.empty()) { LogTrace("PFAlgo|recoTracksNotHCAL") << "Single track / Fill element in block! "; - (*pfCandidates_)[tmpi[ic]].addElementInBlock(blockref, kTrack[ic]); + pfCandidates_[tmpi[ic]].addElementInBlock(blockref, kTrack[ic]); } } LogTrace("PFAlgo|recoTracksNotHCAL") << "end of function PFAlgo::recoTracksNotHCAL"; @@ -864,7 +864,7 @@ bool PFAlgo::checkAndReconstructSecondaryInteraction(const reco::PFBlockRef& blo LogTrace("PFAlgo|elementLoop") << "Primary Track reconstructed alone"; unsigned tmpi = reconstructTrack(elements[iElement]); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iElement); + pfCandidates_[tmpi].addElementInBlock(blockref, iElement); ret = false; } } @@ -1468,12 +1468,12 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, // // Create HF candidates unsigned tmpi = reconstructCluster(*hclusterRef, energyHfEm + energyHfHad); - (*pfCandidates_)[tmpi].setHcalEnergy(uncalibratedenergyHfHad, energyHfHad); - (*pfCandidates_)[tmpi].setEcalEnergy(uncalibratedenergyHfEm, energyHfEm); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfHad); + pfCandidates_[tmpi].setHcalEnergy(uncalibratedenergyHfHad, energyHfHad); + pfCandidates_[tmpi].setEcalEnergy(uncalibratedenergyHfEm, energyHfEm); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfHad); for (auto const& hfem : sortedHfEmsActive) { unsigned iHfEm = hfem.second; - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfEm); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfEm); active[iHfEm] = false; } @@ -1487,9 +1487,9 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, double energyHfHadExcess = max(energyHfHad - totalChargedMomentum, 0.); double uncalibratedenergyHfHadExcess = energyHfHadExcess / calibFactorHfHad; unsigned tmpi = reconstructCluster(*hclusterRef, energyHfHadExcess); - (*pfCandidates_)[tmpi].setHcalEnergy(uncalibratedenergyHfHadExcess, energyHfHadExcess); - (*pfCandidates_)[tmpi].setEcalEnergy(0., 0.); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfHad); + pfCandidates_[tmpi].setHcalEnergy(uncalibratedenergyHfHadExcess, energyHfHadExcess); + pfCandidates_[tmpi].setEcalEnergy(0., 0.); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfHad); energyHfHad = max(energyHfHad - energyHfHadExcess, 0.); uncalibratedenergyHfHad = max(uncalibratedenergyHfHad - uncalibratedenergyHfHadExcess, 0.); } @@ -1529,9 +1529,9 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, double energyHfEmExcess = max(caloEnergyTmp - totalChargedMomentum, 0.); double uncalibratedenergyHfEmExcess = energyHfEmExcess / calibFactorHfEm; unsigned tmpi = reconstructCluster(*eclusterRef, energyHfEmExcess); - (*pfCandidates_)[tmpi].setEcalEnergy(uncalibratedenergyHfEmExcess, energyHfEmExcess); - (*pfCandidates_)[tmpi].setHcalEnergy(0, 0.); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfEm); + pfCandidates_[tmpi].setEcalEnergy(uncalibratedenergyHfEmExcess, energyHfEmExcess); + pfCandidates_[tmpi].setHcalEnergy(0, 0.); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfEm); energyHfEmTmp = max(energyHfEmTmp - energyHfEmExcess, 0.); uncalibratedenergyHfEmTmp = max(uncalibratedenergyHfEmTmp - uncalibratedenergyHfEmExcess, 0.); } @@ -1559,19 +1559,19 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, // unsigned tmpi = reconstructTrack(elements[iTrack]); active[iTrack] = false; - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfHad); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfHad); auto myHfEms = associatedHfEms.equal_range(iTrack); for (auto ii = myHfEms.first; ii != myHfEms.second; ++ii) { unsigned iHfEm = ii->second.second; if (active[iHfEm]) continue; - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfEm); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfEm); } double frac = 0.; if (totalChargedMomentum) frac = trackRef->p() / totalChargedMomentum; - (*pfCandidates_)[tmpi].setEcalEnergy(uncalibratedenergyHfEm * frac, energyHfEm * frac); - (*pfCandidates_)[tmpi].setHcalEnergy(uncalibratedenergyHfHad * frac, energyHfHad * frac); + pfCandidates_[tmpi].setEcalEnergy(uncalibratedenergyHfEm * frac, energyHfEm * frac); + pfCandidates_[tmpi].setHcalEnergy(uncalibratedenergyHfHad * frac, energyHfHad * frac); } // sortedTracks loop ends @@ -1595,9 +1595,9 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, uncalibratedenergyHF, eclusterRef->positionREP().Eta(), eclusterRef->positionREP().Phi()); } tmpi = reconstructCluster(*eclusterRef, energyHF); - (*pfCandidates_)[tmpi].setEcalEnergy(uncalibratedenergyHF, energyHF); - (*pfCandidates_)[tmpi].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHfEm); + pfCandidates_[tmpi].setEcalEnergy(uncalibratedenergyHF, energyHF); + pfCandidates_[tmpi].setHcalEnergy(0., 0.); + pfCandidates_[tmpi].addElementInBlock(blockref, iHfEm); active[iHfEm] = false; LogTrace("PFAlgo|createCandidatesHF") << "HF EM alone from blocks with tracks! " << energyHF; } @@ -1625,12 +1625,12 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, uncalibratedenergyHF, clusterRef->positionREP().Eta(), clusterRef->positionREP().Phi()); } tmpi = reconstructCluster(*clusterRef, energyHF); - (*pfCandidates_)[tmpi].setEcalEnergy(uncalibratedenergyHF, energyHF); - (*pfCandidates_)[tmpi].setHcalEnergy(0., 0.); - (*pfCandidates_)[tmpi].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi].setPs1Energy(0.); - (*pfCandidates_)[tmpi].setPs2Energy(0.); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, inds.hfEmIs[0]); + pfCandidates_[tmpi].setEcalEnergy(uncalibratedenergyHF, energyHF); + pfCandidates_[tmpi].setHcalEnergy(0., 0.); + pfCandidates_[tmpi].setHoEnergy(0., 0.); + pfCandidates_[tmpi].setPs1Energy(0.); + pfCandidates_[tmpi].setPs2Energy(0.); + pfCandidates_[tmpi].addElementInBlock(blockref, inds.hfEmIs[0]); LogTrace("PFAlgo|createCandidatesHF") << "HF EM alone ! " << energyHF; break; case PFLayer::HF_HAD: @@ -1642,12 +1642,12 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, uncalibratedenergyHF, clusterRef->positionREP().Eta(), clusterRef->positionREP().Phi()); } tmpi = reconstructCluster(*clusterRef, energyHF); - (*pfCandidates_)[tmpi].setHcalEnergy(uncalibratedenergyHF, energyHF); - (*pfCandidates_)[tmpi].setEcalEnergy(0., 0.); - (*pfCandidates_)[tmpi].setHoEnergy(0., 0.); - (*pfCandidates_)[tmpi].setPs1Energy(0.); - (*pfCandidates_)[tmpi].setPs2Energy(0.); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, inds.hfHadIs[0]); + pfCandidates_[tmpi].setHcalEnergy(uncalibratedenergyHF, energyHF); + pfCandidates_[tmpi].setEcalEnergy(0., 0.); + pfCandidates_[tmpi].setHoEnergy(0., 0.); + pfCandidates_[tmpi].setPs1Energy(0.); + pfCandidates_[tmpi].setPs2Energy(0.); + pfCandidates_[tmpi].addElementInBlock(blockref, inds.hfHadIs[0]); LogTrace("PFAlgo|createCandidatesHF") << "HF Had alone ! " << energyHF; break; default: @@ -1679,7 +1679,7 @@ void PFAlgo::createCandidatesHF(const reco::PFBlock& block, energyHfHad = thepfEnergyCalibrationHF_.energyEmHad( 0.0, uncalibratedenergyHfHad, c1->positionREP().Eta(), c1->positionREP().Phi()); } - auto& cand = (*pfCandidates_)[reconstructCluster(*chad, energyHfEm + energyHfHad)]; + auto& cand = pfCandidates_[reconstructCluster(*chad, energyHfEm + energyHfHad)]; cand.setEcalEnergy(uncalibratedenergyHfEm, energyHfEm); cand.setHcalEnergy(uncalibratedenergyHfHad, energyHfHad); cand.setHoEnergy(0., 0.); @@ -1843,8 +1843,8 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, unsigned tmpi = reconstructTrack(elements[iTrack]); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iTrack); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHcal); + pfCandidates_[tmpi].addElementInBlock(blockref, iTrack); + pfCandidates_[tmpi].addElementInBlock(blockref, iHcal); double muonHcal = std::min(muonHCAL_[0] + muonHCAL_[1], totalHcal); // if muon is isolated and muon momentum exceeds the calo energy, absorb the calo energy @@ -1872,7 +1872,7 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, } } - if ((pfCandidates_->back()).p() > totalCaloEnergy) + if ((pfCandidates_.back()).p() > totalCaloEnergy) letMuonEatCaloEnergy = true; } @@ -1883,14 +1883,14 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, if (!sortedEcals.empty()) { iEcal = sortedEcals.begin()->second; PFClusterRef eclusterref = elements[iEcal].clusterRef(); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iEcal); + pfCandidates_[tmpi].addElementInBlock(blockref, iEcal); muonEcal = std::min(muonECAL_[0] + muonECAL_[1], eclusterref->energy()); if (letMuonEatCaloEnergy) muonEcal = eclusterref->energy(); // If the muon expected energy accounts for the whole ecal cluster energy, lock the ecal cluster if (eclusterref->energy() - muonEcal < 0.2) active[iEcal] = false; - (*pfCandidates_)[tmpi].setEcalEnergy(eclusterref->energy(), muonEcal); + pfCandidates_[tmpi].setEcalEnergy(eclusterref->energy(), muonEcal); } unsigned iHO = 0; double muonHO = 0.; @@ -1898,20 +1898,20 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, if (!sortedHOs.empty()) { iHO = sortedHOs.begin()->second; PFClusterRef hoclusterref = elements[iHO].clusterRef(); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHO); + pfCandidates_[tmpi].addElementInBlock(blockref, iHO); muonHO = std::min(muonHO_[0] + muonHO_[1], hoclusterref->energy()); if (letMuonEatCaloEnergy) muonHO = hoclusterref->energy(); // If the muon expected energy accounts for the whole HO cluster energy, lock the HO cluster if (hoclusterref->energy() - muonHO < 0.2) active[iHO] = false; - (*pfCandidates_)[tmpi].setHcalEnergy(totalHcal, muonHcal); - (*pfCandidates_)[tmpi].setHoEnergy(hoclusterref->energy(), muonHO); + pfCandidates_[tmpi].setHcalEnergy(totalHcal, muonHcal); + pfCandidates_[tmpi].setHoEnergy(hoclusterref->energy(), muonHO); } } else { - (*pfCandidates_)[tmpi].setHcalEnergy(totalHcal, muonHcal); + pfCandidates_[tmpi].setHcalEnergy(totalHcal, muonHcal); } - setHcalDepthInfo((*pfCandidates_)[tmpi], *hclusterref); + setHcalDepthInfo(pfCandidates_[tmpi], *hclusterref); if (letMuonEatCaloEnergy) { muonHCALEnergy += totalHcal; @@ -2213,7 +2213,7 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, block.associatedElements(iTrack, linkData, sortedHOs, reco::PFBlockElement::HO, reco::PFBlock::LINKTEST_ALL); //Here allow for loose muons! - auto& muon = (*pfCandidates_)[reconstructTrack(elements[iTrack], true)]; + auto& muon = pfCandidates_[reconstructTrack(elements[iTrack], true)]; muon.addElementInBlock(blockref, iTrack); muon.addElementInBlock(blockref, iHcal); @@ -2399,15 +2399,15 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, double dp = trackRef->qoverpError() * trackMomentum * trackMomentum; unsigned tmpi = reconstructTrack(elements[iTrack]); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iTrack); - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHcal); - setHcalDepthInfo((*pfCandidates_)[tmpi], *hclusterref); + pfCandidates_[tmpi].addElementInBlock(blockref, iTrack); + pfCandidates_[tmpi].addElementInBlock(blockref, iHcal); + setHcalDepthInfo(pfCandidates_[tmpi], *hclusterref); auto myEcals = associatedEcals.equal_range(iTrack); for (auto ii = myEcals.first; ii != myEcals.second; ++ii) { unsigned iEcal = ii->second.second; if (active[iEcal]) continue; - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iEcal); + pfCandidates_[tmpi].addElementInBlock(blockref, iEcal); } if (useHO_) { @@ -2416,14 +2416,14 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, unsigned iHO = ii->second.second; if (active[iHO]) continue; - (*pfCandidates_)[tmpi].addElementInBlock(blockref, iHO); + pfCandidates_[tmpi].addElementInBlock(blockref, iHO); } } if (iTrack == corrTrack) { if (corrFact < 0.) corrFact = 0.; // protect against negative scaling - auto& candRescale = (*pfCandidates_)[tmpi]; + auto& candRescale = pfCandidates_[tmpi]; LogTrace("PFAlgo|createCandidatesHCAL") << "\tBefore rescaling: momentum " << candRescale.p() << " pT " << candRescale.pt() << " energy " << candRescale.energy() << " mass " << candRescale.mass() << std::endl @@ -2514,7 +2514,7 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, double rescaleFactor = x(i) / hcalP[i]; if (rescaleFactor < 0.) rescaleFactor = 0.; // protect against negative scaling - auto& candRescale = (*pfCandidates_)[ich]; + auto& candRescale = pfCandidates_[ich]; LogTrace("PFAlgo|createCandidatesHCAL") << "\tBefore rescaling: momentum " << candRescale.p() << " pT " << candRescale.pt() << " energy " << candRescale.energy() << " mass " << candRescale.mass() << std::endl @@ -2693,12 +2693,12 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, << "ALARM = Negative energy for iPivot=" << iPivot << ", " << particleEnergy[iPivot]; const bool useDirection = true; - auto& neutral = (*pfCandidates_)[reconstructCluster(*pivotalClusterRef[iPivot], - particleEnergy[iPivot], - useDirection, - particleDirection[iPivot].X(), - particleDirection[iPivot].Y(), - particleDirection[iPivot].Z())]; + auto& neutral = pfCandidates_[reconstructCluster(*pivotalClusterRef[iPivot], + particleEnergy[iPivot], + useDirection, + particleDirection[iPivot].X(), + particleDirection[iPivot].Y(), + particleDirection[iPivot].Z())]; neutral.setEcalEnergy(rawecalEnergy[iPivot], ecalEnergy[iPivot]); if (!useHO_) { @@ -2756,12 +2756,12 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, // not exactly equal to sum p, this is sum E double chargedHadronsTotalEnergy = 0; for (unsigned index : chargedHadronsIndices) { - reco::PFCandidate& chargedHadron = (*pfCandidates_)[index]; + reco::PFCandidate& chargedHadron = pfCandidates_[index]; chargedHadronsTotalEnergy += chargedHadron.energy(); } for (unsigned index : chargedHadronsIndices) { - reco::PFCandidate& chargedHadron = (*pfCandidates_)[index]; + reco::PFCandidate& chargedHadron = pfCandidates_[index]; float fraction = chargedHadron.energy() / chargedHadronsTotalEnergy; if (!useHO_) { @@ -2801,7 +2801,7 @@ void PFAlgo::createCandidatesHCAL(const reco::PFBlock& block, sqrt(std::get<1>(ecalSatellite.second).Mag2()) * std::get<2>( ecalSatellite.second); // KH: calibrated under the egamma hypothesis (rawEcalClusterEnergy * calibration) - auto& cand = (*pfCandidates_)[reconstructCluster(*eclusterref, ecalClusterEnergyCalibrated)]; + auto& cand = pfCandidates_[reconstructCluster(*eclusterref, ecalClusterEnergyCalibrated)]; cand.setEcalEnergy(eclusterref->energy(), ecalClusterEnergyCalibrated); cand.setHcalEnergy(0., 0.); cand.setHoEnergy(0., 0.); @@ -3002,7 +3002,7 @@ void PFAlgo::createCandidatesHCALUnlinked(const reco::PFBlock& block, -1., calibEcal, calibHcal, hclusterRef->positionREP().Eta(), hclusterRef->positionREP().Phi()); } - auto& cand = (*pfCandidates_)[reconstructCluster(*hclusterRef, calibEcal + calibHcal)]; + auto& cand = pfCandidates_[reconstructCluster(*hclusterRef, calibEcal + calibHcal)]; cand.setEcalEnergy(totalEcal, calibEcal); if (!useHO_) { @@ -3059,7 +3059,7 @@ void PFAlgo::createCandidatesECAL(const reco::PFBlock& block, // float ecalEnergy = calibration_.energyEm( clusterref->energy() ); double particleEnergy = ecalEnergy; - auto& cand = (*pfCandidates_)[reconstructCluster(*clusterref, particleEnergy)]; + auto& cand = pfCandidates_[reconstructCluster(*clusterref, particleEnergy)]; cand.setEcalEnergy(clusterref->energy(), ecalEnergy); cand.setHcalEnergy(0., 0.); @@ -3178,20 +3178,20 @@ unsigned PFAlgo::reconstructTrack(const reco::PFBlockElement& elt, bool allowLoo LogTrace("PFAlgo|reconstructTrack") << "Creating PFCandidate charge=" << charge << ", type=" << particleType << ", pt=" << momentum.pt() << ", eta=" << momentum.eta() << ", phi=" << momentum.phi(); - pfCandidates_->push_back(PFCandidate(charge, momentum, particleType)); + pfCandidates_.push_back(PFCandidate(charge, momentum, particleType)); //Set vertex and stuff like this - pfCandidates_->back().setVertex(trackRef->vertex()); - pfCandidates_->back().setTrackRef(trackRef); - pfCandidates_->back().setPositionAtECALEntrance(eltTrack->positionAtECALEntrance()); + pfCandidates_.back().setVertex(trackRef->vertex()); + pfCandidates_.back().setTrackRef(trackRef); + pfCandidates_.back().setPositionAtECALEntrance(eltTrack->positionAtECALEntrance()); if (muonRef.isNonnull()) - pfCandidates_->back().setMuonRef(muonRef); + pfCandidates_.back().setMuonRef(muonRef); //Set time if (elt.isTimeValid()) - pfCandidates_->back().setTime(elt.time(), elt.timeError()); + pfCandidates_.back().setTime(elt.time(), elt.timeError()); //OK Now try to reconstruct the particle as a muon - bool isMuon = pfmu_->reconstructMuon(pfCandidates_->back(), muonRef, allowLoose); + bool isMuon = pfmu_->reconstructMuon(pfCandidates_.back(), muonRef, allowLoose); bool isFromDisp = isFromSecInt(elt, "secondary"); if ((!isMuon) && isFromDisp) { @@ -3213,22 +3213,22 @@ unsigned PFAlgo::reconstructTrack(const reco::PFBlockElement& elt, bool allowLoo LogTrace("PFAlgo|reconstructTrack") << "Refitted px = " << px << " py = " << py << " pz = " << pz << " energy = " << energy; } - pfCandidates_->back().setFlag(reco::PFCandidate::T_FROM_DISP, true); - pfCandidates_->back().setDisplacedVertexRef( + pfCandidates_.back().setFlag(reco::PFCandidate::T_FROM_DISP, true); + pfCandidates_.back().setDisplacedVertexRef( eltTrack->displacedVertexRef(reco::PFBlockElement::T_FROM_DISP)->displacedVertexRef(), reco::PFCandidate::T_FROM_DISP); } // do not label as primary a track which would be recognised as a muon. A muon cannot produce NI. It is with high probability a fake if (isFromSecInt(elt, "primary") && !isMuon) { - pfCandidates_->back().setFlag(reco::PFCandidate::T_TO_DISP, true); - pfCandidates_->back().setDisplacedVertexRef( + pfCandidates_.back().setFlag(reco::PFCandidate::T_TO_DISP, true); + pfCandidates_.back().setDisplacedVertexRef( eltTrack->displacedVertexRef(reco::PFBlockElement::T_TO_DISP)->displacedVertexRef(), reco::PFCandidate::T_TO_DISP); } // returns index to the newly created PFCandidate - return pfCandidates_->size() - 1; + return pfCandidates_.size() - 1; } unsigned PFAlgo::reconstructCluster(const reco::PFCluster& cluster, @@ -3321,25 +3321,25 @@ unsigned PFAlgo::reconstructCluster(const reco::PFCluster& cluster, // The pf candidate LogTrace("PFAlgo|reconstructCluster") << "Creating PFCandidate charge=" << charge << ", type=" << particleType << ", pt=" << tmp.pt() << ", eta=" << tmp.eta() << ", phi=" << tmp.phi(); - pfCandidates_->push_back(PFCandidate(charge, tmp, particleType)); + pfCandidates_.push_back(PFCandidate(charge, tmp, particleType)); // The position at ECAL entrance (well: watch out, it is not true // for HCAL clusters... to be fixed) - pfCandidates_->back().setPositionAtECALEntrance( + pfCandidates_.back().setPositionAtECALEntrance( ::math::XYZPointF(cluster.position().X(), cluster.position().Y(), cluster.position().Z())); //Set the cnadidate Vertex - pfCandidates_->back().setVertex(vertexPos); + pfCandidates_.back().setVertex(vertexPos); // depth info - setHcalDepthInfo(pfCandidates_->back(), cluster); + setHcalDepthInfo(pfCandidates_.back(), cluster); //*TODO* cluster time is not reliable at the moment, so only use track timing - LogTrace("PFAlgo|reconstructCluster") << "** candidate: " << pfCandidates_->back(); + LogTrace("PFAlgo|reconstructCluster") << "** candidate: " << pfCandidates_.back(); // returns index to the newly created PFCandidate - return pfCandidates_->size() - 1; + return pfCandidates_.size() - 1; } void PFAlgo::setHcalDepthInfo(reco::PFCandidate& cand, const reco::PFCluster& cluster) const { @@ -3426,11 +3426,7 @@ ostream& operator<<(ostream& out, const PFAlgo& algo) { out << endl; out << "reconstructed particles: " << endl; - if (!algo.pfCandidates_.get()) { - out << "candidates already transfered" << endl; - return out; - } - for (auto const& c : *algo.pfCandidates_) + for (auto const& c : algo.pfCandidates_) out << c << endl; return out; @@ -3514,7 +3510,7 @@ void PFAlgo::postCleaning() { double metY = 0.; double sumet = 0; std::vector pfCandidatesToBeRemoved; - for (auto const& pfc : *pfCandidates_) { + for (auto const& pfc : pfCandidates_) { metX += pfc.px(); metY += pfc.py(); sumet += pfc.pt(); @@ -3537,8 +3533,8 @@ void PFAlgo::postCleaning() { while (next) { double metReduc = -1.; // Loop on the candidates - for (unsigned i = 0; i < pfCandidates_->size(); ++i) { - const PFCandidate& pfc = (*pfCandidates_)[i]; + for (unsigned i = 0; i < pfCandidates_.size(); ++i) { + const PFCandidate& pfc = pfCandidates_[i]; // Check that the pfCandidate is in the HF if (pfc.particleId() != reco::PFCandidate::h_HF && pfc.particleId() != reco::PFCandidate::egamma_HF) @@ -3594,11 +3590,11 @@ void PFAlgo::postCleaning() { edm::LogInfo("PFAlgo|postCleaning") << "Significance reduction = " << significance << " -> " << significanceCor << " = " << significanceCor - significance; for (unsigned int toRemove : pfCandidatesToBeRemoved) { - edm::LogInfo("PFAlgo|postCleaning") << "Removed : " << (*pfCandidates_)[toRemove]; - pfCleanedCandidates_.push_back((*pfCandidates_)[toRemove]); - (*pfCandidates_)[toRemove].rescaleMomentum(1E-6); + edm::LogInfo("PFAlgo|postCleaning") << "Removed : " << pfCandidates_[toRemove]; + pfCleanedCandidates_.push_back(pfCandidates_[toRemove]); + pfCandidates_[toRemove].rescaleMomentum(1E-6); //reco::PFCandidate::ParticleType unknown = reco::PFCandidate::X; - //(*pfCandidates_)[toRemove].setParticleType(unknown); + //pfCandidates_[toRemove].setParticleType(unknown); } } } //significance @@ -3614,7 +3610,7 @@ void PFAlgo::checkCleaning(const reco::PFRecHitCollection& cleanedHits) { double metY = 0.; double sumet = 0; std::vector hitsToBeAdded; - for (auto const& pfc : *pfCandidates_) { + for (auto const& pfc : pfCandidates_) { metX += pfc.px(); metY += pfc.py(); sumet += pfc.pt(); @@ -3695,7 +3691,7 @@ void PFAlgo::checkCleaning(const reco::PFRecHitCollection& cleanedHits) { const PFRecHit& hit = cleanedHits[hitIdx]; PFCluster cluster(hit.layer(), hit.energy(), hit.position().x(), hit.position().y(), hit.position().z()); reconstructCluster(cluster, hit.energy()); - LogTrace("PFAlgo|checkCleaning") << pfCandidates_->back() << ". time = " << hit.time(); + LogTrace("PFAlgo|checkCleaning") << pfCandidates_.back() << ". time = " << hit.time(); } } } //PFAlgo::checkCleaning diff --git a/RecoParticleFlow/PFProducer/src/PFMuonAlgo.cc b/RecoParticleFlow/PFProducer/src/PFMuonAlgo.cc index 58a4a2e6e5b26..a205ce060e49d 100644 --- a/RecoParticleFlow/PFProducer/src/PFMuonAlgo.cc +++ b/RecoParticleFlow/PFProducer/src/PFMuonAlgo.cc @@ -16,12 +16,12 @@ using namespace boost; PFMuonAlgo::PFMuonAlgo(const edm::ParameterSet& iConfig, bool postMuonCleaning) - : pfCosmicsMuonCleanedCandidates_(std::make_unique()), - pfCleanedTrackerAndGlobalMuonCandidates_(std::make_unique()), - pfFakeMuonCleanedCandidates_(std::make_unique()), - pfPunchThroughMuonCleanedCandidates_(std::make_unique()), - pfPunchThroughHadronCleanedCandidates_(std::make_unique()), - pfAddedMuonCandidates_(std::make_unique()), + : pfCosmicsMuonCleanedCandidates_(), + pfCleanedTrackerAndGlobalMuonCandidates_(), + pfFakeMuonCleanedCandidates_(), + pfPunchThroughMuonCleanedCandidates_(), + pfPunchThroughHadronCleanedCandidates_(), + pfAddedMuonCandidates_(), maxDPtOPt_(iConfig.getParameter("maxDPtOPt")), trackQuality_(reco::TrackBase::qualityByName(iConfig.getParameter("trackQuality"))), diff --git a/RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitSoAProducer.cc b/RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitSoAProducer.cc index 18c160f3cc0c1..ebaf910afd299 100644 --- a/RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitSoAProducer.cc +++ b/RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitSoAProducer.cc @@ -3,11 +3,12 @@ #include +#include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitDeviceCollection.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h" +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/stream/SynchronizingEDProducer.h" #include "RecoParticleFlow/PFRecHitProducer/interface/PFRecHitParamsRecord.h" #include "RecoParticleFlow/PFRecHitProducer/interface/PFRecHitTopologyRecord.h" @@ -18,12 +19,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { using namespace particleFlowRecHitProducer; template - class PFRecHitSoAProducer : public global::EDProducer<> { + class PFRecHitSoAProducer : public stream::SynchronizingEDProducer<> { public: PFRecHitSoAProducer(edm::ParameterSet const& config) : topologyToken_(esConsumes(config.getParameter("topology"))), pfRecHitsToken_(produces()), - synchronise_(config.getUntrackedParameter("synchronise")) { + sizeToken_(produces()), + synchronise_(config.getUntrackedParameter("synchronise")), + size_{cms::alpakatools::make_host_buffer()} { const std::vector producers = config.getParameter>("producers"); recHitsToken_.reserve(producers.size()); for (const edm::ParameterSet& producer : producers) { @@ -32,27 +35,34 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { } } - void produce(edm::StreamID, device::Event& event, const device::EventSetup& setup) const override { + void acquire(device::Event const& event, const device::EventSetup& setup) override { const typename CAL::TopologyTypeDevice& topology = setup.getData(topologyToken_); uint32_t num_recHits = 0; for (const auto& token : recHitsToken_) num_recHits += event.get(token.first)->metadata().size(); - reco::PFRecHitDeviceCollection pfRecHits{(int)num_recHits, event.queue()}; + pfRecHits_.emplace((int)num_recHits, event.queue()); + *size_ = 0; if (num_recHits != 0) { PFRecHitProducerKernel kernel{event.queue(), num_recHits}; for (const auto& token : recHitsToken_) kernel.processRecHits( - event.queue(), event.get(token.first), setup.getData(token.second), topology, pfRecHits); - kernel.associateTopologyInfo(event.queue(), topology, pfRecHits); + event.queue(), event.get(token.first), setup.getData(token.second), topology, *pfRecHits_); + kernel.associateTopologyInfo(event.queue(), topology, *pfRecHits_); + auto size_d = cms::alpakatools::make_device_view(event.queue(), pfRecHits_->view().size()); + alpaka::memcpy(event.queue(), size_, size_d); } + } + + void produce(device::Event& event, const device::EventSetup& setup) override { + event.emplace(pfRecHitsToken_, std::move(*pfRecHits_)); + event.emplace(sizeToken_, *size_); + pfRecHits_.reset(); if (synchronise_) alpaka::wait(event.queue()); - - event.emplace(pfRecHitsToken_, std::move(pfRecHits)); } static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { @@ -71,12 +81,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { } private: + // module configuration const device::ESGetToken topologyToken_; std::vector, device::ESGetToken>> recHitsToken_; const device::EDPutToken pfRecHitsToken_; + const edm::EDPutTokenT sizeToken_; const bool synchronise_; + + // data members used to communicate between acquire() and produce() + cms::alpakatools::host_buffer size_; + std::optional pfRecHits_; }; using PFRecHitSoAProducerHCAL = PFRecHitSoAProducer; diff --git a/RecoParticleFlow/PFTracking/plugins/LightPFTrackProducer.cc b/RecoParticleFlow/PFTracking/plugins/LightPFTrackProducer.cc index a3f7c905184c5..1e128b2a7a280 100644 --- a/RecoParticleFlow/PFTracking/plugins/LightPFTrackProducer.cc +++ b/RecoParticleFlow/PFTracking/plugins/LightPFTrackProducer.cc @@ -3,7 +3,9 @@ #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "MagneticField/Engine/interface/MagneticField.h" #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" #include "RecoParticleFlow/PFTracking/interface/PFTrackTransformer.h" diff --git a/RecoTauTag/Configuration/test/compareTauVariables.py b/RecoTauTag/Configuration/test/compareTauVariables.py index e117387df1a93..fdc4375cb855c 100644 --- a/RecoTauTag/Configuration/test/compareTauVariables.py +++ b/RecoTauTag/Configuration/test/compareTauVariables.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import sys import numpy as np diff --git a/RecoTauTag/RecoTau/python/tools/runTauIdMVA.py b/RecoTauTag/RecoTau/python/tools/runTauIdMVA.py index d3d0bdd1a3594..92a124d26c4a5 100644 --- a/RecoTauTag/RecoTau/python/tools/runTauIdMVA.py +++ b/RecoTauTag/RecoTau/python/tools/runTauIdMVA.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from RecoTauTag.RecoTau.TauDiscriminatorTools import noPrediscriminants from RecoTauTag.RecoTau.PATTauDiscriminationByMVAIsolationRun2_cff import patDiscriminationByIsolationMVArun2v1raw, patDiscriminationByIsolationMVArun2v1 diff --git a/RecoTracker/CkfPattern/plugins/GroupedCkfTrajectoryBuilder.cc b/RecoTracker/CkfPattern/plugins/GroupedCkfTrajectoryBuilder.cc index f21372a44826e..1ff0e980e089e 100644 --- a/RecoTracker/CkfPattern/plugins/GroupedCkfTrajectoryBuilder.cc +++ b/RecoTracker/CkfPattern/plugins/GroupedCkfTrajectoryBuilder.cc @@ -1,5 +1,6 @@ #include #include +#include #include "GroupedCkfTrajectoryBuilder.h" #include "TrajectorySegmentBuilder.h" @@ -230,7 +231,7 @@ void GroupedCkfTrajectoryBuilder::rebuildTrajectories(const TrajectorySeed& seed // better the seed to be always the same... std::shared_ptr sharedSeed; if (result.empty()) - sharedSeed.reset(new TrajectorySeed(seed)); + sharedSeed = std::make_shared(seed); else sharedSeed = result.front().sharedSeed(); diff --git a/RecoTracker/CkfPattern/src/CkfTrajectoryBuilder.cc b/RecoTracker/CkfPattern/src/CkfTrajectoryBuilder.cc index 7ee61329f57de..d016289130e7e 100644 --- a/RecoTracker/CkfPattern/src/CkfTrajectoryBuilder.cc +++ b/RecoTracker/CkfPattern/src/CkfTrajectoryBuilder.cc @@ -118,7 +118,7 @@ unsigned int CkfTrajectoryBuilder::limitedCandidates(const std::shared_ptr meas; findCompatibleMeasurements(*sharedSeed, *traj, meas); diff --git a/RecoTracker/FinalTrackSelectors/plugins/AnalyticalTrackSelector.cc b/RecoTracker/FinalTrackSelectors/plugins/AnalyticalTrackSelector.cc index 23ec80416ac60..aedf76cf9066b 100644 --- a/RecoTracker/FinalTrackSelectors/plugins/AnalyticalTrackSelector.cc +++ b/RecoTracker/FinalTrackSelectors/plugins/AnalyticalTrackSelector.cc @@ -13,20 +13,22 @@ #include #include #include -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "CommonTools/Utils/interface/StringCutObjectSelector.h" +#include "DataFormats/BeamSpot/interface/BeamSpot.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/VertexReco/interface/VertexFwd.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h" #include "DataFormats/VertexReco/interface/Vertex.h" -#include "DataFormats/BeamSpot/interface/BeamSpot.h" -#include "TrackingTools/PatternTools/interface/Trajectory.h" +#include "DataFormats/VertexReco/interface/VertexFwd.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h" -#include "CommonTools/Utils/interface/StringCutObjectSelector.h" +#include "TrackingTools/PatternTools/interface/Trajectory.h" #include "MultiTrackSelector.h" @@ -38,7 +40,9 @@ class dso_hidden AnalyticalTrackSelector final : public MultiTrackSelector { /// constructor explicit AnalyticalTrackSelector(const edm::ParameterSet& cfg); /// destructor - ~AnalyticalTrackSelector() override; + ~AnalyticalTrackSelector() override = default; + /// fillDescriptions + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: typedef math::XYZPoint Point; @@ -101,10 +105,8 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) : produces>("MVAVals"); //foward compatibility produces("MVAValues"); - useAnyMVA_ = false; forest_[0] = nullptr; - if (cfg.exists("useAnyMVA")) - useAnyMVA_ = cfg.getParameter("useAnyMVA"); + useAnyMVA_ = cfg.getParameter("useAnyMVA"); src_ = consumes(cfg.getParameter("src")); hSrc_ = consumes(cfg.getParameter("src")); @@ -146,16 +148,14 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) : min_hits_bypass_.push_back(cfg.getParameter("minHitsToBypassChecks")); max_relpterr_.push_back(cfg.getParameter("max_relpterr")); min_nhits_.push_back(cfg.getParameter("min_nhits")); - max_minMissHitOutOrIn_.push_back( - cfg.existsAs("max_minMissHitOutOrIn") ? cfg.getParameter("max_minMissHitOutOrIn") : 99); - max_lostHitFraction_.push_back( - cfg.existsAs("max_lostHitFraction") ? cfg.getParameter("max_lostHitFraction") : 1.0); + max_minMissHitOutOrIn_.push_back(cfg.getParameter("max_minMissHitOutOrIn")); + max_lostHitFraction_.push_back(cfg.getParameter("max_lostHitFraction")); min_eta_.push_back(cfg.getParameter("min_eta")); max_eta_.push_back(cfg.getParameter("max_eta")); // Flag to apply absolute cuts if no PV passes the selection applyAbsCutsIfNoPV_.push_back(cfg.getParameter("applyAbsCutsIfNoPV")); - keepAllTracks_.push_back(cfg.exists("keepAllTracks") ? cfg.getParameter("keepAllTracks") : false); + keepAllTracks_.push_back(cfg.getParameter("keepAllTracks")); setQualityBit_.push_back(false); std::string qualityStr = cfg.getParameter("qualityBit"); @@ -165,12 +165,9 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) : throw; } - if (cfg.exists("qualityBit")) { - std::string qualityStr = cfg.getParameter("qualityBit"); - if (!qualityStr.empty()) { - setQualityBit_[0] = true; - qualityToSet_[0] = TrackBase::qualityByName(cfg.getParameter("qualityBit")); - } + if (!qualityStr.empty()) { + setQualityBit_[0] = true; + qualityToSet_[0] = TrackBase::qualityByName(cfg.getParameter("qualityBit")); } if (keepAllTracks_[0] && !setQualityBit_[0]) @@ -189,19 +186,14 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) : } if (useAnyMVA_) { - bool thisMVA = false; - if (cfg.exists("useMVA")) - thisMVA = cfg.getParameter("useMVA"); + bool thisMVA = cfg.getParameter("useMVA"); useMVA_.push_back(thisMVA); if (thisMVA) { - double minVal = -1; - if (cfg.exists("minMVA")) - minVal = cfg.getParameter("minMVA"); + double minVal = cfg.getParameter("minMVA"); min_MVA_.push_back(minVal); - mvaType_.push_back(cfg.exists("mvaType") ? cfg.getParameter("mvaType") : "Detached"); - forestLabel_.push_back(cfg.exists("GBRForestLabel") ? cfg.getParameter("GBRForestLabel") - : "MVASelectorIter0"); - useMVAonly_.push_back(cfg.exists("useMVAonly") ? cfg.getParameter("useMVAonly") : false); + mvaType_.push_back(cfg.getParameter("mvaType")); + forestLabel_.push_back(cfg.getParameter("GBRForestLabel")); + useMVAonly_.push_back(cfg.getParameter("useMVAonly")); } else { min_MVA_.push_back(-9999.0); useMVAonly_.push_back(false); @@ -231,8 +223,6 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) : produces().setBranchAlias(alias + "Tracks"); } -AnalyticalTrackSelector::~AnalyticalTrackSelector() {} - void AnalyticalTrackSelector::run(edm::Event& evt, const edm::EventSetup& es) const { // storage.... std::unique_ptr selTracks_; @@ -397,6 +387,76 @@ void AnalyticalTrackSelector::run(edm::Event& evt, const edm::EventSetup& es) co } } +void AnalyticalTrackSelector::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + + desc.add("src", edm::InputTag("generalTracks")); + desc.add("keepAllTracks", false) + ->setComment("if set to true tracks failing this filter are kept in the output"); + desc.add("beamspot", edm::InputTag("offlineBeamSpot")); + + // vertex selection + desc.add("useVertices", true); + desc.add("useVtxError", false); + desc.add("vertices", edm::InputTag("firstStepPrimaryVertices")); + desc.add("vtxNumber", -1); + desc.add("vertexCut", "ndof>=2&!isFake"); + + desc.addUntracked("copyExtras", false); + desc.addUntracked("copyTrajectories", false); + desc.add("qualityBit", std::string(""))->setComment("set to ''if you don't want to set the bit"); + + // parameters for adapted optimal cuts on chi2 and primary vertex compatibility + desc.add("chi2n_no1Dmod_par", 9999.) + ->setComment("parameter for adapted optimal cuts on chi2 and primary vertex compatibility"); + desc.add("chi2n_par", 1.6) + ->setComment("parameter for adapted optimal cuts on chi2 and primary vertex compatibility"); + desc.add>("res_par", {0.003, 0.01})->setComment("default: Loose"); + desc.add>("d0_par1", {0.55, 4.0})->setComment("default: Loose"); + desc.add>("d0_par2", {0.65, 4.0})->setComment("default: Loose"); + desc.add>("dz_par1", {0.55, 4.0})->setComment("default: Loose"); + desc.add>("dz_par2", {0.45, 4.0})->setComment("default: Loose"); + desc.add("applyAdaptedPVCuts", true) + ->setComment("Boolean indicating if adapted primary vertex compatibility cuts are to be applied."); + + // Impact parameter absolute cuts. + desc.add("max_d0", 100.)->setComment("transverse impact parameter absolute cut"); + desc.add("max_z0", 100.)->setComment("longitudinal impact parameter absolute cut"); + desc.add("nSigmaZ", 4.); + + // Cuts on numbers of layers with hits/3D hits/lost hits. + desc.add("minNumberLayers", 0); + desc.add("minNumber3DLayers", 0); + desc.add("minHitsToBypassChecks", 20); + desc.add("maxNumberLostLayers", 999); + + // Absolute cuts in case of no PV. If yes, please define also max_d0NoPV and max_z0NoPV + desc.add("applyAbsCutsIfNoPV", false); + desc.add("max_d0NoPV", 100.); + desc.add("max_z0NoPV", 100.); + + // parameters for cutting on pterror/pt and number of valid hits + desc.add("max_relpterr", 9999)->setComment("parameter for cutting on pterror/pt"); + desc.add("min_nhits", 0)->setComment("parameter for cutting on number of valid hits"); + + desc.add("max_lostHitFraction", 1.0); + desc.add("max_minMissHitOutOrIn", 99); + + // parameters for cutting on eta + desc.add("max_eta", 9999.); + desc.add("min_eta", -9999.); + + // optional parameters for MVA selection + desc.add("useMVA", false); + desc.add("useAnyMVA", false); + desc.add("useMVAonly", false); + desc.add("minMVA", -1.); + desc.add("GBRForestLabel", "MVASelectorIter0"); + desc.add("mvaType", "Detached"); + + descriptions.addWithDefaultLabel(desc); +} + #include "FWCore/PluginManager/interface/ModuleDef.h" #include "FWCore/Framework/interface/MakerMacros.h" diff --git a/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc b/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc index b0cafe7ac08e8..8f567c3c5a404 100644 --- a/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc +++ b/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc @@ -20,10 +20,12 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/ESGetToken.h" #include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/Utilities/interface/thread_safety_macros.h" -#include "FWCore/Utilities/interface/ESGetToken.h" #include "RecoTracker/FinalTrackSelectors/interface/TrackAlgoPriorityOrder.h" #include "RecoTracker/Record/interface/CkfComponentsRecord.h" #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" @@ -37,6 +39,8 @@ class dso_hidden TrackListMerger : public edm::stream::EDProducer<> { void produce(edm::Event& e, const edm::EventSetup& c) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + private: void returnEmptyCollections(edm::Event& e); @@ -224,7 +228,7 @@ TrackListMerger::TrackListMerger(edm::ParameterSet const& conf) { priorityToken = esConsumes(edm::ESInputTag("", priorityName_)); if (!qualityStr.empty()) { - qualityToSet_ = reco::TrackBase::qualityByName(conf.getParameter("newQuality")); + qualityToSet_ = reco::TrackBase::qualityByName(qualityStr); } else qualityToSet_ = reco::TrackBase::undefQuality; @@ -306,6 +310,41 @@ TrackListMerger::TrackListMerger(edm::ParameterSet const& conf) { } } +void TrackListMerger::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.addUntracked("copyExtras", true); + desc.add("copyMVA", true); + desc.add("trackAlgoPriorityOrder"); + desc.add>("TrackProducers", {edm::InputTag(""), edm::InputTag("")}); + desc.add("MaxNormalizedChisq", 1000.0)->setComment("maximum chisq/dof"); + desc.add("MinPT", 0.05)->setComment("in GeV/c"); + desc.add("MinFound", 3)->setComment("minimum number of RecHits used in fit"); + desc.add("Epsilon", -0.001) + ->setComment(" minimum difference in rechit position in cm. Negative Epsilon uses sharedInput for comparison"); + desc.add("ShareFrac", 0.19) + ->setComment("minimum shared fraction to be called duplicate for tracks between collections"); + desc.add("allowFirstHitShare", true) + ->setComment("set new quality for confirmed tracks for each merged pair and then for the final pair"); + desc.add("FoundHitBonus", 5.0)->setComment("best track chosen by chi2 modified by parameters below"); + desc.add("LostHitPenalty", 5.0); + desc.add>("indivShareFrac", {1.0, 1.0}) + ->setComment("minimum shared fraction to be called duplicate"); + desc.add("newQuality", "confirmed"); + + // Correctly define the structure of the VPSet + edm::ParameterSetDescription descSetToMerge; + descSetToMerge.add>("tLists", {}); + descSetToMerge.add("pQual", false); + desc.addVPSet("setsToMerge", descSetToMerge, {}); + + desc.add>("hasSelector", {0, 0}); + desc.add>("selectedTrackQuals", {edm::InputTag(""), edm::InputTag("")}); + desc.addOptional>("mvaValueTags"); + desc.add("writeOnlyTrkQuals", false); + desc.addUntracked("makeReKeyedSeeds", false); + descriptions.add("default_trackListMerger", desc); +} + // Functions that gets called by framework every event void TrackListMerger::produce(edm::Event& e, const edm::EventSetup& es) { // extract tracker geometry diff --git a/RecoTracker/FinalTrackSelectors/python/trackListMerger_cfi.py b/RecoTracker/FinalTrackSelectors/python/trackListMerger_cfi.py index e2e2fd8f394c1..9f4d11a92f543 100644 --- a/RecoTracker/FinalTrackSelectors/python/trackListMerger_cfi.py +++ b/RecoTracker/FinalTrackSelectors/python/trackListMerger_cfi.py @@ -16,7 +16,8 @@ # # cleans and merges ctf and rs Track lists and put new list back in Event -trackListMerger = cms.EDProducer("TrackListMerger", +from RecoTracker.FinalTrackSelectors.default_trackListMerger_cfi import default_trackListMerger as _trackListMerger +trackListMerger = _trackListMerger.clone( # minimum shared fraction to be called duplicate for tracks between collections ShareFrac = cms.double(0.19), # best track chosen by chi2 modified by parameters below: diff --git a/RecoTracker/GeometryESProducer/plugins/TrackerMTDRecoGeometryESProducer.cc b/RecoTracker/GeometryESProducer/plugins/TrackerMTDRecoGeometryESProducer.cc index 12ceadaa7270a..2dcf6c90f3ffe 100644 --- a/RecoTracker/GeometryESProducer/plugins/TrackerMTDRecoGeometryESProducer.cc +++ b/RecoTracker/GeometryESProducer/plugins/TrackerMTDRecoGeometryESProducer.cc @@ -6,7 +6,7 @@ #include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "Geometry/Records/interface/TrackerTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" diff --git a/RecoTracker/IterativeTracking/python/InitialStepPreSplitting_cff.py b/RecoTracker/IterativeTracking/python/InitialStepPreSplitting_cff.py index a28f1a80d4389..4397d57b1a4eb 100644 --- a/RecoTracker/IterativeTracking/python/InitialStepPreSplitting_cff.py +++ b/RecoTracker/IterativeTracking/python/InitialStepPreSplitting_cff.py @@ -221,6 +221,12 @@ src = 'caloTowerForTrkPreSplitting', srcPVs = 'firstStepPrimaryVerticesPreSplitting' ) + +from Configuration.ProcessModifiers.hltClusterSplitting_cff import hltClusterSplitting +hltClusterSplitting.toModify(ak4CaloJetsForTrkPreSplitting, + srcPVs = 'hltPixelVertices' +) + jetsForCoreTrackingPreSplitting = jetsForCoreTracking.clone( src = 'ak4CaloJetsForTrkPreSplitting' ) @@ -233,6 +239,8 @@ cores = 'jetsForCoreTrackingPreSplitting' ) + + # Final sequence from RecoLocalTracker.SiPixelRecHits.SiPixelRecHits_cfi import siPixelRecHits from RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi import MeasurementTrackerEvent @@ -254,6 +262,21 @@ siPixelRecHits, MeasurementTrackerEvent, siPixelClusterShapeCache) + +hltClusterSplitting.toModify(siPixelClusters, + vertices = cms.InputTag("hltPixelVertices") +) + +InitialStepPreSplittingFromHLTTask = cms.Task( + caloTowerForTrkPreSplitting, + ak4CaloJetsForTrkPreSplitting, + jetsForCoreTrackingPreSplitting, + siPixelClusters, + siPixelRecHits, + MeasurementTrackerEvent, + siPixelClusterShapeCache) +hltClusterSplitting.toReplaceWith(InitialStepPreSplittingTask, InitialStepPreSplittingFromHLTTask) + InitialStepPreSplitting = cms.Sequence(InitialStepPreSplittingTask) _InitialStepPreSplittingTask_trackingPhase1 = InitialStepPreSplittingTask.copy() _InitialStepPreSplittingTask_trackingPhase1.replace(initialStepHitTripletsPreSplitting, cms.Task(initialStepHitTripletsPreSplitting,initialStepHitQuadrupletsPreSplitting)) diff --git a/RecoTracker/LST/plugins/LSTOutputConverter.cc b/RecoTracker/LST/plugins/LSTOutputConverter.cc index 0bbdd68051b87..13849e52a1209 100644 --- a/RecoTracker/LST/plugins/LSTOutputConverter.cc +++ b/RecoTracker/LST/plugins/LSTOutputConverter.cc @@ -194,8 +194,8 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet hitsForSeed.emplace_back(dynamic_cast(&hit)); nHits++; } - - seedCreator_->init(GlobalTrackingRegion(), iSetup, nullptr); + GlobalTrackingRegion region; + seedCreator_->init(region, iSetup, nullptr); seedCreator_->makeSeed(seeds, hitsForSeed); if (seeds.empty()) { edm::LogInfo("LSTOutputConverter") @@ -259,6 +259,7 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet LogDebug("LSTOutputConverter") << "done with conversion: Track candidate output size = " << outputpTC.size() << " (p* objects) + " << outputT5TC.size() << " (T5 objects)"; + std::vector outputSeedStopInfo(pixelSeeds.size()); iEvent.emplace(trajectorySeedPutToken_, std::move(outputTS)); iEvent.emplace(trajectorySeedpLSPutToken_, std::move(outputpLSTS)); iEvent.emplace(trackCandidatePutToken_, std::move(outputTC)); @@ -267,7 +268,7 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet iEvent.emplace(trackCandidateNopLSTCPutToken_, std::move(outputNopLSTC)); iEvent.emplace(trackCandidatepTTCPutToken_, std::move(outputpTTC)); iEvent.emplace(trackCandidatepLSTCPutToken_, std::move(outputpLSTC)); - iEvent.emplace(seedStopInfoPutToken_, 0U); //dummy stop info + iEvent.emplace(seedStopInfoPutToken_, std::move(outputSeedStopInfo)); //dummy stop info } DEFINE_FWK_MODULE(LSTOutputConverter); diff --git a/RecoTracker/LST/plugins/alpaka/LSTModulesDevESProducer.cc b/RecoTracker/LST/plugins/alpaka/LSTModulesDevESProducer.cc index d0e103b1e315b..7152da9ed13c7 100644 --- a/RecoTracker/LST/plugins/alpaka/LSTModulesDevESProducer.cc +++ b/RecoTracker/LST/plugins/alpaka/LSTModulesDevESProducer.cc @@ -13,16 +13,23 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { class LSTModulesDevESProducer : public ESProducer { + private: + std::string ptCutLabel_; + public: - LSTModulesDevESProducer(edm::ParameterSet const& iConfig) : ESProducer(iConfig) { setWhatProduced(this); } + LSTModulesDevESProducer(edm::ParameterSet const& iConfig) + : ESProducer(iConfig), ptCutLabel_(iConfig.getParameter("ptCutLabel")) { + setWhatProduced(this, ptCutLabel_); + } static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; + desc.add("ptCutLabel", "0.8"); descriptions.addWithDefaultLabel(desc); } std::unique_ptr> produce(TrackerRecoGeometryRecord const& iRecord) { - return lst::loadAndFillESHost(); + return lst::loadAndFillESHost(ptCutLabel_); } }; diff --git a/RecoTracker/LST/plugins/alpaka/LSTProducer.cc b/RecoTracker/LST/plugins/alpaka/LSTProducer.cc index 7eb6c57ade05c..4b83dd3693624 100644 --- a/RecoTracker/LST/plugins/alpaka/LSTProducer.cc +++ b/RecoTracker/LST/plugins/alpaka/LSTProducer.cc @@ -28,8 +28,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { LSTProducer(edm::ParameterSet const& config) : lstPixelSeedInputToken_{consumes(config.getParameter("pixelSeedInput"))}, lstPhase2OTHitsInputToken_{consumes(config.getParameter("phase2OTHitsInput"))}, - lstESToken_{esConsumes()}, + lstESToken_{esConsumes(edm::ESInputTag("", config.getParameter("ptCutLabel")))}, verbose_(config.getParameter("verbose")), + ptCut_(config.getParameter("ptCut")), nopLSDupClean_(config.getParameter("nopLSDupClean")), tcpLSTriplets_(config.getParameter("tcpLSTriplets")), lstOutputToken_{produces()} {} @@ -43,6 +44,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { lst_.run(event.queue(), verbose_, + static_cast(ptCut_), &lstESDeviceData, pixelSeeds.px(), pixelSeeds.py(), @@ -78,6 +80,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { desc.add("pixelSeedInput", edm::InputTag{"lstPixelSeedInputProducer"}); desc.add("phase2OTHitsInput", edm::InputTag{"lstPhase2OTHitsInputProducer"}); desc.add("verbose", false); + desc.add("ptCut", 0.8); + desc.add("ptCutLabel", "0.8"); desc.add("nopLSDupClean", false); desc.add("tcpLSTriplets", false); descriptions.addWithDefaultLabel(desc); @@ -87,7 +91,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { edm::EDGetTokenT lstPixelSeedInputToken_; edm::EDGetTokenT lstPhase2OTHitsInputToken_; device::ESGetToken, TrackerRecoGeometryRecord> lstESToken_; - const bool verbose_, nopLSDupClean_, tcpLSTriplets_; + const bool verbose_; + const double ptCut_; + const bool nopLSDupClean_; + const bool tcpLSTriplets_; edm::EDPutTokenT lstOutputToken_; lst::LST lst_; diff --git a/RecoTracker/LSTCore/BuildFile.xml b/RecoTracker/LSTCore/BuildFile.xml index a58a1898046ae..df9ca5e7c34bb 100644 --- a/RecoTracker/LSTCore/BuildFile.xml +++ b/RecoTracker/LSTCore/BuildFile.xml @@ -1,9 +1,8 @@ + - - diff --git a/RecoTracker/LSTCore/interface/Common.h b/RecoTracker/LSTCore/interface/Common.h index f65ca7a50d867..5f96da2773f15 100644 --- a/RecoTracker/LSTCore/interface/Common.h +++ b/RecoTracker/LSTCore/interface/Common.h @@ -1,8 +1,8 @@ #ifndef RecoTracker_LSTCore_interface_Common_h #define RecoTracker_LSTCore_interface_Common_h -#include "HeterogeneousCore/AlpakaInterface/interface/config.h" #include "DataFormats/Common/interface/StdArray.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" #if defined(FP16_Base) #if defined ALPAKA_ACC_GPU_CUDA_ENABLED @@ -20,23 +20,18 @@ namespace lst { // Named types for LST objects enum LSTObjType { T5 = 4, pT3 = 5, pT5 = 7, pLS = 8 }; -// If a compile time flag does not define PT_CUT, default to 0.8 (GeV) -#ifndef PT_CUT - constexpr float PT_CUT = 0.8f; -#endif - constexpr unsigned int max_blocks = 80; constexpr unsigned int max_connected_modules = 40; - constexpr unsigned int n_max_pixel_segments_per_module = 50000; + constexpr unsigned int n_max_pixel_segments_per_module = 500000; constexpr unsigned int n_max_pixel_md_per_modules = 2 * n_max_pixel_segments_per_module; constexpr unsigned int n_max_pixel_triplets = 5000; constexpr unsigned int n_max_pixel_quintuplets = 15000; - constexpr unsigned int n_max_pixel_track_candidates = 30000; - constexpr unsigned int n_max_nonpixel_track_candidates = 1000; + constexpr unsigned int n_max_pixel_track_candidates = 300000; + constexpr unsigned int n_max_nonpixel_track_candidates = 10000; constexpr unsigned int size_superbins = 45000; diff --git a/RecoTracker/LSTCore/interface/LSTESData.h b/RecoTracker/LSTCore/interface/LSTESData.h index 45887d3cb1fea..bfa10186f8f2e 100644 --- a/RecoTracker/LSTCore/interface/LSTESData.h +++ b/RecoTracker/LSTCore/interface/LSTESData.h @@ -40,7 +40,7 @@ namespace lst { pixelMapping(pixelMappingIn) {} }; - std::unique_ptr> loadAndFillESHost(); + std::unique_ptr> loadAndFillESHost(std::string& ptCutLabel); } // namespace lst diff --git a/RecoTracker/LSTCore/interface/QuintupletsSoA.h b/RecoTracker/LSTCore/interface/QuintupletsSoA.h index 4ece80cd11ddd..3a76b3a26c893 100644 --- a/RecoTracker/LSTCore/interface/QuintupletsSoA.h +++ b/RecoTracker/LSTCore/interface/QuintupletsSoA.h @@ -24,11 +24,13 @@ namespace lst { SOA_COLUMN(bool, tightCutFlag), // tight pass to be a TC SOA_COLUMN(bool, partOfPT5), SOA_COLUMN(float, regressionRadius), - SOA_COLUMN(float, regressionG), - SOA_COLUMN(float, regressionF), + SOA_COLUMN(float, regressionCenterX), + SOA_COLUMN(float, regressionCenterY), SOA_COLUMN(float, rzChiSquared), // r-z only chi2 SOA_COLUMN(float, chiSquared), - SOA_COLUMN(float, nonAnchorChiSquared)); + SOA_COLUMN(float, nonAnchorChiSquared), + SOA_COLUMN(float, dBeta1), + SOA_COLUMN(float, dBeta2)); using QuintupletsSoA = QuintupletsSoALayout<>; using Quintuplets = QuintupletsSoA::View; diff --git a/RecoTracker/LSTCore/interface/alpaka/Common.h b/RecoTracker/LSTCore/interface/alpaka/Common.h index 7a1feabfcf076..16e53e7bfe099 100644 --- a/RecoTracker/LSTCore/interface/alpaka/Common.h +++ b/RecoTracker/LSTCore/interface/alpaka/Common.h @@ -3,6 +3,7 @@ #include +#include "FWCore/MessageLogger/interface/MessageLogger.h" #include "RecoTracker/LSTCore/interface/Common.h" namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { @@ -11,6 +12,11 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { Vec3D constexpr elementsPerThread(Vec3D::all(static_cast(1))); + ALPAKA_FN_HOST ALPAKA_FN_INLINE void lstWarning(std::string warning) { + edm::LogWarning("LST") << warning; + return; + } + // Adjust grid and block sizes based on backend configuration template > ALPAKA_FN_HOST ALPAKA_FN_INLINE WorkDiv createWorkDiv(const Vec& blocksPerGrid, @@ -49,7 +55,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float k2Rinv1GeVf = (2.99792458e-3 * 3.8) / 2; ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kR1GeVf = 1. / (2.99792458e-3 * 3.8); ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kSinAlphaMax = 0.95; - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float ptCut = PT_CUT; ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kDeltaZLum = 15.0; ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kPixelPSZpitch = 0.15; ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kStripPSZpitch = 2.4; @@ -60,22 +65,27 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { // To be updated with std::numeric_limits::infinity() in the code and data files ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kVerticalModuleSlope = 123456789.0; - namespace t5dnn { - - // Working points matching LST fake rate (43.9%) or signal acceptance (82.0%) - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kLSTWp1 = 0.3418833f; // 94.0% TPR, 43.9% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kLSTWp2 = 0.6177366f; // 82.0% TPR, 20.0% FPR - // Other working points - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp70 = 0.7776195f; // 70.0% TPR, 10.0% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp75 = 0.7181118f; // 75.0% TPR, 13.5% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp80 = 0.6492643f; // 80.0% TPR, 17.9% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp85 = 0.5655319f; // 85.0% TPR, 23.8% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp90 = 0.4592205f; // 90.0% TPR, 32.6% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp95 = 0.3073708f; // 95.0% TPR, 47.7% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp97p5 = 0.2001348f; // 97.5% TPR, 61.2% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp99 = 0.1120605f; // 99.0% TPR, 75.9% FPR - ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp99p9 = 0.0218196f; // 99.9% TPR, 95.4% FPR + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kMiniDeltaTilted[3] = {0.26f, 0.26f, 0.26f}; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kMiniDeltaFlat[6] = {0.26f, 0.16f, 0.16f, 0.18f, 0.18f, 0.18f}; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kMiniDeltaLooseTilted[3] = {0.4f, 0.4f, 0.4f}; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kMiniDeltaEndcap[5][15] = { + {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, + {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, + {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, + {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, + {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}}; + namespace t5dnn { + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kZ_max = 267.2349854f; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kR_max = 110.1099396f; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kEta_norm = 2.5f; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kPhi_norm = kPi; + // pt, eta binned + constexpr unsigned int kPtBins = 2; + constexpr unsigned int kEtaBins = 10; + ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kWp[kPtBins][kEtaBins] = { + {0.4493, 0.4939, 0.5715, 0.6488, 0.5709, 0.5938, 0.7164, 0.7565, 0.8103, 0.8593}, + {0.4488, 0.4448, 0.5067, 0.5929, 0.4836, 0.4112, 0.4968, 0.4403, 0.5597, 0.5067}}; } // namespace t5dnn } // namespace ALPAKA_ACCELERATOR_NAMESPACE::lst diff --git a/RecoTracker/LSTCore/interface/alpaka/LST.h b/RecoTracker/LSTCore/interface/alpaka/LST.h index 40d912de3f291..5fe369b9cd22b 100644 --- a/RecoTracker/LSTCore/interface/alpaka/LST.h +++ b/RecoTracker/LSTCore/interface/alpaka/LST.h @@ -17,6 +17,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { void run(Queue& queue, bool verbose, + const float ptCut, LSTESData const* deviceESData, std::vector const& see_px, std::vector const& see_py, @@ -63,7 +64,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { std::vector const& ph2_detId, std::vector const& ph2_x, std::vector const& ph2_y, - std::vector const& ph2_z); + std::vector const& ph2_z, + const float ptCut); void getOutput(LSTEvent& event); diff --git a/RecoTracker/LSTCore/src/LSTESData.cc b/RecoTracker/LSTCore/src/LSTESData.cc index 66163d39beb2e..dad8522bbe2cd 100644 --- a/RecoTracker/LSTCore/src/LSTESData.cc +++ b/RecoTracker/LSTCore/src/LSTESData.cc @@ -10,25 +10,25 @@ namespace { std::string geometryDataDir() { - const char* path_lst_base = std::getenv("LST_BASE"); + std::string path_str, path; const char* path_tracklooperdir = std::getenv("TRACKLOOPERDIR"); - std::string path_str; - if (path_lst_base != nullptr) { - path_str = path_lst_base; - } else if (path_tracklooperdir != nullptr) { + std::stringstream search_path; + search_path << std::getenv("CMSSW_SEARCH_PATH"); + + while (std::getline(search_path, path, ':')) { + if (std::filesystem::exists(path + "/RecoTracker/LSTCore/data")) { + path_str = path; + break; + } + } + + if (path_str.empty()) { path_str = path_tracklooperdir; - path_str += "/../"; + path_str += "/.."; } else { - std::stringstream search_path(std::getenv("CMSSW_SEARCH_PATH")); - std::string path; - while (std::getline(search_path, path, ':')) { - if (std::filesystem::exists(path + "/RecoTracker/LSTCore/data")) { - path_str = path; - break; - } - } path_str += "/RecoTracker/LSTCore"; } + return path_str; } @@ -43,21 +43,22 @@ namespace { void loadMapsHost(lst::MapPLStoLayer& pLStoLayer, lst::EndcapGeometry& endcapGeometry, lst::TiltedGeometry& tiltedGeometry, - lst::ModuleConnectionMap& moduleConnectionMap) { + lst::ModuleConnectionMap& moduleConnectionMap, + std::string& ptCutLabel) { // Module orientation information (DrDz or phi angles) - auto endcap_geom = - get_absolute_path_after_check_file_exists(geometryDataDir() + "/data/OT800_IT615_pt0.8/endcap_orientation.bin"); - auto tilted_geom = get_absolute_path_after_check_file_exists( - geometryDataDir() + "/data/OT800_IT615_pt0.8/tilted_barrel_orientation.bin"); + auto endcap_geom = get_absolute_path_after_check_file_exists(geometryDataDir() + "/data/OT800_IT615_pt" + + ptCutLabel + "/endcap_orientation.bin"); + auto tilted_geom = get_absolute_path_after_check_file_exists(geometryDataDir() + "/data/OT800_IT615_pt" + + ptCutLabel + "/tilted_barrel_orientation.bin"); // Module connection map (for line segment building) - auto mappath = get_absolute_path_after_check_file_exists( - geometryDataDir() + "/data/OT800_IT615_pt0.8/module_connection_tracing_merged.bin"); + auto mappath = get_absolute_path_after_check_file_exists(geometryDataDir() + "/data/OT800_IT615_pt" + ptCutLabel + + "/module_connection_tracing_merged.bin"); endcapGeometry.load(endcap_geom); tiltedGeometry.load(tilted_geom); moduleConnectionMap.load(mappath); - auto pLSMapDir = geometryDataDir() + "/data/OT800_IT615_pt0.8/pixelmap/pLS_map"; + auto pLSMapDir = geometryDataDir() + "/data/OT800_IT615_pt" + ptCutLabel + "/pixelmap/pLS_map"; const std::array connects{ {"_layer1_subdet5", "_layer2_subdet5", "_layer1_subdet4", "_layer2_subdet4"}}; std::string path; @@ -78,7 +79,7 @@ namespace { } } // namespace -std::unique_ptr> lst::loadAndFillESHost() { +std::unique_ptr> lst::loadAndFillESHost(std::string& ptCutLabel) { uint16_t nModules; uint16_t nLowerModules; unsigned int nPixels; @@ -87,7 +88,7 @@ std::unique_ptr> lst::loadAndFillESHost() TiltedGeometry tiltedGeometry; PixelMap pixelMapping; ModuleConnectionMap moduleConnectionMap; - ::loadMapsHost(pLStoLayer, endcapGeometry, tiltedGeometry, moduleConnectionMap); + ::loadMapsHost(pLStoLayer, endcapGeometry, tiltedGeometry, moduleConnectionMap, ptCutLabel); auto endcapGeometryDev = std::make_shared(endcapGeometry.nEndCapMap, cms::alpakatools::host()); @@ -98,8 +99,8 @@ std::unique_ptr> lst::loadAndFillESHost() endcapGeometry.geoMapPhi_buf.data(), endcapGeometry.nEndCapMap * sizeof(float)); - auto path = - get_absolute_path_after_check_file_exists(geometryDataDir() + "/data/OT800_IT615_pt0.8/sensor_centroids.bin"); + auto path = get_absolute_path_after_check_file_exists(geometryDataDir() + "/data/OT800_IT615_pt" + ptCutLabel + + "/sensor_centroids.bin"); auto modulesBuffers = lst::loadModulesFromFile(pLStoLayer, path.c_str(), nModules, diff --git a/RecoTracker/LSTCore/src/ModuleMethods.h b/RecoTracker/LSTCore/src/ModuleMethods.h index d2cf81be21d02..13421dbd7e011 100644 --- a/RecoTracker/LSTCore/src/ModuleMethods.h +++ b/RecoTracker/LSTCore/src/ModuleMethods.h @@ -334,9 +334,8 @@ namespace lst { host_moduleType[index] = (m_t == 25 ? lst::TwoS : lst::PS); host_moduleLayerType[index] = (m_t == 23 ? lst::Pixel : lst::Strip); - if (host_moduleType[index] == lst::PS and host_moduleLayerType[index] == lst::Pixel) { - host_isAnchor[index] = true; - } else if (host_moduleType[index] == lst::TwoS and host_isLower[index]) { + if ((host_moduleType[index] == lst::PS and host_moduleLayerType[index] == lst::Pixel) || + (host_moduleType[index] == lst::TwoS and host_isLower[index])) { host_isAnchor[index] = true; } else { host_isAnchor[index] = false; diff --git a/RecoTracker/LSTCore/src/alpaka/Hit.h b/RecoTracker/LSTCore/src/alpaka/Hit.h index 166be95cb432f..e5d3eb4226abc 100644 --- a/RecoTracker/LSTCore/src/alpaka/Hit.h +++ b/RecoTracker/LSTCore/src/alpaka/Hit.h @@ -56,27 +56,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { return dPhi; } - ALPAKA_FN_HOST_ACC ALPAKA_FN_INLINE int binary_search(const unsigned int* data, // Array that we are searching over - unsigned int search_val, // Value we want to find in data array - unsigned int ndata) // Number of elements in data array - { - unsigned int low = 0; - unsigned int high = ndata - 1; - - while (low <= high) { - unsigned int mid = (low + high) / 2; - unsigned int test_val = data[mid]; - if (test_val == search_val) - return mid; - else if (test_val > search_val) - high = mid - 1; - else - low = mid + 1; - } - // Couldn't find search value in array. - return -1; - } - struct ModuleRangesKernel { template ALPAKA_FN_ACC void operator()(TAcc const& acc, @@ -129,13 +108,19 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { ((ihit_z > 0) - (ihit_z < 0)) * alpaka::math::acosh( acc, alpaka::math::sqrt(acc, ihit_x * ihit_x + ihit_y * ihit_y + ihit_z * ihit_z) / hits.rts()[ihit]); - int found_index = binary_search(modules.mapdetId(), iDetId, nModules); + auto found_pointer = std::lower_bound(modules.mapdetId(), modules.mapdetId() + nModules, iDetId); + int found_index = std::distance(modules.mapdetId(), found_pointer); + if (found_pointer == modules.mapdetId() + nModules) + found_index = -1; uint16_t lastModuleIndex = modules.mapIdx()[found_index]; hits.moduleIndices()[ihit] = lastModuleIndex; if (modules.subdets()[lastModuleIndex] == Endcap && modules.moduleType()[lastModuleIndex] == TwoS) { - found_index = binary_search(geoMapDetId, iDetId, nEndCapMap); + found_pointer = std::lower_bound(geoMapDetId, geoMapDetId + nEndCapMap, iDetId); + found_index = std::distance(geoMapDetId, found_pointer); + if (found_pointer == geoMapDetId + nEndCapMap) + found_index = -1; float phi = geoMapPhi[found_index]; float cos_phi = alpaka::math::cos(acc, phi); hits.highEdgeXs()[ihit] = ihit_x + 2.5f * cos_phi; diff --git a/RecoTracker/LSTCore/src/alpaka/Kernels.h b/RecoTracker/LSTCore/src/alpaka/Kernels.h index c642f2427fa84..13d0d2b0e1202 100644 --- a/RecoTracker/LSTCore/src/alpaka/Kernels.h +++ b/RecoTracker/LSTCore/src/alpaka/Kernels.h @@ -217,15 +217,22 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { for (unsigned int ix1 = 0; ix1 < nQuintuplets_lowmod1; ix1 += 1) { unsigned int ix = quintupletModuleIndices_lowmod1 + ix1; - if (quintuplets.partOfPT5()[ix] || (quintuplets.isDup()[ix] & 1)) + if (quintuplets.isDup()[ix] & 1) continue; + bool isPT5_ix = quintuplets.partOfPT5()[ix]; + for (unsigned int jx1 = 0; jx1 < nQuintuplets_lowmod2; jx1++) { unsigned int jx = quintupletModuleIndices_lowmod2 + jx1; if (ix == jx) continue; - if (quintuplets.partOfPT5()[jx] || (quintuplets.isDup()[jx] & 1)) + if (quintuplets.isDup()[jx] & 1) + continue; + + bool isPT5_jx = quintuplets.partOfPT5()[jx]; + + if (isPT5_ix && isPT5_jx) continue; float eta1 = __H2F(quintuplets.eta()[ix]); @@ -249,9 +256,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { int nMatched = checkHitsT5(ix, jx, quintuplets); const int minNHitsForDup_T5 = 5; if (dR2 < 0.001f || nMatched >= minNHitsForDup_T5) { - if (score_rphisum1 > score_rphisum2) { + if (isPT5_jx || score_rphisum1 > score_rphisum2) { rmQuintupletFromMemory(quintuplets, ix, true); - } else if (score_rphisum1 < score_rphisum2) { + } else if (isPT5_ix || score_rphisum1 < score_rphisum2) { rmQuintupletFromMemory(quintuplets, jx, true); } else { rmQuintupletFromMemory(quintuplets, (ix < jx ? ix : jx), true); diff --git a/RecoTracker/LSTCore/src/alpaka/LST.cc b/RecoTracker/LSTCore/src/alpaka/LST.cc index 3c1638677eab2..b2fe87e3a2917 100644 --- a/RecoTracker/LSTCore/src/alpaka/LST.cc +++ b/RecoTracker/LSTCore/src/alpaka/LST.cc @@ -75,7 +75,8 @@ void LST::prepareInput(std::vector const& see_px, std::vector const& ph2_detId, std::vector const& ph2_x, std::vector const& ph2_y, - std::vector const& ph2_z) { + std::vector const& ph2_z, + float const ptCut) { in_trkX_.clear(); in_trkY_.clear(); in_trkZ_.clear(); @@ -132,7 +133,7 @@ void LST::prepareInput(std::vector const& see_px, float eta = p3LH.eta(); float ptErr = see_ptErr[iSeed]; - if ((ptIn > 0.8 - 2 * ptErr)) { + if ((ptIn > ptCut - 2 * ptErr)) { XYZVector r3LH(see_stateTrajGlbX[iSeed], see_stateTrajGlbY[iSeed], see_stateTrajGlbZ[iSeed]); XYZVector p3PCA(see_px[iSeed], see_py[iSeed], see_pz[iSeed]); XYZVector r3PCA(calculateR3FromPCA(p3PCA, see_dxy[iSeed], see_dz[iSeed])); @@ -149,7 +150,7 @@ void LST::prepareInput(std::vector const& see_px, if (ptIn >= 2.0) pixtype = PixelType::kHighPt; - else if (ptIn >= (0.8 - 2 * ptErr) and ptIn < 2.0) { + else if (ptIn >= (ptCut - 2 * ptErr) and ptIn < 2.0) { if (pixelSegmentDeltaPhiChange >= 0) pixtype = PixelType::kLowPtPosCurv; else @@ -255,6 +256,7 @@ void LST::getOutput(LSTEvent& event) { void LST::run(Queue& queue, bool verbose, + float const ptCut, LSTESData const* deviceESData, std::vector const& see_px, std::vector const& see_py, @@ -277,7 +279,7 @@ void LST::run(Queue& queue, std::vector const& ph2_z, bool no_pls_dupclean, bool tc_pls_triplets) { - auto event = LSTEvent(verbose, queue, deviceESData); + auto event = LSTEvent(verbose, ptCut, queue, deviceESData); prepareInput(see_px, see_py, see_pz, @@ -296,7 +298,8 @@ void LST::run(Queue& queue, ph2_detId, ph2_x, ph2_y, - ph2_z); + ph2_z, + ptCut); event.addHitToEvent(in_trkX_, in_trkY_, in_trkZ_, in_hitId_, in_hitIdxs_); event.addPixelSegmentToEvent(in_hitIndices_vec0_, diff --git a/RecoTracker/LSTCore/src/alpaka/LSTEvent.dev.cc b/RecoTracker/LSTCore/src/alpaka/LSTEvent.dev.cc index be6c2b88b73c8..8de38b530f93e 100644 --- a/RecoTracker/LSTCore/src/alpaka/LSTEvent.dev.cc +++ b/RecoTracker/LSTCore/src/alpaka/LSTEvent.dev.cc @@ -173,11 +173,12 @@ void LSTEvent::addPixelSegmentToEvent(std::vector const& hitIndice unsigned int size = ptIn.size(); if (size > n_max_pixel_segments_per_module) { - printf( - "*********************************************************\n" - "* Warning: Pixel line segments will be truncated. *\n" - "* You need to increase n_max_pixel_segments_per_module. *\n" - "*********************************************************\n"); + lstWarning( + "\ + *********************************************************\n\ + * Warning: Pixel line segments will be truncated. *\n\ + * You need to increase n_max_pixel_segments_per_module. *\n\ + *********************************************************"); size = n_max_pixel_segments_per_module; } @@ -202,7 +203,8 @@ void LSTEvent::addPixelSegmentToEvent(std::vector const& hitIndice createMDArrayRangesGPU_workDiv, CreateMDArrayRangesGPU{}, modules_.const_view(), - rangesDC_->view()); + rangesDC_->view(), + ptCut_); auto nTotalMDs_buf_h = cms::alpakatools::make_host_buffer(queue_); auto nTotalMDs_buf_d = cms::alpakatools::make_device_view(queue_, rangesOccupancy.nTotalMDs()); @@ -233,7 +235,8 @@ void LSTEvent::addPixelSegmentToEvent(std::vector const& hitIndice CreateSegmentArrayRanges{}, modules_.const_view(), rangesDC_->view(), - miniDoubletsDC_->const_view()); + miniDoubletsDC_->const_view(), + ptCut_); auto rangesOccupancy = rangesDC_->view(); auto nTotalSegments_view_h = cms::alpakatools::make_host_view(nTotalSegments_); @@ -346,7 +349,8 @@ void LSTEvent::createMiniDoublets() { createMDArrayRangesGPU_workDiv, CreateMDArrayRangesGPU{}, modules_.const_view(), - rangesDC_->view()); + rangesDC_->view(), + ptCut_); auto nTotalMDs_buf_h = cms::alpakatools::make_host_buffer(queue_); auto nTotalMDs_buf_d = cms::alpakatools::make_device_view(queue_, rangesOccupancy.nTotalMDs()); @@ -381,7 +385,8 @@ void LSTEvent::createMiniDoublets() { hitsDC_->const_view(), miniDoubletsDC_->view(), miniDoubletsDC_->view(), - rangesDC_->const_view()); + rangesDC_->const_view(), + ptCut_); WorkDiv1D const addMiniDoubletRangesToEventExplicit_workDiv = createWorkDiv({1}, {1024}, {1}); @@ -427,7 +432,8 @@ void LSTEvent::createSegmentsWithModuleMap() { miniDoubletsDC_->const_view(), segmentsDC_->view(), segmentsDC_->view(), - rangesDC_->const_view()); + rangesDC_->const_view(), + ptCut_); WorkDiv1D const addSegmentRangesToEventExplicit_workDiv = createWorkDiv({1}, {1024}, {1}); @@ -452,7 +458,8 @@ void LSTEvent::createTriplets() { CreateTripletArrayRanges{}, modules_.const_view(), rangesDC_->view(), - segmentsDC_->const_view()); + segmentsDC_->const_view(), + ptCut_); // TODO: Why are we pulling this back down only to put it back on the device in a new struct? auto rangesOccupancy = rangesDC_->view(); @@ -537,7 +544,8 @@ void LSTEvent::createTriplets() { tripletsDC_->view(), rangesDC_->const_view(), index_gpu_buf.data(), - nonZeroModules); + nonZeroModules, + ptCut_); WorkDiv1D const addTripletRangesToEventExplicit_workDiv = createWorkDiv({1}, {1024}, {1}); @@ -707,12 +715,13 @@ void LSTEvent::createTrackCandidates(bool no_pls_dupclean, bool tc_pls_triplets) auto nTrackCandidatesT5 = *nTrackCanT5Host_buf.data(); if ((nTrackCandidatespT5 + nTrackCandidatespT3 + nTrackCandidatespLS == n_max_pixel_track_candidates) || (nTrackCandidatesT5 == n_max_nonpixel_track_candidates)) { - printf( - "****************************************************************************************************\n" - "* Warning: Track candidates were possibly truncated. *\n" - "* You may need to increase either n_max_pixel_track_candidates or n_max_nonpixel_track_candidates. *\n" - "* Run the code with the WARNINGS flag activated for more details. *\n" - "****************************************************************************************************\n"); + lstWarning( + "\ + ****************************************************************************************************\n\ + * Track candidates were possibly truncated. *\n\ + * You may need to increase either n_max_pixel_track_candidates or n_max_nonpixel_track_candidates. *\n\ + * Run the code with the WARNINGS flag activated for more details. *\n\ + ****************************************************************************************************"); } } @@ -822,7 +831,8 @@ void LSTEvent::createPixelTriplets() { pixelTripletsDC_->view(), connectedPixelSize_dev_buf.data(), connectedPixelIndex_dev_buf.data(), - nInnerSegments); + nInnerSegments, + ptCut_); #ifdef WARNINGS auto nPixelTriplets_buf = cms::alpakatools::make_host_buffer(queue_); @@ -853,7 +863,8 @@ void LSTEvent::createQuintuplets() { CreateEligibleModulesListForQuintuplets{}, modules_.const_view(), tripletsDC_->const_view(), - rangesDC_->view()); + rangesDC_->view(), + ptCut_); auto nEligibleT5Modules_buf = cms::alpakatools::make_host_buffer(queue_); auto nTotalQuintuplets_buf = cms::alpakatools::make_host_buffer(queue_); @@ -904,7 +915,8 @@ void LSTEvent::createQuintuplets() { quintupletsDC_->view(), quintupletsDC_->view(), rangesDC_->const_view(), - nEligibleT5Modules); + nEligibleT5Modules, + ptCut_); Vec3D const threadsPerBlockDupQuint{1, 16, 16}; Vec3D const blocksPerGridDupQuint{max_blocks, 1, 1}; @@ -1065,7 +1077,8 @@ void LSTEvent::createPixelQuintuplets() { connectedPixelSize_dev_buf.data(), connectedPixelIndex_dev_buf.data(), nInnerSegments, - rangesDC_->const_view()); + rangesDC_->const_view(), + ptCut_); Vec3D const threadsPerBlockDupPix{1, 16, 16}; Vec3D const blocksPerGridDupPix{1, max_blocks, 1}; @@ -1191,8 +1204,9 @@ void LSTEvent::addQuintupletsToEventExplicit() { // FIXME: replace by ES host data auto module_subdets_buf = cms::alpakatools::make_host_buffer(queue_, nLowerModules_); - auto module_subdets_view = cms::alpakatools::make_device_view(queue_, modules.subdets(), modules.metadata().size()); - alpaka::memcpy(queue_, module_subdets_buf, module_subdets_view, nModules_); + auto module_subdets_view = + cms::alpakatools::make_device_view(queue_, modules.subdets(), nLowerModules_); // only lower modules + alpaka::memcpy(queue_, module_subdets_buf, module_subdets_view, nLowerModules_); auto module_layers_buf = cms::alpakatools::make_host_buffer(queue_, nLowerModules_); auto module_layers_view = @@ -1271,13 +1285,6 @@ unsigned int LSTEvent::getNumberOfMiniDoublets() { return miniDoublets; } -unsigned int LSTEvent::getNumberOfMiniDoubletsByLayer(unsigned int layer) { - if (layer == 6) - return n_minidoublets_by_layer_barrel_[layer]; - else - return n_minidoublets_by_layer_barrel_[layer] + n_minidoublets_by_layer_endcap_[layer]; -} - unsigned int LSTEvent::getNumberOfMiniDoubletsByLayerBarrel(unsigned int layer) { return n_minidoublets_by_layer_barrel_[layer]; } @@ -1298,13 +1305,6 @@ unsigned int LSTEvent::getNumberOfSegments() { return segments; } -unsigned int LSTEvent::getNumberOfSegmentsByLayer(unsigned int layer) { - if (layer == 6) - return n_segments_by_layer_barrel_[layer]; - else - return n_segments_by_layer_barrel_[layer] + n_segments_by_layer_endcap_[layer]; -} - unsigned int LSTEvent::getNumberOfSegmentsByLayerBarrel(unsigned int layer) { return n_segments_by_layer_barrel_[layer]; } @@ -1325,13 +1325,6 @@ unsigned int LSTEvent::getNumberOfTriplets() { return triplets; } -unsigned int LSTEvent::getNumberOfTripletsByLayer(unsigned int layer) { - if (layer == 6) - return n_triplets_by_layer_barrel_[layer]; - else - return n_triplets_by_layer_barrel_[layer] + n_triplets_by_layer_endcap_[layer]; -} - unsigned int LSTEvent::getNumberOfTripletsByLayerBarrel(unsigned int layer) { return n_triplets_by_layer_barrel_[layer]; } @@ -1373,13 +1366,6 @@ unsigned int LSTEvent::getNumberOfQuintuplets() { return quintuplets; } -unsigned int LSTEvent::getNumberOfQuintupletsByLayer(unsigned int layer) { - if (layer == 6) - return n_quintuplets_by_layer_barrel_[layer]; - else - return n_quintuplets_by_layer_barrel_[layer] + n_quintuplets_by_layer_endcap_[layer]; -} - unsigned int LSTEvent::getNumberOfQuintupletsByLayerBarrel(unsigned int layer) { return n_quintuplets_by_layer_barrel_[layer]; } diff --git a/RecoTracker/LSTCore/src/alpaka/LSTEvent.h b/RecoTracker/LSTCore/src/alpaka/LSTEvent.h index 59f249aa9405f..a883436a11266 100644 --- a/RecoTracker/LSTCore/src/alpaka/LSTEvent.h +++ b/RecoTracker/LSTCore/src/alpaka/LSTEvent.h @@ -36,6 +36,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { class LSTEvent { private: Queue& queue_; + const float ptCut_; std::array n_minidoublets_by_layer_barrel_{}; std::array n_minidoublets_by_layer_endcap_{}; @@ -81,8 +82,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { public: // Constructor used for CMSSW integration. Uses an external queue. - LSTEvent(bool verbose, Queue& q, const LSTESData* deviceESData) + LSTEvent(bool verbose, const float pt_cut, Queue& q, const LSTESData* deviceESData) : queue_(q), + ptCut_(pt_cut), nModules_(deviceESData->nModules), nLowerModules_(deviceESData->nLowerModules), nPixels_(deviceESData->nPixels), @@ -90,7 +92,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { modules_(*deviceESData->modules), pixelMapping_(*deviceESData->pixelMapping), endcapGeometry_(*deviceESData->endcapGeometry), - addObjects_(verbose) {} + addObjects_(verbose) { + if (pt_cut < 0.6f) { + throw std::invalid_argument("Minimum pT cut must be at least 0.6 GeV. Provided value: " + + std::to_string(pt_cut)); + } + } void initSync(); // synchronizes, for standalone usage void resetEventSync(); // synchronizes, for standalone usage void wait() const { alpaka::wait(queue_); } @@ -137,17 +144,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { void resetObjectsInModule(); unsigned int getNumberOfMiniDoublets(); - unsigned int getNumberOfMiniDoubletsByLayer(unsigned int layer); unsigned int getNumberOfMiniDoubletsByLayerBarrel(unsigned int layer); unsigned int getNumberOfMiniDoubletsByLayerEndcap(unsigned int layer); unsigned int getNumberOfSegments(); - unsigned int getNumberOfSegmentsByLayer(unsigned int layer); unsigned int getNumberOfSegmentsByLayerBarrel(unsigned int layer); unsigned int getNumberOfSegmentsByLayerEndcap(unsigned int layer); unsigned int getNumberOfTriplets(); - unsigned int getNumberOfTripletsByLayer(unsigned int layer); unsigned int getNumberOfTripletsByLayerBarrel(unsigned int layer); unsigned int getNumberOfTripletsByLayerEndcap(unsigned int layer); @@ -155,7 +159,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { int getNumberOfPixelQuintuplets(); unsigned int getNumberOfQuintuplets(); - unsigned int getNumberOfQuintupletsByLayer(unsigned int layer); unsigned int getNumberOfQuintupletsByLayerBarrel(unsigned int layer); unsigned int getNumberOfQuintupletsByLayerEndcap(unsigned int layer); diff --git a/RecoTracker/LSTCore/src/alpaka/MiniDoublet.h b/RecoTracker/LSTCore/src/alpaka/MiniDoublet.h index 0a0abff8b6986..4255d651dbce2 100644 --- a/RecoTracker/LSTCore/src/alpaka/MiniDoublet.h +++ b/RecoTracker/LSTCore/src/alpaka/MiniDoublet.h @@ -106,35 +106,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } ALPAKA_FN_ACC ALPAKA_FN_INLINE float moduleGapSize(ModulesConst modules, uint16_t moduleIndex) { - float miniDeltaTilted[3] = {0.26f, 0.26f, 0.26f}; - float miniDeltaFlat[6] = {0.26f, 0.16f, 0.16f, 0.18f, 0.18f, 0.18f}; - float miniDeltaLooseTilted[3] = {0.4f, 0.4f, 0.4f}; - float miniDeltaEndcap[5][15]; - - for (size_t i = 0; i < 5; i++) { - for (size_t j = 0; j < 15; j++) { - if (i == 0 || i == 1) { - if (j < 10) { - miniDeltaEndcap[i][j] = 0.4f; - } else { - miniDeltaEndcap[i][j] = 0.18f; - } - } else if (i == 2 || i == 3) { - if (j < 8) { - miniDeltaEndcap[i][j] = 0.4f; - } else { - miniDeltaEndcap[i][j] = 0.18f; - } - } else { - if (j < 9) { - miniDeltaEndcap[i][j] = 0.4f; - } else { - miniDeltaEndcap[i][j] = 0.18f; - } - } - } - } - unsigned int iL = modules.layers()[moduleIndex] - 1; unsigned int iR = modules.rings()[moduleIndex] - 1; short subdet = modules.subdets()[moduleIndex]; @@ -143,22 +114,27 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float moduleSeparation = 0; if (subdet == Barrel and side == Center) { - moduleSeparation = miniDeltaFlat[iL]; + moduleSeparation = kMiniDeltaFlat[iL]; } else if (isTighterTiltedModules(modules, moduleIndex)) { - moduleSeparation = miniDeltaTilted[iL]; + moduleSeparation = kMiniDeltaTilted[iL]; } else if (subdet == Endcap) { - moduleSeparation = miniDeltaEndcap[iL][iR]; + moduleSeparation = kMiniDeltaEndcap[iL][iR]; } else //Loose tilted modules { - moduleSeparation = miniDeltaLooseTilted[iL]; + moduleSeparation = kMiniDeltaLooseTilted[iL]; } return moduleSeparation; } template - ALPAKA_FN_ACC ALPAKA_FN_INLINE float dPhiThreshold( - TAcc const& acc, float rt, ModulesConst modules, uint16_t moduleIndex, float dPhi = 0, float dz = 0) { + ALPAKA_FN_ACC ALPAKA_FN_INLINE float dPhiThreshold(TAcc const& acc, + float rt, + ModulesConst modules, + uint16_t moduleIndex, + const float ptCut, + float dPhi = 0, + float dz = 0) { // ================================================================= // Various constants // ================================================================= @@ -403,7 +379,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float xUpper, float yUpper, float zUpper, - float rtUpper) { + float rtUpper, + const float ptCut) { dz = zLower - zUpper; const float dzCut = modules.moduleType()[lowerModuleIndex] == PS ? 2.f : 10.f; const float sign = ((dz > 0) - (dz < 0)) * ((zLower > 0) - (zLower < 0)); @@ -415,13 +392,13 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float miniCut = 0; miniCut = modules.moduleLayerType()[lowerModuleIndex] == Pixel - ? dPhiThreshold(acc, rtLower, modules, lowerModuleIndex) - : dPhiThreshold(acc, rtUpper, modules, lowerModuleIndex); + ? dPhiThreshold(acc, rtLower, modules, lowerModuleIndex, ptCut) + : dPhiThreshold(acc, rtUpper, modules, lowerModuleIndex, ptCut); // Cut #2: dphi difference // Ref to original code: https://github.com/slava77/cms-tkph2-ntuple/blob/184d2325147e6930030d3d1f780136bc2dd29ce6/doubletAnalysis.C#L3085 - float xn = 0.f, yn = 0.f; // , zn = 0; - float shiftedRt2; + float xn = 0.f, yn = 0.f; + float shiftedRt2 = 0.f; if (modules.sides()[lowerModuleIndex] != Center) // If barrel and not center it is tilted { // Shift the hits and calculate new xn, yn position @@ -462,9 +439,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { noShiftedDphi = deltaPhi(acc, xLower, yLower, xUpper, yUpper); } } else { - shiftedX = 0; - shiftedY = 0; - shiftedZ = 0; + shiftedX = 0.f; + shiftedY = 0.f; + shiftedZ = 0.f; + shiftedRt2 = 0.f; dPhi = deltaPhi(acc, xLower, yLower, xUpper, yUpper); noShiftedDphi = dPhi; } @@ -476,7 +454,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { // Ref to original code: https://github.com/slava77/cms-tkph2-ntuple/blob/184d2325147e6930030d3d1f780136bc2dd29ce6/doubletAnalysis.C#L3076 if (modules.sides()[lowerModuleIndex] != Center) { // When it is tilted, use the new shifted positions - // TODO: This is somewhat of an mystery.... somewhat confused why this is the case if (modules.moduleLayerType()[lowerModuleIndex] != Pixel) { // dPhi Change should be calculated so that the upper hit has higher rt. // In principle, this kind of check rt_lower < rt_upper should not be necessary because the hit shifting should have taken care of this. @@ -530,7 +507,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float xUpper, float yUpper, float zUpper, - float rtUpper) { + float rtUpper, + const float ptCut) { // There are series of cuts that applies to mini-doublet in a "endcap" region // Cut #1 : dz cut. The dz difference can't be larger than 1cm. (max separation is 4mm for modules in the endcap) // Ref to original code: https://github.com/slava77/cms-tkph2-ntuple/blob/184d2325147e6930030d3d1f780136bc2dd29ce6/doubletAnalysis.C#L3093 @@ -603,8 +581,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float miniCut = 0; miniCut = modules.moduleLayerType()[lowerModuleIndex] == Pixel - ? dPhiThreshold(acc, rtLower, modules, lowerModuleIndex, dPhi, dz) - : dPhiThreshold(acc, rtUpper, modules, lowerModuleIndex, dPhi, dz); + ? dPhiThreshold(acc, rtLower, modules, lowerModuleIndex, ptCut, dPhi, dz) + : dPhiThreshold(acc, rtUpper, modules, lowerModuleIndex, ptCut, dPhi, dz); if (alpaka::math::abs(acc, dPhi) >= miniCut) return false; @@ -641,7 +619,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float xUpper, float yUpper, float zUpper, - float rtUpper) { + float rtUpper, + const float ptCut) { if (modules.subdets()[lowerModuleIndex] == Barrel) { return runMiniDoubletDefaultAlgoBarrel(acc, modules, @@ -664,7 +643,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { xUpper, yUpper, zUpper, - rtUpper); + rtUpper, + ptCut); } else { return runMiniDoubletDefaultAlgoEndcap(acc, modules, @@ -687,7 +667,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { xUpper, yUpper, zUpper, - rtUpper); + rtUpper, + ptCut); } } @@ -699,7 +680,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { HitsRangesConst hitsRanges, MiniDoublets mds, MiniDoubletsOccupancy mdsOccupancy, - ObjectRangesConst ranges) const { + ObjectRangesConst ranges, + const float ptCut) const { auto const globalThreadIdx = alpaka::getIdx(acc); auto const gridThreadExtent = alpaka::getWorkDiv(acc); @@ -754,13 +736,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { xUpper, yUpper, zUpper, - rtUpper); + rtUpper, + ptCut); if (success) { int totOccupancyMDs = alpaka::atomicAdd( acc, &mdsOccupancy.totOccupancyMDs()[lowerModuleIndex], 1u, alpaka::hierarchy::Threads{}); if (totOccupancyMDs >= (ranges.miniDoubletModuleOccupancy()[lowerModuleIndex])) { #ifdef WARNINGS - printf("Mini-doublet excess alert! Module index = %d\n", lowerModuleIndex); + printf( + "Mini-doublet excess alert! Module index = %d, Occupancy = %d\n", lowerModuleIndex, totOccupancyMDs); #endif } else { int mdModuleIndex = @@ -790,9 +774,38 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } }; + // Helper function to determine eta bin for occupancies + ALPAKA_FN_ACC ALPAKA_FN_INLINE int getEtaBin(const float module_eta) { + if (module_eta < 0.75f) + return 0; + else if (module_eta < 1.5f) + return 1; + else if (module_eta < 2.25f) + return 2; + else if (module_eta < 3.0f) + return 3; + return -1; + } + + // Helper function to determine category number for occupancies + ALPAKA_FN_ACC ALPAKA_FN_INLINE int getCategoryNumber(const short module_layers, + const short module_subdets, + const short module_rings) { + if (module_subdets == Barrel) { + return (module_layers <= 3) ? 0 : 1; + } else if (module_subdets == Endcap) { + if (module_layers <= 2) { + return (module_rings >= 11) ? 2 : 3; + } else { + return (module_rings >= 8) ? 2 : 3; + } + } + return -1; + } + struct CreateMDArrayRangesGPU { template - ALPAKA_FN_ACC void operator()(TAcc const& acc, ModulesConst modules, ObjectRanges ranges) const { + ALPAKA_FN_ACC void operator()(TAcc const& acc, ModulesConst modules, ObjectRanges ranges, const float ptCut) const { // implementation is 1D with a single block static_assert(std::is_same_v, "Should be Acc1D"); ALPAKA_ASSERT_ACC((alpaka::getWorkDiv(acc)[0] == 1)); @@ -807,67 +820,43 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } alpaka::syncBlockThreads(acc); + // Occupancy matrix for 0.8 GeV pT Cut + constexpr int p08_occupancy_matrix[4][4] = { + {49, 42, 37, 41}, // category 0 + {100, 100, 0, 0}, // category 1 + {0, 16, 19, 0}, // category 2 + {0, 14, 20, 25} // category 3 + }; + + // Occupancy matrix for 0.6 GeV pT Cut, 99.99% + constexpr int p06_occupancy_matrix[4][4] = { + {60, 57, 54, 48}, // category 0 + {259, 195, 0, 0}, // category 1 + {0, 23, 28, 0}, // category 2 + {0, 25, 25, 33} // category 3 + }; + + // Select the appropriate occupancy matrix based on ptCut + const auto& occupancy_matrix = (ptCut < 0.8f) ? p06_occupancy_matrix : p08_occupancy_matrix; + for (uint16_t i = globalThreadIdx[0]; i < modules.nLowerModules(); i += gridThreadExtent[0]) { short module_rings = modules.rings()[i]; short module_layers = modules.layers()[i]; short module_subdets = modules.subdets()[i]; float module_eta = alpaka::math::abs(acc, modules.eta()[i]); - int category_number; - if (module_layers <= 3 && module_subdets == 5) - category_number = 0; - else if (module_layers >= 4 && module_subdets == 5) - category_number = 1; - else if (module_layers <= 2 && module_subdets == 4 && module_rings >= 11) - category_number = 2; - else if (module_layers >= 3 && module_subdets == 4 && module_rings >= 8) - category_number = 2; - else if (module_layers <= 2 && module_subdets == 4 && module_rings <= 10) - category_number = 3; - else if (module_layers >= 3 && module_subdets == 4 && module_rings <= 7) - category_number = 3; - else - category_number = -1; - - int eta_number; - if (module_eta < 0.75f) - eta_number = 0; - else if (module_eta < 1.5f) - eta_number = 1; - else if (module_eta < 2.25f) - eta_number = 2; - else if (module_eta < 3.0f) - eta_number = 3; - else - eta_number = -1; - - int occupancy; - if (category_number == 0 && eta_number == 0) - occupancy = 49; - else if (category_number == 0 && eta_number == 1) - occupancy = 42; - else if (category_number == 0 && eta_number == 2) - occupancy = 37; - else if (category_number == 0 && eta_number == 3) - occupancy = 41; - else if (category_number == 1) - occupancy = 100; - else if (category_number == 2 && eta_number == 1) - occupancy = 16; - else if (category_number == 2 && eta_number == 2) - occupancy = 19; - else if (category_number == 3 && eta_number == 1) - occupancy = 14; - else if (category_number == 3 && eta_number == 2) - occupancy = 20; - else if (category_number == 3 && eta_number == 3) - occupancy = 25; - else { - occupancy = 0; + int category_number = getCategoryNumber(module_layers, module_subdets, module_rings); + int eta_number = getEtaBin(module_eta); + + int occupancy = 0; + if (category_number != -1 && eta_number != -1) { + occupancy = occupancy_matrix[category_number][eta_number]; + } #ifdef WARNINGS + else { printf("Unhandled case in createMDArrayRangesGPU! Module index = %i\n", i); -#endif } +#endif unsigned int nTotMDs = alpaka::atomicAdd(acc, &nTotalMDs, occupancy, alpaka::hierarchy::Threads{}); diff --git a/RecoTracker/LSTCore/src/alpaka/NeuralNetwork.h b/RecoTracker/LSTCore/src/alpaka/NeuralNetwork.h index 42605c80e9434..cc1bffa3d928b 100644 --- a/RecoTracker/LSTCore/src/alpaka/NeuralNetwork.h +++ b/RecoTracker/LSTCore/src/alpaka/NeuralNetwork.h @@ -1,165 +1,151 @@ #ifndef RecoTracker_LSTCore_src_alpaka_NeuralNetwork_h #define RecoTracker_LSTCore_src_alpaka_NeuralNetwork_h +#include "FWCore/Utilities/interface/CMSUnrollLoop.h" + #include "RecoTracker/LSTCore/interface/alpaka/Common.h" -#include "RecoTracker/LSTCore/interface/ModulesSoA.h" -#include "RecoTracker/LSTCore/interface/HitsSoA.h" #include "RecoTracker/LSTCore/interface/MiniDoubletsSoA.h" -#include "RecoTracker/LSTCore/interface/SegmentsSoA.h" -#include "RecoTracker/LSTCore/interface/TripletsSoA.h" #include "NeuralNetworkWeights.h" -namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { - - namespace t5dnn { - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE float runInference(TAcc const& acc, - ModulesConst modules, - MiniDoubletsConst mds, - SegmentsConst segments, - TripletsConst triplets, - const float* xVec, - const float* yVec, - const unsigned int* mdIndices, - const uint16_t* lowerModuleIndices, - unsigned int innerTripletIndex, - unsigned int outerTripletIndex, - float innerRadius, - float outerRadius, - float bridgeRadius) { - // Unpack x-coordinates of hits - float x1 = xVec[0]; - float x2 = xVec[1]; - float x3 = xVec[2]; - float x4 = xVec[3]; - float x5 = xVec[4]; - // Unpack y-coordinates of hits - float y1 = yVec[0]; - float y2 = yVec[1]; - float y3 = yVec[2]; - float y4 = yVec[3]; - float y5 = yVec[4]; - // Unpack module indices - unsigned int mdIndex1 = mdIndices[0]; - unsigned int mdIndex2 = mdIndices[1]; - unsigned int mdIndex3 = mdIndices[2]; - unsigned int mdIndex4 = mdIndices[3]; - unsigned int mdIndex5 = mdIndices[4]; - // Unpack module indices - uint16_t lowerModuleIndex1 = lowerModuleIndices[0]; - uint16_t lowerModuleIndex2 = lowerModuleIndices[1]; - uint16_t lowerModuleIndex3 = lowerModuleIndices[2]; - uint16_t lowerModuleIndex4 = lowerModuleIndices[3]; - uint16_t lowerModuleIndex5 = lowerModuleIndices[4]; - // Compute some convenience variables - short layer2_adjustment = 0; - if (modules.layers()[lowerModuleIndex1] == 1) { - layer2_adjustment = 1; // get upper segment to be in second layer - } - unsigned int md_idx_for_t5_eta_phi = - segments.mdIndices()[triplets.segmentIndices()[innerTripletIndex][0]][layer2_adjustment]; - bool is_endcap1 = (modules.subdets()[lowerModuleIndex1] == 4); // true if anchor hit 1 is in the endcap - bool is_endcap2 = (modules.subdets()[lowerModuleIndex2] == 4); // true if anchor hit 2 is in the endcap - bool is_endcap3 = (modules.subdets()[lowerModuleIndex3] == 4); // true if anchor hit 3 is in the endcap - bool is_endcap4 = (modules.subdets()[lowerModuleIndex4] == 4); // true if anchor hit 4 is in the endcap - bool is_endcap5 = (modules.subdets()[lowerModuleIndex5] == 4); // true if anchor hit 5 is in the endcap - - // Build DNN input vector (corresponding output N-tuple branch noted in parenthetical in comment) - float x[38] = { - alpaka::math::log10(acc, 2 * k2Rinv1GeVf * innerRadius), // inner T3 pT (t3_pt) - mds.anchorEta()[mdIndex1], // inner T3 anchor hit 1 eta (t3_0_eta) - mds.anchorPhi()[mdIndex1], // inner T3 anchor hit 1 phi (t3_0_phi) - mds.anchorZ()[mdIndex1], // inner T3 anchor hit 1 z (t3_0_z) - alpaka::math::sqrt(acc, x1 * x1 + y1 * y1), // inner T3 anchor hit 1 r (t3_0_r) - float(modules.layers()[lowerModuleIndex1] + 6 * is_endcap1), // inner T3 anchor hit 1 layer (t3_0_layer) - mds.anchorEta()[mdIndex2], // inner T3 anchor hit 2 eta (t3_2_eta) - mds.anchorPhi()[mdIndex2], // inner T3 anchor hit 2 phi (t3_2_phi) - mds.anchorZ()[mdIndex2], // inner T3 anchor hit 2 z (t3_2_z) - alpaka::math::sqrt(acc, x2 * x2 + y2 * y2), // inner T3 anchor hit 2 r (t3_2_r) - float(modules.layers()[lowerModuleIndex2] + 6 * is_endcap2), // inner T3 anchor hit 2 layer (t3_2_layer) - mds.anchorEta()[mdIndex3], // inner T3 anchor hit 3 eta (t3_4_eta) - mds.anchorPhi()[mdIndex3], // inner T3 anchor hit 3 phi (t3_4_phi) - mds.anchorZ()[mdIndex3], // inner T3 anchor hit 3 z (t3_4_z) - alpaka::math::sqrt(acc, x3 * x3 + y3 * y3), // inner T3 anchor hit 3 r (t3_4_r) - float(modules.layers()[lowerModuleIndex3] + 6 * is_endcap3), // inner T3 anchor hit 3 layer (t3_4_layer) - alpaka::math::log10(acc, 2 * k2Rinv1GeVf * outerRadius), // outer T3 pT (t3_pt) - mds.anchorEta()[mdIndex3], // outer T3 anchor hit 4 eta (t3_0_eta) - mds.anchorPhi()[mdIndex3], // outer T3 anchor hit 4 phi (t3_0_phi) - mds.anchorZ()[mdIndex3], // outer T3 anchor hit 3 eta (t3_0_z) - alpaka::math::sqrt(acc, x3 * x3 + y3 * y3), // outer T3 anchor hit 3 r (t3_0_r) - float(modules.layers()[lowerModuleIndex3] + 6 * is_endcap3), // outer T3 anchor hit 3 layer (t3_0_layer) - mds.anchorEta()[mdIndex4], // outer T3 anchor hit 4 eta (t3_2_eta) - mds.anchorPhi()[mdIndex4], // outer T3 anchor hit 4 phi (t3_2_phi) - mds.anchorZ()[mdIndex4], // outer T3 anchor hit 4 z (t3_2_z) - alpaka::math::sqrt(acc, x4 * x4 + y4 * y4), // outer T3 anchor hit 4 r (t3_2_r) - float(modules.layers()[lowerModuleIndex4] + 6 * is_endcap4), // outer T3 anchor hit 4 layer (t3_2_layer) - mds.anchorEta()[mdIndex5], // outer T3 anchor hit 5 eta (t3_4_eta) - mds.anchorPhi()[mdIndex5], // outer T3 anchor hit 5 phi (t3_4_phi) - mds.anchorZ()[mdIndex5], // outer T3 anchor hit 5 z (t3_4_z) - alpaka::math::sqrt(acc, x5 * x5 + y5 * y5), // outer T3 anchor hit 5 r (t3_4_r) - float(modules.layers()[lowerModuleIndex5] + 6 * is_endcap5), // outer T3 anchor hit 5 layer (t3_4_layer) - alpaka::math::log10(acc, (innerRadius + outerRadius) * k2Rinv1GeVf), // T5 pT (t5_pt) - mds.anchorEta()[md_idx_for_t5_eta_phi], // T5 eta (t5_eta) - mds.anchorPhi()[md_idx_for_t5_eta_phi], // T5 phi (t5_phi) - alpaka::math::log10(acc, innerRadius), // T5 inner radius (t5_innerRadius) - alpaka::math::log10(acc, bridgeRadius), // T5 bridge radius (t5_bridgeRadius) - alpaka::math::log10(acc, outerRadius) // T5 outer radius (t5_outerRadius) - }; - - // (0): Linear(in_features=38, out_features=32, bias=True) => x = x*W_T + b - float x_0[32]; - for (unsigned int col = 0; col < 32; ++col) { - x_0[col] = 0; - for (unsigned int inner = 0; inner < 38; ++inner) { - x_0[col] += x[inner] * wgtT_0[inner][col]; - } - x_0[col] += bias_0[col]; - } +namespace ALPAKA_ACCELERATOR_NAMESPACE::lst::t5dnn { - // (1): ReLU() - float x_1[32]; - for (unsigned int col = 0; col < 32; ++col) { - x_1[col] = (x_0[col] > 0.f) ? x_0[col] : 0.f; - } + template + ALPAKA_FN_ACC ALPAKA_FN_INLINE void relu_activation(float (&input)[FEATURES]) { + CMS_UNROLL_LOOP + for (unsigned int col = 0; col < FEATURES; ++col) { + input[col] = (input[col] > 0.f) ? input[col] : 0.f; + } + } - // (2): Linear(in_features=32, out_features=32, bias=True) => x = x*W_T + b - float x_2[32]; - for (unsigned int col = 0; col < 32; ++col) { - x_2[col] = 0; - for (unsigned int inner = 0; inner < 32; ++inner) { - x_2[col] += x_1[inner] * wgtT_2[inner][col]; - } - x_2[col] += bias_2[col]; - } + template + ALPAKA_FN_ACC ALPAKA_FN_INLINE float sigmoid_activation(TAcc const& acc, const float x) { + return alpaka::math::exp(acc, x) / (alpaka::math::exp(acc, x) + 1.f); + } - // (3): ReLU() - float x_3[32]; - for (unsigned int col = 0; col < 32; ++col) { - x_3[col] = (x_2[col] > 0.f) ? x_2[col] : 0.f; + template + ALPAKA_FN_ACC ALPAKA_FN_INLINE void linear_layer(const float (&input)[IN_FEATURES], + float (&output)[OUT_FEATURES], + const float (&weights)[IN_FEATURES][OUT_FEATURES], + const float (&biases)[OUT_FEATURES]) { + CMS_UNROLL_LOOP + for (unsigned int i = 0; i < OUT_FEATURES; ++i) { + output[i] = biases[i]; + CMS_UNROLL_LOOP + for (int j = 0; j < IN_FEATURES; ++j) { + output[i] += input[j] * weights[j][i]; } + } + } - // (4): Linear(in_features=32, out_features=1, bias=True) => x = x*W_T + b - float x_4[1]; - for (unsigned int col = 0; col < 1; ++col) { - x_4[col] = 0; - for (unsigned int inner = 0; inner < 32; ++inner) { - x_4[col] += x_3[inner] * wgtT_4[inner][col]; - } - x_4[col] += bias_4[col]; - } + ALPAKA_FN_ACC ALPAKA_FN_INLINE float delta_phi(const float phi1, const float phi2) { + float delta = phi1 - phi2; + // Adjust delta to be within the range [-M_PI, M_PI] + if (delta > kPi) { + delta -= 2 * kPi; + } else if (delta < -kPi) { + delta += 2 * kPi; + } - // (5): Sigmoid() - float x_5[1]; - for (unsigned int col = 0; col < 1; ++col) { - x_5[col] = alpaka::math::exp(acc, x_4[col]) / (alpaka::math::exp(acc, x_4[col]) + 1); - } + return delta; + } - return x_5[0]; - } + template + ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runInference(TAcc const& acc, + MiniDoubletsConst mds, + const unsigned int mdIndex1, + const unsigned int mdIndex2, + const unsigned int mdIndex3, + const unsigned int mdIndex4, + const unsigned int mdIndex5, + const float innerRadius, + const float outerRadius, + const float bridgeRadius) { + // Constants + constexpr unsigned int kinputFeatures = 23; + constexpr unsigned int khiddenFeatures = 32; + + float eta1 = alpaka::math::abs(acc, mds.anchorEta()[mdIndex1]); // inner T3 anchor hit 1 eta (t3_0_eta) + float eta2 = alpaka::math::abs(acc, mds.anchorEta()[mdIndex2]); // inner T3 anchor hit 2 eta (t3_2_eta) + float eta3 = alpaka::math::abs(acc, mds.anchorEta()[mdIndex3]); // inner T3 anchor hit 3 eta (t3_4_eta) + float eta4 = alpaka::math::abs(acc, mds.anchorEta()[mdIndex4]); // outer T3 anchor hit 4 eta (t3_2_eta) + float eta5 = alpaka::math::abs(acc, mds.anchorEta()[mdIndex5]); // outer T3 anchor hit 5 eta (t3_4_eta) + + float phi1 = mds.anchorPhi()[mdIndex1]; // inner T3 anchor hit 1 phi (t3_0_phi) + float phi2 = mds.anchorPhi()[mdIndex2]; // inner T3 anchor hit 2 phi (t3_2_phi) + float phi3 = mds.anchorPhi()[mdIndex3]; // inner T3 anchor hit 3 phi (t3_4_phi) + float phi4 = mds.anchorPhi()[mdIndex4]; // outer T3 anchor hit 4 phi (t3_2_phi) + float phi5 = mds.anchorPhi()[mdIndex5]; // outer T3 anchor hit 5 phi (t3_4_phi) + + float z1 = alpaka::math::abs(acc, mds.anchorZ()[mdIndex1]); // inner T3 anchor hit 1 z (t3_0_z) + float z2 = alpaka::math::abs(acc, mds.anchorZ()[mdIndex2]); // inner T3 anchor hit 2 z (t3_2_z) + float z3 = alpaka::math::abs(acc, mds.anchorZ()[mdIndex3]); // inner T3 anchor hit 3 z (t3_4_z) + float z4 = alpaka::math::abs(acc, mds.anchorZ()[mdIndex4]); // outer T3 anchor hit 4 z (t3_2_z) + float z5 = alpaka::math::abs(acc, mds.anchorZ()[mdIndex5]); // outer T3 anchor hit 5 z (t3_4_z) + + float r1 = mds.anchorRt()[mdIndex1]; // inner T3 anchor hit 1 r (t3_0_r) + float r2 = mds.anchorRt()[mdIndex2]; // inner T3 anchor hit 2 r (t3_2_r) + float r3 = mds.anchorRt()[mdIndex3]; // inner T3 anchor hit 3 r (t3_4_r) + float r4 = mds.anchorRt()[mdIndex4]; // outer T3 anchor hit 4 r (t3_2_r) + float r5 = mds.anchorRt()[mdIndex5]; // outer T3 anchor hit 5 r (t3_4_r) + + // Build the input feature vector using pairwise differences after the first hit + float x[kinputFeatures] = { + eta1 / kEta_norm, // inner T3: First hit eta normalized + alpaka::math::abs(acc, phi1) / kPhi_norm, // inner T3: First hit phi normalized + z1 / kZ_max, // inner T3: First hit z normalized + r1 / kR_max, // inner T3: First hit r normalized + + eta2 - eta1, // inner T3: Difference in eta between hit 2 and 1 + delta_phi(phi2, phi1) / kPhi_norm, // inner T3: Difference in phi between hit 2 and 1 + (z2 - z1) / kZ_max, // inner T3: Difference in z between hit 2 and 1 normalized + (r2 - r1) / kR_max, // inner T3: Difference in r between hit 2 and 1 normalized + + eta3 - eta2, // inner T3: Difference in eta between hit 3 and 2 + delta_phi(phi3, phi2) / kPhi_norm, // inner T3: Difference in phi between hit 3 and 2 + (z3 - z2) / kZ_max, // inner T3: Difference in z between hit 3 and 2 normalized + (r3 - r2) / kR_max, // inner T3: Difference in r between hit 3 and 2 normalized + + eta4 - eta3, // outer T3: Difference in eta between hit 4 and 3 + delta_phi(phi4, phi3) / kPhi_norm, // inner T3: Difference in phi between hit 4 and 3 + (z4 - z3) / kZ_max, // outer T3: Difference in z between hit 4 and 3 normalized + (r4 - r3) / kR_max, // outer T3: Difference in r between hit 4 and 3 normalized + + eta5 - eta4, // outer T3: Difference in eta between hit 5 and 4 + delta_phi(phi5, phi4) / kPhi_norm, // inner T3: Difference in phi between hit 5 and 4 + (z5 - z4) / kZ_max, // outer T3: Difference in z between hit 5 and 4 normalized + (r5 - r4) / kR_max, // outer T3: Difference in r between hit 5 and 4 normalized + + alpaka::math::log10(acc, innerRadius), // T5 inner radius (t5_innerRadius) + alpaka::math::log10(acc, bridgeRadius), // T5 bridge radius (t5_bridgeRadius) + alpaka::math::log10(acc, outerRadius) // T5 outer radius (t5_outerRadius) + }; + + float x_1[khiddenFeatures]; // Layer 1 output + float x_2[khiddenFeatures]; // Layer 2 output + float x_3[1]; // Layer 3 linear output + + // Layer 1: Linear + Relu + linear_layer(x, x_1, wgtT_layer1, bias_layer1); + relu_activation(x_1); + + // Layer 2: Linear + Relu + linear_layer(x_1, x_2, wgtT_layer2, bias_layer2); + relu_activation(x_2); + + // Layer 3: Linear + Sigmoid + linear_layer(x_2, x_3, wgtT_output_layer, bias_output_layer); + float x_5 = sigmoid_activation(acc, x_3[0]); + + // Get the bin index based on abs(eta) of first hit and t5_pt + float t5_pt = innerRadius * lst::k2Rinv1GeVf * 2; + + uint8_t pt_index = (t5_pt > 5); + uint8_t bin_index = (eta1 > 2.5f) ? (kEtaBins - 1) : static_cast(eta1 / 0.25f); - } // namespace t5dnn -} // namespace ALPAKA_ACCELERATOR_NAMESPACE::lst + // Compare x_5 to the cut value for the relevant bin + return x_5 > kWp[pt_index][bin_index]; + } +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::lst::t5dnn #endif diff --git a/RecoTracker/LSTCore/src/alpaka/NeuralNetworkWeights.h b/RecoTracker/LSTCore/src/alpaka/NeuralNetworkWeights.h index d5321fea07a6e..42f7b19f33898 100644 --- a/RecoTracker/LSTCore/src/alpaka/NeuralNetworkWeights.h +++ b/RecoTracker/LSTCore/src/alpaka/NeuralNetworkWeights.h @@ -3,313 +3,255 @@ #include -namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { - namespace t5dnn { +namespace ALPAKA_ACCELERATOR_NAMESPACE::lst::t5dnn { + ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_layer1[32] = { + -1.3837075f, -0.0653152f, -0.7900129f, 0.0714758f, -1.1574365f, -1.4634879f, -0.9317133f, -0.1455518f, + -0.0459635f, -0.2055620f, 0.0586231f, -0.8943899f, -0.1009487f, 0.0166031f, -0.5451909f, -0.1384538f, + 1.2664700f, -1.8996916f, -0.0025585f, -0.1647783f, -1.9019107f, 0.0707104f, -0.2373025f, 0.0357050f, + -0.0048417f, 2.3127339f, -0.0508943f, -0.1116435f, -0.1610904f, -1.6463890f, -1.0739423f, -0.0962902f}; - ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_0[32] = { - -4.5069356f, -5.8842053f, 1.0793180f, -0.1540973f, -0.4705772f, 6.4027028f, -0.6620818f, -7.0734525f, - 0.6211641f, 4.9630723f, 3.4310920f, -0.8856288f, 4.5843782f, -6.0180559f, 0.0126438f, -1.5725276f, - -0.8549317f, -6.8545237f, -1.2129461f, 3.0617838f, -0.3911322f, 0.0799793f, -2.5398655f, -0.5780622f, - 2.8533990f, -0.1777968f, -2.6457164f, -0.7976936f, 4.5644889f, -2.1747942f, 3.4286616f, -10.1073380f}; - ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_0[38][32] = { - {6.1269712f, -10.6625051f, 17.4907818f, -0.0019928f, -3.4468415f, 1.6674044f, -7.8957767f, 2.2077549f, - 9.5517254f, -5.1345053f, -30.1643391f, 4.0148559f, -19.8330841f, -18.3806915f, 0.1334764f, 1.6213616f, - -4.1423774f, -15.3062429f, -1.0209556f, 1.5580219f, 0.7426265f, 0.0033929f, 1.3924170f, 0.9196110f, - -0.8995734f, 1.0594707f, 39.4390869f, 8.7642002f, 28.4583893f, -5.9235659f, 3.7221889f, 14.4167147f}, - {1.7863803f, -0.6068707f, 0.3166098f, -0.0608759f, 0.5939785f, 0.4870262f, -3.1375074f, -17.7147388f, - -0.7231818f, -9.3808413f, 2.2070611f, 15.7461920f, 0.9355862f, 2.3942475f, -0.0671409f, 3.5954301f, - -3.0463996f, -2.0748904f, -0.5450584f, -4.4800100f, 0.6074556f, -0.0161482f, 3.0624702f, -4.5688419f, - 2.9881518f, -0.3714012f, -0.0387531f, -0.7699140f, 4.4028845f, 5.0333014f, -4.7350726f, -8.6568584f}, - {5.6548429f, -0.0207700f, 0.1785973f, 0.0881671f, 0.2530097f, -0.1893259f, -0.1105739f, -0.5183877f, - 1.0728362f, 0.1833011f, 1.7765219f, 0.3127359f, 0.0455277f, -0.1442616f, -0.1048361f, -0.1235604f, - -0.1217661f, -0.5487315f, 0.7575656f, -0.1177454f, -17.0993137f, 0.1628031f, 0.2789381f, 0.5304270f, - 0.0837841f, -3.1120780f, 0.0074821f, -0.1648044f, -0.3395336f, 0.3958135f, 0.8718957f, -1.1980486f}, - {0.2401041f, -0.0585765f, -0.0144584f, 0.0411095f, 0.0752229f, 0.0292672f, -0.2437613f, -1.4396472f, - -0.0971315f, -1.7181139f, 0.2417643f, 2.2030578f, 0.0566049f, 0.1081589f, -0.1060181f, 0.3473758f, - -0.7095683f, -0.0345675f, 0.2794849f, -1.1702278f, 0.2622930f, -0.0072611f, 0.5026371f, -1.2882922f, - -0.4712771f, 0.0597130f, -0.0039970f, -0.6050836f, 0.1554724f, 1.0991164f, -0.4975886f, 0.2597970f}, - {0.0766028f, 0.0218421f, -0.1739017f, -0.0076569f, 0.0384461f, -0.1841756f, 0.9677940f, -3.1114254f, - 2.3830564f, 2.0706992f, -0.9643140f, 0.7361387f, -0.0060253f, -0.1554846f, -0.0831100f, 2.8754771f, - -1.4403527f, -0.5281797f, 0.5157787f, 4.2405987f, 0.4807618f, 0.0217647f, -1.2626950f, 0.9145837f, - -0.3931780f, 0.3426280f, -0.0065206f, -0.7510439f, -0.4555758f, 2.7724340f, -1.2173026f, 0.1039017f}, - {0.5685715f, 0.3927337f, 0.4942532f, -0.0671033f, -0.2808350f, -0.0336000f, -1.3983957f, 0.9876546f, - -2.3840380f, 0.7315395f, -2.2009561f, -1.4631602f, -0.4672308f, -0.4994236f, 0.1169335f, -1.1894208f, - -1.2692982f, 0.3303853f, -2.0147655f, -0.9912014f, 1.0042895f, 0.1121151f, -1.0789106f, -2.2821584f, - -6.6459913f, -0.0959398f, -0.0068429f, -2.8177626f, 0.3213172f, -2.6832986f, -4.7613306f, -0.9985733f}, - {1.4419515f, -0.3864825f, -0.6756768f, -0.1273375f, 0.4321181f, 0.3354745f, -0.8236564f, -2.8190827f, - 0.7090831f, 1.9072700f, -3.1834064f, -2.6938572f, 0.5051147f, 1.4382831f, 0.1241910f, -0.7352629f, - 0.7703634f, -1.7556250f, -2.1104112f, 3.0603442f, 1.9873468f, -0.0358815f, -1.0087154f, 3.8253262f, - -0.5466214f, 0.0875162f, 0.2691758f, 0.7121435f, 1.9314718f, -0.1580560f, 3.6484149f, -5.3173709f}, - {6.9104381f, -0.0033664f, -1.4405546f, -0.1768288f, 0.2028089f, -0.1012344f, -4.4735684f, 0.6354278f, - 4.3039737f, 0.2056303f, 1.8338999f, -1.1351355f, 0.1015760f, -0.0733253f, -0.0561627f, 2.5292397f, - 1.6314448f, -0.9333628f, -0.7773662f, 0.8313186f, -0.7829623f, 0.1265118f, 0.5922315f, -0.3463379f, - -1.3269740f, -3.3302619f, -0.0061799f, 2.3374722f, 0.0880938f, 0.7470241f, -0.4205743f, -4.7557602f}, - {0.0380794f, 0.0947470f, 0.0419397f, 0.0582226f, -0.0603404f, 0.0234028f, -0.2575402f, 0.4125248f, - 0.3035339f, 0.2663808f, -0.6092452f, -1.4727812f, 0.0247187f, -0.0539688f, -0.0150413f, 0.2094955f, - 0.5379737f, -0.3255228f, -0.5639279f, 0.0786276f, 0.6703192f, 0.1557026f, -0.2753083f, 1.1463971f, - -0.9372965f, 0.5657740f, 0.0041413f, 0.0870248f, 0.0101520f, -0.8214461f, 0.1212932f, 1.5648646f}, - {-0.0969819f, 0.0137566f, 1.3515147f, -0.0155047f, -0.1416170f, -0.1636726f, 0.5184190f, 0.4732984f, - 0.6815788f, -1.0522166f, -0.4486531f, -0.0516016f, 0.0201894f, -0.0849667f, -0.0861271f, -1.2027841f, - 1.2458711f, -0.7061657f, 1.0381308f, -0.3450044f, -0.1300479f, -0.0828402f, 0.6859242f, -1.0575374f, - 0.6947553f, -0.0922188f, 0.0199132f, 0.8038982f, -0.1734094f, -0.1057449f, 1.6305015f, -0.0688597f}, - {-1.8151448f, 0.1024327f, 1.7063105f, 0.1130912f, -0.1081472f, -0.2904744f, -1.3465070f, -1.0455177f, - -0.4581082f, -3.2220871f, 0.5221398f, -5.1637673f, 0.0811146f, -0.1326323f, -0.0379338f, -3.0439703f, - -2.4246936f, -0.3670847f, -3.1256330f, -1.6595014f, -3.4715190f, -0.1526113f, -1.0420206f, 0.9536474f, - -3.2932863f, 1.6048199f, 0.0025162f, -3.6049840f, 0.0604250f, -2.2404826f, 1.8406851f, -3.1381185f}, - {1.2985691f, -1.1044264f, 0.9062797f, -0.0788333f, 0.2694912f, 0.0032800f, -0.0574267f, 0.9734111f, - 1.1532565f, 2.6786125f, -3.8574269f, -2.2871449f, -0.1261243f, 1.0545347f, -0.1454154f, -0.5609738f, - 1.8385800f, -0.8035598f, -1.7668265f, 5.1665063f, 0.7966110f, 0.0940206f, -2.3943975f, 2.3344002f, - 1.0342182f, 0.4806454f, -0.3880928f, 0.6998246f, 1.4011886f, -1.7313483f, 4.9702630f, -6.0058608f}, - {1.0300356f, 0.0616315f, -0.1113776f, -0.1694220f, 0.7159944f, 0.0626456f, 2.0994680f, 0.3452290f, - -3.0487001f, 0.0654031f, -1.1510723f, 0.5370992f, -0.0290704f, -0.0300795f, 0.0751569f, -0.2345951f, - -0.3472281f, 0.4424143f, 1.2444530f, -0.2114656f, 0.7865694f, -0.0709381f, -0.1839961f, -0.0529834f, - 0.5867608f, -3.8793530f, -0.0814745f, -0.6368676f, 0.0361213f, -0.5549288f, 0.5661780f, 1.8374584f}, - {0.3345098f, 0.0068199f, -0.4205509f, -0.1088801f, -0.1043202f, -0.0040804f, 0.3400922f, 0.2673528f, - -0.6050695f, 0.4443954f, -0.4319905f, -0.6044132f, -0.0260679f, 0.0137036f, 0.0765494f, -0.0095099f, - 0.5880439f, -0.0083854f, -0.2407522f, 0.1942379f, 0.6554548f, -0.1322891f, -0.8298992f, 0.7909554f, - 1.0528831f, 0.1970959f, 0.0754069f, -0.0947960f, -0.0279494f, -0.5888316f, 0.8919419f, 0.4828835f}, - {0.3995822f, -0.2139665f, 0.3982936f, -0.1285759f, -0.3445527f, -0.1167238f, -0.1263519f, 0.8393803f, - -0.7758383f, 0.0719291f, -0.0134762f, 0.1715237f, 0.0796666f, 0.1023507f, -0.1172728f, -1.2364722f, - 1.2592632f, -0.3168479f, 0.7487004f, -1.5170647f, -0.2235429f, -0.1620898f, 1.4064828f, -1.0821995f, - 0.0740103f, -1.0412805f, -0.0621277f, 0.2439800f, 0.2684972f, -1.1661061f, 0.7859434f, -0.6170313f}, - {2.1615884f, 0.1431713f, 0.0642652f, -0.0522325f, -0.2658786f, -0.0245810f, -1.6857448f, -0.6685011f, - -0.6978170f, -0.8716729f, 0.3129902f, -2.5870812f, -0.2855283f, -0.3205920f, -0.0084069f, 1.3182145f, - -0.6923816f, -0.3730274f, -2.3638811f, -1.1128502f, -2.4709859f, 0.1349022f, -0.3574466f, -0.6597407f, - -4.1122031f, 0.2240651f, 0.1806145f, -1.6836300f, -0.0766231f, -3.2611966f, 0.0091456f, -0.0997367f}, - {5.2476101f, -0.1966512f, 4.8935304f, -0.1551689f, 1.6919724f, -0.8324367f, 14.3318472f, -0.3503132f, - 10.3614969f, -9.1522884f, -0.2543063f, -1.8476851f, 16.7961140f, 9.9541416f, -0.0434563f, -9.6973553f, - -5.0469398f, 6.1688442f, 7.6429725f, -7.3149266f, 1.2345183f, 0.1412155f, 0.7114770f, -1.6378664f, - 5.1548996f, 0.3686100f, -45.3027611f, 3.0492647f, -37.3445892f, 2.7421410f, -2.7958770f, -25.2034016f}, - {1.4597454f, -1.0561740f, 0.9751291f, 0.0446527f, 0.3691662f, 0.1006782f, 0.1418435f, 0.8871480f, - 1.1603093f, 2.8034730f, -4.0856910f, -1.9786842f, -0.2206208f, 0.9539357f, 0.0868183f, -0.6811873f, - 1.9642411f, -0.8065316f, -2.0244894f, 5.2936082f, 0.6120632f, -0.1194160f, -2.3925939f, 2.5555069f, - 1.0149733f, 0.4607603f, -0.2197217f, 0.5703423f, 1.4049014f, -1.5900208f, 5.1645074f, -6.0569463f}, - {0.9000676f, -0.0028781f, -0.1967366f, 0.1039593f, 0.7993248f, 0.0655172f, 2.2296758f, 0.4391927f, - -3.0292840f, 0.0334536f, -1.1728534f, 0.3479103f, -0.1190938f, 0.0410203f, 0.1146637f, -0.2958017f, - -0.3240463f, 0.4361866f, 1.0564958f, -0.1989332f, 0.5194008f, -0.0628912f, -0.1733121f, -0.1255383f, - 0.5990249f, -3.7692382f, 0.0995128f, -0.7101220f, -0.0785123f, -0.3514554f, 0.6662078f, 2.0991604f}, - {0.1781942f, -0.1873588f, -0.4653996f, -0.0153059f, -0.1399561f, -0.0498718f, 0.4552556f, 0.2300792f, - -0.7682312f, 0.4342302f, -0.3787803f, -0.6089386f, -0.1049337f, 0.0395331f, 0.0220332f, 0.0114750f, - 0.4672548f, 0.1284784f, -0.2472819f, 0.2892784f, 0.4788667f, 0.0472555f, -0.6593549f, 0.6508777f, - 0.9286987f, 0.3043948f, -0.0635985f, 0.0814399f, -0.1168853f, -0.6688027f, 0.8876534f, 0.4865684f}, - {0.4024099f, 0.0480259f, 0.4588822f, -0.1793082f, -0.2151573f, -0.1871128f, -0.1502780f, 1.1011307f, - -0.9467706f, 0.2632496f, -0.1257263f, -0.0241331f, 0.2280627f, 0.0878608f, -0.1334262f, -1.1642927f, - 1.0943586f, -0.4799654f, 0.5981907f, -1.5051398f, -0.4235946f, 0.0012827f, 1.2342577f, -0.8281875f, - 0.2776567f, -1.0362227f, 0.0408372f, 0.1540821f, 0.1777556f, -1.2684357f, 0.8836584f, -0.4001710f}, - {2.1558056f, 0.2082023f, 0.0863442f, 0.0364868f, -0.3985825f, 0.0307202f, -1.8889453f, -0.5614714f, - -0.7311882f, -0.8075573f, 0.4895108f, -2.7770483f, -0.3121874f, -0.1671291f, -0.1281284f, 1.3212786f, - -0.5310181f, -0.1974759f, -2.6240873f, -0.8320529f, -2.3875966f, -0.0286360f, -0.6263188f, -0.6553424f, - -4.1658955f, -0.0601300f, 0.0946256f, -1.6795633f, -0.1251303f, -3.0974686f, 0.2412274f, -0.0687501f}, - {2.0523887f, -0.6387668f, 2.0633900f, -0.0550964f, 0.5181718f, -0.4202190f, 1.8569367f, 0.8295385f, - 0.8555872f, 2.4727983f, -0.2072828f, -1.9006120f, 0.5379534f, 0.4463673f, 0.1468820f, 0.4918649f, - -3.4016700f, 0.2884440f, -1.9418719f, 4.5157170f, -0.5160927f, -0.0199372f, 3.1353824f, -0.9863126f, - -1.5135859f, 0.7576568f, 0.6715558f, 2.7409093f, 0.9291748f, -0.3247162f, 1.8204515f, -8.9181070f}, - {-0.1428107f, -0.0829889f, 0.4213613f, 0.0225415f, 1.2238166f, 0.0477106f, 0.3031853f, -0.7466553f, - 2.0663500f, 0.7588379f, 0.3689216f, -0.2003786f, 0.1242338f, 0.1693589f, -0.0351716f, -0.0186597f, - -0.0189417f, 0.5468715f, -0.2862698f, -0.1311738f, 3.0747476f, -0.0310747f, 0.0943165f, 0.3139819f, - 0.6274695f, -1.8314874f, 0.0147495f, 0.3554756f, 0.3829916f, 0.4891713f, 0.1328600f, 1.0535098f}, - {0.0534900f, 0.1787969f, -0.0571320f, -0.0685673f, 0.1968977f, 0.0374476f, 0.7876674f, 0.0828491f, - 0.6444036f, -0.2203166f, -0.2383427f, 0.5397566f, 0.0106769f, -0.1230072f, -0.0135021f, -0.5691944f, - -1.5040319f, 0.0406933f, -0.0025478f, 0.9251419f, -1.7180276f, -0.1112956f, 1.4840862f, 0.0407115f, - -0.0100329f, 0.0583593f, -0.0110524f, 0.7431355f, -0.0971857f, -0.5501527f, -0.6371027f, -0.1935233f}, - {-0.6455778f, 0.2317368f, 0.9285696f, -0.1415854f, 0.0822560f, 0.2488030f, -2.6992166f, 0.0884904f, - 0.6735302f, -0.1467820f, 0.5641044f, 0.6436581f, 0.0818401f, -0.0336634f, -0.0729000f, -0.1206900f, - -2.5739892f, 0.5776953f, 0.9531668f, -1.2362405f, -0.0615577f, -0.0143544f, -2.7525210f, 1.3738545f, - 0.2751348f, -1.7463943f, -0.0020144f, 2.4814103f, 0.1716725f, -0.7055540f, -0.3474010f, 0.4482578f}, - {-0.2526205f, -0.7463821f, -3.6076138f, -0.1511098f, 0.1216256f, 0.0888247f, -1.0190924f, -1.3260181f, - -0.0443211f, -4.8911066f, -3.4385188f, -6.0057454f, 0.3340450f, 0.2997236f, -0.0907855f, 0.7500492f, - -0.4007562f, 1.9382039f, 0.5687234f, 2.6511824f, 4.7703862f, 0.0006749f, -0.0201394f, -3.5885489f, - -4.1518898f, 0.0807014f, -0.0584071f, -0.8100027f, 0.7697087f, -0.8038046f, -1.2945876f, -4.0110312f}, - {0.4337017f, -1.1532011f, 2.0740633f, 0.0271806f, 0.6654227f, 0.1012998f, -4.0791736f, 1.2631345f, - 1.9511020f, 2.3272331f, 1.2707534f, 1.6306664f, 0.4936035f, 0.8285242f, 0.0807625f, 3.8652387f, - 0.0281145f, 1.6877037f, 1.2557380f, -0.3036775f, 0.5604967f, 0.1551418f, -0.9599600f, -6.3067718f, - -0.6352320f, 0.8058553f, 0.3657880f, -2.0491202f, -0.3926269f, 2.5650854f, 1.3697821f, -8.3070078f}, - {5.1334143f, -0.0351738f, -0.4774780f, -0.0679726f, 1.4569254f, 0.0580191f, -0.3649136f, -0.2298838f, - -3.3826666f, -0.7392708f, -0.6036060f, -0.2612940f, -0.1877640f, -0.1145124f, -0.0042578f, -0.0311193f, - -0.0320479f, 0.5270581f, -0.4324475f, 0.2681437f, 4.7813129f, -0.0222701f, -0.0525629f, -0.2861001f, - -0.1251072f, 3.9112861f, 0.0045046f, -0.0426071f, -0.3299106f, -0.0686970f, -0.1602017f, -0.0070103f}, - {-0.6633690f, 0.0103367f, 0.5998458f, 0.1256577f, -0.0359184f, -0.0176820f, -0.6458368f, -0.0370536f, - 0.3542259f, 0.1394724f, 0.8255956f, 0.2501569f, 0.0320156f, -0.0256806f, 0.0277949f, 0.0036392f, - 0.2825173f, 0.1400358f, 1.0011463f, -0.6792242f, 0.0672508f, 0.0728705f, -0.1089695f, -1.0414587f, - -0.4135485f, 0.4293025f, -0.0041241f, -0.9564193f, 0.0314900f, 0.8658463f, -0.7734696f, -0.7610567f}, - {-0.0200122f, -0.0749178f, -1.5026549f, -0.0387432f, -0.0713735f, 0.1214790f, 1.8730290f, -0.0552839f, - -1.6867150f, 0.2282097f, 0.7161849f, -0.1018546f, -0.1092003f, 0.0365504f, -0.1326883f, 1.2310545f, - 0.1800210f, 0.7024739f, -2.9606545f, 1.2275347f, -0.2050014f, 0.0940569f, 0.4761694f, 0.8812068f, - -0.0083424f, -1.5406264f, 0.0061815f, -2.7606382f, 0.0248556f, 1.1086880f, -1.3608936f, 1.0795454f}, - {0.9734020f, 0.3905411f, -3.7008634f, 0.0013557f, 0.1649124f, 0.9935362f, 1.3489184f, 0.9505764f, - 0.7966231f, -0.1627246f, -2.5754328f, 1.4892205f, 0.8586300f, 0.6974363f, 0.1320204f, -0.7840260f, - 0.3121157f, 0.0966901f, 2.7447381f, 1.8256680f, 0.7229405f, -0.1723188f, 0.9145948f, -2.1376033f, - 0.5259342f, 0.0731194f, -0.2908303f, -0.2603913f, -0.2326528f, 3.6684167f, -0.2883157f, -2.8546307f}, - {-4.8917460f, 6.7944999f, -0.2255474f, 0.1051999f, 3.9000113f, 2.0624907f, 5.3019547f, 10.0209141f, - 1.1268179f, 2.2669628f, -6.5002980f, 1.8408583f, 5.3039579f, 2.2055962f, 0.1055369f, 1.7230233f, - 6.9605255f, 7.7025104f, 2.9880707f, -0.9274251f, -0.2287160f, -0.0206735f, 0.6885675f, 2.8179996f, - -7.1129837f, -1.3772345f, 3.8655453f, -5.9388318f, -0.0469947f, 7.2763596f, -6.3536129f, -17.0069847f}, - {1.8787041f, -0.9953383f, -1.4839923f, 0.1308209f, 0.3657510f, 0.3106483f, -1.4158971f, -6.7449651f, - 0.6553892f, -4.5046172f, -3.5489719f, 3.5363002f, 0.5454772f, 2.3521471f, 0.1612140f, -0.9744226f, - 0.6546553f, -2.7179255f, -1.7758157f, 0.3089439f, 1.7462813f, 0.1654593f, -0.2440207f, 3.9501827f, - 1.3750844f, 0.0596805f, -0.1977254f, 0.0264880f, 2.6396444f, 1.0816911f, 3.6413448f, -6.0299959f}, - {-4.1295738f, 0.1044480f, 0.2131937f, 0.0420826f, 0.5292229f, 0.0090477f, -0.0973486f, 0.9596778f, - 2.9579651f, -0.6364226f, -1.7556342f, 0.1539868f, -0.1273174f, -0.1348504f, 0.1257833f, -1.4168571f, - -1.0960362f, 0.0482449f, -1.4395387f, -0.2524115f, -2.9162085f, -0.0451428f, -0.4021681f, -0.5756381f, - 0.0515293f, -3.1996479f, -0.0007676f, -1.3878343f, -0.2864279f, -0.9579773f, -1.0999249f, 1.6500067f}, - {-2.4806111f, -6.8115449f, 3.2805641f, 0.1187415f, -0.9950783f, 6.2553434f, -1.6450261f, -6.1463733f, - 2.7507148f, 4.2995782f, 0.0461297f, -0.5417359f, 2.4306326f, -7.3530145f, 0.0698273f, -0.9394333f, - -1.3595498f, -7.5141478f, -1.4911395f, 3.2300410f, 0.1203540f, 0.0314884f, -2.0116949f, -0.8167119f, - 2.4133310f, 0.1920709f, 1.0619365f, 0.2459123f, 6.9166069f, -2.6384118f, 3.6829739f, -7.2385545f}, - {0.9408096f, 14.9067144f, 1.7709646f, 0.1105646f, -0.5600107f, -15.3188124f, -12.3718462f, -1.8893757f, - 13.6364670f, -5.7327847f, -14.1805468f, 1.0581509f, -14.2186184f, 14.8948650f, 0.0190344f, 5.4395180f, - 6.7243400f, 9.8468456f, 4.5144215f, -1.4551491f, 1.1032411f, -0.0317988f, 2.3398454f, -3.1671596f, - -7.7541409f, 1.1255593f, 6.7340465f, -4.4448423f, -9.1472626f, -3.1959128f, 4.4181323f, -2.7904994f}, - {-2.1621978f, -4.7202382f, 1.7378219f, 0.1417439f, -0.5000908f, 5.4468708f, 1.4260571f, -6.6136570f, - 1.5713804f, 3.4479704f, 2.7354901f, -0.7388076f, 5.4666147f, -3.8697338f, -0.1368596f, -2.7903373f, - -1.2043713f, -4.9554005f, 0.3324645f, 1.6767365f, 0.1156244f, -0.0326964f, -2.0945346f, -0.4590589f, - 3.0942657f, 0.0015020f, -6.2626700f, -0.3969755f, 0.7717427f, -1.9667094f, 2.9664171f, -11.9477053f}, - }; - ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_2[32] = { - 9.8383608f, 3.6922295f, 3.5774977f, -4.4619012f, 6.5087032f, -0.9540017f, -0.5059246f, 0.0706402f, - 14.3396597f, -0.2771132f, -4.8409863f, -8.3581600f, -3.5078344f, 4.3287506f, -5.7808843f, 3.9264839f, - -2.1697845f, -0.0040514f, -0.2095029f, -6.8678174f, 1.7911285f, -0.4510343f, 1.2410443f, -4.5678806f, - -0.5693849f, 2.3320096f, 4.4606552f, -6.3771009f, -4.3149071f, -0.1905672f, -3.5726390f, -1.0744030f}; - ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_2[32][32] = { - {-0.0155548f, 0.0243339f, 0.0037967f, -0.2771824f, 0.0111955f, -0.0115980f, 0.0079653f, -2.9803498f, - -0.0061037f, -0.0956634f, 0.0332446f, 0.0179244f, -0.0080377f, -9.0180779f, 0.1720033f, 0.0350694f, - -0.0146588f, -0.2135506f, -0.3158041f, 1.3697664f, 0.0119146f, 0.0119120f, -0.0986927f, 0.0297492f, - 0.0355827f, -0.1196868f, -0.0745119f, 0.0281862f, -0.0422190f, -0.3069138f, -0.0477367f, -0.0550450f}, - {-1.7374619f, 1.4822800f, -2.1885235f, 1.8354234f, -0.5380136f, 1.6621803f, 0.6251035f, 0.1008954f, - -0.8387129f, -0.2063313f, 1.0661691f, -0.9799694f, -5.1710258f, -3.2260630f, -1.5073707f, -1.0792168f, - 1.8569958f, -0.2289213f, 0.0563821f, -1.6398847f, -4.1649504f, -2.7527378f, -0.0134577f, 3.0424533f, - 0.0364320f, 0.6762254f, -3.1551330f, 2.4888904f, 1.4757305f, -0.3141717f, -2.0126467f, -0.1675602f}, - {-0.9571826f, 0.0914152f, 0.0404339f, 0.2927902f, 0.2933607f, 0.0619171f, 0.0772318f, -1.3796169f, - -0.8194544f, -0.2179988f, -1.1241078f, -0.1443964f, 0.0559355f, -1.2914546f, -0.3445117f, 0.2031156f, - 0.0273864f, -0.0193422f, -0.2136522f, 0.0429592f, 0.0212854f, 0.0414394f, -1.1734651f, 0.0582848f, - 0.0136039f, -0.1892604f, 0.0764908f, -0.0130132f, -0.1272559f, -0.0818855f, -0.0408583f, -0.1563294f}, - {-0.0213695f, 0.0596942f, -0.0641309f, -0.0146449f, 0.0416586f, -0.0378931f, 0.1234860f, 0.1622967f, - 0.0794091f, -0.0639933f, -0.1030663f, 0.0579078f, 0.1050275f, -0.0136866f, 0.0149978f, 0.0876813f, - 0.0693554f, 0.1612417f, -0.0595916f, -0.1008234f, -0.0579058f, 0.0915138f, 0.1321436f, -0.1484535f, - -0.0920316f, -0.0024532f, -0.1045300f, 0.0924260f, 0.0277524f, -0.0287276f, -0.1271127f, 0.1164243f}, - {0.0713067f, 0.0198056f, -0.3023696f, -0.0025908f, -0.0085885f, -1.1157553f, 0.0236462f, -0.0704844f, - -0.0189257f, -0.0997382f, 0.3379845f, -0.1229390f, -0.0616165f, -0.8968034f, 0.0401445f, -0.1144476f, - -0.0532077f, 0.0604580f, 0.0609454f, -0.1613472f, 0.0103525f, -0.1653874f, 0.0205189f, 0.0758978f, - -0.1514593f, 0.0151441f, 0.2043469f, 0.0349607f, -0.1361278f, -0.1255922f, 0.0631648f, 0.3570991f}, - {0.3371337f, -3.7541580f, 2.2215877f, -0.3390516f, 0.1912718f, -4.1861577f, -1.2264019f, 2.8179801f, - 0.0667294f, -0.0093539f, 2.3029909f, 3.1814916f, 3.9780347f, 0.2310601f, 0.3986159f, -0.8544636f, - 0.4139664f, -0.1876569f, -0.2448732f, -2.8053334f, 4.0488625f, 2.1094146f, -6.7310257f, -4.9950023f, - -0.8315823f, 0.0555959f, 2.4573720f, -3.7234364f, -4.2910552f, -0.2995245f, -3.2605181f, 2.3620574f}, - {-1.5522735f, -0.1866350f, -0.0067679f, 0.3196557f, 1.4052233f, 2.8143549f, -0.9992948f, -0.5309914f, - -25.8852596f, -0.1218249f, 0.6625420f, 0.3007106f, -0.2767264f, -0.1847300f, -0.5313534f, -0.0383462f, - -0.1987552f, 0.0581405f, -0.3376078f, 1.2621028f, 0.0818709f, -0.1401216f, -0.4550788f, -0.1592657f, - 0.0597123f, 0.1344101f, -0.1005317f, -0.1538406f, 2.9142656f, -0.0806051f, -0.4267367f, -31.9512234f}, - {0.6859627f, 0.1212986f, 0.1291616f, 0.0459838f, -0.0899920f, 0.0287645f, 0.1987007f, -2.7079368f, - -0.2628384f, -0.1402464f, -0.6302179f, -0.2923960f, -0.1106663f, 0.8256195f, -2.8054097f, -0.0296494f, - -0.5632019f, -0.1335654f, -0.1558440f, -6.8611612f, 0.0203786f, 0.0046566f, -0.4401442f, -0.0471430f, - 0.4535986f, -0.8657981f, 0.0684740f, 0.0518814f, -0.0123748f, -0.2270164f, 0.0922878f, -0.3863277f}, - {0.0127175f, 2.3346109f, -0.4390767f, -0.4657893f, 0.1659466f, -0.1132782f, -0.4928388f, 0.7652873f, - 1.1510741f, -0.0879600f, 0.2721785f, -0.1878961f, -0.3477249f, -0.8473209f, -0.8931856f, -0.4328294f, - -11.9181929f, -0.0282545f, -0.0217915f, 1.6676594f, -0.2122232f, -0.6190930f, 1.9053432f, -0.7592348f, - -1.0739189f, -0.7170524f, 0.3864411f, -0.8849231f, 0.1393488f, 0.0738489f, 0.4460345f, 1.9020857f}, - {0.4453296f, -0.0767821f, 0.1638939f, 1.6997167f, -0.1098599f, -0.0551604f, 0.0040561f, -13.5290670f, - -0.1285677f, -0.0590394f, 0.6499141f, -0.7617344f, 0.0453151f, 0.3104213f, -1.0711143f, 0.1361838f, - -0.4365610f, -0.1300649f, 0.2013344f, -0.5308123f, 0.1451896f, 0.1030715f, -0.6487910f, -0.3136590f, - -0.0280079f, 0.5394178f, 0.1318262f, -0.0159292f, 0.0636870f, -0.3224248f, -0.1868187f, -0.2468304f}, - {-0.0333494f, -0.0834255f, -0.1221875f, 0.6861304f, 0.0521738f, -0.0416543f, -0.4437352f, -19.3246250f, - -0.1520821f, 0.0528602f, -0.6375434f, -0.5803806f, -0.0958465f, -2.0058544f, -0.8282642f, 0.0259000f, - 0.4846996f, 0.1211179f, 0.0356884f, 1.0009497f, 0.0635682f, -0.0314105f, -0.0011147f, 0.0131714f, - -0.3410152f, 0.2798154f, 0.0961889f, 0.1266228f, -0.0934717f, -0.0904307f, 0.1355542f, 0.5722573f}, - {0.2146454f, 0.2143834f, 0.1290650f, -0.9063646f, 0.2100945f, 0.1331054f, -0.2620614f, -0.1264993f, - 0.1313979f, 0.0455465f, -0.8395286f, -0.4967833f, -0.0538581f, 0.9155380f, 0.6627046f, 0.1691243f, - 0.9887002f, -0.1597013f, -0.1236713f, -1.9041336f, 0.0427585f, 0.0849747f, -5.2559652f, -0.3133100f, - 0.0141170f, -0.1635530f, 0.4938746f, 0.0162943f, 0.2107756f, -0.3413893f, -0.0657575f, 1.0542560f}, - {-2.8868380f, -2.0837426f, -1.0611480f, -0.6143807f, -0.6398501f, -2.8018746f, 0.5166737f, -1.0814301f, - -1.9272422f, -0.1017482f, -0.4651161f, -1.4021232f, 1.8854499f, 0.1815407f, 0.5965426f, -2.3344259f, - -0.0690846f, -0.1678239f, -0.4219488f, 0.6215640f, 1.0270095f, -0.3473049f, -0.3926674f, -0.7942593f, - 1.1305071f, -1.4621233f, -0.8051161f, -0.7698632f, -2.6038630f, -0.3090037f, -1.6365144f, -1.0179478f}, - {0.0046026f, 1.1319581f, -2.6405678f, -2.0353596f, -2.1687336f, 0.3364883f, 2.1122196f, 0.2584647f, - -2.4344857f, -0.0378498f, 0.6158544f, -0.6060749f, -4.9598379f, 0.1570698f, 2.2436838f, -2.6198347f, - -2.0935996f, -0.1845744f, -0.0716080f, -1.9338604f, -4.1995640f, -3.6706774f, -1.6762524f, 3.9646862f, - -0.9677961f, 1.8319578f, -3.1916575f, 3.7312632f, 0.0820446f, -0.0497568f, -0.0898171f, -0.2499462f}, - {-0.0780375f, -0.0286571f, 0.1007227f, 0.0012229f, -0.0531285f, 0.0840718f, 0.1013894f, 0.1312424f, - -0.0673772f, 0.1603183f, 0.0074385f, -0.0718321f, -0.1549873f, 0.1616689f, 0.0405887f, -0.1558588f, - 0.0740745f, 0.1696893f, -0.0064026f, -0.1656420f, -0.1186674f, -0.1262667f, -0.0784757f, -0.1280154f, - 0.0909976f, 0.0853046f, -0.1075811f, 0.1310615f, 0.0610194f, 0.0647223f, 0.1360559f, 0.0440074f}, - {-0.2106480f, 0.0087131f, 0.1119385f, -1.0611318f, 0.5250220f, 0.0525479f, -0.2733742f, -1.0799565f, - -0.5601607f, -0.0651806f, -1.9793440f, -0.3373334f, -0.1550518f, 0.8932216f, 0.7264332f, -0.0450735f, - 1.2373760f, -0.1236272f, 0.0680048f, -3.0446634f, -0.1533586f, -0.0127355f, -0.3326311f, -0.0225603f, - -0.2265739f, -2.3752897f, -0.3771705f, -0.0728938f, 0.1741305f, 0.1111639f, 0.4131119f, 0.2239323f}, - {-2.5691276f, -1.4011253f, -2.0640867f, -3.7236946f, 1.5542637f, -0.9456654f, -1.7575809f, 3.6794879f, - -0.4439790f, -0.1009826f, 3.6702275f, -0.1935008f, -0.4423219f, -0.3825364f, -0.4784791f, 0.5927492f, - -2.3482494f, 0.0801714f, -0.1567418f, -1.7934613f, -0.1706410f, -0.6326947f, 0.6260155f, 0.3631033f, - -0.9325932f, 1.9647995f, -1.3409088f, 1.3501998f, 0.0367797f, -0.1744210f, 1.8690013f, -1.0737898f}, - {-0.5934777f, 0.6232591f, -0.3391055f, 0.2640936f, -0.2824444f, 0.4815128f, 0.6625078f, -0.1103976f, - 0.9555223f, -0.0624896f, -0.6778919f, 0.1181502f, -0.5425385f, 0.7297349f, -1.7261271f, -0.2917557f, - 1.1873137f, -0.2725933f, 0.0975242f, 1.7756181f, -0.5735835f, -0.4453230f, 0.9800369f, 0.9344145f, - -1.8692539f, 0.0120440f, -0.7315661f, 0.6250805f, 0.3839143f, -0.0376306f, 0.3816243f, 0.6059195f}, - {0.5522162f, -1.8043815f, -10.9379101f, 0.5719097f, -0.2246755f, -1.4856353f, 0.4877502f, 0.7163438f, - -11.8135147f, -0.0180790f, -0.9928634f, 0.1107815f, -0.0005064f, -0.3824990f, -0.7453306f, -1.9909632f, - -7.4362645f, -0.0245507f, -0.1815712f, -3.5507584f, -0.0075889f, -11.0296011f, -1.1292133f, -0.0710276f, - 0.5675677f, 0.2017778f, -0.0684891f, -0.0367653f, -1.6674192f, 0.0281711f, -0.8356591f, -0.0447807f}, - {0.2537312f, -3.0178010f, -0.3493635f, 1.8573236f, 0.4017631f, 0.9912633f, -0.8625028f, -0.7783228f, - -1.7815375f, -0.1204695f, 1.8551122f, 0.3344182f, -0.2828701f, -1.3226960f, -1.4470471f, 0.2895959f, - 0.6780876f, -0.2010069f, 0.0425280f, -2.1786852f, -0.1274053f, -0.2549899f, -0.2233993f, -0.1561645f, - -0.4640818f, 0.6375850f, 0.7733670f, -0.2388286f, 1.0447853f, -0.1503223f, 0.3823584f, -13.8176088f}, - {0.2575197f, -2.2127593f, -0.0389457f, -0.0215759f, 0.1659477f, -0.0097748f, -0.1935415f, -0.9091369f, - -0.1453371f, 0.0442428f, -0.1206519f, 0.1435609f, -0.0186047f, -5.0154042f, 0.0538177f, 0.0403250f, - 0.0240955f, 0.0331080f, 0.0517951f, 0.7422639f, 0.0069818f, 0.0248351f, -0.2205741f, -0.0082387f, - 0.2043269f, 0.0459435f, 0.0876343f, 0.0140607f, 0.1056308f, 0.0062555f, 0.0184278f, -0.5539715f}, - {-0.0398742f, 0.1075264f, 0.1725024f, -0.0755192f, -0.0360048f, 0.1325573f, 0.0903103f, -0.0882263f, - 0.1207692f, 0.0032722f, 0.0048489f, -0.1257241f, 0.1450990f, -0.0713558f, 0.1116815f, 0.1107689f, - -0.1447252f, 0.1581838f, -0.0160124f, -0.0425587f, 0.1411217f, 0.0865060f, -0.0643460f, -0.0431262f, - -0.1452804f, -0.0195101f, 0.1234572f, 0.0520887f, 0.1117576f, -0.0751791f, 0.1511539f, 0.1224861f}, - {0.7728126f, 2.3075340f, -0.0385258f, -3.1270287f, 0.9414487f, 3.5251477f, -0.8043440f, 0.7212446f, - -7.6850162f, -0.1609414f, -3.7687578f, -1.0751100f, -0.2052089f, 5.0728245f, 2.2835267f, 0.5930225f, - 0.1303335f, -0.1428799f, -0.3715075f, 0.5136011f, -0.4755619f, -0.2192461f, -3.8696294f, -0.0062392f, - -1.3774812f, -0.0034140f, -1.5944362f, 0.9773729f, 3.2859125f, -0.1616932f, -1.2785367f, -13.5732412f}, - {0.5535743f, 0.1461481f, -0.2218016f, -0.2971808f, -0.2169309f, 0.1564545f, -0.0390397f, 1.1558976f, - -0.0119933f, -0.0774637f, 1.1907971f, -0.5127968f, -0.0066028f, -1.6794037f, -0.3650940f, 0.2555613f, - -0.9488379f, 0.0449603f, -0.1620417f, 0.1583214f, 0.0000908f, 0.0152763f, -1.0660053f, -0.0139402f, - -1.7440189f, 0.2515209f, 0.3333162f, 0.1904725f, 0.1116094f, -0.2287960f, -0.0007165f, -1.7047704f}, - {-5.9897852f, -0.1316296f, -0.0218074f, -0.4602887f, 0.3288545f, -0.0882939f, -0.5929499f, 0.4294790f, - -0.0383545f, 0.0556869f, 0.1975944f, 0.1341491f, 0.0629570f, -2.2742157f, 0.0175826f, -0.1439869f, - -24.8701649f, -0.1582915f, -0.2460304f, -3.9643264f, 0.0863483f, 0.0180861f, -0.2210452f, -0.0868723f, - -0.4175525f, -0.8231756f, 0.0247534f, -0.1473545f, -0.0021330f, -0.0410253f, -1.1944869f, -1.1523768f}, - {0.1031547f, -3.3402514f, -4.3636522f, -0.1534714f, -0.0622189f, 0.0374694f, -0.0870097f, -4.1865788f, - -0.0555377f, 0.0252329f, 0.1339467f, 0.0461691f, -0.0503090f, 0.0289890f, -0.0095674f, -0.3289992f, - -0.0279080f, 0.0274977f, -0.0903500f, 0.5610157f, -0.0478177f, 0.4346960f, 0.4822784f, -0.1058945f, - -0.2026870f, -0.0560638f, 0.0910069f, -0.0818529f, 0.0819198f, -0.0292193f, 0.3040628f, -0.1275230f}, - {-5.8789845f, -17.1114635f, -4.6755161f, 0.1016624f, -0.8685016f, -0.3898779f, -2.3363957f, 0.1413794f, - -2.4254086f, -0.2171030f, -0.0901150f, 0.7058705f, 0.4166250f, -0.0231085f, -0.1789686f, -9.4244318f, - -0.6418229f, -0.0857969f, 0.1683681f, -0.0310597f, -0.0247807f, -5.3748040f, -7.4730940f, 0.1019564f, - -1.2126822f, -0.3726285f, -1.0287101f, 0.1803891f, -0.2227769f, -0.0791530f, -0.0159770f, -1.4883354f}, - {-17.9394970f, -0.5228514f, -11.3547935f, -0.0672671f, -2.0371394f, -0.9076943f, 2.4331825f, -6.9409127f, - 0.8286008f, 0.0208618f, -0.8009814f, 1.2268484f, 0.1943726f, -1.7297083f, -0.7668949f, -6.5505466f, - -0.6495168f, -0.0404727f, -0.1260914f, -3.5029383f, -0.0852898f, -2.9679556f, 1.6404767f, -0.0251449f, - 1.1460075f, -0.7877688f, -0.0586593f, -0.4741839f, -1.7420560f, 0.0295600f, -2.3574052f, 0.0974777f}, - {0.4443443f, 0.6384261f, 1.3317494f, -1.0085982f, 0.9508762f, 1.3168396f, -0.1862490f, -0.1801148f, - 1.1106120f, -0.0654911f, 0.1186706f, -0.7198273f, 0.5449172f, -0.5886080f, 0.7504217f, 1.8046317f, - -0.1294390f, -0.1939137f, -0.2383934f, 0.4131435f, 0.6910310f, 1.2821866f, -0.1088722f, -0.5660405f, - -0.1188610f, 0.0364403f, 0.3597929f, -0.6409024f, 1.2114668f, -0.0212278f, 0.8423592f, 0.4848156f}, - {-0.8772649f, -13.5265112f, -4.5540547f, -0.2856667f, 0.7604876f, -0.6829260f, -0.8320626f, 0.6541347f, - 0.4020181f, 0.0009324f, -10.9660740f, -0.3540186f, -0.2316812f, 0.3576394f, 0.0998953f, -1.5738430f, - 1.2089975f, 0.0706465f, -0.2538019f, 0.7016497f, -0.0282650f, -3.1291001f, -0.4375663f, -0.3979468f, - -0.1588882f, 0.3978875f, 0.2038192f, -0.4281644f, -0.5787544f, -0.0922198f, 0.9595569f, 0.0212818f}, - {0.3392667f, 0.1170919f, -0.0705636f, -0.1025443f, -0.1192213f, -0.0495686f, 0.0284667f, -0.1226804f, - 0.0050191f, -0.0516545f, -1.0892097f, 0.0033689f, 0.0471462f, 1.4266804f, 0.0288870f, -0.0110408f, - -1.1283765f, -0.1299917f, -0.4318301f, -0.9854419f, -0.0190479f, -0.0269406f, 0.3697925f, -0.0757695f, - -0.3632923f, -0.1714077f, 0.0669245f, 0.0557428f, -0.1713906f, -0.4307863f, -0.1749060f, -2.1246362f}, - {0.8383662f, -3.8122442f, 0.1568939f, -2.2105119f, -0.7086993f, -0.4664145f, -0.3578597f, 0.5554636f, - 0.6965880f, -0.1506968f, 0.2646832f, 0.2874083f, 0.1901203f, -2.4997077f, -0.3519035f, -0.0518054f, - 1.0862818f, -0.2502540f, -0.3133347f, -0.7411230f, 0.1268138f, 0.1069811f, -0.8109779f, 0.0264679f, - 0.1604289f, -0.7534032f, -0.1419461f, 0.0688303f, -0.1570919f, -0.3055144f, -0.7415189f, 2.5547018f}, - }; - ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_4[1] = {1.4616280f}; - ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_4[32][1] = { - {0.0609813f}, {0.0685224f}, {0.1655236f}, {-0.0599842f}, {0.0669006f}, {-0.1817371f}, {-0.0539167f}, - {-0.0737955f}, {0.0654664f}, {0.0302955f}, {-0.0586768f}, {0.0717433f}, {0.1472274f}, {-0.0610073f}, - {-0.0601061f}, {0.2086218f}, {-0.0545418f}, {-0.0388369f}, {-0.0613536f}, {-0.1141072f}, {-0.2289097f}, - {-0.3354485f}, {0.0831025f}, {0.1333673f}, {0.0490410f}, {0.0484894f}, {0.0436755f}, {-0.1479877f}, - {0.1540713f}, {0.0021261f}, {-0.0845848f}, {-0.0564973f}, - }; + ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_layer1[23][32] = { + {-0.1881404f, -0.0534256f, 1.6563641f, 0.0401664f, 2.8318353f, 1.5049738f, 1.4111555f, -0.2339872f, + 0.0431970f, 0.1220361f, -0.0450153f, -1.6025578f, 0.0394025f, -0.3051167f, 1.9442217f, 0.1599094f, + 0.1376955f, 2.4181051f, -0.0226484f, -0.1801709f, -0.4861264f, -0.0268545f, 0.5463807f, 0.2420150f, + -0.1238829f, 0.2916382f, 0.1507791f, 0.7952659f, 0.2736979f, 3.2790639f, 1.2062043f, -0.0884467f}, + {-0.0469924f, 0.2013927f, 0.0307775f, -0.1241788f, -0.0100412f, 0.0422375f, 0.0211071f, -0.0359304f, + 0.0451861f, 0.0291862f, -0.2094866f, -0.0013007f, 0.1191471f, 0.0750159f, 0.0184378f, 0.0419437f, + -0.0207304f, -0.0444109f, 0.0013400f, -0.0699210f, -0.0668742f, -0.0880825f, -0.0107244f, 0.0363424f, + 0.1391699f, -0.0112885f, -0.0060098f, -0.0073863f, -0.0566143f, -0.0224207f, 0.0103718f, -0.0015193f}, + {0.4520382f, 0.1227609f, -1.3887709f, -0.0542129f, -3.2003114f, -0.8354173f, -1.3173198f, 0.3292131f, + -0.1657729f, -0.1982902f, 0.1599589f, -0.0417666f, -0.1461042f, -1.3237997f, -5.3609071f, -0.0981676f, + 0.2922535f, -1.8692241f, -0.0345302f, 0.1810613f, 0.4473544f, -0.0159401f, -0.7293931f, -1.4816793f, + -0.1431545f, -0.0955672f, -0.2370718f, -0.7204540f, 0.8451244f, -3.4310548f, -1.3518151f, 0.1551731f}, + {0.2670300f, 0.1343590f, 3.0347505f, -0.1783503f, 2.1586559f, 2.4137778f, 2.0080864f, -0.2545274f, + -0.1985905f, 0.1653812f, -0.1714860f, 4.1022782f, -0.1045471f, 4.4776497f, 3.3737848f, -0.0849546f, + -6.1899095f, 3.6970129f, 0.0007382f, 0.1675882f, 0.6014717f, -0.0287709f, 0.0495882f, 2.2192705f, + -0.1043157f, -4.7508621f, -0.0022774f, 0.3766513f, -0.7505829f, 1.9759512f, 1.6747239f, -0.1004091f}, + {0.6639504f, -0.0384022f, -10.0415087f, -0.0032648f, 0.3049855f, -2.0427964f, -1.1522077f, 0.0935732f, + 0.1232134f, 0.0868663f, -0.0230848f, -1.8257296f, -0.0799238f, 6.8892417f, -1.3941933f, 0.0445172f, + 0.9485117f, -2.5238073f, -0.0148513f, 0.2256772f, 0.5914315f, -0.1278037f, 0.1609928f, 11.3438406f, + -0.0831544f, 0.1928522f, 0.0361467f, 0.0137040f, 4.9549832f, 2.3954937f, 0.3917757f, 0.1206975f}, + {29.6590214f, -0.0836848f, -1.3028307f, -0.1391431f, -0.3703596f, 5.3762760f, 1.8429571f, 21.0697041f, + -0.1232606f, 0.0066067f, -0.0308768f, -0.9960231f, 0.1865301f, -1.2142091f, 0.9273136f, 0.0974103f, + 1.4067870f, 0.7268439f, 0.0035755f, 0.0619486f, -32.8901024f, -0.1950644f, -0.3978897f, -3.1790049f, + -0.1371673f, 0.1569460f, 0.0268667f, -0.4512640f, 0.3055371f, -0.2241473f, -0.6455348f, 0.1178979f}, + {-2.9178317f, -0.2023720f, -0.2946439f, -0.1851392f, -0.3493766f, -1.5397958f, -1.5902523f, 1.0981250f, + -0.1796725f, -0.0540953f, 0.0926500f, 2.0021629f, -0.1277778f, 3.3643394f, -7.5327554f, -0.0084912f, + 2.7298651f, 0.2535582f, 0.0474618f, -0.1377846f, -2.2746830f, -0.2016302f, -0.7150622f, 4.4011140f, + -0.1688751f, -1.2160714f, -0.0055839f, -1.1319760f, -2.2543004f, 0.6365916f, -1.4942099f, -0.0992425f}, + {-5.9751196f, -0.1597221f, -3.8946304f, 0.0537821f, 0.4741110f, 3.6895070f, 2.5116272f, 1.7058172f, + -0.0860321f, -0.1519644f, 0.1465356f, 1.4165760f, -0.0984433f, 1.6990343f, 4.0953226f, 0.1742475f, + -3.2570388f, 3.1653547f, 0.0135764f, 0.0092055f, -5.0966530f, -0.0542810f, 0.4907863f, 0.5900084f, + -0.1736992f, -4.9153452f, 0.2017547f, 0.2854181f, 3.1490057f, 0.2885774f, 0.9775900f, -0.2207156f}, + {0.3805595f, 0.0308984f, -9.5846119f, -0.0547350f, 1.9641919f, 2.0823991f, 9.9298115f, 0.0344243f, + -0.1557834f, -0.1847700f, -0.1195207f, 4.4698248f, 0.1492174f, 0.4272707f, 4.7265644f, 0.0200772f, + -14.3444443f, 4.9532328f, 0.0319610f, -0.0645846f, -0.6238102f, 0.1038110f, 0.2483765f, -5.1799927f, + 0.0782294f, 16.8777409f, 0.0196593f, 0.8423936f, -8.5921221f, -0.0184179f, -5.7857180f, -0.0551181f}, + {17.1570740f, 0.0265437f, -1.4766232f, -0.0528512f, 1.0128449f, 3.1529653f, -0.6560294f, 8.7189465f, + -0.1728377f, 0.1245629f, 0.1072764f, 0.2649773f, 0.0254132f, -0.8094708f, 1.8371828f, 0.1586192f, + 1.9410020f, 0.9662392f, -0.0839922f, -0.2894930f, -16.5091496f, -0.1079556f, -0.1204132f, -0.9694697f, + 0.0537786f, 0.2476868f, 0.0076408f, 0.1025890f, 0.1267423f, 0.4956081f, 0.1457323f, 0.1342634f}, + {-0.5389574f, 0.1333421f, -4.6338782f, -0.0645123f, -0.6526322f, -3.2958410f, -1.2309581f, -1.0803053f, + -0.1170542f, -0.0169311f, 0.1147491f, 2.9890807f, -0.1234096f, 0.6792320f, -3.9311285f, -0.0678321f, + -2.7922039f, 4.9413238f, 0.1060735f, -0.1114068f, -2.2443752f, -0.1649915f, -0.3656403f, 2.5320942f, + -0.0249616f, -4.5098810f, -0.1773834f, -1.9516623f, -1.6839710f, -0.1365123f, 1.0296160f, -0.0419825f}, + {-2.4413636f, 0.1075683f, -1.4518708f, 0.0537449f, 0.1154493f, -0.5463845f, 1.3964951f, 2.6729572f, + -0.0206257f, 0.1435281f, -0.1819518f, 0.4540120f, -0.1910136f, 1.7696143f, 2.3670278f, 0.1324464f, + -0.5837788f, -2.2784615f, 0.0345478f, -0.0980538f, -0.4999657f, 0.1178097f, 0.5756868f, -0.1058674f, + 0.1920418f, -3.5473657f, 0.2146371f, 0.2557987f, 1.3935618f, 0.3242345f, 0.2029733f, -0.1844350f}, + {-0.9069599f, -0.2032758f, -0.5786582f, 0.1395915f, 3.9338124f, -1.6806563f, 0.4269728f, -0.3697720f, + -0.0306356f, -0.0341866f, -0.0635755f, 1.8898975f, 0.1968578f, -17.2182655f, 1.4839698f, -0.0541308f, + 15.9838457f, 18.5951862f, 0.0078872f, -0.1186571f, -2.4982276f, 0.0033835f, 0.3749593f, -15.0238085f, + 0.0595601f, -16.8588371f, 0.1146287f, 0.1274172f, 19.3332062f, -7.0513921f, -5.4852023f, 0.1681230f}, + {-5.1457887f, 0.0335570f, 1.8620163f, 0.0560381f, -0.6397949f, -4.0867515f, 1.3578068f, -23.9992580f, + -0.1034287f, 0.1437906f, 0.1076568f, -0.6930848f, -0.1176134f, 2.2855785f, -0.8021089f, 0.0424611f, + -0.6139123f, -3.1381547f, 0.0188163f, -0.1728741f, 0.6676420f, -0.1124282f, 0.1077818f, 2.3839712f, + 0.1340676f, 1.3538554f, 0.0421035f, 0.4513423f, -0.1543196f, 0.5120541f, -0.8940096f, -0.1175765f}, + {2.1656792f, 0.1638565f, 4.5302448f, 0.0741160f, 3.3850696f, -4.8867540f, 2.8059542f, -0.0023008f, + -0.1248942f, -0.0075225f, -0.0082212f, -1.0955724f, -0.1462416f, -1.7098176f, -4.1775723f, 0.1950609f, + 3.6847639f, 1.6520064f, 0.0310502f, -0.0430167f, 3.4527576f, 0.1453262f, -1.0126116f, 1.8785841f, + -0.0615105f, 1.0451943f, -0.2653875f, -1.2223006f, -1.0100641f, 1.2076828f, 0.4882897f, -0.0618375f}, + {2.4578559f, -0.1464199f, -1.3086185f, 0.1208716f, -0.2079897f, -2.7138259f, -1.4107026f, -0.4483974f, + -0.1599056f, 0.0242936f, 0.1326804f, 0.8664415f, 0.0588684f, 0.7366717f, 2.3159802f, -0.1917707f, + -2.0800066f, -7.5100355f, 0.0585225f, 0.1582773f, 1.8128076f, -0.0756957f, 0.8521049f, 0.5539182f, + -0.1738797f, -0.2020151f, 0.2219591f, 0.1088298f, -1.9535940f, 2.4130275f, -0.0741222f, 0.1156681f}, + {-0.4152933f, -0.0679605f, -0.5760314f, -0.0201883f, -14.1784763f, 0.7755737f, -19.5469246f, 0.0381304f, + 0.0160074f, 0.1124380f, -0.0478151f, -2.3719466f, 0.0819727f, -12.5069208f, 2.0468810f, 0.0964909f, + 7.8784809f, -6.3555703f, -0.0429914f, -0.0162720f, -0.9493829f, 0.0296786f, -0.0244959f, -12.6325788f, + -0.1871653f, -9.8338795f, 0.0391840f, -0.1199073f, -11.7859421f, 8.7398720f, 19.4971046f, -0.1954873f}, + {-4.8962007f, -0.1695992f, 0.7760146f, -0.0199836f, -0.0576061f, -6.0196476f, -2.3023551f, -20.0125084f, + -0.1957836f, -0.0993785f, 0.1109372f, -0.0710161f, -0.0553650f, 0.2546394f, -1.7578228f, 0.1498791f, + -2.6269529f, 1.3973731f, 0.0464059f, -0.2307575f, 1.6730053f, -0.0038867f, 0.1040150f, 2.6721606f, + 0.2027777f, -1.2358316f, -0.0587254f, 0.0610504f, -0.1700777f, -0.4323797f, 1.0359807f, -0.0127435f}, + {1.1245984f, -0.1806923f, -1.5868790f, 0.1536594f, 1.6837788f, -1.6474472f, -3.9225550f, 0.4506312f, + 0.1854908f, -0.1023232f, -0.0306957f, -0.8615071f, 0.0945480f, 2.0585704f, 0.6044773f, 0.1269336f, + 2.4720187f, -4.5123949f, -0.0657749f, 0.1738364f, 2.4188614f, 0.0038840f, -0.2019601f, -0.3842189f, + -0.0493631f, 3.6777370f, -0.1003436f, 0.6174496f, 1.0476112f, 2.7601521f, 0.9059890f, -0.1691816f}, + {1.9658293f, 0.2083382f, 1.7833723f, 0.0662620f, -0.3932888f, -1.0642430f, 0.1807114f, -1.1486723f, + -0.0177136f, -0.1706942f, 0.1730027f, 0.6712329f, 0.0485299f, 0.6379296f, -0.2880911f, -0.1993632f, + -0.9471832f, 1.9425983f, 0.0328524f, 0.0777725f, 0.6454380f, 0.0143852f, 0.0192997f, 1.6793132f, + -0.1872064f, -1.5757623f, 0.0242778f, -0.5992475f, 2.2148299f, -3.5215647f, -2.9748621f, 0.0112703f}, + {0.3737165f, 0.0361593f, -0.1075856f, -0.0312021f, -0.0786010f, 1.3149793f, 0.0237401f, -0.0819654f, + -0.1388431f, -0.0306386f, -0.0704427f, -2.3997226f, -0.1392045f, 0.7729424f, 0.1253861f, -0.0819755f, + -0.7590774f, -0.3295609f, -0.0172208f, -0.0551179f, 0.4599459f, -0.1143881f, 2.7430685f, 0.3621114f, + -0.1475701f, 0.2296079f, -2.2224922f, -0.9080986f, 0.2101683f, 0.1190262f, -2.2205217f, -0.0811555f}, + {0.3946800f, -0.1204188f, 0.0543225f, -0.0392627f, 1.9454094f, 0.1865290f, 1.5276426f, -0.0342965f, + 0.0117116f, -0.1873923f, -0.1045035f, 1.8535231f, -0.0207077f, 0.0981549f, -0.0327459f, -0.1486938f, + 0.6359531f, -0.1314566f, -2.1469448f, -0.1665767f, 0.5134121f, -0.0341647f, -2.1786075f, -0.5976576f, + 0.0111857f, 0.3272055f, 2.1917374f, -1.6247722f, 1.6025572f, -1.9965295f, 0.3347488f, 0.1113990f}, + {0.0340557f, -0.1659652f, -0.0042457f, 0.0010229f, -2.1550148f, -0.4728722f, -1.3667214f, 0.2625635f, + -0.0302200f, -0.0322885f, 0.0227866f, 0.6977839f, 0.0050141f, -1.6183628f, 0.0869662f, -0.0775411f, + 0.4754244f, 0.4596581f, 2.1509945f, -0.0313832f, 0.0336208f, -0.1547154f, -0.6017126f, 0.0369996f, + -0.1102583f, -0.5788267f, 0.0017006f, 2.6352038f, -1.7847317f, 1.7510574f, 2.1478791f, -0.2251654f}, + }; - } // namespace t5dnn -} // namespace ALPAKA_ACCELERATOR_NAMESPACE::lst + ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_layer2[32] = { + -0.2689391f, 1.5461178f, -0.2424639f, 0.4424149f, -0.0411816f, -4.1070848f, 1.4709516f, -0.2439820f, + -0.1750926f, 2.8802166f, -0.1573734f, -1.3724055f, 0.3671952f, 1.8267332f, 1.5655776f, -0.7323843f, + 1.6318209f, 2.2198663f, -1.5951139f, -0.0870247f, 0.2806863f, -0.2407108f, 0.1310665f, -0.5246177f, + 0.1914421f, -0.3386542f, -0.6310596f, 3.2995102f, 0.7519229f, -0.1565450f, -0.1496341f, 1.0073272f}; + + ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_layer2[32][32] = { + {-0.1731049f, 1.7775618f, -0.2532010f, -0.2902778f, -0.1392802f, 4.2428946f, -0.1866968f, -0.1800365f, + -0.0634398f, 0.0763313f, 0.0472901f, -0.8030146f, 0.3161853f, -1.0713238f, -4.6514492f, -0.3908085f, + 1.1607268f, 0.8834935f, -0.1194544f, -0.0785166f, 0.4967587f, -0.0558136f, -0.9601135f, -0.1001592f, + 3.4427991f, -0.2144053f, -0.3632556f, 0.0117088f, 0.1742481f, -0.2540179f, -0.1705156f, -0.2627344f}, + {-0.1478276f, -0.1659575f, 0.1602777f, -0.0758106f, 0.1067696f, -0.0247068f, -0.1123443f, -0.1724832f, + -0.0013103f, -0.0685904f, 0.1537329f, 0.1042632f, -0.0360880f, -0.0679077f, 0.0672719f, 0.1597116f, + -0.0150259f, 0.0367102f, -0.0545881f, -0.0693004f, -0.1008447f, -0.0672846f, -0.1395939f, -0.0324785f, + -0.1051702f, -0.0530534f, -0.1019061f, -0.0921245f, 0.1195077f, 0.0453448f, 0.0257045f, -0.0622537f}, + {-0.0363173f, -0.1990481f, -0.0452148f, 0.4074381f, -0.0731660f, -0.0823270f, 0.3154473f, -0.1909118f, + -0.0165690f, 0.1325824f, -0.0760181f, 0.7768906f, -0.2702211f, -0.6023573f, 1.5904741f, 0.2384946f, + 0.7610655f, -2.8705251f, 0.5754877f, -0.1587478f, -0.5708794f, -0.3421216f, 0.5023443f, 1.2806857f, + 0.2158970f, -0.1364033f, -0.3398291f, 0.9066412f, -1.2935438f, 0.0273695f, -0.1850613f, -0.9301611f}, + {-0.1281746f, 0.1695392f, 0.0805936f, -0.0598281f, 0.1266985f, -0.1697189f, -0.1091505f, -0.1569477f, + 0.0363969f, -0.0628394f, 0.0107523f, 0.0659535f, -0.0568244f, -0.1299786f, 0.0005438f, -0.0806242f, + -0.0806848f, -0.0919798f, -0.0748445f, 0.0792912f, 0.0022868f, 0.0211520f, -0.0183716f, 0.1279848f, + -0.1518286f, -0.0113527f, 0.0824359f, -0.0178597f, 0.0272009f, 0.0288935f, 0.0123459f, 0.1685353f}, + {0.1099675f, -0.3914332f, -0.0647218f, -0.8259028f, -0.0283726f, -0.0860217f, -2.0489185f, 0.1042144f, + 0.1024824f, 0.0735443f, -0.1235109f, -3.3674469f, -0.1799957f, -7.1867313f, 1.6053666f, -0.5203959f, + 0.8686391f, -0.0675404f, -2.8893898f, -0.0796400f, 1.2672142f, -0.0371844f, -1.8065344f, -2.2551982f, + 0.0355568f, 0.0672171f, 0.7150316f, 1.3620002f, -0.4106106f, 0.0126076f, 0.0408083f, 1.5958146f}, + {0.0525989f, 1.8947815f, -0.2513640f, -0.3715420f, -0.1752283f, 1.3911799f, -0.7633898f, -0.1716654f, + -0.0145629f, -1.7601604f, -0.1943324f, -0.5716376f, -0.8281464f, -0.0308049f, -1.4709659f, -0.4294116f, + -0.1030817f, -0.1823493f, 0.7561242f, -0.1608112f, 0.3980689f, -0.2464017f, -1.3065518f, 0.0875702f, + -0.1504322f, -0.0352198f, -0.4051513f, 0.7010455f, -0.2363433f, -0.1118084f, -0.1329087f, -0.3257700f}, + {-0.1209070f, 0.1677164f, -0.1353413f, -0.0410048f, -0.1432644f, 0.2649301f, 0.2247741f, -0.0425357f, + -0.2644008f, 1.4204332f, -0.2540753f, 0.2481354f, 1.9494507f, -0.2003033f, -0.5938342f, -0.3314930f, + 1.5038266f, -2.4000788f, -1.6202501f, -0.0256936f, -0.2890913f, -0.2113032f, 0.9030544f, 1.1483711f, + 0.0545346f, -0.1961582f, -0.2267976f, 0.2372836f, 2.5995049f, -0.1469661f, -0.1017130f, 1.6176132f}, + {0.0542207f, 2.7658713f, -0.1700335f, -0.3357265f, -0.1097085f, 1.6508883f, 0.0132292f, 0.1211861f, + -0.0852982f, 0.9232512f, 0.0202751f, 0.3138782f, 0.2674713f, 0.1247260f, 0.3859081f, 0.3961721f, + 1.0556988f, 0.8574673f, -0.1462571f, -0.1600272f, 0.4117427f, -0.1561815f, 0.0553897f, -0.2753994f, + 5.8420453f, 0.0883128f, 0.3594444f, -0.7174141f, 0.5683901f, 0.0096710f, -0.0957449f, -0.0195320f}, + {0.1561092f, -0.0417566f, -0.1044470f, 0.1186895f, -0.1195878f, 0.0446987f, -0.1386125f, -0.0103878f, + 0.1173026f, 0.1349312f, -0.0676422f, -0.1452308f, 0.0093872f, 0.0069650f, 0.1739093f, -0.1592752f, + -0.1329019f, -0.0459163f, -0.1511888f, -0.0040456f, 0.0065862f, 0.0106182f, 0.0318060f, 0.1003269f, + 0.0249398f, 0.1661194f, -0.0286407f, -0.1062361f, 0.0026465f, -0.0091479f, -0.1493473f, 0.0519762f}, + {-0.0702637f, 0.1154817f, -0.0680643f, 0.1447217f, 0.1394082f, -0.0691432f, 0.0939426f, 0.0483852f, + 0.1437123f, -0.1085759f, 0.0333924f, -0.0683726f, 0.0707103f, -0.0723069f, 0.0124601f, -0.0309495f, + -0.0308395f, -0.0695953f, -0.1078720f, 0.0858701f, -0.0773453f, 0.0477413f, 0.0615588f, 0.1656474f, + 0.1718751f, -0.1125762f, 0.1753366f, -0.0557704f, 0.0921221f, 0.0372290f, -0.1084552f, -0.0438967f}, + {-0.0557757f, 0.0694144f, 0.1150911f, -0.0202319f, 0.0661389f, -0.0928373f, 0.0441888f, -0.0028318f, + -0.0039446f, 0.0294675f, 0.1353384f, 0.0427515f, 0.0695194f, 0.1329748f, 0.1339706f, 0.0713900f, + -0.1384726f, 0.0925476f, 0.1581103f, 0.0100842f, -0.1248652f, -0.0173615f, 0.1637451f, -0.0025173f, + -0.0331219f, -0.0335269f, 0.0949441f, 0.0538645f, 0.0834281f, 0.0137191f, -0.1360130f, 0.0074489f}, + {-0.0949665f, -0.2181539f, 0.0871969f, 3.0772011f, -0.1152011f, -0.0022047f, 1.2700632f, -0.1173392f, + -0.1678371f, -1.3448639f, -0.2893313f, 1.5105180f, -0.6029126f, -1.1568675f, 1.4823192f, 0.1635401f, + -2.2136483f, -1.4164798f, -0.4795305f, -0.0807557f, -1.6675406f, -0.0992591f, 2.1212378f, -0.9400231f, + -0.5339298f, -0.0342672f, -2.3564072f, 1.3407421f, -3.8635128f, -0.1171367f, -0.0364181f, -3.2491686f}, + {-0.1047117f, -0.0540412f, -0.1137928f, 0.1582367f, -0.0982449f, 0.0511854f, -0.0805884f, -0.1141258f, + 0.0931992f, -0.0227052f, 0.0780590f, -0.1288135f, -0.1186576f, -0.0754066f, -0.1234059f, -0.0091936f, + 0.0205475f, 0.1640417f, -0.1527465f, 0.0068472f, -0.1239804f, -0.0448335f, -0.0061169f, -0.0078998f, + 0.0253047f, 0.0712901f, 0.0024753f, -0.0259875f, -0.1238613f, 0.1096537f, -0.0953007f, 0.1385384f}, + {0.0521762f, 1.4885306f, -0.1298001f, 2.3033395f, -0.1589162f, -0.8458843f, 0.0631668f, -0.1424429f, + -0.0384785f, 0.5599840f, 0.0008631f, -1.5839294f, 1.9202064f, 0.6930331f, 0.4948464f, -0.6195241f, + -3.0526664f, 3.1423819f, -1.3433597f, -0.1167206f, -1.3491610f, -0.0901343f, -1.2291449f, 3.5039587f, + 0.4674770f, -0.3027362f, 0.8279622f, 0.3417586f, 0.1367343f, -0.1085793f, -0.1048759f, 1.2729272f}, + {-0.0029521f, 0.2439991f, -0.0858953f, -2.7804739f, -0.0220416f, 0.0256599f, -0.3304259f, -0.0586597f, + -0.0459698f, 0.1670698f, -0.1359344f, -0.3957845f, -1.6954739f, 0.3318155f, 0.9375985f, 0.5211958f, + 0.6071047f, -3.4249072f, 1.3199407f, 0.0136374f, 1.2692807f, 0.0233104f, -0.0731508f, 2.2171400f, + -0.6052189f, -0.0698463f, 1.6376522f, -1.1908000f, -0.1706121f, -0.0380146f, 0.0144418f, 1.5177792f}, + {-0.0314772f, 0.0523589f, -0.0517322f, -0.0100344f, 0.0714635f, -0.1646974f, 0.0800682f, 0.1132821f, + -0.0028872f, -0.1239987f, -0.1322138f, -0.1059789f, 0.1752418f, 0.0475279f, -0.0046871f, 0.1574167f, + -0.0231106f, -0.0261228f, 0.0236005f, 0.1663371f, 0.1059707f, 0.1229704f, 0.1427562f, -0.1648343f, + 0.0992667f, -0.0631751f, -0.1411413f, -0.0999486f, -0.0972435f, -0.1422556f, 0.0973614f, -0.0156000f}, + {-0.1309903f, -0.5060971f, -0.1911870f, 2.2349114f, 0.1010354f, 0.5538697f, 1.8757060f, -0.1538645f, + -0.2073075f, -1.8350753f, 0.0532570f, 1.8151909f, -0.6800886f, 0.2615838f, -0.6204563f, -0.1238837f, + -0.4772464f, -2.4070835f, -0.2783994f, -0.0211087f, -4.4925098f, -0.0790045f, 1.3566529f, -0.3650998f, + -0.4658130f, -0.0479139f, -1.9361999f, 2.1485121f, -3.1108823f, -0.0020647f, -0.0489678f, -0.4781263f}, + {-0.0099352f, -1.9572417f, 0.0918592f, 0.7327217f, -0.0609625f, -0.1969659f, 0.1922992f, -0.1091586f, + -0.2125459f, -1.9542989f, -0.1648019f, -0.9355955f, 0.9144324f, -5.0530005f, -0.2265045f, -0.5638458f, + 4.4370432f, -2.0318019f, -1.5679311f, 0.0221776f, -0.4063498f, -0.1160609f, 0.9651156f, -0.2401051f, + 0.1903293f, -0.2355373f, 0.2334733f, 0.1025979f, 0.7150746f, 0.0315593f, -0.0001765f, 0.0137871f}, + {0.0320691f, -1.8876421f, -0.1241799f, -3.1652985f, -0.1528286f, 2.1882250f, -2.5907574f, 0.0210803f, + -0.1545521f, 0.7706368f, -0.1652040f, -4.1518817f, 4.2974262f, 0.3074523f, 3.3711803f, -37.9055862f, + 1.0623894f, 0.4360786f, -2.6417589f, 0.1113010f, 3.8902094f, -0.1616735f, 0.5595753f, 1.5364015f, + -2.4740698f, -0.0240434f, -28.0232792f, 0.6092473f, 1.6978041f, -0.0458809f, 0.0664777f, 0.2603019f}, + {0.1044999f, 0.0054908f, 0.1407564f, -0.1701076f, -0.1274551f, 0.0443607f, 0.1182709f, -0.1103420f, + -0.1343671f, -0.0042888f, -0.1611361f, 0.0154269f, 0.2285106f, 0.0870507f, 0.0914433f, 0.0657276f, + -0.1664300f, -0.0342912f, 0.1037545f, -0.1175308f, 0.1135652f, 0.1325845f, -0.1459545f, -0.2156865f, + -0.1673723f, -0.1156510f, 0.0179541f, 0.0541515f, 0.0957617f, -0.1297485f, 0.1045326f, 0.2950188f}, + {-0.1401742f, -2.8181052f, -0.0588381f, -0.1517100f, -0.0608850f, -3.5837226f, -0.1528927f, -0.0211265f, + 0.0881796f, -0.4448619f, -0.1457623f, -0.8828475f, 0.1261238f, -1.0495204f, -3.7918513f, -0.4645159f, + -0.0800092f, 0.0624971f, 0.1528609f, -0.1069645f, 0.4319421f, 0.0651448f, -0.6571375f, -0.0323338f, + -4.6534319f, -0.0538999f, -0.2221518f, 0.0972160f, 0.1496329f, 0.0570569f, -0.1125795f, -0.0153687f}, + {-0.1065502f, 0.0606179f, -0.1400291f, -0.0220975f, -0.0613350f, -0.0038843f, -0.0132201f, 0.1678067f, + 0.1008587f, -0.1255144f, -0.0675021f, -0.0475353f, 0.0278098f, 0.0527470f, -0.0089845f, -0.0622052f, + 0.1088723f, 0.0053812f, 0.0627310f, -0.0226460f, -0.1096366f, -0.0505830f, -0.0301058f, -0.0775778f, + -0.0008928f, -0.1157909f, 0.0544982f, 0.0430219f, -0.0134386f, -0.1095094f, 0.1215172f, 0.0081556f}, + {-0.1747307f, -0.7465636f, -0.0497346f, -2.0686443f, 0.0190713f, -2.9156351f, -5.4731860f, -0.0728399f, + -0.0845178f, -14.8429976f, -0.1068359f, 1.8549156f, -3.1135283f, -0.0907917f, -0.0262453f, -8.8010912f, + -4.3007965f, -1.6772208f, -0.2576891f, -0.0163111f, -7.8583646f, 0.0697906f, -0.0943863f, -0.7450574f, + 1.1493169f, 0.0921000f, -0.2395420f, 0.5794312f, -4.2405462f, -0.0910322f, -0.1381017f, -1.0270567f}, + {-0.0446755f, -0.8131990f, -0.1741483f, -1.7555307f, 0.0153283f, 0.0734032f, -0.5930048f, -0.0398877f, + -0.0215982f, 0.0497884f, -0.0504920f, 0.0942539f, -1.1370168f, -0.8821361f, -0.0879569f, 0.3811991f, + 1.2224945f, 0.3782545f, 1.4800016f, 0.0494110f, 1.7101970f, -0.2885793f, -0.1778114f, -1.3913733f, + -0.0944610f, -0.3578439f, 0.3491475f, -3.0349872f, 0.8044587f, 0.0928676f, -0.0395946f, 0.2008810f}, + {0.0721043f, -0.1181163f, 0.0108281f, -0.1215726f, 0.1285277f, 0.0851443f, 0.0791321f, 0.1765833f, + -0.0324889f, -0.0150838f, -0.0051942f, 0.1685798f, 0.1521861f, 0.0283858f, 0.0326072f, 0.0346215f, + -0.1081120f, -0.0745824f, -0.1762613f, 0.0901582f, 0.1335704f, 0.1599123f, -0.0097813f, 0.0364541f, + -0.0391450f, -0.0079635f, 0.1014886f, 0.0130333f, 0.0438304f, -0.0074333f, 0.0845035f, -0.0471010f}, + {0.0360538f, -0.9701002f, -0.2217611f, -1.1626705f, 0.0548465f, 0.6605385f, -0.6693703f, -0.1432099f, + -0.0754442f, -0.2380328f, -0.0754142f, -2.3242903f, 3.5773275f, 0.0707042f, 0.2052065f, -1.3753067f, + -0.8530636f, 3.1850073f, -0.2901604f, -0.1291050f, -4.4672642f, -0.2425279f, 0.1252670f, 0.4261391f, + -0.8620862f, 0.1153403f, -0.1999598f, -4.7756801f, 2.8851914f, -0.1340472f, 0.0482952f, 1.7996837f}, + {-0.1654812f, 0.9604513f, 0.1770310f, -16.5736618f, -0.0350192f, -0.5557595f, -35.3047371f, -0.1299658f, + 0.0065243f, -3.0823336f, 0.0351931f, 4.9456911f, -1.4382623f, -1.6900688f, -1.9084880f, -3.1811504f, + -8.0212736f, -7.3994560f, 4.9219728f, 0.0433824f, 0.6197430f, 0.0308996f, 5.2004323f, 0.5327767f, + 1.0885966f, 0.1487215f, -21.4211712f, -1.8733859f, 1.9195696f, -0.0539309f, -0.0795544f, -3.1121061f}, + {-0.0058153f, 1.7521383f, -0.2205407f, 2.6318321f, -0.0038140f, -1.4131194f, 3.0181022f, 0.0373498f, + -0.1246315f, -1.8323456f, -0.1470954f, 2.9131169f, 1.1522563f, 0.6036215f, -3.3962972f, 7.0906253f, + -1.5353408f, -0.2648884f, 0.5501783f, -0.2262681f, -2.4874980f, -0.0533402f, 3.0222948f, 0.3296265f, + 1.4057258f, 0.0185255f, 6.1208682f, 0.7210779f, -0.3055671f, -0.2595702f, -0.1286864f, 0.6510819f}, + {-0.2145578f, 0.4758183f, -0.1186396f, -0.6096930f, -0.1574199f, -0.1929667f, -0.6877209f, -0.2098342f, + 0.0726678f, 0.1379885f, 0.0710437f, -1.1860796f, 0.6582619f, 0.2388466f, 0.0458675f, -0.0634391f, + -0.1678368f, -8.2454395f, -0.6461441f, -0.2063597f, 0.0304686f, 0.0319904f, -1.0730971f, 1.1281222f, + 0.1292592f, -0.3054110f, 0.7732272f, -1.0069786f, -0.0847367f, -0.2342585f, -0.1553642f, 1.5100089f}, + {-0.1022291f, 2.7367072f, -0.1738961f, -1.0328600f, -0.0864617f, -0.3224345f, -2.6092832f, -0.2382921f, + 0.0578183f, 0.4115438f, 0.0121692f, -1.0689495f, 0.5158959f, 2.9600139f, 0.8839240f, -0.7147520f, + -2.7168157f, 1.2148006f, 1.5884653f, -0.1227511f, 1.3176637f, -0.1335970f, -1.4691980f, 1.1131358f, + -0.1302031f, 0.0779746f, 0.2622980f, 0.0837635f, 2.7756395f, -0.0315265f, 0.0868374f, -4.2980185f}, + {0.0228074f, 2.1787968f, -0.1889012f, -0.8560471f, -0.1063542f, -0.2869910f, 0.2767612f, -0.1183861f, + -0.0992468f, 2.1517978f, -0.0428540f, 1.0697522f, 1.9683092f, 2.1042306f, -0.0426359f, -0.3499008f, + -0.9989156f, 0.0880459f, 2.9753070f, -0.1941337f, -3.1616704f, -0.0093505f, 1.4922180f, 2.8480091f, + 0.2656264f, -0.1299839f, -1.0458518f, -1.6748481f, -3.1420829f, -0.1360553f, -0.1117443f, -1.3989290f}, + {-0.0246332f, 0.1165779f, 0.0255498f, -0.0601489f, 0.1545041f, -0.0977981f, 0.1242626f, -0.1533627f, + -0.1294386f, -0.0231293f, -0.1460808f, 0.1763088f, 0.0953614f, -0.0716483f, -0.1003436f, 0.0804519f, + 0.1373295f, -0.0686773f, 0.1198382f, 0.1519430f, 0.1640775f, -0.1675753f, 0.0790529f, -0.1521838f, + 0.0378523f, 0.1039687f, -0.0701027f, 0.0509319f, 0.1355647f, 0.0978021f, 0.0391430f, 0.0241266f}, + }; + + ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_output_layer[1] = {-0.7420582f}; + + ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_output_layer[32][1] = { + {0.0381968f}, {1.0667214f}, {0.0505496f}, {-1.5677565f}, {0.0066824f}, {-0.9951485f}, {0.9438043f}, + {0.0068631f}, {-0.0216870f}, {0.6560486f}, {-0.0235629f}, {0.9653404f}, {0.6641668f}, {-0.5351945f}, + {-0.5303048f}, {1.9339687f}, {0.4359012f}, {-0.7492802f}, {-0.5728400f}, {0.0473893f}, {-0.5091293f}, + {-0.1926489f}, {-0.6562935f}, {-0.5583456f}, {-0.7618014f}, {-0.0316967f}, {1.1637378f}, {-0.5158406f}, + {-0.5268564f}, {0.0735416f}, {0.0270067f}, {-0.5614370f}, + }; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE::lst::t5dnn #endif diff --git a/RecoTracker/LSTCore/src/alpaka/PixelQuintuplet.h b/RecoTracker/LSTCore/src/alpaka/PixelQuintuplet.h index 08feb0dfe3384..08b7d7d414bf7 100644 --- a/RecoTracker/LSTCore/src/alpaka/PixelQuintuplet.h +++ b/RecoTracker/LSTCore/src/alpaka/PixelQuintuplet.h @@ -107,63 +107,61 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { modules.layers()[lowerModuleIndex5] + 6 * (modules.subdets()[lowerModuleIndex5] == Endcap) + 5 * (modules.subdets()[lowerModuleIndex5] == Endcap and modules.moduleType()[lowerModuleIndex5] == TwoS); + // These slides show the cut threshold definition. The comments below in the code, e.g, "cat 10", is consistent with the region separation in the slides + // https://indico.cern.ch/event/1410985/contributions/5931017/attachments/2875400/5035406/helix%20approxi%20for%20pT5%20rzchi2%20new%20results%20versions.pdf if (layer1 == 1 and layer2 == 2 and layer3 == 3) { - if (layer4 == 12 and layer5 == 13) { - return rzChiSquared < 451.141f; - } else if (layer4 == 4 and layer5 == 12) { - return rzChiSquared < 392.654f; - } else if (layer4 == 4 and layer5 == 5) { - return rzChiSquared < 225.322f; - } else if (layer4 == 7 and layer5 == 13) { - return rzChiSquared < 595.546f; - } else if (layer4 == 7 and layer5 == 8) { - return rzChiSquared < 196.111f; + if (layer4 == 12 and layer5 == 13) { // cat 10 + return rzChiSquared < 14.031f; + } else if (layer4 == 4 and layer5 == 12) { // cat 12 + return rzChiSquared < 8.760f; + } else if (layer4 == 4 and layer5 == 5) { // cat 11 + return rzChiSquared < 3.607f; + } else if (layer4 == 7 and layer5 == 13) { // cat 9 + return rzChiSquared < 16.620; + } else if (layer4 == 7 and layer5 == 8) { // cat 8 + return rzChiSquared < 17.910f; } } else if (layer1 == 1 and layer2 == 2 and layer3 == 7) { - if (layer4 == 13 and layer5 == 14) { - return rzChiSquared < 297.446f; - } else if (layer4 == 8 and layer5 == 14) { - return rzChiSquared < 451.141f; - } else if (layer4 == 8 and layer5 == 9) { - return rzChiSquared < 518.339f; + if (layer4 == 13 and layer5 == 14) { // cat 7 + return rzChiSquared < 8.950f; + } else if (layer4 == 8 and layer5 == 14) { // cat 6 + return rzChiSquared < 14.837f; + } else if (layer4 == 8 and layer5 == 9) { // cat 5 + return rzChiSquared < 18.519f; } } else if (layer1 == 1 and layer2 == 7 and layer3 == 8) { - if (layer4 == 9 and layer5 == 10) { - return rzChiSquared < 341.75f; - } else if (layer4 == 9 and layer5 == 15) { - return rzChiSquared < 341.75f; + if (layer4 == 9 and layer5 == 10) { // cat 3 + return rzChiSquared < 15.093f; + } else if (layer4 == 9 and layer5 == 15) { // cat 4 + return rzChiSquared < 11.200f; } } else if (layer1 == 2 and layer2 == 3 and layer3 == 4) { - if (layer4 == 12 and layer5 == 13) { - return rzChiSquared < 392.655f; - } else if (layer4 == 5 and layer5 == 12) { - return rzChiSquared < 341.75f; - } else if (layer4 == 5 and layer5 == 6) { - return rzChiSquared < 112.537f; + if (layer4 == 12 and layer5 == 13) { // cat 20 + return rzChiSquared < 12.868f; + } else if (layer4 == 5 and layer5 == 12) { // cat 19 + return rzChiSquared < 6.128f; + } else if (layer4 == 5 and layer5 == 6) { // cat 18 + return rzChiSquared < 2.987f; } } else if (layer1 == 2 and layer2 == 3 and layer4 == 7) { - if (layer4 == 13 and layer5 == 14) { - return rzChiSquared < 595.545f; - } else if (layer4 == 8 and layer5 == 14) { - return rzChiSquared < 74.198f; + if (layer4 == 13 and layer5 == 14) { // cat 17 + return rzChiSquared < 19.446f; + } else if (layer4 == 8 and layer5 == 14) { // cat 16 + return rzChiSquared < 17.520f; } } else if (layer1 == 2 and layer2 == 7 and layer3 == 8) { - if (layer4 == 14 and layer5 == 15) { - return rzChiSquared < 518.339f; - } else if (layer4 == 9 and layer5 == 10) { - return rzChiSquared < 8.046f; - } else if (layer4 == 9 and layer5 == 15) { - return rzChiSquared < 451.141f; + if (layer4 == 14 and layer5 == 15) { // cat 15 + return rzChiSquared < 14.71f; + } else if (layer4 == 9 and layer5 == 15) { // cat 14 + return rzChiSquared < 18.213f; } - } else if (layer1 == 3 and layer2 == 7 and layer3 == 8 and layer4 == 14 and layer5 == 15) { - return rzChiSquared < 56.207f; } else if (layer1 == 7 and layer2 == 8 and layer3 == 9) { - if (layer4 == 10 and layer5 == 11) { - return rzChiSquared < 64.578f; - } else if (layer4 == 10 and layer5 == 16) { - return rzChiSquared < 85.250f; - } else if (layer4 == 15 and layer5 == 16) { - return rzChiSquared < 85.250f; + if (layer4 == 10 and layer5 == 11) { // cat 0 + return rzChiSquared < 10.016f; + } else if (layer4 == 10 and layer5 == 16) { // cat 1 + return rzChiSquared < 87.671f; + } else if (layer4 == 15 and layer5 == 16) { // cat 2 + return rzChiSquared < 5.844f; } } return true; @@ -254,138 +252,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { return true; } - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE float computeChiSquaredpT5(TAcc const& acc, - unsigned int nPoints, - float* xs, - float* ys, - float* delta1, - float* delta2, - float* slopes, - bool* isFlat, - float g, - float f, - float radius) { - /* - Given values of (g, f, radius) and a set of points (and its uncertainties) compute chi squared - */ - float c = g * g + f * f - radius * radius; - float chiSquared = 0.f; - float absArctanSlope, angleM, xPrime, yPrime, sigma2; - for (size_t i = 0; i < nPoints; i++) { - absArctanSlope = ((slopes[i] != kVerticalModuleSlope) ? alpaka::math::abs(acc, alpaka::math::atan(acc, slopes[i])) - : kPi / 2.f); - if (xs[i] > 0 and ys[i] > 0) { - angleM = kPi / 2.f - absArctanSlope; - } else if (xs[i] < 0 and ys[i] > 0) { - angleM = absArctanSlope + kPi / 2.f; - } else if (xs[i] < 0 and ys[i] < 0) { - angleM = -(absArctanSlope + kPi / 2.f); - } else if (xs[i] > 0 and ys[i] < 0) { - angleM = -(kPi / 2.f - absArctanSlope); - } else { - angleM = 0; - } - if (not isFlat[i]) { - xPrime = xs[i] * alpaka::math::cos(acc, angleM) + ys[i] * alpaka::math::sin(acc, angleM); - yPrime = ys[i] * alpaka::math::cos(acc, angleM) - xs[i] * alpaka::math::sin(acc, angleM); - } else { - xPrime = xs[i]; - yPrime = ys[i]; - } - sigma2 = 4 * ((xPrime * delta1[i]) * (xPrime * delta1[i]) + (yPrime * delta2[i]) * (yPrime * delta2[i])); - chiSquared += (xs[i] * xs[i] + ys[i] * ys[i] - 2 * g * xs[i] - 2 * f * ys[i] + c) * - (xs[i] * xs[i] + ys[i] * ys[i] - 2 * g * xs[i] - 2 * f * ys[i] + c) / (sigma2); - } - return chiSquared; - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE void computeSigmasForRegression_pT5(TAcc const& acc, - ModulesConst modules, - const uint16_t* lowerModuleIndices, - float* delta1, - float* delta2, - float* slopes, - bool* isFlat, - unsigned int nPoints = 5, - bool anchorHits = true) { - /* - bool anchorHits required to deal with a weird edge case wherein - the hits ultimately used in the regression are anchor hits, but the - lower modules need not all be Pixel Modules (in case of PS). Similarly, - when we compute the chi squared for the non-anchor hits, the "partner module" - need not always be a PS strip module, but all non-anchor hits sit on strip - modules. - */ - ModuleType moduleType; - short moduleSubdet, moduleSide; - float inv1 = kWidthPS / kWidth2S; - float inv2 = kPixelPSZpitch / kWidth2S; - float inv3 = kStripPSZpitch / kWidth2S; - for (size_t i = 0; i < nPoints; i++) { - moduleType = modules.moduleType()[lowerModuleIndices[i]]; - moduleSubdet = modules.subdets()[lowerModuleIndices[i]]; - moduleSide = modules.sides()[lowerModuleIndices[i]]; - const float& drdz = modules.drdzs()[lowerModuleIndices[i]]; - slopes[i] = modules.dxdys()[lowerModuleIndices[i]]; - //category 1 - barrel PS flat - if (moduleSubdet == Barrel and moduleType == PS and moduleSide == Center) { - delta1[i] = inv1; - delta2[i] = inv1; - slopes[i] = -999.f; - isFlat[i] = true; - } - //category 2 - barrel 2S - else if (moduleSubdet == Barrel and moduleType == TwoS) { - delta1[i] = 1.f; - delta2[i] = 1.f; - slopes[i] = -999.f; - isFlat[i] = true; - } - //category 3 - barrel PS tilted - else if (moduleSubdet == Barrel and moduleType == PS and moduleSide != Center) { - delta1[i] = inv1; - isFlat[i] = false; - - if (anchorHits) { - delta2[i] = (inv2 * drdz / alpaka::math::sqrt(acc, 1 + drdz * drdz)); - } else { - delta2[i] = (inv3 * drdz / alpaka::math::sqrt(acc, 1 + drdz * drdz)); - } - } - //category 4 - endcap PS - else if (moduleSubdet == Endcap and moduleType == PS) { - delta1[i] = inv1; - isFlat[i] = false; - /* - despite the type of the module layer of the lower module index, - all anchor hits are on the pixel side and all non-anchor hits are - on the strip side! - */ - if (anchorHits) { - delta2[i] = inv2; - } else { - delta2[i] = inv3; - } - } - //category 5 - endcap 2S - else if (moduleSubdet == Endcap and moduleType == TwoS) { - delta1[i] = 1.f; - delta2[i] = 500.f * inv1; - isFlat[i] = false; - } -#ifdef WARNINGS - else { - printf("ERROR!!!!! I SHOULDN'T BE HERE!!!! subdet = %d, type = %d, side = %d\n", - moduleSubdet, - moduleType, - moduleSide); - } -#endif - } - } - template ALPAKA_FN_ACC ALPAKA_FN_INLINE float computePT5RPhiChiSquared(TAcc const& acc, ModulesConst modules, @@ -403,8 +269,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { bool isFlat[5]; float chiSquared = 0; - computeSigmasForRegression_pT5(acc, modules, lowerModuleIndices, delta1, delta2, slopes, isFlat); - chiSquared = computeChiSquaredpT5(acc, 5, xs, ys, delta1, delta2, slopes, isFlat, g, f, radius); + computeSigmasForRegression(acc, modules, lowerModuleIndices, delta1, delta2, slopes, isFlat); + chiSquared = computeChiSquared(acc, 5, xs, ys, delta1, delta2, slopes, isFlat, g, f, radius); return chiSquared; } @@ -512,28 +378,70 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { template ALPAKA_FN_ACC ALPAKA_FN_INLINE float computePT5RZChiSquared(TAcc const& acc, ModulesConst modules, - uint16_t* lowerModuleIndices, - float* rtPix, - float* zPix, - float* rts, - float* zs) { - //use the two anchor hits of the pixel segment to compute the slope - //then compute the pseudo chi squared of the five outer hits - - float slope = (zPix[1] - zPix[0]) / (rtPix[1] - rtPix[0]); + const uint16_t* lowerModuleIndices, + const float* rtPix, + const float* xPix, + const float* yPix, + const float* zPix, + const float* rts, + const float* zs, + float pixelSegmentPt, + float pixelSegmentPx, + float pixelSegmentPy, + float pixelSegmentPz, + int pixelSegmentCharge) { float residual = 0; float error2 = 0; - //hardcoded array indices!!! float RMSE = 0; + + // the pixel positions are in unit of cm, and need to be divided by 100 to be in consistent with unit mm. + float Px = pixelSegmentPx, Py = pixelSegmentPy, Pz = pixelSegmentPz; + int charge = pixelSegmentCharge; + float x1 = xPix[1] / 100; + float y1 = yPix[1] / 100; + float z1 = zPix[1] / 100; + float r1 = rtPix[1] / 100; + + float a = -100 / kR1GeVf * charge; + for (size_t i = 0; i < Params_T5::kLayers; i++) { - uint16_t& lowerModuleIndex = lowerModuleIndices[i]; + float zsi = zs[i] / 100; + float rtsi = rts[i] / 100; + uint16_t lowerModuleIndex = lowerModuleIndices[i]; const int moduleType = modules.moduleType()[lowerModuleIndex]; const int moduleSide = modules.sides()[lowerModuleIndex]; const int moduleSubdet = modules.subdets()[lowerModuleIndex]; - residual = (moduleSubdet == Barrel) ? (zs[i] - zPix[0]) - slope * (rts[i] - rtPix[0]) - : (rts[i] - rtPix[0]) - (zs[i] - zPix[0]) / slope; - const float& drdz = modules.drdzs()[lowerModuleIndex]; + // calculation is detailed documented here https://indico.cern.ch/event/1185895/contributions/4982756/attachments/2526561/4345805/helix%20pT3%20summarize.pdf + float diffr, diffz; + float p = alpaka::math::sqrt(acc, Px * Px + Py * Py + Pz * Pz); + + float rou = a / p; + if (moduleSubdet == Endcap) { + float s = (zsi - z1) * p / Pz; + float x = x1 + Px / a * alpaka::math::sin(acc, rou * s) - Py / a * (1 - alpaka::math::cos(acc, rou * s)); + float y = y1 + Py / a * alpaka::math::sin(acc, rou * s) + Px / a * (1 - alpaka::math::cos(acc, rou * s)); + diffr = alpaka::math::abs(acc, rtsi - alpaka::math::sqrt(acc, x * x + y * y)) * 100; + residual = diffr; + } + + if (moduleSubdet == Barrel) { + float paraA = r1 * r1 + 2 * (Px * Px + Py * Py) / (a * a) + 2 * (y1 * Px - x1 * Py) / a - rtsi * rtsi; + float paraB = 2 * (x1 * Px + y1 * Py) / a; + float paraC = 2 * (y1 * Px - x1 * Py) / a + 2 * (Px * Px + Py * Py) / (a * a); + float A = paraB * paraB + paraC * paraC; + float B = 2 * paraA * paraB; + float C = paraA * paraA - paraC * paraC; + float sol1 = (-B + alpaka::math::sqrt(acc, B * B - 4 * A * C)) / (2 * A); + float sol2 = (-B - alpaka::math::sqrt(acc, B * B - 4 * A * C)) / (2 * A); + float solz1 = alpaka::math::asin(acc, sol1) / rou * Pz / p + z1; + float solz2 = alpaka::math::asin(acc, sol2) / rou * Pz / p + z1; + float diffz1 = alpaka::math::abs(acc, solz1 - zsi) * 100; + float diffz2 = alpaka::math::abs(acc, solz2 - zsi) * 100; + diffz = alpaka::math::min(acc, diffz1, diffz2); + residual = diffz; + } + //PS Modules if (moduleType == 0) { error2 = kPixelPSZpitch * kPixelPSZpitch; @@ -544,6 +452,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { //special dispensation to tilted PS modules! if (moduleType == 0 and moduleSubdet == Barrel and moduleSide != Center) { + float drdz = modules.drdzs()[lowerModuleIndex]; error2 /= (1.f + drdz * drdz); } RMSE += (residual * residual) / error2; @@ -571,7 +480,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& quintupletRadius, float& centerX, float& centerY, - unsigned int pixelSegmentArrayIndex) { + unsigned int pixelSegmentArrayIndex, + const float ptCut) { unsigned int t5InnerT3Index = quintuplets.tripletIndices()[quintupletIndex][0]; unsigned int t5OuterT3Index = quintuplets.tripletIndices()[quintupletIndex][1]; @@ -594,6 +504,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { rzChiSquaredTemp, rPhiChiSquaredTemp, rPhiChiSquaredInwardsTemp, + ptCut, false)) return false; @@ -619,8 +530,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { uint16_t lowerModuleIndices[Params_T5::kLayers] = { lowerModuleIndex1, lowerModuleIndex2, lowerModuleIndex3, lowerModuleIndex4, lowerModuleIndex5}; - float zPix[Params_pLS::kLayers] = {mds.anchorZ()[pixelInnerMDIndex], mds.anchorZ()[pixelOuterMDIndex]}; float rtPix[Params_pLS::kLayers] = {mds.anchorRt()[pixelInnerMDIndex], mds.anchorRt()[pixelOuterMDIndex]}; + float xPix[Params_pLS::kLayers] = {mds.anchorX()[pixelInnerMDIndex], mds.anchorX()[pixelOuterMDIndex]}; + float yPix[Params_pLS::kLayers] = {mds.anchorY()[pixelInnerMDIndex], mds.anchorY()[pixelOuterMDIndex]}; + float zPix[Params_pLS::kLayers] = {mds.anchorZ()[pixelInnerMDIndex], mds.anchorZ()[pixelOuterMDIndex]}; float zs[Params_T5::kLayers] = {mds.anchorZ()[firstMDIndex], mds.anchorZ()[secondMDIndex], mds.anchorZ()[thirdMDIndex], @@ -632,9 +545,32 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { mds.anchorRt()[fourthMDIndex], mds.anchorRt()[fifthMDIndex]}; - rzChiSquared = computePT5RZChiSquared(acc, modules, lowerModuleIndices, rtPix, zPix, rts, zs); + float pixelSegmentPt = segmentsPixel.ptIn()[pixelSegmentArrayIndex]; + float pixelSegmentPx = segmentsPixel.px()[pixelSegmentArrayIndex]; + float pixelSegmentPy = segmentsPixel.py()[pixelSegmentArrayIndex]; + float pixelSegmentPz = segmentsPixel.pz()[pixelSegmentArrayIndex]; + int pixelSegmentCharge = segmentsPixel.charge()[pixelSegmentArrayIndex]; + + rzChiSquared = 0; - if (/*pixelRadius*/ 0 < 5.0f * kR1GeVf) { // FIXME: pixelRadius is not defined yet + //get the appropriate centers + pixelRadius = segmentsPixel.circleRadius()[pixelSegmentArrayIndex]; + + if (pixelRadius < 5.0f * kR1GeVf) { //only apply r-z chi2 cuts for <5GeV tracks + rzChiSquared = computePT5RZChiSquared(acc, + modules, + lowerModuleIndices, + rtPix, + xPix, + yPix, + zPix, + rts, + zs, + pixelSegmentPt, + pixelSegmentPx, + pixelSegmentPy, + pixelSegmentPz, + pixelSegmentCharge); if (not passPT5RZChiSquaredCuts(modules, lowerModuleIndex1, lowerModuleIndex2, @@ -657,13 +593,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { mds.anchorY()[fourthMDIndex], mds.anchorY()[fifthMDIndex]}; - //get the appropriate radii and centers + //get the appropriate centers centerX = segmentsPixel.circleCenterX()[pixelSegmentArrayIndex]; centerY = segmentsPixel.circleCenterY()[pixelSegmentArrayIndex]; - pixelRadius = segmentsPixel.circleRadius()[pixelSegmentArrayIndex]; - float T5CenterX = quintuplets.regressionG()[quintupletIndex]; - float T5CenterY = quintuplets.regressionF()[quintupletIndex]; + float T5CenterX = quintuplets.regressionCenterX()[quintupletIndex]; + float T5CenterY = quintuplets.regressionCenterY()[quintupletIndex]; quintupletRadius = quintuplets.regressionRadius()[quintupletIndex]; rPhiChiSquared = computePT5RPhiChiSquared(acc, modules, lowerModuleIndices, centerX, centerY, pixelRadius, xs, ys); @@ -679,8 +614,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { return false; } - float xPix[] = {mds.anchorX()[pixelInnerMDIndex], mds.anchorX()[pixelOuterMDIndex]}; - float yPix[] = {mds.anchorY()[pixelInnerMDIndex], mds.anchorY()[pixelOuterMDIndex]}; rPhiChiSquaredInwards = computePT5RPhiChiSquaredInwards(T5CenterX, T5CenterY, quintupletRadius, xPix, yPix); if (quintuplets.regressionRadius()[quintupletIndex] < 5.0f * kR1GeVf) { @@ -715,7 +648,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int* connectedPixelSize, unsigned int* connectedPixelIndex, unsigned int nPixelSegments, - ObjectRangesConst ranges) const { + ObjectRangesConst ranges, + const float ptCut) const { auto const globalBlockIdx = alpaka::getIdx(acc); auto const globalThreadIdx = alpaka::getIdx(acc); auto const gridBlockExtent = alpaka::getWorkDiv(acc); @@ -770,7 +704,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { quintupletRadius, centerX, centerY, - static_cast(i_pLS)); + static_cast(i_pLS), + ptCut); if (success) { unsigned int totOccupancyPixelQuintuplets = alpaka::atomicAdd( acc, &pixelQuintuplets.totOccupancyPixelQuintuplets(), 1u, alpaka::hierarchy::Threads{}); diff --git a/RecoTracker/LSTCore/src/alpaka/PixelTriplet.h b/RecoTracker/LSTCore/src/alpaka/PixelTriplet.h index a8be90fff5227..cfd1b3d9b5a5c 100644 --- a/RecoTracker/LSTCore/src/alpaka/PixelTriplet.h +++ b/RecoTracker/LSTCore/src/alpaka/PixelTriplet.h @@ -10,6 +10,8 @@ #include "RecoTracker/LSTCore/interface/SegmentsSoA.h" #include "RecoTracker/LSTCore/interface/TripletsSoA.h" +#include "Quintuplet.h" + namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { template @@ -27,7 +29,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int firstMDIndex, unsigned int secondMDIndex, unsigned int thirdMDIndex, - unsigned int fourthMDIndex); + unsigned int fourthMDIndex, + const float ptCut); template ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runTripletDefaultAlgoPPEE(TAcc const& acc, ModulesConst modules, @@ -43,7 +46,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int firstMDIndex, unsigned int secondMDIndex, unsigned int thirdMDIndex, - unsigned int fourthMDIndex); + unsigned int fourthMDIndex, + const float ptCut); ALPAKA_FN_ACC ALPAKA_FN_INLINE void addPixelTripletToMemory(MiniDoubletsConst mds, SegmentsConst segments, @@ -121,7 +125,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { uint16_t outerInnerLowerModuleIndex, uint16_t outerOuterLowerModuleIndex, unsigned int innerSegmentIndex, - unsigned int outerSegmentIndex) { + unsigned int outerSegmentIndex, + const float ptCut) { short outerInnerLowerModuleSubdet = modules.subdets()[outerInnerLowerModuleIndex]; short outerOuterLowerModuleSubdet = modules.subdets()[outerOuterLowerModuleIndex]; @@ -147,7 +152,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { firstMDIndex, secondMDIndex, thirdMDIndex, - fourthMDIndex); + fourthMDIndex, + ptCut); } else if (outerInnerLowerModuleSubdet == Endcap and outerOuterLowerModuleSubdet == Endcap) { return runTripletDefaultAlgoPPEE(acc, modules, @@ -163,7 +169,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { firstMDIndex, secondMDIndex, thirdMDIndex, - fourthMDIndex); + fourthMDIndex, + ptCut); } return false; } @@ -219,52 +226,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { return true; } - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE float computeChiSquaredpT3(TAcc const& acc, - unsigned int nPoints, - float* xs, - float* ys, - float* delta1, - float* delta2, - float* slopes, - bool* isFlat, - float g, - float f, - float radius) { - //given values of (g, f, radius) and a set of points (and its uncertainties) - //compute chi squared - float c = g * g + f * f - radius * radius; - float chiSquared = 0.f; - float absArctanSlope, angleM, xPrime, yPrime, sigma2; - for (size_t i = 0; i < nPoints; i++) { - absArctanSlope = ((slopes[i] != kVerticalModuleSlope) ? alpaka::math::abs(acc, alpaka::math::atan(acc, slopes[i])) - : kPi / 2.f); - if (xs[i] > 0 and ys[i] > 0) { - angleM = kPi / 2.f - absArctanSlope; - } else if (xs[i] < 0 and ys[i] > 0) { - angleM = absArctanSlope + kPi / 2.f; - } else if (xs[i] < 0 and ys[i] < 0) { - angleM = -(absArctanSlope + kPi / 2.f); - } else if (xs[i] > 0 and ys[i] < 0) { - angleM = -(kPi / 2.f - absArctanSlope); - } else { - angleM = 0; - } - - if (not isFlat[i]) { - xPrime = xs[i] * alpaka::math::cos(acc, angleM) + ys[i] * alpaka::math::sin(acc, angleM); - yPrime = ys[i] * alpaka::math::cos(acc, angleM) - xs[i] * alpaka::math::sin(acc, angleM); - } else { - xPrime = xs[i]; - yPrime = ys[i]; - } - sigma2 = 4 * ((xPrime * delta1[i]) * (xPrime * delta1[i]) + (yPrime * delta2[i]) * (yPrime * delta2[i])); - chiSquared += (xs[i] * xs[i] + ys[i] * ys[i] - 2 * g * xs[i] - 2 * f * ys[i] + c) * - (xs[i] * xs[i] + ys[i] * ys[i] - 2 * g * xs[i] - 2 * f * ys[i] + c) / sigma2; - } - return chiSquared; - } - //TODO: merge this one and the pT5 function later into a single function template ALPAKA_FN_ACC ALPAKA_FN_INLINE float computePT3RPhiChiSquared(TAcc const& acc, @@ -332,7 +293,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } #endif } - chiSquared = computeChiSquaredpT3(acc, 3, xs, ys, delta1, delta2, slopes, isFlat, g, f, radius); + chiSquared = computeChiSquared(acc, 3, xs, ys, delta1, delta2, slopes, isFlat, g, f, radius); return chiSquared; } @@ -683,6 +644,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& rzChiSquared, float& rPhiChiSquared, float& rPhiChiSquaredInwards, + const float ptCut, bool runChiSquaredCuts = true) { //run pT4 compatibility between the pixel segment and inner segment, and between the pixel and outer segment of the triplet uint16_t pixelModuleIndex = segments.innerLowerModuleIndices()[pixelSegmentIndex]; @@ -703,7 +665,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { lowerModuleIndex, middleModuleIndex, pixelSegmentIndex, - triplets.segmentIndices()[tripletIndex][0])) + triplets.segmentIndices()[tripletIndex][0], + ptCut)) return false; //pixel segment vs outer segment of triplet @@ -717,7 +680,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { middleModuleIndex, upperModuleIndex, pixelSegmentIndex, - triplets.segmentIndices()[tripletIndex][1])) + triplets.segmentIndices()[tripletIndex][1], + ptCut)) return false; } @@ -835,7 +799,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { PixelTriplets pixelTriplets, unsigned int* connectedPixelSize, unsigned int* connectedPixelIndex, - unsigned int nPixelSegments) const { + unsigned int nPixelSegments, + const float ptCut) const { auto const globalBlockIdx = alpaka::getIdx(acc); auto const globalThreadIdx = alpaka::getIdx(acc); auto const gridBlockExtent = alpaka::getWorkDiv(acc); @@ -911,7 +876,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { centerY, rzChiSquared, rPhiChiSquared, - rPhiChiSquaredInwards); + rPhiChiSquaredInwards, + ptCut); if (success) { float phi = @@ -962,105 +928,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } }; - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE void runDeltaBetaIterationspT3(TAcc const& acc, - float& betaIn, - float& betaOut, - float betaAv, - float& pt_beta, - float sdIn_dr, - float sdOut_dr, - float dr, - float lIn) { - if (lIn == 0) { - betaOut += alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, alpaka::math::min(acc, sdOut_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_beta), kSinAlphaMax)), - betaOut); - return; - } - - if (betaIn * betaOut > 0.f and - (alpaka::math::abs(acc, pt_beta) < 4.f * kPt_betaMax or - (lIn >= 11 and alpaka::math::abs(acc, pt_beta) < - 8.f * kPt_betaMax))) //and the pt_beta is well-defined; less strict for endcap-endcap - { - const float betaInUpd = - betaIn + - alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, alpaka::math::min(acc, sdIn_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_beta), kSinAlphaMax)), - betaIn); //FIXME: need a faster version - const float betaOutUpd = - betaOut + - alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, alpaka::math::min(acc, sdOut_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_beta), kSinAlphaMax)), - betaOut); //FIXME: need a faster version - betaAv = 0.5f * (betaInUpd + betaOutUpd); - - //1st update - const float pt_beta_inv = - 1.f / alpaka::math::abs(acc, dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv)); //get a better pt estimate - - betaIn += alpaka::math::copysign( - acc, - alpaka::math::asin(acc, alpaka::math::min(acc, sdIn_dr * k2Rinv1GeVf * pt_beta_inv, kSinAlphaMax)), - betaIn); //FIXME: need a faster version - betaOut += alpaka::math::copysign( - acc, - alpaka::math::asin(acc, alpaka::math::min(acc, sdOut_dr * k2Rinv1GeVf * pt_beta_inv, kSinAlphaMax)), - betaOut); //FIXME: need a faster version - //update the av and pt - betaAv = 0.5f * (betaIn + betaOut); - //2nd update - pt_beta = dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv); //get a better pt estimate - } else if (lIn < 11 && alpaka::math::abs(acc, betaOut) < 0.2f * alpaka::math::abs(acc, betaIn) && - alpaka::math::abs(acc, pt_beta) < 12.f * kPt_betaMax) //use betaIn sign as ref - { - const float pt_betaIn = dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaIn); - - const float betaInUpd = - betaIn + - alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, alpaka::math::min(acc, sdIn_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_betaIn), kSinAlphaMax)), - betaIn); //FIXME: need a faster version - const float betaOutUpd = - betaOut + - alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, - alpaka::math::min(acc, sdOut_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_betaIn), kSinAlphaMax)), - betaIn); //FIXME: need a faster version - betaAv = (alpaka::math::abs(acc, betaOut) > 0.2f * alpaka::math::abs(acc, betaIn)) - ? (0.5f * (betaInUpd + betaOutUpd)) - : betaInUpd; - - //1st update - pt_beta = dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv); //get a better pt estimate - betaIn += alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, alpaka::math::min(acc, sdIn_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_beta), kSinAlphaMax)), - betaIn); //FIXME: need a faster version - betaOut += alpaka::math::copysign( - acc, - alpaka::math::asin( - acc, alpaka::math::min(acc, sdOut_dr * k2Rinv1GeVf / alpaka::math::abs(acc, pt_beta), kSinAlphaMax)), - betaIn); //FIXME: need a faster version - //update the av and pt - betaAv = 0.5f * (betaIn + betaOut); - //2nd update - pt_beta = dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv); //get a better pt estimate - } - } - template ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runTripletDefaultAlgoPPBB(TAcc const& acc, ModulesConst modules, @@ -1076,7 +943,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int firstMDIndex, unsigned int secondMDIndex, unsigned int thirdMDIndex, - unsigned int fourthMDIndex) { + unsigned int fourthMDIndex, + const float ptCut) { float dPhi, betaIn, betaOut, pt_beta, zLo, zHi, zLoPointed, zHiPointed, dPhiCut, betaOutCut; bool isPS_OutLo = (modules.moduleType()[outerInnerLowerModuleIndex] == PS); @@ -1258,7 +1126,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { alpaka::math::sqrt(acc, (x_OutUp - x_OutLo) * (x_OutUp - x_OutLo) + (y_OutUp - y_OutLo) * (y_OutUp - y_OutLo)); float sdOut_d = rt_OutUp - rt_OutLo; - runDeltaBetaIterationspT3(acc, betaIn, betaOut, betaAv, pt_beta, rt_InSeg, sdOut_dr, drt_tl_axis, lIn); + runDeltaBetaIterations(acc, betaIn, betaOut, betaAv, pt_beta, rt_InSeg, sdOut_dr, drt_tl_axis, lIn); const float betaInMMSF = (alpaka::math::abs(acc, betaInRHmin + betaInRHmax) > 0) ? (2.f * betaIn / alpaka::math::abs(acc, betaInRHmin + betaInRHmax)) @@ -1334,7 +1202,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int firstMDIndex, unsigned int secondMDIndex, unsigned int thirdMDIndex, - unsigned int fourthMDIndex) { + unsigned int fourthMDIndex, + const float ptCut) { float dPhi, betaIn, betaOut, pt_beta, rtLo, rtHi, dPhiCut, betaOutCut; bool isPS_OutLo = (modules.moduleType()[outerInnerLowerModuleIndex] == PS); @@ -1517,7 +1386,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { alpaka::math::sqrt(acc, (x_OutUp - x_OutLo) * (x_OutUp - x_OutLo) + (y_OutUp - y_OutLo) * (y_OutUp - y_OutLo)); float sdOut_d = rt_OutUp - rt_OutLo; - runDeltaBetaIterationspT3(acc, betaIn, betaOut, betaAv, pt_beta, rt_InSeg, sdOut_dr, drt_tl_axis, lIn); + runDeltaBetaIterations(acc, betaIn, betaOut, betaAv, pt_beta, rt_InSeg, sdOut_dr, drt_tl_axis, lIn); const float betaInMMSF = (alpaka::math::abs(acc, betaInRHmin + betaInRHmax) > 0) ? (2.f * betaIn / alpaka::math::abs(acc, betaInRHmin + betaInRHmax)) diff --git a/RecoTracker/LSTCore/src/alpaka/Quintuplet.h b/RecoTracker/LSTCore/src/alpaka/Quintuplet.h index 24ce2d1d53e22..8bb9a16a5a38b 100644 --- a/RecoTracker/LSTCore/src/alpaka/Quintuplet.h +++ b/RecoTracker/LSTCore/src/alpaka/Quintuplet.h @@ -2,6 +2,7 @@ #define RecoTracker_LSTCore_src_alpaka_Quintuplet_h #include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" +#include "FWCore/Utilities/interface/isFinite.h" #include "RecoTracker/LSTCore/interface/ObjectRangesSoA.h" #include "RecoTracker/LSTCore/interface/MiniDoubletsSoA.h" @@ -18,13 +19,6 @@ #include "Triplet.h" // FIXME: need to refactor common functions to a common place namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool checkIntervalOverlap(float firstMin, - float firstMax, - float secondMin, - float secondMax) { - return ((firstMin <= secondMin) && (secondMin < firstMax)) || ((secondMin < firstMin) && (firstMin < secondMax)); - } - ALPAKA_FN_ACC ALPAKA_FN_INLINE void addQuintupletToMemory(TripletsConst triplets, Quintuplets quintuplets, unsigned int innerTripletIndex, @@ -37,12 +31,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float innerRadius, float bridgeRadius, float outerRadius, - float regressionG, - float regressionF, + float regressionCenterX, + float regressionCenterY, float regressionRadius, float rzChiSquared, float rPhiChiSquared, float nonAnchorChiSquared, + float dBeta1, + float dBeta2, float pt, float eta, float phi, @@ -67,8 +63,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { quintuplets.isDup()[quintupletIndex] = 0; quintuplets.tightCutFlag()[quintupletIndex] = tightCutFlag; quintuplets.regressionRadius()[quintupletIndex] = regressionRadius; - quintuplets.regressionG()[quintupletIndex] = regressionG; - quintuplets.regressionF()[quintupletIndex] = regressionF; + quintuplets.regressionCenterX()[quintupletIndex] = regressionCenterX; + quintuplets.regressionCenterY()[quintupletIndex] = regressionCenterY; quintuplets.logicalLayers()[quintupletIndex][0] = triplets.logicalLayers()[innerTripletIndex][0]; quintuplets.logicalLayers()[quintupletIndex][1] = triplets.logicalLayers()[innerTripletIndex][1]; quintuplets.logicalLayers()[quintupletIndex][2] = triplets.logicalLayers()[innerTripletIndex][2]; @@ -89,89 +85,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { quintuplets.rzChiSquared()[quintupletIndex] = rzChiSquared; quintuplets.chiSquared()[quintupletIndex] = rPhiChiSquared; quintuplets.nonAnchorChiSquared()[quintupletIndex] = nonAnchorChiSquared; - } - - //90% constraint - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool passChiSquaredConstraint(ModulesConst modules, - uint16_t lowerModuleIndex1, - uint16_t lowerModuleIndex2, - uint16_t lowerModuleIndex3, - uint16_t lowerModuleIndex4, - uint16_t lowerModuleIndex5, - float chiSquared) { - // Using lstLayer numbering convention defined in ModuleMethods.h - const int layer1 = modules.lstLayers()[lowerModuleIndex1]; - const int layer2 = modules.lstLayers()[lowerModuleIndex2]; - const int layer3 = modules.lstLayers()[lowerModuleIndex3]; - const int layer4 = modules.lstLayers()[lowerModuleIndex4]; - const int layer5 = modules.lstLayers()[lowerModuleIndex5]; - - if (layer1 == 7 and layer2 == 8 and layer3 == 9) { - if (layer4 == 10 and layer5 == 11) { - return chiSquared < 0.01788f; - } else if (layer4 == 10 and layer5 == 16) { - return chiSquared < 0.04725f; - } else if (layer4 == 15 and layer5 == 16) { - return chiSquared < 0.04725f; - } - } else if (layer1 == 1 and layer2 == 7 and layer3 == 8) { - if (layer4 == 9 and layer5 == 10) { - return chiSquared < 0.01788f; - } else if (layer4 == 9 and layer5 == 15) { - return chiSquared < 0.08234f; - } - } else if (layer1 == 1 and layer2 == 2 and layer3 == 7) { - if (layer4 == 8 and layer5 == 9) { - return chiSquared < 0.02360f; - } else if (layer4 == 8 and layer5 == 14) { - return chiSquared < 0.07167f; - } else if (layer4 == 13 and layer5 == 14) { - return chiSquared < 0.08234f; - } - } else if (layer1 == 1 and layer2 == 2 and layer3 == 3) { - if (layer4 == 7 and layer5 == 8) { - return chiSquared < 0.01026f; - } else if (layer4 == 7 and layer5 == 13) { - return chiSquared < 0.06238f; - } else if (layer4 == 12 and layer5 == 13) { - return chiSquared < 0.06238f; - } - } else if (layer1 == 1 and layer2 == 2 and layer3 == 3 and layer4 == 4) { - if (layer5 == 5) { - return chiSquared < 0.04725f; - } else if (layer5 == 12) { - return chiSquared < 0.09461f; - } - } else if (layer1 == 2 and layer2 == 7 and layer3 == 8) { - if (layer4 == 9 and layer5 == 10) { - return chiSquared < 0.00512f; - } - if (layer4 == 9 and layer5 == 15) { - return chiSquared < 0.04112f; - } else if (layer4 == 14 and layer5 == 15) { - return chiSquared < 0.06238f; - } - } else if (layer1 == 2 and layer2 == 3 and layer3 == 7) { - if (layer4 == 8 and layer5 == 14) { - return chiSquared < 0.07167f; - } else if (layer4 == 13 and layer5 == 14) { - return chiSquared < 0.06238f; - } - } else if (layer1 == 2 and layer2 == 3 and layer3 == 4) { - if (layer4 == 5 and layer5 == 6) { - return chiSquared < 0.08234f; - } else if (layer4 == 5 and layer5 == 12) { - return chiSquared < 0.10870f; - } else if (layer4 == 12 and layer5 == 13) { - return chiSquared < 0.10870f; - } - } else if (layer1 == 3 and layer2 == 7 and layer3 == 8 and layer4 == 14 and layer5 == 15) { - return chiSquared < 0.09461f; - } else if (layer1 == 3 and layer2 == 4 and layer3 == 5 and layer4 == 12 and layer5 == 13) { - return chiSquared < 0.09461f; - } - - return true; + quintuplets.dBeta1()[quintupletIndex] = dBeta1; + quintuplets.dBeta2()[quintupletIndex] = dBeta2; } //bounds can be found at http://uaf-10.t2.ucsd.edu/~bsathian/SDL/T5_RZFix/t5_rz_thresholds.txt @@ -413,9 +328,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float solz2 = alpaka::math::asin(acc, sol2) / rou * Pz / p + z_init; float diffz1 = (solz1 - zsi) * 100; float diffz2 = (solz2 - zsi) * 100; - if (alpaka::math::isnan(acc, diffz1)) + if (edm::isNotFinite(diffz1)) diffz = diffz2; - else if (alpaka::math::isnan(acc, diffz2)) + else if (edm::isNotFinite(diffz2)) diffz = diffz1; else { diffz = (alpaka::math::abs(acc, diffz1) < alpaka::math::abs(acc, diffz2)) ? diffz1 : diffz2; @@ -460,7 +375,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } // for set rzchi2 cut // if the 5 points are linear, helix calculation gives nan - if (inner_pt > 100 || alpaka::math::isnan(acc, rzChiSquared)) { + if (inner_pt > 100 || edm::isNotFinite(rzChiSquared)) { float slope; if (moduleType1 == 0 and moduleType2 == 0 and moduleType3 == 1) //PSPS2S { @@ -622,251 +537,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { return (innerOuterOuterMiniDoubletIndex == outerInnerInnerMiniDoubletIndex); } - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE void computeErrorInRadius(TAcc const& acc, - float* x1Vec, - float* y1Vec, - float* x2Vec, - float* y2Vec, - float* x3Vec, - float* y3Vec, - float& minimumRadius, - float& maximumRadius) { - //brute force - float candidateRadius; - float g, f; - minimumRadius = kVerticalModuleSlope; - maximumRadius = 0.f; - for (size_t i = 0; i < 3; i++) { - float x1 = x1Vec[i]; - float y1 = y1Vec[i]; - for (size_t j = 0; j < 3; j++) { - float x2 = x2Vec[j]; - float y2 = y2Vec[j]; - for (size_t k = 0; k < 3; k++) { - float x3 = x3Vec[k]; - float y3 = y3Vec[k]; - candidateRadius = computeRadiusFromThreeAnchorHits(acc, x1, y1, x2, y2, x3, y3, g, f); - maximumRadius = alpaka::math::max(acc, candidateRadius, maximumRadius); - minimumRadius = alpaka::math::min(acc, candidateRadius, minimumRadius); - } - } - } - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBBBEE12378(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius, - float bridgeRadiusMin2S, - float bridgeRadiusMax2S) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 0.178f; - float bridgeInvRadiusErrorBound = 0.507f; - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(innerInvRadiusMin, - innerInvRadiusMax, - alpaka::math::min(acc, bridgeInvRadiusMin, 1.0f / bridgeRadiusMax2S), - alpaka::math::max(acc, bridgeInvRadiusMax, 1.0f / bridgeRadiusMin2S)); - } - - /*bounds for high Pt taken from : http://uaf-10.t2.ucsd.edu/~bsathian/SDL/T5_efficiency/efficiencies/new_efficiencies/efficiencies_20210513_T5_recovering_high_Pt_efficiencies/highE_radius_matching/highE_bounds.txt */ - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBBBBB(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 0.1512f; - float bridgeInvRadiusErrorBound = 0.1781f; - - if (innerRadius * k2Rinv1GeVf > 1.f) { - innerInvRadiusErrorBound = 0.4449f; - bridgeInvRadiusErrorBound = 0.4033f; - } - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax); - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBBBBE(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 0.1781f; - float bridgeInvRadiusErrorBound = 0.2167f; - - if (innerRadius * k2Rinv1GeVf > 1.f) { - innerInvRadiusErrorBound = 0.4750f; - bridgeInvRadiusErrorBound = 0.3903f; - } - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax); - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBBBEE23478(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius, - float bridgeRadiusMin2S, - float bridgeRadiusMax2S) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 0.2097f; - float bridgeInvRadiusErrorBound = 0.8557f; - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(innerInvRadiusMin, - innerInvRadiusMax, - alpaka::math::min(acc, bridgeInvRadiusMin, 1.0f / bridgeRadiusMax2S), - alpaka::math::max(acc, bridgeInvRadiusMax, 1.0f / bridgeRadiusMin2S)); - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBBBEE34578(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius, - float bridgeRadiusMin2S, - float bridgeRadiusMax2S) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 0.066f; - float bridgeInvRadiusErrorBound = 0.617f; - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(innerInvRadiusMin, - innerInvRadiusMax, - alpaka::math::min(acc, bridgeInvRadiusMin, 1.0f / bridgeRadiusMax2S), - alpaka::math::max(acc, bridgeInvRadiusMax, 1.0f / bridgeRadiusMin2S)); - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBBEEE(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius, - float bridgeRadiusMin2S, - float bridgeRadiusMax2S) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 0.6376f; - float bridgeInvRadiusErrorBound = 2.1381f; - - if (innerRadius * k2Rinv1GeVf > 1.f) //as good as no selections! - { - innerInvRadiusErrorBound = 12.9173f; - bridgeInvRadiusErrorBound = 5.1700f; - } - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(innerInvRadiusMin, - innerInvRadiusMax, - alpaka::math::min(acc, bridgeInvRadiusMin, 1.0f / bridgeRadiusMax2S), - alpaka::math::max(acc, bridgeInvRadiusMax, 1.0f / bridgeRadiusMin2S)); - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiBEEEE(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius, - float innerRadiusMin2S, - float innerRadiusMax2S, - float bridgeRadiusMin2S, - float bridgeRadiusMax2S) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 1.9382f; - float bridgeInvRadiusErrorBound = 3.7280f; - - if (innerRadius * k2Rinv1GeVf > 1.f) { - innerInvRadiusErrorBound = 23.2713f; - bridgeInvRadiusErrorBound = 21.7980f; - } - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(alpaka::math::min(acc, innerInvRadiusMin, 1.0f / innerRadiusMax2S), - alpaka::math::max(acc, innerInvRadiusMax, 1.0f / innerRadiusMin2S), - alpaka::math::min(acc, bridgeInvRadiusMin, 1.0f / bridgeRadiusMax2S), - alpaka::math::max(acc, bridgeInvRadiusMax, 1.0f / bridgeRadiusMin2S)); - } - - template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool matchRadiiEEEEE(TAcc const& acc, - float innerRadius, - float bridgeRadius, - float outerRadius, - float innerRadiusMin2S, - float innerRadiusMax2S, - float bridgeRadiusMin2S, - float bridgeRadiusMax2S) { - float innerInvRadiusMin, innerInvRadiusMax, bridgeInvRadiusMin, bridgeInvRadiusMax; - - float innerInvRadiusErrorBound = 1.9382f; - float bridgeInvRadiusErrorBound = 2.2091f; - - if (innerRadius * k2Rinv1GeVf > 1.f) { - innerInvRadiusErrorBound = 22.5226f; - bridgeInvRadiusErrorBound = 21.0966f; - } - - innerInvRadiusMax = (1.f + innerInvRadiusErrorBound) / innerRadius; - innerInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - innerInvRadiusErrorBound) / innerRadius); - - bridgeInvRadiusMax = (1.f + bridgeInvRadiusErrorBound) / bridgeRadius; - bridgeInvRadiusMin = alpaka::math::max(acc, 0.f, (1.f - bridgeInvRadiusErrorBound) / bridgeRadius); - - return checkIntervalOverlap(alpaka::math::min(acc, innerInvRadiusMin, 1.0f / innerRadiusMax2S), - alpaka::math::max(acc, innerInvRadiusMax, 1.0f / innerRadiusMin2S), - alpaka::math::min(acc, bridgeInvRadiusMin, 1.0f / bridgeRadiusMax2S), - alpaka::math::max(acc, bridgeInvRadiusMax, 1.0f / bridgeRadiusMin2S)); - } - template ALPAKA_FN_ACC ALPAKA_FN_INLINE void computeSigmasForRegression(TAcc const& acc, ModulesConst modules, @@ -1099,15 +769,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } template - ALPAKA_FN_ACC ALPAKA_FN_INLINE void runDeltaBetaIterationsT5(TAcc const& acc, - float& betaIn, - float& betaOut, - float betaAv, - float& pt_beta, - float sdIn_dr, - float sdOut_dr, - float dr, - float lIn) { + ALPAKA_FN_ACC ALPAKA_FN_INLINE void runDeltaBetaIterations(TAcc const& acc, + float& betaIn, + float& betaOut, + float betaAv, + float& pt_beta, + float sdIn_dr, + float sdOut_dr, + float dr, + float lIn) { if (lIn == 0) { betaOut += alpaka::math::copysign( acc, @@ -1198,83 +868,33 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletDefaultAlgoBBBB(TAcc const& acc, - ModulesConst modules, - MiniDoubletsConst mds, - SegmentsConst segments, - uint16_t innerInnerLowerModuleIndex, - uint16_t innerOuterLowerModuleIndex, - uint16_t outerInnerLowerModuleIndex, - uint16_t outerOuterLowerModuleIndex, - unsigned int innerSegmentIndex, - unsigned int outerSegmentIndex, - unsigned int firstMDIndex, - unsigned int secondMDIndex, - unsigned int thirdMDIndex, - unsigned int fourthMDIndex) { - bool isPS_InLo = (modules.moduleType()[innerInnerLowerModuleIndex] == PS); - bool isPS_OutLo = (modules.moduleType()[outerInnerLowerModuleIndex] == PS); - + ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletdBetaCutBBBB(TAcc const& acc, + ModulesConst modules, + MiniDoubletsConst mds, + SegmentsConst segments, + uint16_t innerInnerLowerModuleIndex, + uint16_t innerOuterLowerModuleIndex, + uint16_t outerInnerLowerModuleIndex, + uint16_t outerOuterLowerModuleIndex, + unsigned int innerSegmentIndex, + unsigned int outerSegmentIndex, + unsigned int firstMDIndex, + unsigned int secondMDIndex, + unsigned int thirdMDIndex, + unsigned int fourthMDIndex, + float& dBeta, + const float ptCut) { float rt_InLo = mds.anchorRt()[firstMDIndex]; float rt_InOut = mds.anchorRt()[secondMDIndex]; float rt_OutLo = mds.anchorRt()[thirdMDIndex]; float z_InLo = mds.anchorZ()[firstMDIndex]; - float z_InOut = mds.anchorZ()[secondMDIndex]; float z_OutLo = mds.anchorZ()[thirdMDIndex]; - float alpha1GeV_OutLo = - alpaka::math::asin(acc, alpaka::math::min(acc, rt_OutLo * k2Rinv1GeVf / ptCut, kSinAlphaMax)); - - float rtRatio_OutLoInLo = rt_OutLo / rt_InLo; // Outer segment beginning rt divided by inner segment beginning rt; - float dzDrtScale = - alpaka::math::tan(acc, alpha1GeV_OutLo) / alpha1GeV_OutLo; // The track can bend in r-z plane slightly - float zpitch_InLo = (isPS_InLo ? kPixelPSZpitch : kStrip2SZpitch); - float zpitch_OutLo = (isPS_OutLo ? kPixelPSZpitch : kStrip2SZpitch); - - float zHi = z_InLo + (z_InLo + kDeltaZLum) * (rtRatio_OutLoInLo - 1.f) * (z_InLo < 0.f ? 1.f : dzDrtScale) + - (zpitch_InLo + zpitch_OutLo); - float zLo = z_InLo + (z_InLo - kDeltaZLum) * (rtRatio_OutLoInLo - 1.f) * (z_InLo > 0.f ? 1.f : dzDrtScale) - - (zpitch_InLo + zpitch_OutLo); - - //Cut 1 - z compatibility - if ((z_OutLo < zLo) || (z_OutLo > zHi)) - return false; - - float drt_OutLo_InLo = (rt_OutLo - rt_InLo); float r3_InLo = alpaka::math::sqrt(acc, z_InLo * z_InLo + rt_InLo * rt_InLo); float drt_InSeg = rt_InOut - rt_InLo; - float dz_InSeg = z_InOut - z_InLo; - float dr3_InSeg = alpaka::math::sqrt(acc, rt_InOut * rt_InOut + z_InOut * z_InOut) - - alpaka::math::sqrt(acc, rt_InLo * rt_InLo + z_InLo * z_InLo); - - float coshEta = dr3_InSeg / drt_InSeg; - float dzErr = (zpitch_InLo + zpitch_OutLo) * (zpitch_InLo + zpitch_OutLo) * 2.f; float thetaMuls2 = (kMulsInGeV * kMulsInGeV) * (0.1f + 0.2f * (rt_OutLo - rt_InLo) / 50.f) * (r3_InLo / rt_InLo); - float muls2 = thetaMuls2 * 9.f / (ptCut * ptCut) * 16.f; - dzErr += muls2 * drt_OutLo_InLo * drt_OutLo_InLo / 3.f * coshEta * coshEta; - dzErr = alpaka::math::sqrt(acc, dzErr); - - // Constructing upper and lower bound - const float dzMean = dz_InSeg / drt_InSeg * drt_OutLo_InLo; - const float zWindow = - dzErr / drt_InSeg * drt_OutLo_InLo + - (zpitch_InLo + zpitch_OutLo); //FIXME for ptCut lower than ~0.8 need to add curv path correction - float zLoPointed = z_InLo + dzMean * (z_InLo > 0.f ? 1.f : dzDrtScale) - zWindow; - float zHiPointed = z_InLo + dzMean * (z_InLo < 0.f ? 1.f : dzDrtScale) + zWindow; - - // Cut #2: Pointed Z (Inner segment two MD points to outer segment inner MD) - if ((z_OutLo < zLoPointed) || (z_OutLo > zHiPointed)) - return false; - - float pvOffset = 0.1f / rt_OutLo; - float dPhiCut = alpha1GeV_OutLo + alpaka::math::sqrt(acc, muls2 + pvOffset * pvOffset); - - float deltaPhiPos = phi_mpi_pi(acc, mds.anchorPhi()[fourthMDIndex] - mds.anchorPhi()[secondMDIndex]); - // Cut #3: FIXME:deltaPhiPos can be tighter - if (alpaka::math::abs(acc, deltaPhiPos) > dPhiCut) - return false; float midPointX = 0.5f * (mds.anchorX()[firstMDIndex] + mds.anchorX()[thirdMDIndex]); float midPointY = 0.5f * (mds.anchorY()[firstMDIndex] + mds.anchorY()[thirdMDIndex]); @@ -1283,10 +903,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float dPhi = deltaPhi(acc, midPointX, midPointY, diffX, diffY); - // Cut #4: deltaPhiChange - if (alpaka::math::abs(acc, dPhi) > dPhiCut) - return false; - // First obtaining the raw betaIn and betaOut values without any correction and just purely based on the mini-doublet hit positions float alpha_InLo = __H2F(segments.dPhiChanges()[innerSegmentIndex]); float alpha_OutLo = __H2F(segments.dPhiChanges()[outerSegmentIndex]); @@ -1349,21 +965,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { //beta computation float drt_tl_axis = alpaka::math::sqrt(acc, tl_axis_x * tl_axis_x + tl_axis_y * tl_axis_y); - float corrF = 1.f; //innerOuterAnchor - innerInnerAnchor const float rt_InSeg = alpaka::math::sqrt(acc, (mds.anchorX()[secondMDIndex] - mds.anchorX()[firstMDIndex]) * (mds.anchorX()[secondMDIndex] - mds.anchorX()[firstMDIndex]) + (mds.anchorY()[secondMDIndex] - mds.anchorY()[firstMDIndex]) * (mds.anchorY()[secondMDIndex] - mds.anchorY()[firstMDIndex])); - float betaInCut = - alpaka::math::asin( - acc, alpaka::math::min(acc, (-rt_InSeg * corrF + drt_tl_axis) * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + - (0.02f / drt_InSeg); - - //Cut #5: first beta cut - if (alpaka::math::abs(acc, betaInRHmin) >= betaInCut) - return false; float betaAv = 0.5f * (betaIn + betaOut); float pt_beta = drt_tl_axis * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv); @@ -1376,7 +983,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { (mds.anchorY()[fourthMDIndex] - mds.anchorY()[thirdMDIndex])); float sdOut_d = mds.anchorRt()[fourthMDIndex] - mds.anchorRt()[thirdMDIndex]; - runDeltaBetaIterationsT5(acc, betaIn, betaOut, betaAv, pt_beta, rt_InSeg, sdOut_dr, drt_tl_axis, lIn); + runDeltaBetaIterations(acc, betaIn, betaOut, betaAv, pt_beta, rt_InSeg, sdOut_dr, drt_tl_axis, lIn); const float betaInMMSF = (alpaka::math::abs(acc, betaInRHmin + betaInRHmax) > 0) ? (2.f * betaIn / alpaka::math::abs(acc, betaInRHmin + betaInRHmax)) @@ -1406,7 +1013,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { const float dBetaLum2 = (dBetaInLum + dBetaOutLum) * (dBetaInLum + dBetaOutLum); const float sinDPhi = alpaka::math::sin(acc, dPhi); - const float dBetaRIn2 = 0; // TODO-RH float dBetaROut = 0; if (isEC_lastLayer) { dBetaROut = (alpaka::math::sqrt(acc, @@ -1420,116 +1026,43 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { const float dBetaROut2 = dBetaROut * dBetaROut; - float betaOutCut = - alpaka::math::asin(acc, alpaka::math::min(acc, drt_tl_axis * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + - (0.02f / sdOut_d) + alpaka::math::sqrt(acc, dBetaLum2 + dBetaMuls2); - - //Cut #6: The real beta cut - if (alpaka::math::abs(acc, betaOut) >= betaOutCut) - return false; - float dBetaRes = 0.02f / alpaka::math::min(acc, sdOut_d, drt_InSeg); float dBetaCut2 = - (dBetaRes * dBetaRes * 2.0f + dBetaMuls2 + dBetaLum2 + dBetaRIn2 + dBetaROut2 + + (dBetaRes * dBetaRes * 2.0f + dBetaMuls2 + dBetaLum2 + dBetaROut2 + 0.25f * (alpaka::math::abs(acc, betaInRHmin - betaInRHmax) + alpaka::math::abs(acc, betaOutRHmin - betaOutRHmax)) * (alpaka::math::abs(acc, betaInRHmin - betaInRHmax) + alpaka::math::abs(acc, betaOutRHmin - betaOutRHmax))); - float dBeta = betaIn - betaOut; + dBeta = betaIn - betaOut; return dBeta * dBeta <= dBetaCut2; } template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletDefaultAlgoBBEE(TAcc const& acc, - ModulesConst modules, - MiniDoubletsConst mds, - SegmentsConst segments, - uint16_t innerInnerLowerModuleIndex, - uint16_t innerOuterLowerModuleIndex, - uint16_t outerInnerLowerModuleIndex, - uint16_t outerOuterLowerModuleIndex, - unsigned int innerSegmentIndex, - unsigned int outerSegmentIndex, - unsigned int firstMDIndex, - unsigned int secondMDIndex, - unsigned int thirdMDIndex, - unsigned int fourthMDIndex) { - bool isPS_InLo = (modules.moduleType()[innerInnerLowerModuleIndex] == PS); - bool isPS_OutLo = (modules.moduleType()[outerInnerLowerModuleIndex] == PS); - + ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletdBetaCutBBEE(TAcc const& acc, + ModulesConst modules, + MiniDoubletsConst mds, + SegmentsConst segments, + uint16_t innerInnerLowerModuleIndex, + uint16_t innerOuterLowerModuleIndex, + uint16_t outerInnerLowerModuleIndex, + uint16_t outerOuterLowerModuleIndex, + unsigned int innerSegmentIndex, + unsigned int outerSegmentIndex, + unsigned int firstMDIndex, + unsigned int secondMDIndex, + unsigned int thirdMDIndex, + unsigned int fourthMDIndex, + float& dBeta, + const float ptCut) { float rt_InLo = mds.anchorRt()[firstMDIndex]; float rt_InOut = mds.anchorRt()[secondMDIndex]; float rt_OutLo = mds.anchorRt()[thirdMDIndex]; float z_InLo = mds.anchorZ()[firstMDIndex]; - float z_InOut = mds.anchorZ()[secondMDIndex]; float z_OutLo = mds.anchorZ()[thirdMDIndex]; - float alpha1GeV_OutLo = - alpaka::math::asin(acc, alpaka::math::min(acc, rt_OutLo * k2Rinv1GeVf / ptCut, kSinAlphaMax)); - - float dzDrtScale = - alpaka::math::tan(acc, alpha1GeV_OutLo) / alpha1GeV_OutLo; // The track can bend in r-z plane slightly - float zpitch_InLo = (isPS_InLo ? kPixelPSZpitch : kStrip2SZpitch); - float zpitch_OutLo = (isPS_OutLo ? kPixelPSZpitch : kStrip2SZpitch); - float zGeom = zpitch_InLo + zpitch_OutLo; - - // Cut #0: Preliminary (Only here in endcap case) - if (z_InLo * z_OutLo <= 0) - return false; - - float dLum = alpaka::math::copysign(acc, kDeltaZLum, z_InLo); - bool isOutSgInnerMDPS = modules.moduleType()[outerInnerLowerModuleIndex] == PS; - float rtGeom1 = isOutSgInnerMDPS ? kPixelPSZpitch : kStrip2SZpitch; - float zGeom1 = alpaka::math::copysign(acc, zGeom, z_InLo); - float rtLo = rt_InLo * (1.f + (z_OutLo - z_InLo - zGeom1) / (z_InLo + zGeom1 + dLum) / dzDrtScale) - - rtGeom1; //slope correction only on the lower end - float rtOut = rt_OutLo; - - //Cut #1: rt condition - if (rtOut < rtLo) - return false; - - float zInForHi = z_InLo - zGeom1 - dLum; - if (zInForHi * z_InLo < 0) { - zInForHi = alpaka::math::copysign(acc, 0.1f, z_InLo); - } - float rtHi = rt_InLo * (1.f + (z_OutLo - z_InLo + zGeom1) / zInForHi) + rtGeom1; - - //Cut #2: rt condition - if ((rt_OutLo < rtLo) || (rt_OutLo > rtHi)) - return false; - float rIn = alpaka::math::sqrt(acc, z_InLo * z_InLo + rt_InLo * rt_InLo); - const float drtSDIn = rt_InOut - rt_InLo; - const float dzSDIn = z_InOut - z_InLo; - const float dr3SDIn = alpaka::math::sqrt(acc, rt_InOut * rt_InOut + z_InOut * z_InOut) - - alpaka::math::sqrt(acc, rt_InLo * rt_InLo + z_InLo * z_InLo); - - const float coshEta = dr3SDIn / drtSDIn; //direction estimate - const float dzOutInAbs = alpaka::math::abs(acc, z_OutLo - z_InLo); - const float multDzDr = dzOutInAbs * coshEta / (coshEta * coshEta - 1.f); - const float zGeom1_another = kPixelPSZpitch; - float kZ = (z_OutLo - z_InLo) / dzSDIn; - float drtErr = - zGeom1_another * zGeom1_another * drtSDIn * drtSDIn / dzSDIn / dzSDIn * (1.f - 2.f * kZ + 2.f * kZ * kZ); const float thetaMuls2 = (kMulsInGeV * kMulsInGeV) * (0.1f + 0.2f * (rt_OutLo - rt_InLo) / 50.f) * (rIn / rt_InLo); - const float muls2 = thetaMuls2 * 9.f / (ptCut * ptCut) * 16.f; - drtErr += muls2 * multDzDr * multDzDr / 3.f * coshEta * coshEta; - drtErr = alpaka::math::sqrt(acc, drtErr); - - //Cut #3: rt-z pointed - if ((kZ < 0) || (rtOut < rtLo) || (rtOut > rtHi)) - return false; - - const float pvOffset = 0.1f / rt_OutLo; - float dPhiCut = alpha1GeV_OutLo + alpaka::math::sqrt(acc, muls2 + pvOffset * pvOffset); - - float deltaPhiPos = phi_mpi_pi(acc, mds.anchorPhi()[fourthMDIndex] - mds.anchorPhi()[secondMDIndex]); - - //Cut #4: deltaPhiPos can be tighter - if (alpaka::math::abs(acc, deltaPhiPos) > dPhiCut) - return false; float midPointX = 0.5f * (mds.anchorX()[firstMDIndex] + mds.anchorX()[thirdMDIndex]); float midPointY = 0.5f * (mds.anchorY()[firstMDIndex] + mds.anchorY()[thirdMDIndex]); @@ -1537,25 +1070,21 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float diffY = mds.anchorY()[thirdMDIndex] - mds.anchorY()[firstMDIndex]; float dPhi = deltaPhi(acc, midPointX, midPointY, diffX, diffY); - // Cut #5: deltaPhiChange - if (alpaka::math::abs(acc, dPhi) > dPhiCut) - return false; float sdIn_alpha = __H2F(segments.dPhiChanges()[innerSegmentIndex]); float sdIn_alpha_min = __H2F(segments.dPhiChangeMins()[innerSegmentIndex]); float sdIn_alpha_max = __H2F(segments.dPhiChangeMaxs()[innerSegmentIndex]); float sdOut_alpha = sdIn_alpha; - float sdOut_alphaOut = phi_mpi_pi(acc, - phi(acc, - mds.anchorX()[fourthMDIndex] - mds.anchorX()[thirdMDIndex], - mds.anchorY()[fourthMDIndex] - mds.anchorY()[thirdMDIndex]) - - mds.anchorPhi()[fourthMDIndex]); + float sdOut_dPhiPos = phi_mpi_pi(acc, mds.anchorPhi()[fourthMDIndex] - mds.anchorPhi()[thirdMDIndex]); + + float sdOut_dPhiChange = __H2F(segments.dPhiChanges()[outerSegmentIndex]); + float sdOut_dPhiChange_min = __H2F(segments.dPhiChangeMins()[outerSegmentIndex]); + float sdOut_dPhiChange_max = __H2F(segments.dPhiChangeMaxs()[outerSegmentIndex]); - float sdOut_alphaOut_min = phi_mpi_pi( - acc, __H2F(segments.dPhiChangeMins()[outerSegmentIndex]) - __H2F(segments.dPhiMins()[outerSegmentIndex])); - float sdOut_alphaOut_max = phi_mpi_pi( - acc, __H2F(segments.dPhiChangeMaxs()[outerSegmentIndex]) - __H2F(segments.dPhiMaxs()[outerSegmentIndex])); + float sdOut_alphaOutRHmin = phi_mpi_pi(acc, sdOut_dPhiChange_min - sdOut_dPhiPos); + float sdOut_alphaOutRHmax = phi_mpi_pi(acc, sdOut_dPhiChange_max - sdOut_dPhiPos); + float sdOut_alphaOut = phi_mpi_pi(acc, sdOut_dPhiChange - sdOut_dPhiPos); float tl_axis_x = mds.anchorX()[fourthMDIndex] - mds.anchorX()[firstMDIndex]; float tl_axis_y = mds.anchorY()[fourthMDIndex] - mds.anchorY()[firstMDIndex]; @@ -1577,8 +1106,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { betaInRHmax = betaIn - sdIn_alpha_max + sdIn_alpha; } - betaOutRHmin = betaOut - sdOut_alphaOut_min + sdOut_alphaOut; - betaOutRHmax = betaOut - sdOut_alphaOut_max + sdOut_alphaOut; + betaOutRHmin = betaOut - sdOut_alphaOutRHmin + sdOut_alphaOut; + betaOutRHmax = betaOut - sdOut_alphaOutRHmax + sdOut_alphaOut; float swapTemp; if (alpaka::math::abs(acc, betaOutRHmin) > alpaka::math::abs(acc, betaOutRHmax)) { @@ -1601,14 +1130,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float sdIn_d = rt_InOut - rt_InLo; float dr = alpaka::math::sqrt(acc, tl_axis_x * tl_axis_x + tl_axis_y * tl_axis_y); - const float corrF = 1.f; - float betaInCut = - alpaka::math::asin(acc, alpaka::math::min(acc, (-sdIn_dr * corrF + dr) * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + - (0.02f / sdIn_d); - - //Cut #6: first beta cut - if (alpaka::math::abs(acc, betaInRHmin) >= betaInCut) - return false; float betaAv = 0.5f * (betaIn + betaOut); float pt_beta = dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv); @@ -1623,7 +1144,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { (mds.anchorY()[fourthMDIndex] - mds.anchorY()[thirdMDIndex])); float sdOut_d = mds.anchorRt()[fourthMDIndex] - mds.anchorRt()[thirdMDIndex]; - runDeltaBetaIterationsT5(acc, betaIn, betaOut, betaAv, pt_beta, sdIn_dr, sdOut_dr, dr, lIn); + runDeltaBetaIterations(acc, betaIn, betaOut, betaAv, pt_beta, sdIn_dr, sdOut_dr, dr, lIn); const float betaInMMSF = (alpaka::math::abs(acc, betaInRHmin + betaInRHmax) > 0) ? (2.f * betaIn / alpaka::math::abs(acc, betaInRHmin + betaInRHmax)) @@ -1666,12 +1187,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } const float dBetaROut2 = dBetaROut * dBetaROut; - float betaOutCut = alpaka::math::asin(acc, alpaka::math::min(acc, dr * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + - (0.02f / sdOut_d) + alpaka::math::sqrt(acc, dBetaLum2 + dBetaMuls2); - - //Cut #6: The real beta cut - if (alpaka::math::abs(acc, betaOut) >= betaOutCut) - return false; float dBetaRes = 0.02f / alpaka::math::min(acc, sdOut_d, sdIn_d); float dBetaCut2 = @@ -1679,117 +1194,35 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { 0.25f * (alpaka::math::abs(acc, betaInRHmin - betaInRHmax) + alpaka::math::abs(acc, betaOutRHmin - betaOutRHmax)) * (alpaka::math::abs(acc, betaInRHmin - betaInRHmax) + alpaka::math::abs(acc, betaOutRHmin - betaOutRHmax))); - float dBeta = betaIn - betaOut; - //Cut #7: Cut on dBet + dBeta = betaIn - betaOut; return dBeta * dBeta <= dBetaCut2; } template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletDefaultAlgoEEEE(TAcc const& acc, - ModulesConst modules, - MiniDoubletsConst mds, - SegmentsConst segments, - uint16_t innerInnerLowerModuleIndex, - uint16_t innerOuterLowerModuleIndex, - uint16_t outerInnerLowerModuleIndex, - uint16_t outerOuterLowerModuleIndex, - unsigned int innerSegmentIndex, - unsigned int outerSegmentIndex, - unsigned int firstMDIndex, - unsigned int secondMDIndex, - unsigned int thirdMDIndex, - unsigned int fourthMDIndex) { + ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletdBetaCutEEEE(TAcc const& acc, + ModulesConst modules, + MiniDoubletsConst mds, + SegmentsConst segments, + uint16_t innerInnerLowerModuleIndex, + uint16_t innerOuterLowerModuleIndex, + uint16_t outerInnerLowerModuleIndex, + uint16_t outerOuterLowerModuleIndex, + unsigned int innerSegmentIndex, + unsigned int outerSegmentIndex, + unsigned int firstMDIndex, + unsigned int secondMDIndex, + unsigned int thirdMDIndex, + unsigned int fourthMDIndex, + float& dBeta, + const float ptCut) { float rt_InLo = mds.anchorRt()[firstMDIndex]; float rt_InOut = mds.anchorRt()[secondMDIndex]; float rt_OutLo = mds.anchorRt()[thirdMDIndex]; float z_InLo = mds.anchorZ()[firstMDIndex]; - float z_InOut = mds.anchorZ()[secondMDIndex]; float z_OutLo = mds.anchorZ()[thirdMDIndex]; - float alpha1GeV_OutLo = - alpaka::math::asin(acc, alpaka::math::min(acc, rt_OutLo * k2Rinv1GeVf / ptCut, kSinAlphaMax)); - - float dzDrtScale = - alpaka::math::tan(acc, alpha1GeV_OutLo) / alpha1GeV_OutLo; // The track can bend in r-z plane slightly - - // Cut #0: Preliminary (Only here in endcap case) - if ((z_InLo * z_OutLo) <= 0) - return false; - - float dLum = alpaka::math::copysign(acc, kDeltaZLum, z_InLo); - bool isOutSgInnerMDPS = modules.moduleType()[outerInnerLowerModuleIndex] == PS; - bool isInSgInnerMDPS = modules.moduleType()[innerInnerLowerModuleIndex] == PS; - - float rtGeom = (isInSgInnerMDPS and isOutSgInnerMDPS) ? 2.f * kPixelPSZpitch - : (isInSgInnerMDPS or isOutSgInnerMDPS) ? kPixelPSZpitch + kStrip2SZpitch - : 2.f * kStrip2SZpitch; - - float dz = z_OutLo - z_InLo; - float rtLo = rt_InLo * (1.f + dz / (z_InLo + dLum) / dzDrtScale) - rtGeom; //slope correction only on the lower end - - float rtOut = rt_OutLo; - - //Cut #1: rt condition - - float rtHi = rt_InLo * (1.f + dz / (z_InLo - dLum)) + rtGeom; - - if ((rtOut < rtLo) || (rtOut > rtHi)) - return false; - - bool isInSgOuterMDPS = modules.moduleType()[innerOuterLowerModuleIndex] == PS; - - const float drtSDIn = rt_InOut - rt_InLo; - const float dzSDIn = z_InOut - z_InLo; - const float dr3SDIn = alpaka::math::sqrt(acc, rt_InOut * rt_InOut + z_InOut * z_InOut) - - alpaka::math::sqrt(acc, rt_InLo * rt_InLo + z_InLo * z_InLo); - float coshEta = dr3SDIn / drtSDIn; //direction estimate - float dzOutInAbs = alpaka::math::abs(acc, z_OutLo - z_InLo); - float multDzDr = dzOutInAbs * coshEta / (coshEta * coshEta - 1.f); - - float kZ = (z_OutLo - z_InLo) / dzSDIn; float thetaMuls2 = (kMulsInGeV * kMulsInGeV) * (0.1f + 0.2f * (rt_OutLo - rt_InLo) / 50.f); - - float muls2 = thetaMuls2 * 9.f / (ptCut * ptCut) * 16.f; - - float drtErr = - alpaka::math::sqrt(acc, - kPixelPSZpitch * kPixelPSZpitch * 2.f / (dzSDIn * dzSDIn) * (dzOutInAbs * dzOutInAbs) + - muls2 * multDzDr * multDzDr / 3.f * coshEta * coshEta); - - float drtMean = drtSDIn * dzOutInAbs / alpaka::math::abs(acc, dzSDIn); - float rtWindow = drtErr + rtGeom; - float rtLo_point = rt_InLo + drtMean / dzDrtScale - rtWindow; - float rtHi_point = rt_InLo + drtMean + rtWindow; - - // Cut #3: rt-z pointed - // https://github.com/slava77/cms-tkph2-ntuple/blob/superDoubletLinked-91X-noMock/doubletAnalysis.C#L3765 - - if (isInSgInnerMDPS and isInSgOuterMDPS) // If both PS then we can point - { - if (kZ < 0 || rtOut < rtLo_point || rtOut > rtHi_point) - return false; - } - - float pvOffset = 0.1f / rtOut; - float dPhiCut = alpha1GeV_OutLo + alpaka::math::sqrt(acc, muls2 + pvOffset * pvOffset); - - float deltaPhiPos = phi_mpi_pi(acc, mds.anchorPhi()[fourthMDIndex] - mds.anchorPhi()[secondMDIndex]); - - if (alpaka::math::abs(acc, deltaPhiPos) > dPhiCut) - return false; - - float midPointX = 0.5f * (mds.anchorX()[firstMDIndex] + mds.anchorX()[thirdMDIndex]); - float midPointY = 0.5f * (mds.anchorY()[firstMDIndex] + mds.anchorY()[thirdMDIndex]); - float diffX = mds.anchorX()[thirdMDIndex] - mds.anchorX()[firstMDIndex]; - float diffY = mds.anchorY()[thirdMDIndex] - mds.anchorY()[firstMDIndex]; - - float dPhi = deltaPhi(acc, midPointX, midPointY, diffX, diffY); - - // Cut #5: deltaPhiChange - if (alpaka::math::abs(acc, dPhi) > dPhiCut) - return false; - float sdIn_alpha = __H2F(segments.dPhiChanges()[innerSegmentIndex]); float sdOut_alpha = sdIn_alpha; //weird float sdOut_dPhiPos = phi_mpi_pi(acc, mds.anchorPhi()[fourthMDIndex] - mds.anchorPhi()[thirdMDIndex]); @@ -1837,14 +1270,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float sdIn_d = rt_InOut - rt_InLo; float dr = alpaka::math::sqrt(acc, tl_axis_x * tl_axis_x + tl_axis_y * tl_axis_y); - const float corrF = 1.f; - float betaInCut = - alpaka::math::asin(acc, alpaka::math::min(acc, (-sdIn_dr * corrF + dr) * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + - (0.02f / sdIn_d); - - //Cut #6: first beta cut - if (alpaka::math::abs(acc, betaInRHmin) >= betaInCut) - return false; float betaAv = 0.5f * (betaIn + betaOut); float pt_beta = dr * k2Rinv1GeVf / alpaka::math::sin(acc, betaAv); @@ -1859,7 +1284,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { (mds.anchorY()[fourthMDIndex] - mds.anchorY()[thirdMDIndex])); float sdOut_d = mds.anchorRt()[fourthMDIndex] - mds.anchorRt()[thirdMDIndex]; - runDeltaBetaIterationsT5(acc, betaIn, betaOut, betaAv, pt_beta, sdIn_dr, sdOut_dr, dr, lIn); + runDeltaBetaIterations(acc, betaIn, betaOut, betaAv, pt_beta, sdIn_dr, sdOut_dr, dr, lIn); const float betaInMMSF = (alpaka::math::abs(acc, betaInRHmin + betaInRHmax) > 0) ? (2.f * betaIn / alpaka::math::abs(acc, betaInRHmin + betaInRHmax)) @@ -1888,42 +1313,33 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { const float dBetaOutLum = lOut < 11 ? 0.0f : alpaka::math::abs(acc, alphaOutAbsReg * kDeltaZLum / z_OutLo); const float dBetaLum2 = (dBetaInLum + dBetaOutLum) * (dBetaInLum + dBetaOutLum); - const float dBetaRIn2 = 0; // TODO-RH - - float dBetaROut2 = 0; //TODO-RH - float betaOutCut = alpaka::math::asin(acc, alpaka::math::min(acc, dr * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + - (0.02f / sdOut_d) + alpaka::math::sqrt(acc, dBetaLum2 + dBetaMuls2); - - //Cut #6: The real beta cut - if (alpaka::math::abs(acc, betaOut) >= betaOutCut) - return false; - float dBetaRes = 0.02f / alpaka::math::min(acc, sdOut_d, sdIn_d); float dBetaCut2 = - (dBetaRes * dBetaRes * 2.0f + dBetaMuls2 + dBetaLum2 + dBetaRIn2 + dBetaROut2 + + (dBetaRes * dBetaRes * 2.0f + dBetaMuls2 + dBetaLum2 + 0.25f * (alpaka::math::abs(acc, betaInRHmin - betaInRHmax) + alpaka::math::abs(acc, betaOutRHmin - betaOutRHmax)) * (alpaka::math::abs(acc, betaInRHmin - betaInRHmax) + alpaka::math::abs(acc, betaOutRHmin - betaOutRHmax))); - float dBeta = betaIn - betaOut; - //Cut #7: Cut on dBeta + dBeta = betaIn - betaOut; return dBeta * dBeta <= dBetaCut2; } template - ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletAlgoSelector(TAcc const& acc, - ModulesConst modules, - MiniDoubletsConst mds, - SegmentsConst segments, - uint16_t innerInnerLowerModuleIndex, - uint16_t innerOuterLowerModuleIndex, - uint16_t outerInnerLowerModuleIndex, - uint16_t outerOuterLowerModuleIndex, - unsigned int innerSegmentIndex, - unsigned int outerSegmentIndex, - unsigned int firstMDIndex, - unsigned int secondMDIndex, - unsigned int thirdMDIndex, - unsigned int fourthMDIndex) { + ALPAKA_FN_ACC ALPAKA_FN_INLINE bool runQuintupletdBetaAlgoSelector(TAcc const& acc, + ModulesConst modules, + MiniDoubletsConst mds, + SegmentsConst segments, + uint16_t innerInnerLowerModuleIndex, + uint16_t innerOuterLowerModuleIndex, + uint16_t outerInnerLowerModuleIndex, + uint16_t outerOuterLowerModuleIndex, + unsigned int innerSegmentIndex, + unsigned int outerSegmentIndex, + unsigned int firstMDIndex, + unsigned int secondMDIndex, + unsigned int thirdMDIndex, + unsigned int fourthMDIndex, + float& dBeta, + const float ptCut) { short innerInnerLowerModuleSubdet = modules.subdets()[innerInnerLowerModuleIndex]; short innerOuterLowerModuleSubdet = modules.subdets()[innerOuterLowerModuleIndex]; short outerInnerLowerModuleSubdet = modules.subdets()[outerInnerLowerModuleIndex]; @@ -1931,84 +1347,94 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { if (innerInnerLowerModuleSubdet == Barrel and innerOuterLowerModuleSubdet == Barrel and outerInnerLowerModuleSubdet == Barrel and outerOuterLowerModuleSubdet == Barrel) { - return runQuintupletDefaultAlgoBBBB(acc, - modules, - mds, - segments, - innerInnerLowerModuleIndex, - innerOuterLowerModuleIndex, - outerInnerLowerModuleIndex, - outerOuterLowerModuleIndex, - innerSegmentIndex, - outerSegmentIndex, - firstMDIndex, - secondMDIndex, - thirdMDIndex, - fourthMDIndex); + return runQuintupletdBetaCutBBBB(acc, + modules, + mds, + segments, + innerInnerLowerModuleIndex, + innerOuterLowerModuleIndex, + outerInnerLowerModuleIndex, + outerOuterLowerModuleIndex, + innerSegmentIndex, + outerSegmentIndex, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + dBeta, + ptCut); } else if (innerInnerLowerModuleSubdet == Barrel and innerOuterLowerModuleSubdet == Barrel and outerInnerLowerModuleSubdet == Endcap and outerOuterLowerModuleSubdet == Endcap) { - return runQuintupletDefaultAlgoBBEE(acc, - modules, - mds, - segments, - innerInnerLowerModuleIndex, - innerOuterLowerModuleIndex, - outerInnerLowerModuleIndex, - outerOuterLowerModuleIndex, - innerSegmentIndex, - outerSegmentIndex, - firstMDIndex, - secondMDIndex, - thirdMDIndex, - fourthMDIndex); + return runQuintupletdBetaCutBBEE(acc, + modules, + mds, + segments, + innerInnerLowerModuleIndex, + innerOuterLowerModuleIndex, + outerInnerLowerModuleIndex, + outerOuterLowerModuleIndex, + innerSegmentIndex, + outerSegmentIndex, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + dBeta, + ptCut); } else if (innerInnerLowerModuleSubdet == Barrel and innerOuterLowerModuleSubdet == Barrel and outerInnerLowerModuleSubdet == Barrel and outerOuterLowerModuleSubdet == Endcap) { - return runQuintupletDefaultAlgoBBBB(acc, - modules, - mds, - segments, - innerInnerLowerModuleIndex, - innerOuterLowerModuleIndex, - outerInnerLowerModuleIndex, - outerOuterLowerModuleIndex, - innerSegmentIndex, - outerSegmentIndex, - firstMDIndex, - secondMDIndex, - thirdMDIndex, - fourthMDIndex); + return runQuintupletdBetaCutBBBB(acc, + modules, + mds, + segments, + innerInnerLowerModuleIndex, + innerOuterLowerModuleIndex, + outerInnerLowerModuleIndex, + outerOuterLowerModuleIndex, + innerSegmentIndex, + outerSegmentIndex, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + dBeta, + ptCut); } else if (innerInnerLowerModuleSubdet == Barrel and innerOuterLowerModuleSubdet == Endcap and outerInnerLowerModuleSubdet == Endcap and outerOuterLowerModuleSubdet == Endcap) { - return runQuintupletDefaultAlgoBBEE(acc, - modules, - mds, - segments, - innerInnerLowerModuleIndex, - innerOuterLowerModuleIndex, - outerInnerLowerModuleIndex, - outerOuterLowerModuleIndex, - innerSegmentIndex, - outerSegmentIndex, - firstMDIndex, - secondMDIndex, - thirdMDIndex, - fourthMDIndex); + return runQuintupletdBetaCutBBEE(acc, + modules, + mds, + segments, + innerInnerLowerModuleIndex, + innerOuterLowerModuleIndex, + outerInnerLowerModuleIndex, + outerOuterLowerModuleIndex, + innerSegmentIndex, + outerSegmentIndex, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + dBeta, + ptCut); } else if (innerInnerLowerModuleSubdet == Endcap and innerOuterLowerModuleSubdet == Endcap and outerInnerLowerModuleSubdet == Endcap and outerOuterLowerModuleSubdet == Endcap) { - return runQuintupletDefaultAlgoEEEE(acc, - modules, - mds, - segments, - innerInnerLowerModuleIndex, - innerOuterLowerModuleIndex, - outerInnerLowerModuleIndex, - outerOuterLowerModuleIndex, - innerSegmentIndex, - outerSegmentIndex, - firstMDIndex, - secondMDIndex, - thirdMDIndex, - fourthMDIndex); + return runQuintupletdBetaCutEEEE(acc, + modules, + mds, + segments, + innerInnerLowerModuleIndex, + innerOuterLowerModuleIndex, + outerInnerLowerModuleIndex, + outerOuterLowerModuleIndex, + innerSegmentIndex, + outerSegmentIndex, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + dBeta, + ptCut); } return false; @@ -2030,13 +1456,16 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& innerRadius, float& outerRadius, float& bridgeRadius, - float& regressionG, - float& regressionF, + float& regressionCenterX, + float& regressionCenterY, float& regressionRadius, float& rzChiSquared, float& chiSquared, float& nonAnchorChiSquared, - bool& tightCutFlag) { + float& dBeta1, + float& dBeta2, + bool& tightCutFlag, + const float ptCut) { unsigned int firstSegmentIndex = triplets.segmentIndices()[innerTripletIndex][0]; unsigned int secondSegmentIndex = triplets.segmentIndices()[innerTripletIndex][1]; unsigned int thirdSegmentIndex = triplets.segmentIndices()[outerTripletIndex][0]; @@ -2057,38 +1486,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int fourthMDIndex = segments.mdIndices()[thirdSegmentIndex][1]; unsigned int fifthMDIndex = segments.mdIndices()[fourthSegmentIndex][1]; - if (not runQuintupletAlgoSelector(acc, - modules, - mds, - segments, - lowerModuleIndex1, - lowerModuleIndex2, - lowerModuleIndex3, - lowerModuleIndex4, - firstSegmentIndex, - thirdSegmentIndex, - firstMDIndex, - secondMDIndex, - thirdMDIndex, - fourthMDIndex)) - return false; - - if (not runQuintupletAlgoSelector(acc, - modules, - mds, - segments, - lowerModuleIndex1, - lowerModuleIndex2, - lowerModuleIndex4, - lowerModuleIndex5, - firstSegmentIndex, - fourthSegmentIndex, - firstMDIndex, - secondMDIndex, - fourthMDIndex, - fifthMDIndex)) - return false; - float x1 = mds.anchorX()[firstMDIndex]; float x2 = mds.anchorX()[secondMDIndex]; float x3 = mds.anchorX()[thirdMDIndex]; @@ -2101,73 +1498,61 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float y4 = mds.anchorY()[fourthMDIndex]; float y5 = mds.anchorY()[fifthMDIndex]; - //construct the arrays - float x1Vec[] = {x1, x1, x1}; - float y1Vec[] = {y1, y1, y1}; - float x2Vec[] = {x2, x2, x2}; - float y2Vec[] = {y2, y2, y2}; - float x3Vec[] = {x3, x3, x3}; - float y3Vec[] = {y3, y3, y3}; - - if (modules.subdets()[lowerModuleIndex1] == Endcap and modules.moduleType()[lowerModuleIndex1] == TwoS) { - x1Vec[1] = mds.anchorLowEdgeX()[firstMDIndex]; - x1Vec[2] = mds.anchorHighEdgeX()[firstMDIndex]; - - y1Vec[1] = mds.anchorLowEdgeY()[firstMDIndex]; - y1Vec[2] = mds.anchorHighEdgeY()[firstMDIndex]; - } - if (modules.subdets()[lowerModuleIndex2] == Endcap and modules.moduleType()[lowerModuleIndex2] == TwoS) { - x2Vec[1] = mds.anchorLowEdgeX()[secondMDIndex]; - x2Vec[2] = mds.anchorHighEdgeX()[secondMDIndex]; - - y2Vec[1] = mds.anchorLowEdgeY()[secondMDIndex]; - y2Vec[2] = mds.anchorHighEdgeY()[secondMDIndex]; - } - if (modules.subdets()[lowerModuleIndex3] == Endcap and modules.moduleType()[lowerModuleIndex3] == TwoS) { - x3Vec[1] = mds.anchorLowEdgeX()[thirdMDIndex]; - x3Vec[2] = mds.anchorHighEdgeX()[thirdMDIndex]; - - y3Vec[1] = mds.anchorLowEdgeY()[thirdMDIndex]; - y3Vec[2] = mds.anchorHighEdgeY()[thirdMDIndex]; - } - - float innerRadiusMin2S, innerRadiusMax2S; - computeErrorInRadius(acc, x1Vec, y1Vec, x2Vec, y2Vec, x3Vec, y3Vec, innerRadiusMin2S, innerRadiusMax2S); - - for (int i = 0; i < 3; i++) { - x1Vec[i] = x4; - y1Vec[i] = y4; - } - if (modules.subdets()[lowerModuleIndex4] == Endcap and modules.moduleType()[lowerModuleIndex4] == TwoS) { - x1Vec[1] = mds.anchorLowEdgeX()[fourthMDIndex]; - x1Vec[2] = mds.anchorHighEdgeX()[fourthMDIndex]; - - y1Vec[1] = mds.anchorLowEdgeY()[fourthMDIndex]; - y1Vec[2] = mds.anchorHighEdgeY()[fourthMDIndex]; - } - - float bridgeRadiusMin2S, bridgeRadiusMax2S; - computeErrorInRadius(acc, x2Vec, y2Vec, x3Vec, y3Vec, x1Vec, y1Vec, bridgeRadiusMin2S, bridgeRadiusMax2S); - - for (int i = 0; i < 3; i++) { - x2Vec[i] = x5; - y2Vec[i] = y5; - } - if (modules.subdets()[lowerModuleIndex5] == Endcap and modules.moduleType()[lowerModuleIndex5] == TwoS) { - x2Vec[1] = mds.anchorLowEdgeX()[fifthMDIndex]; - x2Vec[2] = mds.anchorHighEdgeX()[fifthMDIndex]; - - y2Vec[1] = mds.anchorLowEdgeY()[fifthMDIndex]; - y2Vec[2] = mds.anchorHighEdgeY()[fifthMDIndex]; - } - - float outerRadiusMin2S, outerRadiusMax2S; - computeErrorInRadius(acc, x3Vec, y3Vec, x1Vec, y1Vec, x2Vec, y2Vec, outerRadiusMin2S, outerRadiusMax2S); - float g, f; outerRadius = triplets.radius()[outerTripletIndex]; bridgeRadius = computeRadiusFromThreeAnchorHits(acc, x2, y2, x3, y3, x4, y4, g, f); innerRadius = triplets.radius()[innerTripletIndex]; + + bool inference = lst::t5dnn::runInference(acc, + mds, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + fifthMDIndex, + innerRadius, + outerRadius, + bridgeRadius); + tightCutFlag = tightCutFlag and inference; // T5-in-TC cut + if (!inference) // T5-building cut + return false; + + if (not runQuintupletdBetaAlgoSelector(acc, + modules, + mds, + segments, + lowerModuleIndex1, + lowerModuleIndex2, + lowerModuleIndex3, + lowerModuleIndex4, + firstSegmentIndex, + thirdSegmentIndex, + firstMDIndex, + secondMDIndex, + thirdMDIndex, + fourthMDIndex, + dBeta1, + ptCut)) + return false; + + if (not runQuintupletdBetaAlgoSelector(acc, + modules, + mds, + segments, + lowerModuleIndex1, + lowerModuleIndex2, + lowerModuleIndex4, + lowerModuleIndex5, + firstSegmentIndex, + fourthSegmentIndex, + firstMDIndex, + secondMDIndex, + fourthMDIndex, + fifthMDIndex, + dBeta2, + ptCut)) + return false; + g = triplets.centerX()[innerTripletIndex]; f = triplets.centerY()[innerTripletIndex]; @@ -2194,73 +1579,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { tightCutFlag)) return false; - if (innerRadius < 0.95f * ptCut / (2.f * k2Rinv1GeVf)) - return false; - - //split by category - bool matchedRadii; - if (modules.subdets()[lowerModuleIndex1] == Barrel and modules.subdets()[lowerModuleIndex2] == Barrel and - modules.subdets()[lowerModuleIndex3] == Barrel and modules.subdets()[lowerModuleIndex4] == Barrel and - modules.subdets()[lowerModuleIndex5] == Barrel) { - matchedRadii = matchRadiiBBBBB(acc, innerRadius, bridgeRadius, outerRadius); - } else if (modules.subdets()[lowerModuleIndex1] == Barrel and modules.subdets()[lowerModuleIndex2] == Barrel and - modules.subdets()[lowerModuleIndex3] == Barrel and modules.subdets()[lowerModuleIndex4] == Barrel and - modules.subdets()[lowerModuleIndex5] == Endcap) { - matchedRadii = matchRadiiBBBBE(acc, innerRadius, bridgeRadius, outerRadius); - } else if (modules.subdets()[lowerModuleIndex1] == Barrel and modules.subdets()[lowerModuleIndex2] == Barrel and - modules.subdets()[lowerModuleIndex3] == Barrel and modules.subdets()[lowerModuleIndex4] == Endcap and - modules.subdets()[lowerModuleIndex5] == Endcap) { - if (modules.layers()[lowerModuleIndex1] == 1) { - matchedRadii = - matchRadiiBBBEE12378(acc, innerRadius, bridgeRadius, outerRadius, bridgeRadiusMin2S, bridgeRadiusMax2S); - } else if (modules.layers()[lowerModuleIndex1] == 2) { - matchedRadii = - matchRadiiBBBEE23478(acc, innerRadius, bridgeRadius, outerRadius, bridgeRadiusMin2S, bridgeRadiusMax2S); - } else { - matchedRadii = - matchRadiiBBBEE34578(acc, innerRadius, bridgeRadius, outerRadius, bridgeRadiusMin2S, bridgeRadiusMax2S); - } - } - - else if (modules.subdets()[lowerModuleIndex1] == Barrel and modules.subdets()[lowerModuleIndex2] == Barrel and - modules.subdets()[lowerModuleIndex3] == Endcap and modules.subdets()[lowerModuleIndex4] == Endcap and - modules.subdets()[lowerModuleIndex5] == Endcap) { - matchedRadii = matchRadiiBBEEE(acc, innerRadius, bridgeRadius, outerRadius, bridgeRadiusMin2S, bridgeRadiusMax2S); - } else if (modules.subdets()[lowerModuleIndex1] == Barrel and modules.subdets()[lowerModuleIndex2] == Endcap and - modules.subdets()[lowerModuleIndex3] == Endcap and modules.subdets()[lowerModuleIndex4] == Endcap and - modules.subdets()[lowerModuleIndex5] == Endcap) { - matchedRadii = matchRadiiBEEEE(acc, - innerRadius, - bridgeRadius, - outerRadius, - innerRadiusMin2S, - innerRadiusMax2S, - bridgeRadiusMin2S, - bridgeRadiusMax2S); - } else { - matchedRadii = matchRadiiEEEEE(acc, - innerRadius, - bridgeRadius, - outerRadius, - innerRadiusMin2S, - innerRadiusMax2S, - bridgeRadiusMin2S, - bridgeRadiusMax2S); - } - - //compute regression radius right here - this computation is expensive!!! - if (not matchedRadii) - return false; + // 5 categories for sigmas + float sigmas2[5], delta1[5], delta2[5], slopes[5]; + bool isFlat[5]; float xVec[] = {x1, x2, x3, x4, x5}; float yVec[] = {y1, y2, y3, y4, y5}; const uint16_t lowerModuleIndices[] = { lowerModuleIndex1, lowerModuleIndex2, lowerModuleIndex3, lowerModuleIndex4, lowerModuleIndex5}; - // 5 categories for sigmas - float sigmas2[5], delta1[5], delta2[5], slopes[5]; - bool isFlat[5]; - computeSigmasForRegression(acc, modules, lowerModuleIndices, delta1, delta2, slopes, isFlat); regressionRadius = computeRadiusUsingRegression(acc, Params_T5::kLayers, @@ -2270,30 +1597,11 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { delta2, slopes, isFlat, - regressionG, - regressionF, + regressionCenterX, + regressionCenterY, sigmas2, chiSquared); - unsigned int mdIndices[] = {firstMDIndex, secondMDIndex, thirdMDIndex, fourthMDIndex, fifthMDIndex}; - float inference = t5dnn::runInference(acc, - modules, - mds, - segments, - triplets, - xVec, - yVec, - mdIndices, - lowerModuleIndices, - innerTripletIndex, - outerTripletIndex, - innerRadius, - outerRadius, - bridgeRadius); - tightCutFlag = tightCutFlag and (inference > t5dnn::kLSTWp2); // T5-in-TC cut - if (inference <= t5dnn::kLSTWp2) // T5-building cut - return false; - //compute the other chisquared //non anchor is always shifted for tilted and endcap! float nonAnchorDelta1[Params_T5::kLayers], nonAnchorDelta2[Params_T5::kLayers], nonAnchorSlopes[Params_T5::kLayers]; @@ -2325,8 +1633,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { nonAnchorDelta2, nonAnchorSlopes, isFlat, - regressionG, - regressionF, + regressionCenterX, + regressionCenterY, regressionRadius); return true; } @@ -2342,7 +1650,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { Quintuplets quintuplets, QuintupletsOccupancy quintupletsOccupancy, ObjectRangesConst ranges, - uint16_t nEligibleT5Modules) const { + uint16_t nEligibleT5Modules, + const float ptCut) const { auto const globalThreadIdx = alpaka::getIdx(acc); auto const gridThreadExtent = alpaka::getWorkDiv(acc); @@ -2372,8 +1681,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { uint16_t lowerModule4 = triplets.lowerModuleIndices()[outerTripletIndex][1]; uint16_t lowerModule5 = triplets.lowerModuleIndices()[outerTripletIndex][2]; - float innerRadius, outerRadius, bridgeRadius, regressionG, regressionF, regressionRadius, rzChiSquared, - chiSquared, nonAnchorChiSquared; //required for making distributions + float innerRadius, outerRadius, bridgeRadius, regressionCenterX, regressionCenterY, regressionRadius, + rzChiSquared, chiSquared, nonAnchorChiSquared, dBeta1, dBeta2; //required for making distributions bool tightCutFlag = false; bool success = runQuintupletDefaultAlgo(acc, @@ -2391,20 +1700,25 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerRadius, outerRadius, bridgeRadius, - regressionG, - regressionF, + regressionCenterX, + regressionCenterY, regressionRadius, rzChiSquared, chiSquared, nonAnchorChiSquared, - tightCutFlag); + dBeta1, + dBeta2, + tightCutFlag, + ptCut); if (success) { int totOccupancyQuintuplets = alpaka::atomicAdd( acc, &quintupletsOccupancy.totOccupancyQuintuplets()[lowerModule1], 1u, alpaka::hierarchy::Threads{}); if (totOccupancyQuintuplets >= ranges.quintupletModuleOccupancy()[lowerModule1]) { #ifdef WARNINGS - printf("Quintuplet excess alert! Module index = %d\n", lowerModule1); + printf("Quintuplet excess alert! Module index = %d, Occupancy = %d\n", + lowerModule1, + totOccupancyQuintuplets); #endif } else { int quintupletModuleIndex = alpaka::atomicAdd( @@ -2434,12 +1748,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerRadius, bridgeRadius, outerRadius, - regressionG, - regressionF, + regressionCenterX, + regressionCenterY, regressionRadius, rzChiSquared, chiSquared, nonAnchorChiSquared, + dBeta1, + dBeta2, pt, eta, phi, @@ -2464,7 +1780,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { ALPAKA_FN_ACC void operator()(TAcc const& acc, ModulesConst modules, TripletsOccupancyConst tripletsOccupancy, - ObjectRanges ranges) const { + ObjectRanges ranges, + const float ptCut) const { // implementation is 1D with a single block static_assert(std::is_same_v, "Should be Acc1D"); ALPAKA_ASSERT_ACC((alpaka::getWorkDiv(acc)[0] == 1)); @@ -2481,6 +1798,25 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } alpaka::syncBlockThreads(acc); + // Occupancy matrix for 0.8 GeV pT Cut + constexpr int p08_occupancy_matrix[4][4] = { + {336, 414, 231, 146}, // category 0 + {0, 0, 0, 0}, // category 1 + {0, 0, 0, 0}, // category 2 + {0, 0, 191, 106} // category 3 + }; + + // Occupancy matrix for 0.6 GeV pT Cut, 99.99% + constexpr int p06_occupancy_matrix[4][4] = { + {325, 237, 217, 176}, // category 0 + {0, 0, 0, 0}, // category 1 + {0, 0, 0, 0}, // category 2 + {0, 0, 129, 180} // category 3 + }; + + // Select the appropriate occupancy matrix based on ptCut + const auto& occupancy_matrix = (ptCut < 0.8f) ? p06_occupancy_matrix : p08_occupancy_matrix; + for (int i = globalThreadIdx[0]; i < modules.nLowerModules(); i += gridThreadExtent[0]) { // Condition for a quintuple to exist for a module // TCs don't exist for layers 5 and 6 barrel, and layers 2,3,4,5 endcap @@ -2498,55 +1834,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { int nEligibleT5Modules = alpaka::atomicAdd(acc, &nEligibleT5Modulesx, 1, alpaka::hierarchy::Threads{}); - int category_number; - if (module_layers <= 3 && module_subdets == 5) - category_number = 0; - else if (module_layers >= 4 && module_subdets == 5) - category_number = 1; - else if (module_layers <= 2 && module_subdets == 4 && module_rings >= 11) - category_number = 2; - else if (module_layers >= 3 && module_subdets == 4 && module_rings >= 8) - category_number = 2; - else if (module_layers <= 2 && module_subdets == 4 && module_rings <= 10) - category_number = 3; - else if (module_layers >= 3 && module_subdets == 4 && module_rings <= 7) - category_number = 3; - else - category_number = -1; - - int eta_number; - if (module_eta < 0.75f) - eta_number = 0; - else if (module_eta < 1.5f) - eta_number = 1; - else if (module_eta < 2.25f) - eta_number = 2; - else if (module_eta < 3.0f) - eta_number = 3; - else - eta_number = -1; - - int occupancy; - if (category_number == 0 && eta_number == 0) - occupancy = 336; - else if (category_number == 0 && eta_number == 1) - occupancy = 414; - else if (category_number == 0 && eta_number == 2) - occupancy = 231; - else if (category_number == 0 && eta_number == 3) - occupancy = 146; - else if (category_number == 3 && eta_number == 1) - occupancy = 0; - else if (category_number == 3 && eta_number == 2) - occupancy = 191; - else if (category_number == 3 && eta_number == 3) - occupancy = 106; - else { - occupancy = 0; + int category_number = getCategoryNumber(module_layers, module_subdets, module_rings); + int eta_number = getEtaBin(module_eta); + + int occupancy = 0; + if (category_number != -1 && eta_number != -1) { + occupancy = occupancy_matrix[category_number][eta_number]; + } #ifdef WARNINGS + else { printf("Unhandled case in createEligibleModulesListForQuintupletsGPU! Module index = %i\n", i); -#endif } +#endif int nTotQ = alpaka::atomicAdd(acc, &nTotalQuintupletsx, occupancy, alpaka::hierarchy::Threads{}); ranges.quintupletModuleIndices()[i] = nTotQ; diff --git a/RecoTracker/LSTCore/src/alpaka/Segment.h b/RecoTracker/LSTCore/src/alpaka/Segment.h index fc885e9d66afe..911119bf67ff8 100644 --- a/RecoTracker/LSTCore/src/alpaka/Segment.h +++ b/RecoTracker/LSTCore/src/alpaka/Segment.h @@ -39,46 +39,26 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } ALPAKA_FN_ACC ALPAKA_FN_INLINE float moduleGapSize_seg(short layer, short ring, short subdet, short side, short rod) { - static constexpr float miniDeltaTilted[3] = {0.26f, 0.26f, 0.26f}; - static constexpr float miniDeltaFlat[6] = {0.26f, 0.16f, 0.16f, 0.18f, 0.18f, 0.18f}; - static constexpr float miniDeltaLooseTilted[3] = {0.4f, 0.4f, 0.4f}; - static constexpr float miniDeltaEndcap[5][15] = { - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}}; - unsigned int iL = layer - 1; unsigned int iR = ring - 1; float moduleSeparation = 0; if (subdet == Barrel and side == Center) { - moduleSeparation = miniDeltaFlat[iL]; + moduleSeparation = kMiniDeltaFlat[iL]; } else if (isTighterTiltedModules_seg(subdet, layer, side, rod)) { - moduleSeparation = miniDeltaTilted[iL]; + moduleSeparation = kMiniDeltaTilted[iL]; } else if (subdet == Endcap) { - moduleSeparation = miniDeltaEndcap[iL][iR]; + moduleSeparation = kMiniDeltaEndcap[iL][iR]; } else //Loose tilted modules { - moduleSeparation = miniDeltaLooseTilted[iL]; + moduleSeparation = kMiniDeltaLooseTilted[iL]; } return moduleSeparation; } ALPAKA_FN_ACC ALPAKA_FN_INLINE float moduleGapSize_seg(ModulesConst modules, unsigned int moduleIndex) { - static constexpr float miniDeltaTilted[3] = {0.26f, 0.26f, 0.26f}; - static constexpr float miniDeltaFlat[6] = {0.26f, 0.16f, 0.16f, 0.18f, 0.18f, 0.18f}; - static constexpr float miniDeltaLooseTilted[3] = {0.4f, 0.4f, 0.4f}; - static constexpr float miniDeltaEndcap[5][15] = { - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}, - {0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.18f, /*10*/ 0.18f, 0.18f, 0.18f, 0.18f, 0.18f}}; - unsigned int iL = modules.layers()[moduleIndex] - 1; unsigned int iR = modules.rings()[moduleIndex] - 1; short subdet = modules.subdets()[moduleIndex]; @@ -87,14 +67,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float moduleSeparation = 0; if (subdet == Barrel and side == Center) { - moduleSeparation = miniDeltaFlat[iL]; + moduleSeparation = kMiniDeltaFlat[iL]; } else if (isTighterTiltedModules_seg(modules, moduleIndex)) { - moduleSeparation = miniDeltaTilted[iL]; + moduleSeparation = kMiniDeltaTilted[iL]; } else if (subdet == Endcap) { - moduleSeparation = miniDeltaEndcap[iL][iR]; + moduleSeparation = kMiniDeltaEndcap[iL][iR]; } else //Loose tilted modules { - moduleSeparation = miniDeltaLooseTilted[iL]; + moduleSeparation = kMiniDeltaLooseTilted[iL]; } return moduleSeparation; @@ -116,7 +96,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { uint16_t innerLowerModuleIndex, uint16_t outerLowerModuleIndex, unsigned int innerMDIndex, - unsigned int outerMDIndex) { + unsigned int outerMDIndex, + const float ptCut) { float sdMuls = (modules.subdets()[innerLowerModuleIndex] == Barrel) ? kMiniMulsPtScaleBarrel[modules.layers()[innerLowerModuleIndex] - 1] * 3.f / ptCut : kMiniMulsPtScaleEndcap[modules.layers()[innerLowerModuleIndex] - 1] * 3.f / ptCut; @@ -299,7 +280,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& dPhiMax, float& dPhiChange, float& dPhiChangeMin, - float& dPhiChangeMax) { + float& dPhiChangeMax, + const float ptCut) { float sdMuls = (modules.subdets()[innerLowerModuleIndex] == Barrel) ? kMiniMulsPtScaleBarrel[modules.layers()[innerLowerModuleIndex] - 1] * 3.f / ptCut : kMiniMulsPtScaleEndcap[modules.layers()[innerLowerModuleIndex] - 1] * 3.f / ptCut; @@ -357,7 +339,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerLowerModuleIndex, outerLowerModuleIndex, innerMDIndex, - outerMDIndex); + outerMDIndex, + ptCut); float innerMDAlpha = mds.dphichanges()[innerMDIndex]; float outerMDAlpha = mds.dphichanges()[outerMDIndex]; @@ -389,7 +372,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& dPhiMax, float& dPhiChange, float& dPhiChangeMin, - float& dPhiChangeMax) { + float& dPhiChangeMax, + const float ptCut) { float xIn, yIn, zIn, rtIn, xOut, yOut, zOut, rtOut; xIn = mds.anchorX()[innerMDIndex]; @@ -470,7 +454,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerLowerModuleIndex, outerLowerModuleIndex, innerMDIndex, - outerMDIndex); + outerMDIndex, + ptCut); float innerMDAlpha = mds.dphichanges()[innerMDIndex]; float outerMDAlpha = mds.dphichanges()[outerMDIndex]; @@ -502,7 +487,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& dPhiMax, float& dPhiChange, float& dPhiChangeMin, - float& dPhiChangeMax) { + float& dPhiChangeMax, + const float ptCut) { if (modules.subdets()[innerLowerModuleIndex] == Barrel and modules.subdets()[outerLowerModuleIndex] == Barrel) { return runSegmentDefaultAlgoBarrel(acc, modules, @@ -516,7 +502,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { dPhiMax, dPhiChange, dPhiChangeMin, - dPhiChangeMax); + dPhiChangeMax, + ptCut); } else { return runSegmentDefaultAlgoEndcap(acc, modules, @@ -530,7 +517,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { dPhiMax, dPhiChange, dPhiChangeMin, - dPhiChangeMax); + dPhiChangeMax, + ptCut); } } @@ -542,7 +530,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { MiniDoubletsOccupancyConst mdsOccupancy, Segments segments, SegmentsOccupancy segmentsOccupancy, - ObjectRangesConst ranges) const { + ObjectRangesConst ranges, + const float ptCut) const { auto const globalBlockIdx = alpaka::getIdx(acc); auto const blockThreadIdx = alpaka::getIdx(acc); auto const gridBlockExtent = alpaka::getWorkDiv(acc); @@ -595,7 +584,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { dPhiMax, dPhiChange, dPhiChangeMin, - dPhiChangeMax)) { + dPhiChangeMax, + ptCut)) { unsigned int totOccupancySegments = alpaka::atomicAdd(acc, &segmentsOccupancy.totOccupancySegments()[innerLowerModuleIndex], @@ -603,7 +593,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { alpaka::hierarchy::Threads{}); if (static_cast(totOccupancySegments) >= ranges.segmentModuleOccupancy()[innerLowerModuleIndex]) { #ifdef WARNINGS - printf("Segment excess alert! Module index = %d\n", innerLowerModuleIndex); + printf("Segment excess alert! Module index = %d, Occupancy = %d\n", + innerLowerModuleIndex, + totOccupancySegments); #endif } else { unsigned int segmentModuleIdx = alpaka::atomicAdd( @@ -634,10 +626,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { struct CreateSegmentArrayRanges { template - ALPAKA_FN_ACC void operator()(TAcc const& acc, - ModulesConst modules, - ObjectRanges ranges, - MiniDoubletsConst mds) const { + ALPAKA_FN_ACC void operator()( + TAcc const& acc, ModulesConst modules, ObjectRanges ranges, MiniDoubletsConst mds, const float ptCut) const { // implementation is 1D with a single block static_assert(std::is_same_v, "Should be Acc1D"); ALPAKA_ASSERT_ACC((alpaka::getWorkDiv(acc)[0] == 1)); @@ -652,6 +642,25 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } alpaka::syncBlockThreads(acc); + // Occupancy matrix for 0.8 GeV pT Cut + constexpr int p08_occupancy_matrix[4][4] = { + {572, 300, 183, 62}, // category 0 + {191, 128, 0, 0}, // category 1 + {0, 107, 102, 0}, // category 2 + {0, 64, 79, 85} // category 3 + }; + + // Occupancy matrix for 0.6 GeV pT Cut, 99.9% + constexpr int p06_occupancy_matrix[4][4] = { + {936, 351, 256, 61}, // category 0 + {1358, 763, 0, 0}, // category 1 + {0, 210, 268, 0}, // category 2 + {0, 60, 97, 96} // category 3 + }; + + // Select the appropriate occupancy matrix based on ptCut + const auto& occupancy_matrix = (ptCut < 0.8f) ? p06_occupancy_matrix : p08_occupancy_matrix; + for (uint16_t i = globalThreadIdx[0]; i < modules.nLowerModules(); i += gridThreadExtent[0]) { if (modules.nConnectedModules()[i] == 0) { ranges.segmentModuleIndices()[i] = nTotalSegments; @@ -664,63 +673,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { short module_subdets = modules.subdets()[i]; float module_eta = alpaka::math::abs(acc, modules.eta()[i]); - int category_number; - if (module_layers <= 3 && module_subdets == 5) - category_number = 0; - else if (module_layers >= 4 && module_subdets == 5) - category_number = 1; - else if (module_layers <= 2 && module_subdets == 4 && module_rings >= 11) - category_number = 2; - else if (module_layers >= 3 && module_subdets == 4 && module_rings >= 8) - category_number = 2; - else if (module_layers <= 2 && module_subdets == 4 && module_rings <= 10) - category_number = 3; - else if (module_layers >= 3 && module_subdets == 4 && module_rings <= 7) - category_number = 3; - else - category_number = -1; - - int eta_number; - if (module_eta < 0.75f) - eta_number = 0; - else if (module_eta < 1.5f) - eta_number = 1; - else if (module_eta < 2.25f) - eta_number = 2; - else if (module_eta < 3.0f) - eta_number = 3; - else - eta_number = -1; - - int occupancy; - if (category_number == 0 && eta_number == 0) - occupancy = 572; - else if (category_number == 0 && eta_number == 1) - occupancy = 300; - else if (category_number == 0 && eta_number == 2) - occupancy = 183; - else if (category_number == 0 && eta_number == 3) - occupancy = 62; - else if (category_number == 1 && eta_number == 0) - occupancy = 191; - else if (category_number == 1 && eta_number == 1) - occupancy = 128; - else if (category_number == 2 && eta_number == 1) - occupancy = 107; - else if (category_number == 2 && eta_number == 2) - occupancy = 102; - else if (category_number == 3 && eta_number == 1) - occupancy = 64; - else if (category_number == 3 && eta_number == 2) - occupancy = 79; - else if (category_number == 3 && eta_number == 3) - occupancy = 85; - else { - occupancy = 0; + int category_number = getCategoryNumber(module_layers, module_subdets, module_rings); + int eta_number = getEtaBin(module_eta); + + int occupancy = 0; + if (category_number != -1 && eta_number != -1) { + occupancy = occupancy_matrix[category_number][eta_number]; + } #ifdef WARNINGS + else { printf("Unhandled case in createSegmentArrayRanges! Module index = %i\n", i); -#endif } +#endif int nTotSegs = alpaka::atomicAdd(acc, &nTotalSegments, occupancy, alpaka::hierarchy::Threads{}); ranges.segmentModuleIndices()[i] = nTotSegs; diff --git a/RecoTracker/LSTCore/src/alpaka/TrackCandidate.h b/RecoTracker/LSTCore/src/alpaka/TrackCandidate.h index 1863f262ffd7d..315263919aa87 100644 --- a/RecoTracker/LSTCore/src/alpaka/TrackCandidate.h +++ b/RecoTracker/LSTCore/src/alpaka/TrackCandidate.h @@ -379,8 +379,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { quintuplets.lowerModuleIndices()[quintupletIndex].data(), quintuplets.hitIndices()[quintupletIndex].data(), -1 /*no pixel seed index for T5s*/, - quintuplets.regressionG()[quintupletIndex], - quintuplets.regressionF()[quintupletIndex], + quintuplets.regressionCenterX()[quintupletIndex], + quintuplets.regressionCenterY()[quintupletIndex], quintuplets.regressionRadius()[quintupletIndex], trackCandidateIdx, quintupletIndex); diff --git a/RecoTracker/LSTCore/src/alpaka/Triplet.h b/RecoTracker/LSTCore/src/alpaka/Triplet.h index 9192edbd9a186..ae2faecb080a6 100644 --- a/RecoTracker/LSTCore/src/alpaka/Triplet.h +++ b/RecoTracker/LSTCore/src/alpaka/Triplet.h @@ -2,6 +2,7 @@ #define RecoTracker_LSTCore_src_alpaka_Triplet_h #include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h" +#include "FWCore/Utilities/interface/isFinite.h" #include "RecoTracker/LSTCore/interface/alpaka/Common.h" #include "RecoTracker/LSTCore/interface/ModulesSoA.h" @@ -76,54 +77,295 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { uint16_t outerOuterLowerModuleIndex, unsigned int firstMDIndex, unsigned int secondMDIndex, - unsigned int thirdMDIndex) { - //get the rt and z - const float& r1 = mds.anchorRt()[firstMDIndex]; - const float& r2 = mds.anchorRt()[secondMDIndex]; - const float& r3 = mds.anchorRt()[thirdMDIndex]; - - const float& z1 = mds.anchorZ()[firstMDIndex]; - const float& z2 = mds.anchorZ()[secondMDIndex]; - const float& z3 = mds.anchorZ()[thirdMDIndex]; - + unsigned int thirdMDIndex, + float circleRadius, + float circleCenterX, + float circleCenterY) { // Using lst_layer numbering convention defined in ModuleMethods.h const int layer1 = modules.lstLayers()[innerInnerLowerModuleIndex]; const int layer2 = modules.lstLayers()[middleLowerModuleIndex]; const int layer3 = modules.lstLayers()[outerOuterLowerModuleIndex]; - const float residual = z2 - ((z3 - z1) / (r3 - r1) * (r2 - r1) + z1); + //all the values are stored in the unit of cm, in the calculation below we need to be cautious if we want to use the meter unit + //get r and z + const float r1 = mds.anchorRt()[firstMDIndex] / 100; + const float r2 = mds.anchorRt()[secondMDIndex] / 100; + const float r3 = mds.anchorRt()[thirdMDIndex] / 100; + + const float z1 = mds.anchorZ()[firstMDIndex] / 100; + const float z2 = mds.anchorZ()[secondMDIndex] / 100; + const float z3 = mds.anchorZ()[thirdMDIndex] / 100; + + //use linear approximation for regions 9 and 20-24 because it works better (see https://github.com/SegmentLinking/cmssw/pull/92) + float residual = alpaka::math::abs(acc, z2 - ((z3 - z1) / (r3 - r1) * (r2 - r1) + z1)); + + //region definitions: https://github.com/user-attachments/assets/2b3c1425-66eb-4524-83de-deb6f3b31f71 + if (layer1 == 1 && layer2 == 7) { + return residual < 0.01f; // Region 9 + } else if (layer1 == 3 && layer2 == 4) { + if (layer3 == 5) { + return residual < 0.037127972f; // Region 20 + } else if (layer3 == 12) { + return residual < 0.05f; // Region 21 + } + } else if (layer1 == 4) { + if (layer2 == 12) { + return residual < 0.063831687f; // Region 22 + } else if (layer2 == 5) { + if (layer3 == 6) { + return residual < 0.04362525f; // Region 23 + } else if (layer3 == 12) { + return residual < 0.05f; // Region 24 + } + } + } - if (layer1 == 12 and layer2 == 13 and layer3 == 14) { - return false; - } else if (layer1 == 1 and layer2 == 2 and layer3 == 3) { - return alpaka::math::abs(acc, residual) < 0.53f; - } else if (layer1 == 1 and layer2 == 2 and layer3 == 7) { - return alpaka::math::abs(acc, residual) < 1; - } else if (layer1 == 13 and layer2 == 14 and layer3 == 15) { - return false; - } else if (layer1 == 14 and layer2 == 15 and layer3 == 16) { - return false; - } else if (layer1 == 1 and layer2 == 7 and layer3 == 8) { - return alpaka::math::abs(acc, residual) < 1; - } else if (layer1 == 2 and layer2 == 3 and layer3 == 4) { - return alpaka::math::abs(acc, residual) < 1.21f; - } else if (layer1 == 2 and layer2 == 3 and layer3 == 7) { - return alpaka::math::abs(acc, residual) < 1.f; - } else if (layer1 == 2 and layer2 == 7 and layer3 == 8) { - return alpaka::math::abs(acc, residual) < 1.f; - } else if (layer1 == 3 and layer2 == 4 and layer3 == 5) { - return alpaka::math::abs(acc, residual) < 2.7f; - } else if (layer1 == 4 and layer2 == 5 and layer3 == 6) { - return alpaka::math::abs(acc, residual) < 3.06f; - } else if (layer1 == 7 and layer2 == 8 and layer3 == 9) { - return alpaka::math::abs(acc, residual) < 1; - } else if (layer1 == 8 and layer2 == 9 and layer3 == 10) { - return alpaka::math::abs(acc, residual) < 1; - } else if (layer1 == 9 and layer2 == 10 and layer3 == 11) { - return alpaka::math::abs(acc, residual) < 1; + //get the type of module: 0 is ps, 1 is 2s + const int moduleType3 = modules.moduleType()[outerOuterLowerModuleIndex]; + + //get the x,y position of each MD + const float x1 = mds.anchorX()[firstMDIndex] / 100; + const float x2 = mds.anchorX()[secondMDIndex] / 100; + const float x3 = mds.anchorX()[thirdMDIndex] / 100; + + const float y1 = mds.anchorY()[firstMDIndex] / 100; + const float y2 = mds.anchorY()[secondMDIndex] / 100; + const float y3 = mds.anchorY()[thirdMDIndex] / 100; + + //set initial and target points + float x_init = x2; + float y_init = y2; + float z_init = z2; + float r_init = r2; + + float z_target = z3; + float r_target = r3; + + float x_other = x1; + float y_other = y1; + + float dz = z2 - z1; + + //use MD2 for regions 5 and 19 because it works better (see https://github.com/SegmentLinking/cmssw/pull/92) + if ((layer1 == 8 && layer2 == 14 && layer3 == 15) || (layer1 == 3 && layer2 == 12 && layer3 == 13)) { + x_init = x1; + y_init = y1; + z_init = z1; + r_init = r1; + + z_target = z2; + r_target = r2; + + x_other = x3; + y_other = y3; + + dz = z3 - z1; + } + + //use the 3 MDs to fit a circle. This is the circle parameters, for circle centers and circle radius + float x_center = circleCenterX / 100; + float y_center = circleCenterY / 100; + float pt = 2 * k2Rinv1GeVf * circleRadius; //k2Rinv1GeVf is already in cm^(-1) + + //determine the charge + int charge = 0; + if ((x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1) > 0) + charge = -1; + else + charge = 1; + + //get the absolute value of px and py at the initial point + float px = 2 * k2Rinv1GeVf * alpaka::math::abs(acc, (y_init - y_center)) * 100; + float py = 2 * k2Rinv1GeVf * alpaka::math::abs(acc, (x_init - x_center)) * 100; + + //Above line only gives you the correct value of px and py, but signs of px and py calculated below. + //We look at if the circle is clockwise or anti-clock wise, to make it simpler, we separate the x-y plane into 4 quarters. + if (x_init > x_center && y_init > y_center) //1st quad + { + if (charge == 1) + py = -py; + if (charge == -1) + px = -px; + } + if (x_init < x_center && y_init > y_center) //2nd quad + { + if (charge == -1) { + px = -px; + py = -py; + } + } + if (x_init < x_center && y_init < y_center) //3rd quad + { + if (charge == 1) + px = -px; + if (charge == -1) + py = -py; + } + if (x_init > x_center && y_init < y_center) //4th quad + { + if (charge == 1) { + px = -px; + py = -py; + } + } + + //But if the initial T3 curve goes across quarters(i.e. cross axis to separate the quarters), need special redeclaration of px,py signs on these to avoid errors + if (x3 < x2 && x2 < x1) + px = -alpaka::math::abs(acc, px); + else if (x3 > x2 && x2 > x1) + px = alpaka::math::abs(acc, px); + if (y3 < y2 && y2 < y1) + py = -alpaka::math::abs(acc, py); + else if (y3 > y2 && y2 > y1) + py = alpaka::math::abs(acc, py); + + float AO = alpaka::math::sqrt( + acc, (x_other - x_center) * (x_other - x_center) + (y_other - y_center) * (y_other - y_center)); + float BO = + alpaka::math::sqrt(acc, (x_init - x_center) * (x_init - x_center) + (y_init - y_center) * (y_init - y_center)); + float AB2 = (x_other - x_init) * (x_other - x_init) + (y_other - y_init) * (y_other - y_init); + float dPhi = alpaka::math::acos(acc, (AO * AO + BO * BO - AB2) / (2 * AO * BO)); //Law of Cosines + float ds = circleRadius / 100 * dPhi; + float pz = dz / ds * pt; + + float p = alpaka::math::sqrt(acc, px * px + py * py + pz * pz); + float a = -2.f * k2Rinv1GeVf * 100 * charge; + float rou = a / p; + + float rzChiSquared = 0; + float error = 0; + + //check the tilted module, side: PosZ, NegZ, Center(for not tilted) + float drdz = alpaka::math::abs(acc, modules.drdzs()[outerOuterLowerModuleIndex]); + short side = modules.sides()[outerOuterLowerModuleIndex]; + short subdets = modules.subdets()[outerOuterLowerModuleIndex]; + + //calculate residual + if (layer3 <= 6 && ((side == lst::Center) or (drdz < 1))) { // for barrel + float paraA = r_init * r_init + 2 * (px * px + py * py) / (a * a) + 2 * (y_init * px - x_init * py) / a - + r_target * r_target; + float paraB = 2 * (x_init * px + y_init * py) / a; + float paraC = 2 * (y_init * px - x_init * py) / a + 2 * (px * px + py * py) / (a * a); + float A = paraB * paraB + paraC * paraC; + float B = 2 * paraA * paraB; + float C = paraA * paraA - paraC * paraC; + float sol1 = (-B + alpaka::math::sqrt(acc, B * B - 4 * A * C)) / (2 * A); + float sol2 = (-B - alpaka::math::sqrt(acc, B * B - 4 * A * C)) / (2 * A); + float solz1 = alpaka::math::asin(acc, sol1) / rou * pz / p + z_init; + float solz2 = alpaka::math::asin(acc, sol2) / rou * pz / p + z_init; + float diffz1 = (solz1 - z_target) * 100; + float diffz2 = (solz2 - z_target) * 100; + if (edm::isNotFinite(diffz1)) + residual = diffz2; + else if (edm::isNotFinite(diffz2)) + residual = diffz1; + else { + residual = (alpaka::math::abs(acc, diffz1) < alpaka::math::abs(acc, diffz2)) ? diffz1 : diffz2; + } + } else { // for endcap + float s = (z_target - z_init) * p / pz; + float x = x_init + px / a * alpaka::math::sin(acc, rou * s) - py / a * (1 - alpaka::math::cos(acc, rou * s)); + float y = y_init + py / a * alpaka::math::sin(acc, rou * s) + px / a * (1 - alpaka::math::cos(acc, rou * s)); + residual = (r_target - alpaka::math::sqrt(acc, x * x + y * y)) * 100; + } + + // error + if (moduleType3 == 0) { + error = 0.15f; //PS } else { - return alpaka::math::abs(acc, residual) < 5; + error = 5.0f; //2S } + + float projection_missing2 = 1; + if (drdz < 1) + projection_missing2 = ((subdets == lst::Endcap) or (side == lst::Center)) + ? 1.f + : 1 / (1 + drdz * drdz); // cos(atan(drdz)), if dr/dz<1 + if (drdz > 1) + projection_missing2 = ((subdets == lst::Endcap) or (side == lst::Center)) + ? 1.f + : drdz * drdz / (1 + drdz * drdz); //sin(atan(drdz)), if dr/dz>1 + + rzChiSquared = 12 * (residual * residual) / (error * error * projection_missing2); + + //helix calculation returns NaN, use linear approximation + if (edm::isNotFinite(rzChiSquared) || circleRadius < 0) { + float slope = (z3 - z1) / (r3 - r1); + + residual = (layer3 <= 6) ? ((z3 - z1) - slope * (r3 - r1)) : ((r3 - r1) - (z3 - z1) / slope); + residual = (moduleType3 == 0) ? residual / 0.15f : residual / 5.0f; + + rzChiSquared = 12 * residual * residual; + return rzChiSquared < 2.8e-4; + } + + //cuts for different regions + //region definitions: https://github.com/user-attachments/assets/2b3c1425-66eb-4524-83de-deb6f3b31f71 + //for the logic behind the cuts, see https://github.com/SegmentLinking/cmssw/pull/92 + if (layer1 == 7) { + if (layer2 == 8) { + if (layer3 == 9) { + return rzChiSquared < 65.47191f; // Region 0 + } else if (layer3 == 14) { + return rzChiSquared < 3.3200853f; // Region 1 + } + } else if (layer2 == 13) { + return rzChiSquared < 17.194584f; // Region 2 + } + } else if (layer1 == 8) { + if (layer2 == 9) { + if (layer3 == 10) { + return rzChiSquared < 114.91959f; // Region 3 + } else if (layer3 == 15) { + return rzChiSquared < 3.4359624f; // Region 4 + } + } else if (layer2 == 14) { + return rzChiSquared < 4.6487956f; // Region 5 + } + } else if (layer1 == 9) { + if (layer2 == 10) { + if (layer3 == 11) { + return rzChiSquared < 97.34339f; // Region 6 + } else if (layer3 == 16) { + return rzChiSquared < 3.095819f; // Region 7 + } + } else if (layer2 == 15) { + return rzChiSquared < 11.477617f; // Region 8 + } + } else if (layer1 == 1) { + if (layer3 == 7) { + return rzChiSquared < 96.949936f; // Region 10 + } else if (layer3 == 3) { + return rzChiSquared < 458.43982f; // Region 11 + } + } else if (layer1 == 2) { + if (layer2 == 7) { + if (layer3 == 8) { + return rzChiSquared < 218.82303f; // Region 12 + } else if (layer3 == 13) { + return rzChiSquared < 3.155554f; // Region 13 + } + } else if (layer2 == 3) { + if (layer3 == 7) { + return rzChiSquared < 235.5005f; // Region 14 + } else if (layer3 == 12) { + return rzChiSquared < 3.8522234f; // Region 15 + } else if (layer3 == 4) { + return rzChiSquared < 3.5852437f; // Region 16 + } + } + } else if (layer1 == 3) { + if (layer2 == 7) { + if (layer3 == 8) { + return rzChiSquared < 42.68f; // Region 17 + } else if (layer3 == 13) { + return rzChiSquared < 3.853796f; // Region 18 + } + } else if (layer2 == 12) { + return rzChiSquared < 6.2774787f; // Region 19 + } + } + return false; } template @@ -141,62 +383,11 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& rtOut, unsigned int innerSegmentIndex, float& betaIn, - float& betaInCut) { - bool isPSIn = (modules.moduleType()[innerInnerLowerModuleIndex] == PS); - bool isPSOut = (modules.moduleType()[outerOuterLowerModuleIndex] == PS); - + float& betaInCut, + const float ptCut) { float rtIn = mds.anchorRt()[firstMDIndex]; float rtMid = mds.anchorRt()[secondMDIndex]; - rtOut = mds.anchorRt()[thirdMDIndex]; - - float zIn = mds.anchorZ()[firstMDIndex]; - float zMid = mds.anchorZ()[secondMDIndex]; - zOut = mds.anchorZ()[thirdMDIndex]; - - float alpha1GeVOut = alpaka::math::asin(acc, alpaka::math::min(acc, rtOut * k2Rinv1GeVf / ptCut, kSinAlphaMax)); - - float rtRatio_OutIn = rtOut / rtIn; // Outer segment beginning rt divided by inner segment beginning rt; - float dzDrtScale = alpaka::math::tan(acc, alpha1GeVOut) / alpha1GeVOut; // The track can bend in r-z plane slightly - float zpitchIn = (isPSIn ? kPixelPSZpitch : kStrip2SZpitch); - float zpitchOut = (isPSOut ? kPixelPSZpitch : kStrip2SZpitch); - - const float zHi = - zIn + (zIn + kDeltaZLum) * (rtRatio_OutIn - 1.f) * (zIn < 0.f ? 1.f : dzDrtScale) + (zpitchIn + zpitchOut); - const float zLo = zIn + (zIn - kDeltaZLum) * (rtRatio_OutIn - 1.f) * (zIn > 0.f ? 1.f : dzDrtScale) - - (zpitchIn + zpitchOut); //slope-correction only on outer end - - //Cut 1 - z compatibility - if ((zOut < zLo) || (zOut > zHi)) - return false; - - float drt_OutIn = (rtOut - rtIn); - - float r3In = alpaka::math::sqrt(acc, zIn * zIn + rtIn * rtIn); float drt_InSeg = rtMid - rtIn; - float dz_InSeg = zMid - zIn; - float dr3_InSeg = - alpaka::math::sqrt(acc, rtMid * rtMid + zMid * zMid) - alpaka::math::sqrt(acc, rtIn * rtIn + zIn * zIn); - - float coshEta = dr3_InSeg / drt_InSeg; - float dzErr = (zpitchIn + zpitchOut) * (zpitchIn + zpitchOut) * 2.f; - - float thetaMuls2 = (kMulsInGeV * kMulsInGeV) * (0.1f + 0.2f * (rtOut - rtIn) / 50.f) * (r3In / rtIn); - float muls2 = thetaMuls2 * 9.f / (ptCut * ptCut) * 16.f; - dzErr += muls2 * drt_OutIn * drt_OutIn / 3.f * coshEta * coshEta; - dzErr = alpaka::math::sqrt(acc, dzErr); - - // Constructing upper and lower bound - const float dzMean = dz_InSeg / drt_InSeg * drt_OutIn; - const float zWindow = dzErr / drt_InSeg * drt_OutIn + - (zpitchIn + zpitchOut); //FIXME for ptCut lower than ~0.8 need to add curv path correction - const float zLoPointed = zIn + dzMean * (zIn > 0.f ? 1.f : dzDrtScale) - zWindow; - const float zHiPointed = zIn + dzMean * (zIn < 0.f ? 1.f : dzDrtScale) + zWindow; - - // Constructing upper and lower bound - - // Cut #2: Pointed Z (Inner segment two MD points to outer segment inner MD) - if ((zOut < zLoPointed) || (zOut > zHiPointed)) - return false; // raw betaIn value without any correction, based on the mini-doublet hit positions float alpha_InLo = __H2F(segments.dPhiChanges()[innerSegmentIndex]); @@ -217,7 +408,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { alpaka::math::asin(acc, alpaka::math::min(acc, (-rt_InSeg + drt_tl_axis) * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + (0.02f / drt_InSeg); - //Cut #3: first beta cut + //Beta cut return alpaka::math::abs(acc, betaIn) < betaInCut; } @@ -238,72 +429,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int innerSegmentIndex, unsigned int outerSegmentIndex, float& betaIn, - float& betaInCut) { - bool isPSIn = (modules.moduleType()[innerInnerLowerModuleIndex] == PS); - bool isPSOut = (modules.moduleType()[outerOuterLowerModuleIndex] == PS); - - float rtIn = mds.anchorRt()[firstMDIndex]; - float rtMid = mds.anchorRt()[secondMDIndex]; - rtOut = mds.anchorRt()[thirdMDIndex]; - - float zIn = mds.anchorZ()[firstMDIndex]; - float zMid = mds.anchorZ()[secondMDIndex]; - zOut = mds.anchorZ()[thirdMDIndex]; - - float alpha1GeV_OutLo = alpaka::math::asin(acc, alpaka::math::min(acc, rtOut * k2Rinv1GeVf / ptCut, kSinAlphaMax)); - - float dzDrtScale = - alpaka::math::tan(acc, alpha1GeV_OutLo) / alpha1GeV_OutLo; // The track can bend in r-z plane slightly - float zpitchIn = (isPSIn ? kPixelPSZpitch : kStrip2SZpitch); - float zpitchOut = (isPSOut ? kPixelPSZpitch : kStrip2SZpitch); - float zGeom = zpitchIn + zpitchOut; - - // Cut #0: Preliminary (Only here in endcap case) - if (zIn * zOut <= 0) - return false; - - float dLum = alpaka::math::copysign(acc, kDeltaZLum, zIn); - bool isOutSgInnerMDPS = modules.moduleType()[outerOuterLowerModuleIndex] == PS; - float rtGeom1 = isOutSgInnerMDPS ? kPixelPSZpitch : kStrip2SZpitch; - float zGeom1 = alpaka::math::copysign(acc, zGeom, zIn); - float rtLo = rtIn * (1.f + (zOut - zIn - zGeom1) / (zIn + zGeom1 + dLum) / dzDrtScale) - - rtGeom1; //slope correction only on the lower end - - //Cut #1: rt condition - float zInForHi = zIn - zGeom1 - dLum; - if (zInForHi * zIn < 0) { - zInForHi = alpaka::math::copysign(acc, 0.1f, zIn); - } - float rtHi = rtIn * (1.f + (zOut - zIn + zGeom1) / zInForHi) + rtGeom1; - - //Cut #2: rt condition - if ((rtOut < rtLo) || (rtOut > rtHi)) - return false; - - float rIn = alpaka::math::sqrt(acc, zIn * zIn + rtIn * rtIn); - - const float drtSDIn = rtMid - rtIn; - const float dzSDIn = zMid - zIn; - const float dr3SDIn = - alpaka::math::sqrt(acc, rtMid * rtMid + zMid * zMid) - alpaka::math::sqrt(acc, rtIn * rtIn + zIn * zIn); - - const float coshEta = dr3SDIn / drtSDIn; //direction estimate - const float dzOutInAbs = alpaka::math::abs(acc, zOut - zIn); - const float multDzDr = dzOutInAbs * coshEta / (coshEta * coshEta - 1.f); - const float zGeom1_another = kPixelPSZpitch; - const float kZ = (zOut - zIn) / dzSDIn; - float drtErr = - zGeom1_another * zGeom1_another * drtSDIn * drtSDIn / dzSDIn / dzSDIn * (1.f - 2.f * kZ + 2.f * kZ * kZ); - const float thetaMuls2 = (kMulsInGeV * kMulsInGeV) * (0.1f + 0.2 * (rtOut - rtIn) / 50.f) * (rIn / rtIn); - const float muls2 = thetaMuls2 * 9.f / (ptCut * ptCut) * 16.f; - drtErr += muls2 * multDzDr * multDzDr / 3.f * coshEta * coshEta; - drtErr = alpaka::math::sqrt(acc, drtErr); - - //Cut #3: rt-z pointed - - if ((kZ < 0) || (rtOut < rtLo) || (rtOut > rtHi)) - return false; - + float& betaInCut, + const float ptCut) { float rt_InLo = mds.anchorRt()[firstMDIndex]; float rt_InOut = mds.anchorRt()[secondMDIndex]; @@ -336,7 +463,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { betaInCut = alpaka::math::asin(acc, alpaka::math::min(acc, (-sdIn_dr + dr) * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + (0.02f / sdIn_d); - //Cut #4: first beta cut + //Beta cut return alpaka::math::abs(acc, betaInRHmin) < betaInCut; } @@ -356,75 +483,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int innerSegmentIndex, unsigned int outerSegmentIndex, float& betaIn, - float& betaInCut) { - float rtIn = mds.anchorRt()[firstMDIndex]; - float rtMid = mds.anchorRt()[secondMDIndex]; - rtOut = mds.anchorRt()[thirdMDIndex]; - - float zIn = mds.anchorZ()[firstMDIndex]; - float zMid = mds.anchorZ()[secondMDIndex]; - zOut = mds.anchorZ()[thirdMDIndex]; - - float alpha1GeV_Out = alpaka::math::asin(acc, alpaka::math::min(acc, rtOut * k2Rinv1GeVf / ptCut, kSinAlphaMax)); - - float dzDrtScale = - alpaka::math::tan(acc, alpha1GeV_Out) / alpha1GeV_Out; // The track can bend in r-z plane slightly - - // Cut #0: Preliminary (Only here in endcap case) - if (zIn * zOut <= 0) - return false; - - float dLum = alpaka::math::copysign(acc, kDeltaZLum, zIn); - bool isOutSgOuterMDPS = modules.moduleType()[outerOuterLowerModuleIndex] == PS; - bool isInSgInnerMDPS = modules.moduleType()[innerInnerLowerModuleIndex] == PS; - - float rtGeom = (isInSgInnerMDPS and isOutSgOuterMDPS) ? 2.f * kPixelPSZpitch - : (isInSgInnerMDPS or isOutSgOuterMDPS) ? kPixelPSZpitch + kStrip2SZpitch - : 2.f * kStrip2SZpitch; - - float dz = zOut - zIn; - const float rtLo = rtIn * (1.f + dz / (zIn + dLum) / dzDrtScale) - rtGeom; //slope correction only on the lower end - const float rtHi = rtIn * (1.f + dz / (zIn - dLum)) + rtGeom; - - //Cut #1: rt condition - if ((rtOut < rtLo) || (rtOut > rtHi)) - return false; - - bool isInSgOuterMDPS = modules.moduleType()[outerOuterLowerModuleIndex] == PS; - - float drtSDIn = rtMid - rtIn; - float dzSDIn = zMid - zIn; - float dr3SDIn = - alpaka::math::sqrt(acc, rtMid * rtMid + zMid * zMid) - alpaka::math::sqrt(acc, rtIn * rtIn + zIn * zIn); - - float coshEta = dr3SDIn / drtSDIn; //direction estimate - float dzOutInAbs = alpaka::math::abs(acc, zOut - zIn); - float multDzDr = dzOutInAbs * coshEta / (coshEta * coshEta - 1.f); - - float kZ = (zOut - zIn) / dzSDIn; - float thetaMuls2 = (kMulsInGeV * kMulsInGeV) * (0.1f + 0.2f * (rtOut - rtIn) / 50.f); - - float muls2 = thetaMuls2 * 9.f / (ptCut * ptCut) * 16.f; - - float drtErr = - alpaka::math::sqrt(acc, - kPixelPSZpitch * kPixelPSZpitch * 2.f / (dzSDIn * dzSDIn) * (dzOutInAbs * dzOutInAbs) + - muls2 * multDzDr * multDzDr / 3.f * coshEta * coshEta); - - float drtMean = drtSDIn * dzOutInAbs / alpaka::math::abs(acc, dzSDIn); - float rtWindow = drtErr + rtGeom; - float rtLo_point = rtIn + drtMean / dzDrtScale - rtWindow; - float rtHi_point = rtIn + drtMean + rtWindow; - - // Cut #3: rt-z pointed - // https://github.com/slava77/cms-tkph2-ntuple/blob/superDoubletLinked-91X-noMock/doubletAnalysis.C#L3765 - - if (isInSgInnerMDPS and isInSgOuterMDPS) // If both PS then we can point - { - if ((kZ < 0) || (rtOut < rtLo_point) || (rtOut > rtHi_point)) - return false; - } - + float& betaInCut, + const float ptCut) { float rt_InLo = mds.anchorRt()[firstMDIndex]; float rt_InOut = mds.anchorRt()[secondMDIndex]; float sdIn_alpha = __H2F(segments.dPhiChanges()[innerSegmentIndex]); @@ -457,7 +517,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { betaInCut = alpaka::math::asin(acc, alpaka::math::min(acc, (-sdIn_dr + dr) * k2Rinv1GeVf / ptCut, kSinAlphaMax)) + (0.02f / sdIn_d); - //Cut #4: first beta cut + //Beta cut return alpaka::math::abs(acc, betaInRHmin) < betaInCut; } @@ -478,7 +538,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int innerSegmentIndex, unsigned int outerSegmentIndex, float& betaIn, - float& betaInCut) { + float& betaInCut, + const float ptCut) { short innerInnerLowerModuleSubdet = modules.subdets()[innerInnerLowerModuleIndex]; short middleLowerModuleSubdet = modules.subdets()[middleLowerModuleIndex]; short outerOuterLowerModuleSubdet = modules.subdets()[outerOuterLowerModuleIndex]; @@ -499,7 +560,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { rtOut, innerSegmentIndex, betaIn, - betaInCut); + betaInCut, + ptCut); } else if (innerInnerLowerModuleSubdet == Barrel and middleLowerModuleSubdet == Barrel and outerOuterLowerModuleSubdet == Endcap) { return passPointingConstraintBBE(acc, @@ -518,7 +580,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerSegmentIndex, outerSegmentIndex, betaIn, - betaInCut); + betaInCut, + ptCut); } else if (innerInnerLowerModuleSubdet == Barrel and middleLowerModuleSubdet == Endcap and outerOuterLowerModuleSubdet == Endcap) { return passPointingConstraintBBE(acc, @@ -537,7 +600,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerSegmentIndex, outerSegmentIndex, betaIn, - betaInCut); + betaInCut, + ptCut); } @@ -558,7 +622,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerSegmentIndex, outerSegmentIndex, betaIn, - betaInCut); + betaInCut, + ptCut); } return false; // failsafe } @@ -612,7 +677,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { float& betaInCut, float& circleRadius, float& circleCenterX, - float& circleCenterY) { + float& circleCenterY, + const float ptCut) { //this cut reduces the number of candidates by a factor of 4, i.e., 3 out of 4 warps can end right here! if (segments.mdIndices()[innerSegmentIndex][1] != segments.mdIndices()[outerSegmentIndex][0]) return false; @@ -621,6 +687,15 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { unsigned int secondMDIndex = segments.mdIndices()[outerSegmentIndex][0]; unsigned int thirdMDIndex = segments.mdIndices()[outerSegmentIndex][1]; + float x1 = mds.anchorX()[firstMDIndex]; + float x2 = mds.anchorX()[secondMDIndex]; + float x3 = mds.anchorX()[thirdMDIndex]; + float y1 = mds.anchorY()[firstMDIndex]; + float y2 = mds.anchorY()[secondMDIndex]; + float y3 = mds.anchorY()[thirdMDIndex]; + + circleRadius = computeRadiusFromThreeAnchorHits(acc, x1, y1, x2, y2, x3, y3, circleCenterX, circleCenterY); + if (not passRZConstraint(acc, modules, mds, @@ -629,8 +704,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { outerOuterLowerModuleIndex, firstMDIndex, secondMDIndex, - thirdMDIndex)) + thirdMDIndex, + circleRadius, + circleCenterX, + circleCenterY)) return false; + if (not passPointingConstraint(acc, modules, mds, @@ -647,17 +726,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { innerSegmentIndex, outerSegmentIndex, betaIn, - betaInCut)) + betaInCut, + ptCut)) return false; - float x1 = mds.anchorX()[firstMDIndex]; - float x2 = mds.anchorX()[secondMDIndex]; - float x3 = mds.anchorX()[thirdMDIndex]; - float y1 = mds.anchorY()[firstMDIndex]; - float y2 = mds.anchorY()[secondMDIndex]; - float y3 = mds.anchorY()[thirdMDIndex]; - - circleRadius = computeRadiusFromThreeAnchorHits(acc, x1, y1, x2, y2, x3, y3, circleCenterX, circleCenterY); return true; } @@ -672,7 +744,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { TripletsOccupancy tripletsOccupancy, ObjectRangesConst ranges, uint16_t* index_gpu, - uint16_t nonZeroModules) const { + uint16_t nonZeroModules, + const float ptCut) const { auto const globalThreadIdx = alpaka::getIdx(acc); auto const gridThreadExtent = alpaka::getWorkDiv(acc); @@ -719,7 +792,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { betaInCut, circleRadius, circleCenterX, - circleCenterY); + circleCenterY, + ptCut); if (success) { unsigned int totOccupancyTriplets = @@ -730,7 +804,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { if (static_cast(totOccupancyTriplets) >= ranges.tripletModuleOccupancy()[innerInnerLowerModuleIndex]) { #ifdef WARNINGS - printf("Triplet excess alert! Module index = %d\n", innerInnerLowerModuleIndex); + printf("Triplet excess alert! Module index = %d, Occupancy = %d\n", + innerInnerLowerModuleIndex, + totOccupancyTriplets); #endif } else { unsigned int tripletModuleIndex = alpaka::atomicAdd( @@ -769,7 +845,8 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { ALPAKA_FN_ACC void operator()(TAcc const& acc, ModulesConst modules, ObjectRanges ranges, - SegmentsOccupancyConst segmentsOccupancy) const { + SegmentsOccupancyConst segmentsOccupancy, + const float ptCut) const { // implementation is 1D with a single block static_assert(std::is_same_v, "Should be Acc1D"); ALPAKA_ASSERT_ACC((alpaka::getWorkDiv(acc)[0] == 1)); @@ -784,6 +861,25 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { } alpaka::syncBlockThreads(acc); + // Occupancy matrix for 0.8 GeV pT Cut + constexpr int p08_occupancy_matrix[4][4] = { + {543, 235, 88, 46}, // category 0 + {755, 347, 0, 0}, // category 1 + {0, 0, 0, 0}, // category 2 + {0, 38, 46, 39} // category 3 + }; + + // Occupancy matrix for 0.6 GeV pT Cut, 99.9% + constexpr int p06_occupancy_matrix[4][4] = { + {1146, 544, 216, 83}, // category 0 + {1032, 275, 0, 0}, // category 1 + {0, 0, 0, 0}, // category 2 + {0, 115, 110, 76} // category 3 + }; + + // Select the appropriate occupancy matrix based on ptCut + const auto& occupancy_matrix = (ptCut < 0.8f) ? p06_occupancy_matrix : p08_occupancy_matrix; + for (uint16_t i = globalThreadIdx[0]; i < modules.nLowerModules(); i += gridThreadExtent[0]) { if (segmentsOccupancy.nSegments()[i] == 0) { ranges.tripletModuleIndices()[i] = nTotalTriplets; @@ -796,63 +892,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst { short module_subdets = modules.subdets()[i]; float module_eta = alpaka::math::abs(acc, modules.eta()[i]); - int category_number; - if (module_layers <= 3 && module_subdets == 5) - category_number = 0; - else if (module_layers >= 4 && module_subdets == 5) - category_number = 1; - else if (module_layers <= 2 && module_subdets == 4 && module_rings >= 11) - category_number = 2; - else if (module_layers >= 3 && module_subdets == 4 && module_rings >= 8) - category_number = 2; - else if (module_layers <= 2 && module_subdets == 4 && module_rings <= 10) - category_number = 3; - else if (module_layers >= 3 && module_subdets == 4 && module_rings <= 7) - category_number = 3; - else - category_number = -1; - - int eta_number; - if (module_eta < 0.75f) - eta_number = 0; - else if (module_eta < 1.5f) - eta_number = 1; - else if (module_eta < 2.25f) - eta_number = 2; - else if (module_eta < 3.0f) - eta_number = 3; - else - eta_number = -1; - - int occupancy; - if (category_number == 0 && eta_number == 0) - occupancy = 543; - else if (category_number == 0 && eta_number == 1) - occupancy = 235; - else if (category_number == 0 && eta_number == 2) - occupancy = 88; - else if (category_number == 0 && eta_number == 3) - occupancy = 46; - else if (category_number == 1 && eta_number == 0) - occupancy = 755; - else if (category_number == 1 && eta_number == 1) - occupancy = 347; - else if (category_number == 2 && eta_number == 1) - occupancy = 0; - else if (category_number == 2 && eta_number == 2) - occupancy = 0; - else if (category_number == 3 && eta_number == 1) - occupancy = 38; - else if (category_number == 3 && eta_number == 2) - occupancy = 46; - else if (category_number == 3 && eta_number == 3) - occupancy = 39; - else { - occupancy = 0; + int category_number = getCategoryNumber(module_layers, module_subdets, module_rings); + int eta_number = getEtaBin(module_eta); + + int occupancy = 0; + if (category_number != -1 && eta_number != -1) { + occupancy = occupancy_matrix[category_number][eta_number]; + } #ifdef WARNINGS + else { printf("Unhandled case in createTripletArrayRanges! Module index = %i\n", i); -#endif } +#endif ranges.tripletModuleOccupancy()[i] = occupancy; unsigned int nTotT = alpaka::atomicAdd(acc, &nTotalTriplets, occupancy, alpaka::hierarchy::Threads{}); diff --git a/RecoTracker/LSTCore/standalone/.gitignore b/RecoTracker/LSTCore/standalone/.gitignore index 29e86cb6b932a..3d27afd0c4469 100644 --- a/RecoTracker/LSTCore/standalone/.gitignore +++ b/RecoTracker/LSTCore/standalone/.gitignore @@ -9,6 +9,7 @@ plots_*/ scripts/moduleconnection*.txt *.root .make.log* +performance* bin/doAnalysis bin/lst bin/lst_cuda diff --git a/RecoTracker/LSTCore/standalone/LST/Makefile b/RecoTracker/LSTCore/standalone/LST/Makefile index ee6f82ecccde1..f77f18b61c7cb 100644 --- a/RecoTracker/LSTCore/standalone/LST/Makefile +++ b/RecoTracker/LSTCore/standalone/LST/Makefile @@ -47,7 +47,7 @@ CXX = g++ CXXFLAGS_CPU = -march=native -mtune=native -Ofast -fno-reciprocal-math -fopenmp-simd -g -Wall -Woverloaded-virtual -fPIC -fopenmp -I.. CXXFLAGS_CUDA = -O3 -g --compiler-options -Wall --compiler-options -Woverloaded-virtual --compiler-options -fPIC --compiler-options -fopenmp -dc -lineinfo --ptxas-options=-v --cudart shared $(GENCODE_CUDA) --use_fast_math --default-stream per-thread -I.. CXXFLAGS_ROCM = -O3 -g -Wall -Woverloaded-virtual -fPIC -I${ROCM_ROOT}/include -I.. -CMSSWINCLUDE := -I${TRACKLOOPERDIR}/../../../ -I${CMSSW_BASE}/src +CMSSWINCLUDE := -I${TRACKLOOPERDIR}/../../../ -I${CMSSW_BASE}/src -I${FMT_ROOT}/include ifdef CMSSW_RELEASE_BASE CMSSWINCLUDE := ${CMSSWINCLUDE} -I${CMSSW_RELEASE_BASE}/src endif @@ -67,7 +67,7 @@ CMSSW_WERRORS_CPU = -Werror=pointer-arith -Werror=overlength-strings -Werror= -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-attributes CMSSW_WERRORS_CUDA = $(patsubst %,-Xcompiler %,$(CMSSW_WERRORS_CPU)) CMSSW_WERRORS_ROCM = $(CMSSW_WERRORS_CPU) -T5CUTFLAGS = $(T5DNNFLAG) $(T5RZCHI2FLAG) $(T5RPHICHI2FLAG) +T5CUTFLAGS = $(T5DNNFLAG) $(T5RZCHI2FLAG) LD_CPU = g++ SOFLAGS_CPU = -g -shared -fPIC @@ -88,31 +88,31 @@ CUTVALUEFLAG = CUTVALUEFLAG_FLAGS = -DCUT_VALUE_DEBUG %_cpu.o: ../../src/alpaka/%.dev.cc - $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@ + $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@ %_cuda.o: ../../src/alpaka/%.dev.cc - $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@ + $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@ %_rocm.o: ../../src/alpaka/%.dev.cc - $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@ + $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@ %_cpu.o: ../../src/alpaka/%.cc - $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@ + $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@ %_cuda.o: ../../src/alpaka/%.cc - $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@ + $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@ %_rocm.o: ../../src/alpaka/%.cc - $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@ + $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@ %_cpu.o: ../../src/%.cc - $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@ + $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@ %_cuda.o: ../../src/%.cc - $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@ + $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@ %_rocm.o: ../../src/%.cc - $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(PTCUTFLAG) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@ + $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@ $(LIB_CPU): $(CCOBJECTS_CPU) $(LSTOBJECTS_CPU) $(LD_CPU) $(SOFLAGS_CPU) $^ -o $@ diff --git a/RecoTracker/LSTCore/standalone/Makefile b/RecoTracker/LSTCore/standalone/Makefile index b98df31df1b5e..5a5594bcdfbb0 100644 --- a/RecoTracker/LSTCore/standalone/Makefile +++ b/RecoTracker/LSTCore/standalone/Makefile @@ -10,11 +10,11 @@ OBJECTS=$(OBJECTS_CPU) $(OBJECTS_CUDA) $(OBJECTS_ROCM) CXX = g++ CXXFLAGS = -g -O2 -Wall -fPIC -Woverloaded-virtual -Wno-unused-function -fno-var-tracking -std=c++20 -INCLUDEFLAGS= -ILST -I$(shell pwd) -Icode -Icode/core -I${ALPAKA_ROOT}/include -I/${BOOST_ROOT}/include $(shell rooutil-config --include) -I$(shell root-config --incdir) -I${TRACKLOOPERDIR}/../../../ -I${CMSSW_BASE}/src -I../interface/ -I../interface/alpaka/ -I../src/ -I../src/alpaka/ +INCLUDEFLAGS= -ILST -I$(shell pwd) -Icode -Icode/core -I${ALPAKA_ROOT}/include -I/${BOOST_ROOT}/include $(shell rooutil-config --include) -I$(shell root-config --incdir) -I${TRACKLOOPERDIR}/../../../ -I${CMSSW_BASE}/src -I${FMT_ROOT}/include -I../interface/ -I../interface/alpaka/ -I../src/ -I../src/alpaka/ ifdef CMSSW_RELEASE_BASE INCLUDEFLAGS:= ${INCLUDEFLAGS} -I${CMSSW_RELEASE_BASE}/src endif -LDFLAGS = -g -O2 $(LSTLIB) -L${TRACKLOOPERDIR}/LST $(shell rooutil-config --libs) $(shell root-config --libs) +LDFLAGS = -g -O2 $(LSTLIB) -L${TRACKLOOPERDIR}/LST $(shell rooutil-config --libs) $(shell root-config --libs) -L${CMSSW_BASE}/lib/${SCRAM_ARCH} -lFWCoreMessageLogger LDFLAGS_CUDA= -L${CUDA_HOME}/lib64 -lcudart LDFLAGS_ROCM= -L${ROCM_ROOT}/lib -lamdhip64 ALPAKAFLAGS = -DALPAKA_DEBUG=0 @@ -25,7 +25,6 @@ ALPAKA_CUDA = -DALPAKA_ACC_GPU_CUDA_ENABLED -DALPAKA_HOST_ONLY -DALPAKA_DISABLE_ ALPAKA_ROCM = -DALPAKA_ACC_GPU_HIP_ENABLED -DALPAKA_HOST_ONLY -DALPAKA_DISABLE_VENDOR_RNG -D__HIP_PLATFORM_HCC__ -D__HIP_PLATFORM_AMD__ -DALPAKA_DEFAULT_HOST_MEMORY_ALIGNMENT=128 EXTRAFLAGS = -ITMultiDrawTreePlayer -Wunused-variable -lTMVA -lEG -lGenVector -lXMLIO -lMLP -lTreePlayer -fopenmp DOQUINTUPLET = -PTCUTFLAG = CUTVALUEFLAG = CUTVALUEFLAG_FLAGS = -DCUT_VALUE_DEBUG @@ -47,20 +46,20 @@ cutvalue_primitive: rooutil efficiency $(EXES) bin/lst_cpu: LSTLIB=-llst_cpu bin/lst_cpu: bin/lst_cpu.o $(OBJECTS_CPU) - $(CXX) $(LDFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $^ $(ROOTLIBS) $(PTCUTFLAG) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CPU) -o $@ + $(CXX) $(LDFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $^ $(ROOTLIBS) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CPU) -o $@ bin/lst_cuda: LSTLIB=-llst_cuda bin/lst_cuda: bin/lst_cuda.o $(OBJECTS_CUDA) - $(CXX) $(LDFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $^ $(ROOTLIBS) $(PTCUTFLAG) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CUDA) $(LDFLAGS_CUDA) -o $@ + $(CXX) $(LDFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $^ $(ROOTLIBS) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CUDA) $(LDFLAGS_CUDA) -o $@ bin/lst_rocm: LSTLIB=-llst_rocm bin/lst_rocm: bin/lst_rocm.o $(OBJECTS_ROCM) - $(CXX) $(LDFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $^ $(ROOTLIBS) $(PTCUTFLAG) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_ROCM) $(LDFLAGS_ROCM) -o $@ + $(CXX) $(LDFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $^ $(ROOTLIBS) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_ROCM) $(LDFLAGS_ROCM) -o $@ %_cpu.o: %.cc rooutil - $(CXX) $(CXXFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $(PTCUTFLAG) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CPU) $< -c -o $@ + $(CXX) $(CXXFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CPU) $< -c -o $@ %_cuda.o: %.cc rooutil - $(CXX) $(CXXFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $(PTCUTFLAG) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CUDA) $(CUDAINCLUDE) $< -c -o $@ + $(CXX) $(CXXFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_CUDA) $(CUDAINCLUDE) $< -c -o $@ %_rocm.o: %.cc rooutil - $(CXX) $(CXXFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $(PTCUTFLAG) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_ROCM) $(ROCMINCLUDE) $< -c -o $@ + $(CXX) $(CXXFLAGS) $(EXTRAFLAGS) $(INCLUDEFLAGS) $(ALPAKAFLAGS) $(CUTVALUEFLAG) $(PRIMITIVEFLAG) $(DOQUINTUPLET) $(ALPAKA_ROCM) $(ROCMINCLUDE) $< -c -o $@ rooutil: $(MAKE) -C code/rooutil/ diff --git a/RecoTracker/LSTCore/standalone/README.md b/RecoTracker/LSTCore/standalone/README.md index 02fbef943f697..ed68ea6797f8e 100644 --- a/RecoTracker/LSTCore/standalone/README.md +++ b/RecoTracker/LSTCore/standalone/README.md @@ -1,53 +1,93 @@ -# TrackLooper +# How to set up standalone LST - -## Quick Start - - -### Setting up LSTPerformanceWeb (only for lnx7188 and lnx4555) +## Setting up LSTPerformanceWeb (only for lnx7188 and lnx4555) For lnx7188 and lnx4555 this needs to be done once cd /cdat/tem/${USER}/ git clone git@github.com:SegmentLinking/LSTPerformanceWeb.git -### Setting up container (only for lnx7188) +## Setting up container (only for lnx7188) For lnx7188 this needs to be done before compiling or running the code: singularity shell --nv --bind /mnt/data1:/data --bind /data2/segmentlinking/ --bind /opt --bind /nfs --bind /mnt --bind /usr/local/cuda/bin/ --bind /cvmfs /cvmfs/unpacked.cern.ch/registry.hub.docker.com/cmssw/el8:x86_64 -### Setting up the code +## Setting up LST + +There are two way to set up LST as a standalone, either by setting up a full CMSSW area, which provides a unified setup for standalone and CMSSW tests, or by `sparse-checkout` only the relevant package and using them independent of CMSSW. A CVMFS-less setup is also provided for the second option. + +### Setting up LST within CMSSW (preferred option) + +```bash +CMSSW_VERSION=CMSSW_14_2_0_pre4 # Change with latest/preferred CMSSW version +cmsrel ${CMSSW_VERSION} +cd ${CMSSW_VERSION}/src/ +cmsenv +git cms-init +# If necessary, add the remote git@github.com:SegmentLinking/cmssw.git +# and checkout a development/feature branch +git cms-addpkg RecoTracker/LST RecoTracker/LSTCore +# If modifying some dependencies, run `git cms-checkdeps -a -A` +scram b -j 12 +cd RecoTracker/LSTCore/standalone +``` + +The data files for LST will be fetched from CVMFS. However, if new data files are needed, the need to be manually placed (under `$CMSSW_BASE/external/$SCRAM_ARCH/data/RecoTracker/LSTCore/data/`). This is done by running: - git clone git@github.com:SegmentLinking/TrackLooper.git - cd TrackLooper/ - # Source one of the commands below, depending on the site - source setup.sh # if on UCSD or Cornell - source setup_hpg.sh # if on Florida +```bash +mkdir -p $CMSSW_BASE/external/$SCRAM_ARCH/data/RecoTracker/LSTCore/ +cd $CMSSW_BASE/external/$SCRAM_ARCH/data/RecoTracker/LSTCore/ +git clone git@github.com:cms-data/RecoTracker-LSTCore.git data + +cd - +``` -### Running the code +### Setting up LST outside of CMSSW - sdl_make_tracklooper -mc - sdl_ -i PU200 -o LSTNtuple.root +For this setup, dependencies are still provided from CMSSW through CVMFS but no CMSSW area is setup. This is done by running the following commands. + +``` bash +LST_BRANCH=master # Change to the development branch +git clone --filter=blob:none --no-checkout --depth 1 --sparse --branch ${LST_BRANCH} https://github.com/SegmentLinking/cmssw.git TrackLooper +cd TrackLooper +git sparse-checkout add RecoTracker/LSTCore +git checkout +cd RecoTracker/LSTCore/standalone/ +``` + +As in the sectino above, the data files are fetched from CVMFS, but they can also be copied manually under `RecoTracker/LSTCore/data/`. + + +## Running the code + +Each time the standalone version of LST is to be used, the following command should be run from the `RecoTracker/LSTCore/standalone` directory: +```bash +source setup.sh +``` + +For running the code: + + lst_make_tracklooper -m + lst_ -i PU200 -o LSTNtuple.root createPerfNumDenHists -i LSTNtuple.root -o LSTNumDen.root - lst_plot_performance.py LSTNumDen.root -t "myTag" - # python3 efficiency/python/lst_plot_performance.py LSTNumDen.root -t "myTag" # if you are on cgpu-1 or Cornell + lst_plot_performance.py LSTNumDen.root -t "myTag" # or + python3 efficiency/python/lst_plot_performance.py LSTNumDen.root -t "myTag" # if you are on cgpu-1 or Cornell The above can be even simplified - sdl_run -f -mc -s PU200 -n -1 -t myTag + lst_run -f -m -s PU200 -n -1 -t myTag The `-f` flag can be omitted when the code has already been compiled. If multiple backends were compiled, then the `-b` flag can be used to specify a backend. For example - sdl_run -b cpu -s PU200 -n -1 -t myTag + lst_run -b cpu -s PU200 -n -1 -t myTag -## Command explanations +### Command explanations Compile the code with option flags. If none of `C,G,R,A` are used, then it defaults to compiling for CUDA and CPU. - sdl_make_tracklooper -mc + lst_make_tracklooper -m -m: make clean binaries - -c: run with the cmssw caching allocator -C: compile CPU backend -G: compile CUDA backend -R: compile ROCm backend @@ -56,7 +96,7 @@ Compile the code with option flags. If none of `C,G,R,A` are used, then it defau Run the code - sdl_ -n -v -w -s -i -o + lst_ -n -v -w -s -i -o -i: PU200; muonGun, etc -n: number of events; default: all @@ -106,186 +146,40 @@ Comparing two different runs -t "mywork" \ --compare -## CMSSW Integration -This is the a complete set of instruction on how the TrackLooper code -can be linked as an external tool in CMSSW: - -### Build TrackLooper -```bash -git clone git@github.com:SegmentLinking/TrackLooper.git -cd TrackLooper/ -# Source one of the commands below, depending on the site -source setup.sh # if on UCSD or Cornell -source setup_hpg.sh # if on Florida -sdl_make_tracklooper -mc -cd .. -``` - -### Set up `TrackLooper` as an external -```bash -mkdir workingFolder # Create the folder you will be working in -cd workingFolder -cmsrel CMSSW_14_1_0_pre3 -cd CMSSW_14_1_0_pre3/src -cmsenv -git cms-init -git remote add SegLink git@github.com:SegmentLinking/cmssw.git -git fetch SegLink CMSSW_14_1_0_pre3_LST_X -git cms-addpkg RecoTracker Configuration -git checkout CMSSW_14_1_0_pre3_LST_X -#To include both the CPU library and GPU library into CMSSW, create 3 xml files (headers file has no library). -#Before writing the following xml file, check that libsdl_cpu.so and libsdl_gpu.so can be found under the ../../../TrackLooper/SDL/ folder. -cat <lst_headers.xml - - - - - - - -EOF -cat <lst_cpu.xml - - - - - - - - - -EOF -cat <lst_cuda.xml - - - - - - - - - -EOF -scram setup lst_headers.xml -scram setup lst_cpu.xml -scram setup lst_cuda.xml -cmsenv -git cms-checkdeps -a -A -scram b -j 12 -``` - -### Run the LST reconstruction in CMSSW -A simple test configuration of the LST reconstruction can be run with the command: -```bash -cmsRun RecoTracker/LST/test/LSTAlpakaTester.py -``` +# How to set up CMSSW with LST -For a more complete workflow, one can run a modified version of the 21034.1 workflow. -To get the commands of this workflow, one can run: -```bash -runTheMatrix.py -w upgrade -n -e -l 21034.1 -``` +## Setting up the area -For convenience, the workflow has been run for 100 events and the output is stored here: -```bash -/data2/segmentlinking/CMSSW_14_1_0_pre0/step2_21034.1_100Events.root -``` +Follow the instructions in the ["Setting up LST within CMSSW" section](#setting-up-lst-within-cmssw-preferred-option). -For enabling the LST reconstruction in the CMSSW tracking workflow, a modified step3 needs to be run. -This is based on the step3 command of the 21034.1 workflow with the following changes: - - Remove the `--pileup_input` and `--pileup` flags. - - The number of threads and streams for the job can be optionally controlled by the `--nThreads` and `--nStreams` command line options respectively (`1` ends up being the actual default value for both, and more info can be found by running `cmsDriver.py --help`). - - Add at the end of the command: `--procModifiers gpu,trackingLST,trackingIters01 --no_exec` - -Run the command and modify the output configuration file with the following: - - If want to run a cpu version, remove the ```gpu``` in the line defining the `process` object: - ```python - process = cms.Process('RECO',...,gpu,...) - ``` - - Add the following lines below the part where the import of the standard configurations happens: - ```python - process.load('Configuration.StandardSequences.Accelerators_cff') - process.load("HeterogeneousCore.AlpakaCore.ProcessAcceleratorAlpaka_cfi") - ``` - - Modify the input and output file names accordingly, as well as the number of events. - -Then, run the configuration file with `cmsRun`. - -To get the DQM files, one would have to run step4 of the 21034.1 workflow with the following modifications: - - Add `--no_exec` to the end of command and then run it. - - Modify the output configuration file by changing the input file (the one containing `inDQM` from the previous step) and number of events accordingly. +## Run the LST reconstruction in CMSSW (read to the end, before running) -Running the configuration file with `cmsRun`, the output file will have a name starting with `DQM`. The name is the same every time this step runs, -so it is good practice to rename the file, e.g. to `tracking_Iters01LST.root`. -The MTV plots can be produced with the command: -```bash -makeTrackValidationPlots.py --extended tracking_Iters01LST.root -``` -Comparison plots can be made by including multiple ROOT files as arguments. +Two complete workflows have been implemented within CMSSW to run a two-iteration, tracking-only reconstruction with LST: + - 24834.703 (CPU) + - 24834.704 (GPU) -**Note:** In case one wants to run step2 as well, similar modifications as in step4 (`--no_exec` flag and input file/number of events) need to be applied. Moreover, the PU files have better be modified to point to local ones. This can be done by inserting a dummy file when running the command (set the argument of the `--pileup_input` flag to `file:file.root`), and then change the PU input files in the configuration to the following line (by means of replacing the corresponding line in the configuration): -```python -process.mix.input.fileNames = cms.untracked.vstring(['file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/066fc95d-1cef-4469-9e08-3913973cd4ce.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/07928a25-231b-450d-9d17-e20e751323a1.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/26bd8fb0-575e-4201-b657-94cdcb633045.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/4206a9c5-44c2-45a5-aab2-1a8a6043a08a.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/55a372bf-a234-4111-8ce0-ead6157a1810.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/59ad346c-f405-4288-96d7-795f81c43fe8.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/7280f5ec-b71d-4579-a730-7ce2de0ff906.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/b93adc85-715f-477a-afc9-65f3241933ee.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/c7a0aa46-f55c-4b01-977f-34a397b71fba.root', 'file:/data2/segmentlinking/PUSamplesForCMSSW1263/CMSSW_12_3_0_pre5/RelValMinBias_14TeV/GEN-SIM/123X_mcRun4_realistic_v4_2026D88noPU-v1/e77fa467-97cb-4943-884f-6965b4eb0390.root']) -``` +We will use the second one in the example below. To get the commands of this workflow, one can run: -### Inclusion of LST in other CMSSW packages -Including the line -``` - -``` -in the relevant package `BuildFile.xml` allows for -including our headers in the code of that package. + runTheMatrix.py -w upgrade -n -e -l 24834.704 -## Running LST in a CVMFS-less setup +For convenience, the workflow has been run for 100 events and the output is stored here: -The setup scripts included in this repository assume that the [CernVM File System (CVMFS)](https://cernvm.cern.ch/fs/) is installed. This provides a convenient way to fetch the required dependencies, but it is not necessary to run LST in standalone mode. Here, we briefly describe how to build and run it when CVMFS is not available. + /data2/segmentlinking/step2_29834.1_100Events.root -The necessary dependencies are CUDA, ROOT, the Boost libraries, Alpaka, and some CMSSW headers. CUDA, ROOT, and Boost, are fairly standard libraries and are available from multiple package managers. For the remaining necessary headers you will need to clone the [Alpaka](https://github.com/alpaka-group/alpaka) and [CMSSW](https://github.com/cms-sw/cmssw) repositories. The Alpaka repository is reasonably sized, but the CMSSW one extremely large, especially considering that we only need a tiny fraction of its files to build LST. We can get only the Alpaka interface headers from CMSSW by running the following commands. +The input files in each step may need to be properly adjusted to match the ones produced by the previous step/provided externally, hence it is better to run the commands with the `--no_exec` option included. -``` bash -git clone --filter=blob:none --no-checkout --depth 1 --sparse --branch CMSSW_14_1_X https://github.com/cms-sw/cmssw.git -cd cmssw -git sparse-checkout add HeterogeneousCore/AlpakaInterface -git checkout -``` +Running the configuration file with `cmsRun`, the output file will have a name starting with `DQM`. The name is the same every time this step runs, +so it is good practice to rename the file, e.g. to `step4_24834.704.root`. +The MTV plots can be produced with the command: -Then all that is left to do is set some environment variables. We give an example of how to do this in lnx7188/cgpu-1. + makeTrackValidationPlots.py --extended step4_24834.704.root -```bash -# These two lines are only needed to set the right version of gcc and nvcc. They are not needed for standard installations. -export PATH=/cvmfs/cms.cern.ch/el8_amd64_gcc12/external/gcc/12.3.1-40d504be6370b5a30e3947a6e575ca28/bin:/cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre3/external/el8_amd64_gcc12/bin:$PATH -export LD_LIBRARY_PATH=/cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre3/biglib/el8_amd64_gcc12:/cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre3/lib/el8_amd64_gcc12:/cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre3/external/el8_amd64_gcc12/lib:/cvmfs/cms.cern.ch/el8_amd64_gcc12/external/gcc/12.3.1-40d504be6370b5a30e3947a6e575ca28/lib64:/cvmfs/cms.cern.ch/el8_amd64_gcc12/external/gcc/12.3.1-40d504be6370b5a30e3947a6e575ca28/lib:$LD_LIBRARY_PATH - -# These are the lines that you need to manually change for a CVMFS-less setup. -# In this example we use cvmfs paths since that is where the dependencies are in lnx7188/cgpu1, but they can point to local directories. -export BOOST_ROOT=/cvmfs/cms.cern.ch/el8_amd64_gcc12/external/boost/1.80.0-60a217837b5db1cff00c7d88ec42f53a -export ALPAKA_ROOT=/cvmfs/cms.cern.ch/el8_amd64_gcc12/external/alpaka/1.1.0-7d0324257db47fde2d27987e7ff98fb4 -export CUDA_HOME=/cvmfs/cms.cern.ch/el8_amd64_gcc12/external/cuda/12.4.1-06cde0cd9f95a73a1ea05c8535f60bde -export ROOT_ROOT=/cvmfs/cms.cern.ch/el8_amd64_gcc12/lcg/root/6.30.07-21947a33e64ceb827a089697ad72e468 -export CMSSW_BASE=/cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre3 - -# These lines are needed to account for some extra environment variables that are exported in the setup script. -export LD_LIBRARY_PATH=$PWD/SDL/cuda:$PWD/SDL/cpu:$PWD:$LD_LIBRARY_PATH -export PATH=$PWD/bin:$PATH -export PATH=$PWD/efficiency/bin:$PATH -export PATH=$PWD/efficiency/python:$PATH -export TRACKLOOPERDIR=$PWD -export TRACKINGNTUPLEDIR=/data2/segmentlinking/CMSSW_12_2_0_pre2/ -export LSTOUTPUTDIR=. -source $PWD/code/rooutil/thisrooutil.sh - -# After this, you can compile and run LST as usual. -sdl_run -f -mc -s PU200 -n -1 -t myTag -``` +Comparison plots can be made by including multiple ROOT files as arguments. ## Code formatting and checking -The makefile in the `SDL` directory includes phony targets to run `clang-format` and `clang-tidy` on the code using the formatting and checks used in CMSSW. The following are the available commands. +Using the first setup option above, it is prefered to run the checks provided by CMSSW using the following commands. -- `make format` - Formats the code in the `SDL` directory using `clang-format` following the rules specified in `.clang-format`. -- `make check` - Runs `clang-tidy` on the code in the `SDL` directory to performs the checks specified in `.clang-tidy`. -- `make check-fix` - Same as `make check`, but fixes the issues that it knows how to fix. - \ No newline at end of file +``` +scram b -j 12 code-checks >& c.log && scram b -j 12 code-format >& f.log +``` \ No newline at end of file diff --git a/RecoTracker/LSTCore/standalone/analysis/DNN/train_T5_DNN.ipynb b/RecoTracker/LSTCore/standalone/analysis/DNN/train_T5_DNN.ipynb new file mode 100644 index 0000000000000..e7ec1b45283e5 --- /dev/null +++ b/RecoTracker/LSTCore/standalone/analysis/DNN/train_T5_DNN.ipynb @@ -0,0 +1,1073 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import uproot\n", + "import numpy as np\n", + "\n", + "def load_root_file(file_path, branches=None, print_branches=False):\n", + " all_branches = {}\n", + " with uproot.open(file_path) as file:\n", + " tree = file[\"tree\"]\n", + " # Load all ROOT branches into array if not specified\n", + " if branches is None:\n", + " branches = tree.keys()\n", + " # Option to print the branch names\n", + " if print_branches:\n", + " print(\"Branches:\", tree.keys())\n", + " # Each branch is added to the dictionary\n", + " for branch in branches:\n", + " try:\n", + " all_branches[branch] = (tree[branch].array(library=\"np\"))\n", + " except uproot.KeyInFileError as e:\n", + " print(f\"KeyInFileError: {e}\")\n", + " # Number of events in file\n", + " all_branches['event'] = tree.num_entries\n", + " return all_branches\n", + "\n", + "branches_list = [\n", + " 't5_innerRadius',\n", + " 't5_bridgeRadius',\n", + " 't5_outerRadius',\n", + " 't5_pt',\n", + " 't5_eta',\n", + " 't5_phi',\n", + " 't5_isFake',\n", + " 't5_t3_idx0',\n", + " 't5_t3_idx1',\n", + " 't5_pMatched',\n", + " 't5_sim_vxy',\n", + " 't5_sim_vz'\n", + "]\n", + "\n", + "# Hit-dependent branches\n", + "suffixes = ['r', 'z', 'eta', 'phi', 'layer']\n", + "branches_list += [f't5_t3_{i}_{suffix}' for i in [0, 2, 4] for suffix in suffixes]\n", + "\n", + "file_path = \"1000_no_dnn_for_phi.root\"\n", + "branches = load_root_file(file_path, branches_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z max: 267.2349853515625, R max: 110.10993957519531, Eta max: 2.5\n" + ] + } + ], + "source": [ + "z_max = np.max([np.max(event) for event in branches[f't5_t3_4_z']])\n", + "r_max = np.max([np.max(event) for event in branches[f't5_t3_4_r']])\n", + "eta_max = 2.5\n", + "phi_max = np.pi\n", + "\n", + "print(f'Z max: {z_max}, R max: {r_max}, Eta max: {eta_max}')\n", + "\n", + "def delta_phi(phi1, phi2):\n", + " delta = phi1 - phi2\n", + " # Adjust delta to be within the range [-pi, pi]\n", + " if delta > np.pi:\n", + " delta -= 2 * np.pi\n", + " elif delta < -np.pi:\n", + " delta += 2 * np.pi\n", + " return delta" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "features_list = []\n", + "eta_list = [] # Used for DNN cut values\n", + "\n", + "for event in range(branches['event']):\n", + " # Determine the number of elements in this event\n", + " num_elements = len(branches['t5_t3_idx0'][event])\n", + "\n", + " for i in range(num_elements):\n", + " features_iter = []\n", + " eta_iter = []\n", + " \n", + " idx0 = branches['t5_t3_idx0'][event][i]\n", + " idx1 = branches['t5_t3_idx1'][event][i]\n", + "\n", + " eta1 = np.abs(branches['t5_t3_0_eta'][event][idx0])\n", + " eta2 = np.abs(branches['t5_t3_2_eta'][event][idx0])\n", + " eta3 = np.abs(branches['t5_t3_4_eta'][event][idx0])\n", + " eta4 = np.abs(branches['t5_t3_2_eta'][event][idx1])\n", + " eta5 = np.abs(branches['t5_t3_4_eta'][event][idx1])\n", + "\n", + " phi1 = (branches['t5_t3_0_phi'][event][idx0])\n", + " phi2 = (branches['t5_t3_2_phi'][event][idx0])\n", + " phi3 = (branches['t5_t3_4_phi'][event][idx0])\n", + " phi4 = (branches['t5_t3_2_phi'][event][idx1])\n", + " phi5 = (branches['t5_t3_4_phi'][event][idx1])\n", + "\n", + " z1 = np.abs(branches['t5_t3_0_z'][event][idx0])\n", + " z2 = np.abs(branches['t5_t3_2_z'][event][idx0])\n", + " z3 = np.abs(branches['t5_t3_4_z'][event][idx0])\n", + " z4 = np.abs(branches['t5_t3_2_z'][event][idx1])\n", + " z5 = np.abs(branches['t5_t3_4_z'][event][idx1])\n", + "\n", + " r1 = branches['t5_t3_0_r'][event][idx0]\n", + " r2 = branches['t5_t3_2_r'][event][idx0]\n", + " r3 = branches['t5_t3_4_r'][event][idx0]\n", + " r4 = branches['t5_t3_2_r'][event][idx1]\n", + " r5 = branches['t5_t3_4_r'][event][idx1]\n", + "\n", + " innerRad = branches['t5_innerRadius'][event][i]\n", + " bridgeRad = branches['t5_bridgeRadius'][event][i]\n", + " outerRad = branches['t5_outerRadius'][event][i]\n", + "\n", + " # Construct the input feature vector using pairwise differences\n", + " features_iter = [\n", + " eta1 / eta_max, # First hit eta, normalized\n", + " np.abs(phi1) / phi_max, # First hit phi, normalized\n", + " z1 / z_max, # First hit z, normalized\n", + " r1 / r_max, # First hit r, normalized\n", + "\n", + " eta2 - eta1, # Difference in eta between hit 2 and 1\n", + " delta_phi(phi2, phi1) / phi_max, # Difference in phi between hit 2 and 1\n", + " (z2 - z1) / z_max, # Difference in z between hit 2 and 1, normalized\n", + " (r2 - r1) / r_max, # Difference in r between hit 2 and 1, normalized\n", + "\n", + " eta3 - eta2, # Difference in eta between hit 3 and 2\n", + " delta_phi(phi3, phi2) / phi_max, # Difference in phi between hit 3 and 2\n", + " (z3 - z2) / z_max, # Difference in z between hit 3 and 2, normalized\n", + " (r3 - r2) / r_max, # Difference in r between hit 3 and 2, normalized\n", + "\n", + " eta4 - eta3, # Difference in eta between hit 4 and 3\n", + " delta_phi(phi4, phi3) / phi_max, # Difference in phi between hit 4 and 3\n", + " (z4 - z3) / z_max, # Difference in z between hit 4 and 3, normalized\n", + " (r4 - r3) / r_max, # Difference in r between hit 4 and 3, normalized\n", + "\n", + " eta5 - eta4, # Difference in eta between hit 5 and 4\n", + " delta_phi(phi5, phi4) / phi_max, # Difference in phi between hit 5 and 4\n", + " (z5 - z4) / z_max, # Difference in z between hit 5 and 4, normalized\n", + " (r5 - r4) / r_max, # Difference in r between hit 5 and 4, normalized\n", + "\n", + " np.log10(innerRad),\n", + " np.log10(bridgeRad),\n", + " np.log10(outerRad)\n", + " ]\n", + "\n", + " # Use the abs eta value of first hit to select cut thresholds\n", + " eta_iter.extend([np.abs(branches['t5_t3_0_eta'][event][idx0])])\n", + " \n", + " # Append the feature vector to the list\n", + " features_list.append(features_iter)\n", + " eta_list.append(eta_iter)\n", + "\n", + "# Convert the list of features to a NumPy array\n", + "features = np.array(features_list).T\n", + "eta_list = np.array(eta_list).T" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "\n", + "# Stack features along a new axis to form a single array suitable for NN input\n", + "input_features_numpy = np.stack(features, axis=-1)\n", + "\n", + "# Identify rows with NaN or Inf values\n", + "mask = ~np.isnan(input_features_numpy) & ~np.isinf(input_features_numpy)\n", + "\n", + "# Apply mask across all columns: retain a row only if all its entries are neither NaN nor Inf\n", + "filtered_input_features_numpy = input_features_numpy[np.all(mask, axis=1)]\n", + "t5_isFake_filtered = np.concatenate(branches['t5_isFake'])[np.all(mask, axis=1)]\n", + "\n", + "# Convert to PyTorch tensor when ready to use with NN\n", + "input_features_tensor = torch.tensor(filtered_input_features_numpy, dtype=torch.float32)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using device: cuda\n", + "Initial dataset size: 10921577\n", + "Dataset size after initial 100.0% downsampling: 10921577\n", + "Class distribution after initial downsampling - Class 0: 2985946, Class 1: 7935631\n", + "Final class distribution after balancing - Class 0: 2985946, Class 1: 2985946\n", + "Epoch [1/150], Loss: 0.4802, Test Acc: 81.32%\n", + "Epoch [2/150], Loss: 0.4255, Test Acc: 81.45%\n", + "Epoch [3/150], Loss: 0.4602, Test Acc: 82.69%\n", + "Epoch [4/150], Loss: 0.4475, Test Acc: 83.97%\n", + "Epoch [5/150], Loss: 0.4417, Test Acc: 82.76%\n", + "Epoch [6/150], Loss: 0.4643, Test Acc: 83.01%\n", + "Epoch [7/150], Loss: 0.4474, Test Acc: 81.68%\n", + "Epoch [8/150], Loss: 0.4050, Test Acc: 84.32%\n", + "Epoch [9/150], Loss: 0.3563, Test Acc: 83.51%\n", + "Epoch [10/150], Loss: 0.4774, Test Acc: 83.24%\n", + "Epoch [11/150], Loss: 0.4846, Test Acc: 84.06%\n", + "Epoch [12/150], Loss: 0.5055, Test Acc: 83.28%\n", + "Epoch [13/150], Loss: 0.4461, Test Acc: 84.35%\n", + "Epoch [14/150], Loss: 0.4607, Test Acc: 82.75%\n", + "Epoch [15/150], Loss: 0.4795, Test Acc: 83.22%\n", + "Epoch [16/150], Loss: 0.4414, Test Acc: 83.83%\n", + "Epoch [17/150], Loss: 0.4357, Test Acc: 82.26%\n", + "Epoch [18/150], Loss: 0.4498, Test Acc: 83.85%\n", + "Epoch [19/150], Loss: 0.4779, Test Acc: 84.34%\n", + "Epoch [20/150], Loss: 0.4248, Test Acc: 83.84%\n", + "Epoch [21/150], Loss: 0.4538, Test Acc: 83.97%\n", + "Epoch [22/150], Loss: 0.4335, Test Acc: 84.28%\n", + "Epoch [23/150], Loss: 0.4248, Test Acc: 84.43%\n", + "Epoch [24/150], Loss: 0.4072, Test Acc: 83.57%\n", + "Epoch [25/150], Loss: 0.3732, Test Acc: 83.51%\n", + "Epoch [26/150], Loss: 0.4559, Test Acc: 83.91%\n", + "Epoch [27/150], Loss: 0.4071, Test Acc: 83.04%\n", + "Epoch [28/150], Loss: 0.4709, Test Acc: 84.22%\n", + "Epoch [29/150], Loss: 0.4079, Test Acc: 83.83%\n", + "Epoch [30/150], Loss: 0.3676, Test Acc: 83.50%\n", + "Epoch [31/150], Loss: 0.4944, Test Acc: 83.84%\n", + "Epoch [32/150], Loss: 0.4316, Test Acc: 84.63%\n", + "Epoch [33/150], Loss: 0.4229, Test Acc: 83.43%\n", + "Epoch [34/150], Loss: 0.3955, Test Acc: 83.82%\n", + "Epoch [35/150], Loss: 0.4467, Test Acc: 83.64%\n", + "Epoch [36/150], Loss: 0.4164, Test Acc: 84.49%\n", + "Epoch [37/150], Loss: 0.4656, Test Acc: 83.64%\n", + "Epoch [38/150], Loss: 0.4274, Test Acc: 84.10%\n", + "Epoch [39/150], Loss: 0.3943, Test Acc: 84.63%\n", + "Epoch [40/150], Loss: 0.4476, Test Acc: 84.55%\n", + "Epoch [41/150], Loss: 0.4765, Test Acc: 84.51%\n", + "Epoch [42/150], Loss: 0.4007, Test Acc: 84.32%\n", + "Epoch [43/150], Loss: 0.4716, Test Acc: 84.01%\n", + "Epoch [44/150], Loss: 0.4063, Test Acc: 83.81%\n", + "Epoch [45/150], Loss: 0.3712, Test Acc: 84.63%\n", + "Epoch [46/150], Loss: 0.3657, Test Acc: 84.43%\n", + "Epoch [47/150], Loss: 0.4514, Test Acc: 84.26%\n", + "Epoch [48/150], Loss: 0.3817, Test Acc: 84.30%\n", + "Epoch [49/150], Loss: 0.3744, Test Acc: 83.23%\n", + "Epoch [50/150], Loss: 0.4377, Test Acc: 84.43%\n", + "Epoch [51/150], Loss: 0.4331, Test Acc: 84.19%\n", + "Epoch [52/150], Loss: 0.4022, Test Acc: 84.39%\n", + "Epoch [53/150], Loss: 0.4272, Test Acc: 84.67%\n", + "Epoch [54/150], Loss: 0.4146, Test Acc: 84.06%\n", + "Epoch [55/150], Loss: 0.3798, Test Acc: 84.52%\n", + "Epoch [56/150], Loss: 0.4070, Test Acc: 83.82%\n", + "Epoch [57/150], Loss: 0.5018, Test Acc: 84.64%\n", + "Epoch [58/150], Loss: 0.5112, Test Acc: 84.71%\n", + "Epoch [59/150], Loss: 0.4554, Test Acc: 84.41%\n", + "Epoch [60/150], Loss: 0.4313, Test Acc: 84.78%\n", + "Epoch [61/150], Loss: 0.4101, Test Acc: 83.46%\n", + "Epoch [62/150], Loss: 0.4139, Test Acc: 84.60%\n", + "Epoch [63/150], Loss: 0.3841, Test Acc: 84.47%\n", + "Epoch [64/150], Loss: 0.4931, Test Acc: 83.95%\n", + "Epoch [65/150], Loss: 0.3589, Test Acc: 84.59%\n", + "Epoch [66/150], Loss: 0.4328, Test Acc: 84.87%\n", + "Epoch [67/150], Loss: 0.4525, Test Acc: 84.00%\n", + "Epoch [68/150], Loss: 0.4745, Test Acc: 84.31%\n", + "Epoch [69/150], Loss: 0.4585, Test Acc: 84.07%\n", + "Epoch [70/150], Loss: 0.4348, Test Acc: 84.95%\n", + "Epoch [71/150], Loss: 0.4101, Test Acc: 85.12%\n", + "Epoch [72/150], Loss: 0.4001, Test Acc: 84.77%\n", + "Epoch [73/150], Loss: 0.4505, Test Acc: 84.56%\n", + "Epoch [74/150], Loss: 0.3493, Test Acc: 84.78%\n", + "Epoch [75/150], Loss: 0.4316, Test Acc: 83.27%\n", + "Epoch [76/150], Loss: 0.4963, Test Acc: 84.52%\n", + "Epoch [77/150], Loss: 0.4214, Test Acc: 84.66%\n", + "Epoch [78/150], Loss: 0.5551, Test Acc: 84.71%\n", + "Epoch [79/150], Loss: 0.3809, Test Acc: 84.12%\n", + "Epoch [80/150], Loss: 0.3979, Test Acc: 84.31%\n", + "Epoch [81/150], Loss: 0.3920, Test Acc: 84.49%\n", + "Epoch [82/150], Loss: 0.4278, Test Acc: 84.71%\n", + "Epoch [83/150], Loss: 0.3696, Test Acc: 84.69%\n", + "Epoch [84/150], Loss: 0.3483, Test Acc: 84.02%\n", + "Epoch [85/150], Loss: 0.3976, Test Acc: 84.13%\n", + "Epoch [86/150], Loss: 0.3335, Test Acc: 84.92%\n", + "Epoch [87/150], Loss: 0.3972, Test Acc: 84.58%\n", + "Epoch [88/150], Loss: 0.4135, Test Acc: 84.32%\n", + "Epoch [89/150], Loss: 0.4556, Test Acc: 84.21%\n", + "Epoch [90/150], Loss: 0.4180, Test Acc: 84.28%\n", + "Epoch [91/150], Loss: 0.3586, Test Acc: 84.78%\n", + "Epoch [92/150], Loss: 0.4388, Test Acc: 84.43%\n", + "Epoch [93/150], Loss: 0.4243, Test Acc: 84.12%\n", + "Epoch [94/150], Loss: 0.4133, Test Acc: 84.55%\n", + "Epoch [95/150], Loss: 0.4201, Test Acc: 84.86%\n", + "Epoch [96/150], Loss: 0.4670, Test Acc: 84.50%\n", + "Epoch [97/150], Loss: 0.4199, Test Acc: 84.89%\n", + "Epoch [98/150], Loss: 0.4076, Test Acc: 84.35%\n", + "Epoch [99/150], Loss: 0.3696, Test Acc: 84.98%\n", + "Epoch [100/150], Loss: 0.3553, Test Acc: 84.70%\n", + "Epoch [101/150], Loss: 0.4054, Test Acc: 84.40%\n", + "Epoch [102/150], Loss: 0.4168, Test Acc: 84.65%\n", + "Epoch [103/150], Loss: 0.3675, Test Acc: 84.69%\n", + "Epoch [104/150], Loss: 0.4107, Test Acc: 84.10%\n", + "Epoch [105/150], Loss: 0.4310, Test Acc: 84.55%\n", + "Epoch [106/150], Loss: 0.4340, Test Acc: 83.76%\n", + "Epoch [107/150], Loss: 0.4691, Test Acc: 84.93%\n", + "Epoch [108/150], Loss: 0.4838, Test Acc: 84.37%\n", + "Epoch [109/150], Loss: 0.4057, Test Acc: 84.73%\n", + "Epoch [110/150], Loss: 0.4900, Test Acc: 84.75%\n", + "Epoch [111/150], Loss: 0.4501, Test Acc: 84.18%\n", + "Epoch [112/150], Loss: 0.4528, Test Acc: 84.51%\n", + "Epoch [113/150], Loss: 0.4126, Test Acc: 84.74%\n", + "Epoch [114/150], Loss: 0.4142, Test Acc: 84.99%\n", + "Epoch [115/150], Loss: 0.3894, Test Acc: 84.30%\n", + "Epoch [116/150], Loss: 0.4518, Test Acc: 84.30%\n", + "Epoch [117/150], Loss: 0.4568, Test Acc: 84.43%\n", + "Epoch [118/150], Loss: 0.3588, Test Acc: 84.32%\n", + "Epoch [119/150], Loss: 0.3891, Test Acc: 84.38%\n", + "Epoch [120/150], Loss: 0.4558, Test Acc: 84.62%\n", + "Epoch [121/150], Loss: 0.4732, Test Acc: 84.41%\n", + "Epoch [122/150], Loss: 0.4008, Test Acc: 84.54%\n", + "Epoch [123/150], Loss: 0.4279, Test Acc: 84.21%\n", + "Epoch [124/150], Loss: 0.4658, Test Acc: 84.58%\n", + "Epoch [125/150], Loss: 0.4696, Test Acc: 84.59%\n", + "Epoch [126/150], Loss: 0.4663, Test Acc: 84.00%\n", + "Epoch [127/150], Loss: 0.3993, Test Acc: 84.53%\n", + "Epoch [128/150], Loss: 0.4316, Test Acc: 84.31%\n", + "Epoch [129/150], Loss: 0.4189, Test Acc: 84.63%\n", + "Epoch [130/150], Loss: 0.3826, Test Acc: 83.96%\n", + "Epoch [131/150], Loss: 0.3437, Test Acc: 84.45%\n", + "Epoch [132/150], Loss: 0.4950, Test Acc: 85.07%\n", + "Epoch [133/150], Loss: 0.4394, Test Acc: 84.15%\n", + "Epoch [134/150], Loss: 0.3998, Test Acc: 84.38%\n", + "Epoch [135/150], Loss: 0.3154, Test Acc: 84.99%\n", + "Epoch [136/150], Loss: 0.4408, Test Acc: 84.83%\n", + "Epoch [137/150], Loss: 0.4970, Test Acc: 84.38%\n", + "Epoch [138/150], Loss: 0.4473, Test Acc: 84.13%\n", + "Epoch [139/150], Loss: 0.4615, Test Acc: 84.66%\n", + "Epoch [140/150], Loss: 0.4316, Test Acc: 84.38%\n", + "Epoch [141/150], Loss: 0.5141, Test Acc: 84.62%\n", + "Epoch [142/150], Loss: 0.4030, Test Acc: 84.03%\n", + "Epoch [143/150], Loss: 0.4777, Test Acc: 84.15%\n", + "Epoch [144/150], Loss: 0.4286, Test Acc: 84.78%\n", + "Epoch [145/150], Loss: 0.4194, Test Acc: 84.73%\n", + "Epoch [146/150], Loss: 0.3649, Test Acc: 84.84%\n", + "Epoch [147/150], Loss: 0.4346, Test Acc: 84.00%\n", + "Epoch [148/150], Loss: 0.4373, Test Acc: 84.60%\n", + "Epoch [149/150], Loss: 0.4238, Test Acc: 84.78%\n", + "Epoch [150/150], Loss: 0.4499, Test Acc: 84.80%\n" + ] + } + ], + "source": [ + "from torch import nn\n", + "from torch.optim import Adam\n", + "from torch.utils.data import DataLoader, TensorDataset, random_split\n", + "import torch\n", + "\n", + "# Set device\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "print(f\"Using device: {device}\")\n", + "\n", + "# Create labels tensor\n", + "labels_tensor = 1 - torch.tensor(t5_isFake_filtered, dtype=torch.float32)\n", + "\n", + "# Set initial downsample fraction\n", + "initial_downsample_fraction = 1.0 # Adjust this value as needed\n", + "\n", + "class MyNeuralNetwork(nn.Module):\n", + " def __init__(self):\n", + " super(MyNeuralNetwork, self).__init__()\n", + " self.layer1 = nn.Linear(input_features_numpy.shape[1], 32)\n", + " self.layer2 = nn.Linear(32, 32)\n", + " self.output_layer = nn.Linear(32, 1)\n", + "\n", + " def forward(self, x):\n", + " x = self.layer1(x)\n", + " x = nn.ReLU()(x)\n", + " x = self.layer2(x)\n", + " x = nn.ReLU()(x)\n", + " x = self.output_layer(x)\n", + " x = torch.sigmoid(x)\n", + " return x\n", + "\n", + "class WeightedBCELoss(nn.Module):\n", + " def __init__(self):\n", + " super(WeightedBCELoss, self).__init__()\n", + " \n", + " def forward(self, outputs, targets, weights):\n", + " eps = 1e-7\n", + " losses = -(weights * (targets * torch.log(outputs + eps) + \n", + " (1 - targets) * torch.log(1 - outputs + eps)))\n", + " return losses.mean()\n", + "\n", + "def calculate_sample_weights(t5_sim_vxy, weight_factor=6.0):\n", + " \"\"\"\n", + " Calculate sample weights giving higher importance to displaced t5's\n", + " \n", + " Args:\n", + " t5_sim_vxy: Array of t5 simulation values\n", + " weight_factor: How much more weight to give to displaced samples\n", + " \n", + " Returns:\n", + " Tensor of sample weights\n", + " \"\"\"\n", + " weights = torch.ones(len(t5_sim_vxy))\n", + " displaced_mask = t5_sim_vxy > 0.1\n", + " weights[displaced_mask] = weight_factor\n", + " return weights\n", + "\n", + "# Print initial dataset size\n", + "print(f\"Initial dataset size: {len(labels_tensor)}\")\n", + "\n", + "# Calculate sample weights\n", + "sample_weights = calculate_sample_weights(torch.tensor(np.concatenate(branches['t5_sim_vxy'])))\n", + "\n", + "# Remove rows with NaN and update weights accordingly\n", + "nan_mask = torch.isnan(input_features_tensor).any(dim=1) | torch.isnan(labels_tensor)\n", + "filtered_inputs = input_features_tensor[~nan_mask]\n", + "filtered_labels = labels_tensor[~nan_mask]\n", + "filtered_weights = sample_weights[~nan_mask]\n", + "\n", + "# Initial downsampling of entire dataset\n", + "if initial_downsample_fraction < 1.0:\n", + " total_samples = len(filtered_labels)\n", + " samples_to_keep = int(total_samples * initial_downsample_fraction)\n", + " indices = torch.randperm(total_samples)[:samples_to_keep]\n", + " filtered_inputs = filtered_inputs[indices]\n", + " filtered_labels = filtered_labels[indices]\n", + " filtered_weights = filtered_weights[indices]\n", + "\n", + "print(f\"Dataset size after initial {initial_downsample_fraction*100}% downsampling: {len(filtered_labels)}\")\n", + "\n", + "# Count samples in each class after initial downsampling\n", + "class_counts = torch.bincount(filtered_labels.int())\n", + "print(f\"Class distribution after initial downsampling - Class 0: {class_counts[0]}, Class 1: {class_counts[1]}\")\n", + "\n", + "# Balance classes while maintaining weights\n", + "minority_class = 0 if class_counts[0] < class_counts[1] else 1\n", + "minority_indices = (filtered_labels == minority_class).nonzero(as_tuple=True)[0]\n", + "majority_indices = (filtered_labels == (1 - minority_class)).nonzero(as_tuple=True)[0]\n", + "downsampled_majority_indices = majority_indices[torch.randperm(len(majority_indices))[:len(minority_indices)]]\n", + "balanced_indices = torch.cat((minority_indices, downsampled_majority_indices))\n", + "\n", + "# Create balanced dataset with weights\n", + "balanced_inputs = filtered_inputs[balanced_indices]\n", + "balanced_labels = filtered_labels[balanced_indices]\n", + "balanced_weights = filtered_weights[balanced_indices]\n", + "\n", + "# Verify balanced distribution\n", + "balanced_counts = torch.bincount(balanced_labels.int())\n", + "print(f\"Final class distribution after balancing - Class 0: {balanced_counts[0]}, Class 1: {balanced_counts[1]}\")\n", + "\n", + "# Create dataset with weights\n", + "dataset = TensorDataset(balanced_inputs, balanced_labels, balanced_weights)\n", + "\n", + "# Split into train and test sets\n", + "train_size = int(0.8 * len(dataset))\n", + "test_size = len(dataset) - train_size\n", + "train_dataset, test_dataset = random_split(dataset, [train_size, test_size])\n", + "\n", + "# Create data loaders\n", + "train_loader = DataLoader(train_dataset, batch_size=1024, shuffle=True, num_workers=10, pin_memory=True)\n", + "test_loader = DataLoader(test_dataset, batch_size=1024, shuffle=False, num_workers=10, pin_memory=True)\n", + "\n", + "# Initialize model and optimizer\n", + "model = MyNeuralNetwork().to(device)\n", + "loss_function = WeightedBCELoss()\n", + "optimizer = Adam(model.parameters(), lr=0.0025)\n", + "\n", + "def evaluate_model(loader):\n", + " model.eval()\n", + " total = 0\n", + " correct = 0\n", + " with torch.no_grad():\n", + " for inputs, targets, weights in loader:\n", + " inputs, targets = inputs.to(device), targets.to(device)\n", + " outputs = model(inputs)\n", + " predicted = outputs.squeeze() > 0.5\n", + " total += targets.size(0)\n", + " correct += (predicted == targets.bool()).sum().item()\n", + " model.train()\n", + " return 100 * correct / total\n", + "\n", + "# Training loop\n", + "num_epochs = 150\n", + "loss_log = []\n", + "\n", + "for epoch in range(num_epochs):\n", + " for inputs, targets, weights in train_loader:\n", + " inputs, targets, weights = inputs.to(device), targets.to(device), weights.to(device)\n", + " \n", + " # Forward pass\n", + " outputs = model(inputs)\n", + " loss = loss_function(outputs.squeeze(), targets, weights)\n", + " \n", + " loss_log.append(loss.item())\n", + "\n", + " # Backward and optimize\n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " test_accuracy = evaluate_model(test_loader)\n", + " print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}, Test Acc: {test_accuracy:.2f}%')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "torch.save(model.state_dict(), \"model.pth\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Baseline accuracy: 0.8745944499969482\n", + "Feature importances:\n", + "Feature 21 importance: 0.3800\n", + "Feature 20 importance: 0.2052\n", + "Feature 0 importance: 0.2036\n", + "Feature 22 importance: 0.1572\n", + "Feature 17 importance: 0.1333\n", + "Feature 12 importance: 0.1323\n", + "Feature 13 importance: 0.1207\n", + "Feature 5 importance: 0.1142\n", + "Feature 2 importance: 0.0741\n", + "Feature 16 importance: 0.0638\n", + "Feature 15 importance: 0.0420\n", + "Feature 8 importance: 0.0402\n", + "Feature 9 importance: 0.0399\n", + "Feature 6 importance: 0.0305\n", + "Feature 7 importance: 0.0274\n", + "Feature 4 importance: 0.0269\n", + "Feature 3 importance: 0.0247\n", + "Feature 14 importance: 0.0162\n", + "Feature 10 importance: 0.0128\n", + "Feature 19 importance: 0.0117\n", + "Feature 11 importance: 0.0106\n", + "Feature 18 importance: 0.0089\n", + "Feature 1 importance: 0.0001\n" + ] + } + ], + "source": [ + "from sklearn.metrics import accuracy_score\n", + "\n", + "# Convert tensors to numpy for simplicity in permutation\n", + "input_features_np = input_features_tensor.numpy()\n", + "labels_np = labels_tensor.numpy()\n", + "\n", + "def model_accuracy(features, labels, model):\n", + " model.eval() # Set the model to evaluation mode\n", + " inputs = features.to(device)\n", + " labels = labels.to(device)\n", + " with torch.no_grad():\n", + " outputs = model(inputs)\n", + " predicted = (outputs.squeeze() > 0.5).float() # Update threshold as necessary\n", + " accuracy = (predicted == labels).float().mean().item()\n", + " return accuracy\n", + "\n", + "# Use the original input_features_tensor and labels_tensor directly\n", + "baseline_accuracy = model_accuracy(input_features_tensor, labels_tensor, model)\n", + "print(f\"Baseline accuracy: {baseline_accuracy}\")\n", + "\n", + "# Initialize an array to store feature importances\n", + "feature_importances = np.zeros(input_features_tensor.shape[1])\n", + "\n", + "# Permute each feature and calculate the drop in accuracy\n", + "for i in range(input_features_tensor.shape[1]):\n", + " permuted_features = input_features_tensor.clone()\n", + " permuted_features[:, i] = permuted_features[torch.randperm(permuted_features.size(0)), i] # Permute feature\n", + "\n", + " permuted_accuracy = model_accuracy(permuted_features, labels_tensor, model)\n", + " feature_importances[i] = baseline_accuracy - permuted_accuracy\n", + "\n", + "# Ranking features by importance\n", + "important_features_indices = np.argsort(feature_importances)[::-1] # Indices of features in descending importance\n", + "important_features_scores = np.sort(feature_importances)[::-1] # Importance scores in descending order\n", + "\n", + "print(\"Feature importances:\")\n", + "for idx, score in zip(important_features_indices, important_features_scores):\n", + " print(f\"Feature {idx} importance: {score:.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_909590/52354147.py:7: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " inputs = torch.tensor(features, dtype=torch.float32).to(device)\n" + ] + }, + { + "data": { + "image/png": "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OfpQ+/btMXv2bNjb28PNzU3r+CpWrIj69evD398fCoUCSUlJGYb5t2/fHvv374e7u3uuzoVUp04dtGrVCmvXrkWfPn3QsGFDjeOnTp3CunXr0KZNG42O0gDw999/48WLF+qaEYVCgW3btsHd3V1dc5AbcctkMhgbG2t8OIaHh2c6OurDWpPc0KRJE2zfvh0HDhxQN+kByHSEXGZ8fX2xbt06jBgxIsPweUDV9Lh792507txZq7i0eV0+dg8jIyONpDshIQEbN27UOK9Vq1YwNDTEihUr4OnpmeX9snr927dvj61bt0KhUKB+/frZjk8btra26NatG54+fYrRo0fj4cOHqFSpknr6hez8XLRt2xZbtmzB+vXr2TxGGTARokLLzs4OEydOxPjx47F582b07t0bq1atQtu2bdG6dWv0798fJUqUQFRUFG7evImLFy/ijz/+AABMnz4dBw4cQOPGjfHDDz+gatWqePPmDQ4ePAg/Pz9UqFABo0ePxs6dO9G4cWP4+vqiWrVqUCqVCAsLw+HDhzFmzJj//OM/cOBADB06FM+ePYOXl1eGpGv69OkICgqCl5cXRo0ahfLlyyMxMREPHz7E/v37sXLlyhw3W/z+++9o0aIFWrVqlemEihUqVMh0iLiDgwOaN2+OH3/8UT1q7NatWxoJQm7EnTaUesSIEejWrRseP36MGTNmwMnJKcOM4VWrVsWxY8ewd+9eODk5wcrKKssENrv69euHRYsWoXfv3pg5cybKli2LAwcO4NChQwDwnzUHbm5u6tq+GjVqqCdUBFQT+q1btw5CCK0TIW1el6y0a9cOCxcuRK9evTBkyBBERkZi/vz5GeZuKl26NH744QfMmDEDCQkJ+Oqrr2BjY4MbN27g1atX6uHtVatWxa5du7BixQrUrl0bBgYGqFOnDnr27ImAgAB4e3vju+++Q7169SCXy/HkyRMcPXoUX3zxhdbPHwA6dOignjesaNGiePToERYvXgxXV1f1SMmqVasCAJYsWYJ+/fpBLpejfPnyGWqhAFW/L39/fwwbNgy3b99Gs2bNoFQq8e+//6JixYro2bOn1jGSDpG2rzbRf0sbNfbh6C0hhEhISBClSpUS5cqVE6mpqUIIIS5fviy6d+8uihUrJuRyuShevLho3ry5WLlypca1jx8/FgMHDhTFixcXcrlcODs7i+7du4sX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tT8REREZaonSODk5oUSJEhqj0ypWrAghBJ48eZLpNRMnTkR0dLT66/Hjx9oF+uJC+nbxutpdS0T0Hw4cuItq1VZg717VoIy3b5Oxb9+d/7iKiHJLjhKhjRs3omHDhnB2dsajR48AAIsXL8aff/6Z7XsYGxujdu3aCAoK0igPCgqCl5dXptc0bNgQz549w9u3b9Vld+7cgYGBAUqWLJnpNSYmJrC2ttb40srLy+nbxWppdy0RURYSElIwatQBeHtvxosXcQCAokXNsXfvV/juuwYSR0ekP7ROhFasWAE/Pz94e3vjzZs3UChUMy7b2tpi8eLFWt3Lz88Pa9aswbp163Dz5k34+voiLCwMw4YNA6Cqzenbt6/6/F69esHe3h4DBgzAjRs3cOLECYwbNw4DBw7MtFnskwkBRFxSbZvaA5bOuf8YRKR3rlx5gbp1V+OXX9Kb3r29y+Hq1eFo395DwsiI9I/WidAvv/yC1atXY9KkSTA0NFSX16lTB1evXtXqXj169MDixYsxffp01KhRAydOnMD+/fvh6qoanv78+XOEhYWpz7e0tERQUBDevHmDOnXqwMfHBx06dMDSpUu1fRrZEx+RPqN0sersKE1En0SpFFi06Czq1l2N69dfAgBMTY3w669tsW/fV3B0tPyPOxBRbtO6s3RoaChq1qyZodzExARxcXFaBzBixAiMGDEi02Pr16/PUFahQoUMzWl55v1msaLV8+cxiUhnRUcnYt68M0hOVtWkV6vmiM2bu6By5WISR0akv7SuEXJzc8OlS5cylB84cEC9Or3OePVeDZdDtazPIyLKBjs7M2zY0AkGBjKMGeOJc+cGMwkikpjWNULjxo3DN998g8TERAghcO7cOWzZsgVz5szBmjVr8iJG6UTeSN92qCxdHERUKMXFJSMxMRX29ubqspYt3XH79kiULcvh8UQFgdaJ0IABA5Camorx48cjPj4evXr1QokSJbBkyRL07NkzL2KUTuT19O0iFaWLg4gKneDgZ/Dx2YWyZYtg376vNOZHYxJEVHB80lpjr169glKpRLFihadqN9trlQgBLLMDkqJVy2oMeZR/QRJRoaVQKDF37mlMmXIMqalKAMCyZd4YMYLzkBF9igKz1ti0adNw//59AKpJEQtTEqSVt09VSRDAZjEiypawsGg0b/47fvjhiDoJqlvXGS1blpE4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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve, auc\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def model_outputs(features, model):\n", + " model.eval() # Set the model to evaluation mode\n", + " with torch.no_grad():\n", + " inputs = torch.tensor(features, dtype=torch.float32).to(device)\n", + " outputs = model(inputs).squeeze().cpu().numpy()\n", + " return outputs\n", + "\n", + "# Calculate model outputs\n", + "probabilities = model_outputs(filtered_inputs, model)\n", + "\n", + "# Calculate ROC curve and AUC\n", + "fpr, tpr, thresholds = roc_curve(filtered_labels, probabilities)\n", + "roc_auc = auc(fpr, tpr)\n", + "\n", + "# Plot ROC curve\n", + "plt.figure()\n", + "lw = 2 # Line width\n", + "plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.3f)' % roc_auc)\n", + "plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n", + "plt.xlim([0.0, 1.0])\n", + "plt.ylim([0.0, 1.05])\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('Receiver Operating Characteristic')\n", + "plt.legend(loc=\"lower right\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_909590/52354147.py:7: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " inputs = torch.tensor(features, dtype=torch.float32).to(device)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Prediction scores for displaced tracks (t5_sim_vxy > 0.1):\n", + "Mean score: 0.8229\n", + "Median score: 0.9340\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACE5UlEQVR4nO3deXhTZd4+8DtNl7TpTje6l5bS0lKgK4Iijgii4rhvo4MMjguOjoPLMG4gLrjrvAo6+vqKOm7jjOg4boMjioKWrpTu0FK60X1J9yU9vz/6y5kmbdOmtMnT5P5cVy5ocpJ8c+6T06fPOed5FJIkSSAiIiKiWc/O0gUQERER0fRgw46IiIjISrBhR0RERGQl2LAjIiIishJs2BERERFZCTbsiIiIiKwEG3ZEREREVoINOyIiIiIrwYYdERERkZVgw46IrNbAwAC2bduG6OhoODo6QqFQQKFQYPv27ZYubcoqKirkz6FQKPDdd9/Z1PtPtz179uh9HqLZjg07shnfffed3g5coVDA0dERHh4eiIyMxJo1a/DYY4+hpqZmzOcb/kJTKBT497//PWo5Hx8f+fEbb7xR77Hw8HC9599///2jnn/FFVfIj4eHh5v0GQsKCrBp0yZERkbC2dkZzs7OCA4ORlJSEjZu3IiXXnrJpNeb7bZv344dO3bg2LFjGBgYsHQ5AMbejhwcHODm5oawsDCsWrUK999/P44dO2bpUmkM27dvH5XfRDfdfmCsfZDhLSoqyrIfkGY9e0sXQGRJAwMDGBgYgEajQXl5Ofbt24dHHnkE27dvx5/+9CfY2Rn/2+f+++/HeeedN+W/9P/85z/jzjvvREBAwJSeP9Lnn3+OSy+9dFQDpqamBjU1NcjOzsY777yDO+6447Tfa7Z499135f8vWrQI1113Hezt7bF8+XILVjXa4OAgOjs70dnZicrKSnz//fd48skncfvtt+PZZ5+Fk5OTvKy3tzeeeeYZ+efIyEhLlExEgmLDjmzW1VdfjeTkZLS3tyMnJwdff/01BgcHMTg4iAcffBCnTp3Cyy+/bPQ1srKy8I9//ANXXHHFlGro7u7GY489NuH7TESr1eLmm2+WG3V+fn646qqrMHfuXDQ1NaGiogI//vgjWlpaTut9ZkJHRwfc3Nxm5LUrKyvl///+97/Hpk2bZuR9dAYHBzEwMABnZ+dJP+e8887DmjVr0NnZiYKCAnz++efo6emBJEl4+eWXUVlZib1798p/ZLi7u+Oee+6ZqY9AE1izZg1cXV317nvllVdQXl4OAPDy8hrVEx8fHz/qdZKTk3H11VePut/Ly2saqyWbJBHZiP3790sA5Nubb76p93hRUZEUGRmpt8zXX38tP37ixAm9x3S3mJgYaXBwUF5uzpw58mMbNmzQe4+wsLBRz3dwcJDKy8vlZS6//HL5sbCwsEl9tiNHjui95oEDB0Yto9VqpX//+99jPr+xsVHatm2blJKSInl4eEiOjo5ScHCwdMEFF0iffvrpqOU/+ugjad26dZKfn59kb28veXl5SWeddZa0a9cuqa+vT29Zw/X27bffSrt27ZLi4+MlJycn6eyzz9Zbfu/evdJFF10kBQQESA4ODpKXl5e0evVq6R//+Mek1oUkSdLZZ589Zla62/79++Vlq6urpbvvvluKi4uT1Gq15OTkJM2bN0/6zW9+I+Xl5Y167Q0bNsivc/bZZ0tlZWXSVVddJc2ZM0dSKBR6rz0Ww/Wxbds2vcdramqklJQUvWX+8pe/jPv8ke83MDAgvfDCC9KyZcskDw8PSalUSt7e3tLChQulG264QXr//ff13svw+/D5559LK1askFxcXCRPT0/pyiuvlMrKyozWP/L9jx07Jt15553SihUrpODgYMnFxUVydHSUgoKCpPXr10ufffbZuOvlp59+km644QZp3rx5kkqlklxdXaWYmBjppptukqqqqvSWbW1tlR599FEpOTlZcnd3lxwdHaWwsDDppptuko4dOzbm61dUVEjXXHON5OXlJbm4uEhnnXWWtG/fPunNN9/U+zxTMXJ7M/adHbkPMtw3GHPgwAHpkksukQIDAyUHBwdJrVZLYWFh0vnnny9t27ZNamtrm1LdZJ3YsCObMVHDTpIkKTMzU2+ZtWvXyo8Z/kILCAiQ///GG2/Iy022YTfy+TfccIO8zFQadllZWXq1Pf/889LQ0NCknvvzzz9Lfn5+4zaCRn6GwcFB6aqrrjLaaEpNTdX7RWO43lasWKH3s65hp9Vqpeuuu87oa998882T+kyTbdh9//33kqen57jLOTg4SHv27NF77ZENu/nz549ad6fbsJOk4cadSqWSl1mwYMG4zx/5fiNrG+uWlpam9z4jHzvnnHPGfI6vr69eY8nY+3/00UdG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Get model predictions\n", + "probabilities = model_outputs(filtered_inputs, model)\n", + "\n", + "# Get displaced track mask\n", + "displaced_mask = np.concatenate(branches['t5_sim_vxy'])[~nan_mask] > 0.1\n", + "\n", + "# Calculate statistics for displaced tracks\n", + "displaced_predictions = probabilities[displaced_mask]\n", + "mean_score = np.mean(displaced_predictions)\n", + "median_score = np.median(displaced_predictions)\n", + "\n", + "print(f\"Prediction scores for displaced tracks (t5_sim_vxy > 0.1):\")\n", + "print(f\"Mean score: {mean_score:.4f}\")\n", + "print(f\"Median score: {median_score:.4f}\")\n", + "\n", + "plt.hist(displaced_predictions, bins=100, histtype='step', linewidth=1.5) # Outline only, no fill\n", + "plt.yscale('log')\n", + "plt.xlabel(\"DNN Score\", fontsize=12)\n", + "plt.ylabel(\"Frequency (log scale)\", fontsize=12)\n", + "plt.title(\"DNN Score for Displaced T5s\", fontsize=14, weight='bold')\n", + "\n", + "plt.grid(visible=True, which='both', linestyle='--', linewidth=0.5)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_layer1[32] = {\n", + "-1.3837075f, -0.0653152f, -0.7900129f, 0.0714758f, -1.1574365f, -1.4634879f, -0.9317133f, -0.1455518f, -0.0459635f, -0.2055620f, 0.0586231f, -0.8943899f, -0.1009487f, 0.0166031f, -0.5451909f, -0.1384538f, 1.2664700f, -1.8996916f, -0.0025585f, -0.1647783f, -1.9019107f, 0.0707104f, -0.2373025f, 0.0357050f, -0.0048417f, 2.3127339f, -0.0508943f, -0.1116435f, -0.1610904f, -1.6463890f, -1.0739423f, -0.0962902f };\n", + "\n", + "ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_layer1[23][32] = {\n", + "{ -0.1881404f, -0.0534256f, 1.6563641f, 0.0401664f, 2.8318353f, 1.5049738f, 1.4111555f, -0.2339872f, 0.0431970f, 0.1220361f, -0.0450153f, -1.6025578f, 0.0394025f, -0.3051167f, 1.9442217f, 0.1599094f, 0.1376955f, 2.4181051f, -0.0226484f, -0.1801709f, -0.4861264f, -0.0268545f, 0.5463807f, 0.2420150f, -0.1238829f, 0.2916382f, 0.1507791f, 0.7952659f, 0.2736979f, 3.2790639f, 1.2062043f, -0.0884467f },\n", + "{ -0.0469924f, 0.2013927f, 0.0307775f, -0.1241788f, -0.0100412f, 0.0422375f, 0.0211071f, -0.0359304f, 0.0451861f, 0.0291862f, -0.2094866f, -0.0013007f, 0.1191471f, 0.0750159f, 0.0184378f, 0.0419437f, -0.0207304f, -0.0444109f, 0.0013400f, -0.0699210f, -0.0668742f, -0.0880825f, -0.0107244f, 0.0363424f, 0.1391699f, -0.0112885f, -0.0060098f, -0.0073863f, -0.0566143f, -0.0224207f, 0.0103718f, -0.0015193f },\n", + "{ 0.4520382f, 0.1227609f, -1.3887709f, -0.0542129f, -3.2003114f, -0.8354173f, -1.3173198f, 0.3292131f, -0.1657729f, -0.1982902f, 0.1599589f, -0.0417666f, -0.1461042f, -1.3237997f, -5.3609071f, -0.0981676f, 0.2922535f, -1.8692241f, -0.0345302f, 0.1810613f, 0.4473544f, -0.0159401f, -0.7293931f, -1.4816793f, -0.1431545f, -0.0955672f, -0.2370718f, -0.7204540f, 0.8451244f, -3.4310548f, -1.3518151f, 0.1551731f },\n", + "{ 0.2670300f, 0.1343590f, 3.0347505f, -0.1783503f, 2.1586559f, 2.4137778f, 2.0080864f, -0.2545274f, -0.1985905f, 0.1653812f, -0.1714860f, 4.1022782f, -0.1045471f, 4.4776497f, 3.3737848f, -0.0849546f, -6.1899095f, 3.6970129f, 0.0007382f, 0.1675882f, 0.6014717f, -0.0287709f, 0.0495882f, 2.2192705f, -0.1043157f, -4.7508621f, -0.0022774f, 0.3766513f, -0.7505829f, 1.9759512f, 1.6747239f, -0.1004091f },\n", + "{ 0.6639504f, -0.0384022f, -10.0415087f, -0.0032648f, 0.3049855f, -2.0427964f, -1.1522077f, 0.0935732f, 0.1232134f, 0.0868663f, -0.0230848f, -1.8257296f, -0.0799238f, 6.8892417f, -1.3941933f, 0.0445172f, 0.9485117f, -2.5238073f, -0.0148513f, 0.2256772f, 0.5914315f, -0.1278037f, 0.1609928f, 11.3438406f, -0.0831544f, 0.1928522f, 0.0361467f, 0.0137040f, 4.9549832f, 2.3954937f, 0.3917757f, 0.1206975f },\n", + "{ 29.6590214f, -0.0836848f, -1.3028307f, -0.1391431f, -0.3703596f, 5.3762760f, 1.8429571f, 21.0697041f, -0.1232606f, 0.0066067f, -0.0308768f, -0.9960231f, 0.1865301f, -1.2142091f, 0.9273136f, 0.0974103f, 1.4067870f, 0.7268439f, 0.0035755f, 0.0619486f, -32.8901024f, -0.1950644f, -0.3978897f, -3.1790049f, -0.1371673f, 0.1569460f, 0.0268667f, -0.4512640f, 0.3055371f, -0.2241473f, -0.6455348f, 0.1178979f },\n", + "{ -2.9178317f, -0.2023720f, -0.2946439f, -0.1851392f, -0.3493766f, -1.5397958f, -1.5902523f, 1.0981250f, -0.1796725f, -0.0540953f, 0.0926500f, 2.0021629f, -0.1277778f, 3.3643394f, -7.5327554f, -0.0084912f, 2.7298651f, 0.2535582f, 0.0474618f, -0.1377846f, -2.2746830f, -0.2016302f, -0.7150622f, 4.4011140f, -0.1688751f, -1.2160714f, -0.0055839f, -1.1319760f, -2.2543004f, 0.6365916f, -1.4942099f, -0.0992425f },\n", + "{ -5.9751196f, -0.1597221f, -3.8946304f, 0.0537821f, 0.4741110f, 3.6895070f, 2.5116272f, 1.7058172f, -0.0860321f, -0.1519644f, 0.1465356f, 1.4165760f, -0.0984433f, 1.6990343f, 4.0953226f, 0.1742475f, -3.2570388f, 3.1653547f, 0.0135764f, 0.0092055f, -5.0966530f, -0.0542810f, 0.4907863f, 0.5900084f, -0.1736992f, -4.9153452f, 0.2017547f, 0.2854181f, 3.1490057f, 0.2885774f, 0.9775900f, -0.2207156f },\n", + "{ 0.3805595f, 0.0308984f, -9.5846119f, -0.0547350f, 1.9641919f, 2.0823991f, 9.9298115f, 0.0344243f, -0.1557834f, -0.1847700f, -0.1195207f, 4.4698248f, 0.1492174f, 0.4272707f, 4.7265644f, 0.0200772f, -14.3444443f, 4.9532328f, 0.0319610f, -0.0645846f, -0.6238102f, 0.1038110f, 0.2483765f, -5.1799927f, 0.0782294f, 16.8777409f, 0.0196593f, 0.8423936f, -8.5921221f, -0.0184179f, -5.7857180f, -0.0551181f },\n", + "{ 17.1570740f, 0.0265437f, -1.4766232f, -0.0528512f, 1.0128449f, 3.1529653f, -0.6560294f, 8.7189465f, -0.1728377f, 0.1245629f, 0.1072764f, 0.2649773f, 0.0254132f, -0.8094708f, 1.8371828f, 0.1586192f, 1.9410020f, 0.9662392f, -0.0839922f, -0.2894930f, -16.5091496f, -0.1079556f, -0.1204132f, -0.9694697f, 0.0537786f, 0.2476868f, 0.0076408f, 0.1025890f, 0.1267423f, 0.4956081f, 0.1457323f, 0.1342634f },\n", + "{ -0.5389574f, 0.1333421f, -4.6338782f, -0.0645123f, -0.6526322f, -3.2958410f, -1.2309581f, -1.0803053f, -0.1170542f, -0.0169311f, 0.1147491f, 2.9890807f, -0.1234096f, 0.6792320f, -3.9311285f, -0.0678321f, -2.7922039f, 4.9413238f, 0.1060735f, -0.1114068f, -2.2443752f, -0.1649915f, -0.3656403f, 2.5320942f, -0.0249616f, -4.5098810f, -0.1773834f, -1.9516623f, -1.6839710f, -0.1365123f, 1.0296160f, -0.0419825f },\n", + "{ -2.4413636f, 0.1075683f, -1.4518708f, 0.0537449f, 0.1154493f, -0.5463845f, 1.3964951f, 2.6729572f, -0.0206257f, 0.1435281f, -0.1819518f, 0.4540120f, -0.1910136f, 1.7696143f, 2.3670278f, 0.1324464f, -0.5837788f, -2.2784615f, 0.0345478f, -0.0980538f, -0.4999657f, 0.1178097f, 0.5756868f, -0.1058674f, 0.1920418f, -3.5473657f, 0.2146371f, 0.2557987f, 1.3935618f, 0.3242345f, 0.2029733f, -0.1844350f },\n", + "{ -0.9069599f, -0.2032758f, -0.5786582f, 0.1395915f, 3.9338124f, -1.6806563f, 0.4269728f, -0.3697720f, -0.0306356f, -0.0341866f, -0.0635755f, 1.8898975f, 0.1968578f, -17.2182655f, 1.4839698f, -0.0541308f, 15.9838457f, 18.5951862f, 0.0078872f, -0.1186571f, -2.4982276f, 0.0033835f, 0.3749593f, -15.0238085f, 0.0595601f, -16.8588371f, 0.1146287f, 0.1274172f, 19.3332062f, -7.0513921f, -5.4852023f, 0.1681230f },\n", + "{ -5.1457887f, 0.0335570f, 1.8620163f, 0.0560381f, -0.6397949f, -4.0867515f, 1.3578068f, -23.9992580f, -0.1034287f, 0.1437906f, 0.1076568f, -0.6930848f, -0.1176134f, 2.2855785f, -0.8021089f, 0.0424611f, -0.6139123f, -3.1381547f, 0.0188163f, -0.1728741f, 0.6676420f, -0.1124282f, 0.1077818f, 2.3839712f, 0.1340676f, 1.3538554f, 0.0421035f, 0.4513423f, -0.1543196f, 0.5120541f, -0.8940096f, -0.1175765f },\n", + "{ 2.1656792f, 0.1638565f, 4.5302448f, 0.0741160f, 3.3850696f, -4.8867540f, 2.8059542f, -0.0023008f, -0.1248942f, -0.0075225f, -0.0082212f, -1.0955724f, -0.1462416f, -1.7098176f, -4.1775723f, 0.1950609f, 3.6847639f, 1.6520064f, 0.0310502f, -0.0430167f, 3.4527576f, 0.1453262f, -1.0126116f, 1.8785841f, -0.0615105f, 1.0451943f, -0.2653875f, -1.2223006f, -1.0100641f, 1.2076828f, 0.4882897f, -0.0618375f },\n", + "{ 2.4578559f, -0.1464199f, -1.3086185f, 0.1208716f, -0.2079897f, -2.7138259f, -1.4107026f, -0.4483974f, -0.1599056f, 0.0242936f, 0.1326804f, 0.8664415f, 0.0588684f, 0.7366717f, 2.3159802f, -0.1917707f, -2.0800066f, -7.5100355f, 0.0585225f, 0.1582773f, 1.8128076f, -0.0756957f, 0.8521049f, 0.5539182f, -0.1738797f, -0.2020151f, 0.2219591f, 0.1088298f, -1.9535940f, 2.4130275f, -0.0741222f, 0.1156681f },\n", + "{ -0.4152933f, -0.0679605f, -0.5760314f, -0.0201883f, -14.1784763f, 0.7755737f, -19.5469246f, 0.0381304f, 0.0160074f, 0.1124380f, -0.0478151f, -2.3719466f, 0.0819727f, -12.5069208f, 2.0468810f, 0.0964909f, 7.8784809f, -6.3555703f, -0.0429914f, -0.0162720f, -0.9493829f, 0.0296786f, -0.0244959f, -12.6325788f, -0.1871653f, -9.8338795f, 0.0391840f, -0.1199073f, -11.7859421f, 8.7398720f, 19.4971046f, -0.1954873f },\n", + "{ -4.8962007f, -0.1695992f, 0.7760146f, -0.0199836f, -0.0576061f, -6.0196476f, -2.3023551f, -20.0125084f, -0.1957836f, -0.0993785f, 0.1109372f, -0.0710161f, -0.0553650f, 0.2546394f, -1.7578228f, 0.1498791f, -2.6269529f, 1.3973731f, 0.0464059f, -0.2307575f, 1.6730053f, -0.0038867f, 0.1040150f, 2.6721606f, 0.2027777f, -1.2358316f, -0.0587254f, 0.0610504f, -0.1700777f, -0.4323797f, 1.0359807f, -0.0127435f },\n", + "{ 1.1245984f, -0.1806923f, -1.5868790f, 0.1536594f, 1.6837788f, -1.6474472f, -3.9225550f, 0.4506312f, 0.1854908f, -0.1023232f, -0.0306957f, -0.8615071f, 0.0945480f, 2.0585704f, 0.6044773f, 0.1269336f, 2.4720187f, -4.5123949f, -0.0657749f, 0.1738364f, 2.4188614f, 0.0038840f, -0.2019601f, -0.3842189f, -0.0493631f, 3.6777370f, -0.1003436f, 0.6174496f, 1.0476112f, 2.7601521f, 0.9059890f, -0.1691816f },\n", + "{ 1.9658293f, 0.2083382f, 1.7833723f, 0.0662620f, -0.3932888f, -1.0642430f, 0.1807114f, -1.1486723f, -0.0177136f, -0.1706942f, 0.1730027f, 0.6712329f, 0.0485299f, 0.6379296f, -0.2880911f, -0.1993632f, -0.9471832f, 1.9425983f, 0.0328524f, 0.0777725f, 0.6454380f, 0.0143852f, 0.0192997f, 1.6793132f, -0.1872064f, -1.5757623f, 0.0242778f, -0.5992475f, 2.2148299f, -3.5215647f, -2.9748621f, 0.0112703f },\n", + "{ 0.3737165f, 0.0361593f, -0.1075856f, -0.0312021f, -0.0786010f, 1.3149793f, 0.0237401f, -0.0819654f, -0.1388431f, -0.0306386f, -0.0704427f, -2.3997226f, -0.1392045f, 0.7729424f, 0.1253861f, -0.0819755f, -0.7590774f, -0.3295609f, -0.0172208f, -0.0551179f, 0.4599459f, -0.1143881f, 2.7430685f, 0.3621114f, -0.1475701f, 0.2296079f, -2.2224922f, -0.9080986f, 0.2101683f, 0.1190262f, -2.2205217f, -0.0811555f },\n", + "{ 0.3946800f, -0.1204188f, 0.0543225f, -0.0392627f, 1.9454094f, 0.1865290f, 1.5276426f, -0.0342965f, 0.0117116f, -0.1873923f, -0.1045035f, 1.8535231f, -0.0207077f, 0.0981549f, -0.0327459f, -0.1486938f, 0.6359531f, -0.1314566f, -2.1469448f, -0.1665767f, 0.5134121f, -0.0341647f, -2.1786075f, -0.5976576f, 0.0111857f, 0.3272055f, 2.1917374f, -1.6247722f, 1.6025572f, -1.9965295f, 0.3347488f, 0.1113990f },\n", + "{ 0.0340557f, -0.1659652f, -0.0042457f, 0.0010229f, -2.1550148f, -0.4728722f, -1.3667214f, 0.2625635f, -0.0302200f, -0.0322885f, 0.0227866f, 0.6977839f, 0.0050141f, -1.6183628f, 0.0869662f, -0.0775411f, 0.4754244f, 0.4596581f, 2.1509945f, -0.0313832f, 0.0336208f, -0.1547154f, -0.6017126f, 0.0369996f, -0.1102583f, -0.5788267f, 0.0017006f, 2.6352038f, -1.7847317f, 1.7510574f, 2.1478791f, -0.2251654f },\n", + "};\n", + "\n", + "ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_layer2[32] = {\n", + "-0.2689391f, 1.5461178f, -0.2424639f, 0.4424149f, -0.0411816f, -4.1070848f, 1.4709516f, -0.2439820f, -0.1750926f, 2.8802166f, -0.1573734f, -1.3724055f, 0.3671952f, 1.8267332f, 1.5655776f, -0.7323843f, 1.6318209f, 2.2198663f, -1.5951139f, -0.0870247f, 0.2806863f, -0.2407108f, 0.1310665f, -0.5246177f, 0.1914421f, -0.3386542f, -0.6310596f, 3.2995102f, 0.7519229f, -0.1565450f, -0.1496341f, 1.0073272f };\n", + "\n", + "ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_layer2[32][32] = {\n", + "{ -0.1731049f, 1.7775618f, -0.2532010f, -0.2902778f, -0.1392802f, 4.2428946f, -0.1866968f, -0.1800365f, -0.0634398f, 0.0763313f, 0.0472901f, -0.8030146f, 0.3161853f, -1.0713238f, -4.6514492f, -0.3908085f, 1.1607268f, 0.8834935f, -0.1194544f, -0.0785166f, 0.4967587f, -0.0558136f, -0.9601135f, -0.1001592f, 3.4427991f, -0.2144053f, -0.3632556f, 0.0117088f, 0.1742481f, -0.2540179f, -0.1705156f, -0.2627344f },\n", + "{ -0.1478276f, -0.1659575f, 0.1602777f, -0.0758106f, 0.1067696f, -0.0247068f, -0.1123443f, -0.1724832f, -0.0013103f, -0.0685904f, 0.1537329f, 0.1042632f, -0.0360880f, -0.0679077f, 0.0672719f, 0.1597116f, -0.0150259f, 0.0367102f, -0.0545881f, -0.0693004f, -0.1008447f, -0.0672846f, -0.1395939f, -0.0324785f, -0.1051702f, -0.0530534f, -0.1019061f, -0.0921245f, 0.1195077f, 0.0453448f, 0.0257045f, -0.0622537f },\n", + "{ -0.0363173f, -0.1990481f, -0.0452148f, 0.4074381f, -0.0731660f, -0.0823270f, 0.3154473f, -0.1909118f, -0.0165690f, 0.1325824f, -0.0760181f, 0.7768906f, -0.2702211f, -0.6023573f, 1.5904741f, 0.2384946f, 0.7610655f, -2.8705251f, 0.5754877f, -0.1587478f, -0.5708794f, -0.3421216f, 0.5023443f, 1.2806857f, 0.2158970f, -0.1364033f, -0.3398291f, 0.9066412f, -1.2935438f, 0.0273695f, -0.1850613f, -0.9301611f },\n", + "{ -0.1281746f, 0.1695392f, 0.0805936f, -0.0598281f, 0.1266985f, -0.1697189f, -0.1091505f, -0.1569477f, 0.0363969f, -0.0628394f, 0.0107523f, 0.0659535f, -0.0568244f, -0.1299786f, 0.0005438f, -0.0806242f, -0.0806848f, -0.0919798f, -0.0748445f, 0.0792912f, 0.0022868f, 0.0211520f, -0.0183716f, 0.1279848f, -0.1518286f, -0.0113527f, 0.0824359f, -0.0178597f, 0.0272009f, 0.0288935f, 0.0123459f, 0.1685353f },\n", + "{ 0.1099675f, -0.3914332f, -0.0647218f, -0.8259028f, -0.0283726f, -0.0860217f, -2.0489185f, 0.1042144f, 0.1024824f, 0.0735443f, -0.1235109f, -3.3674469f, -0.1799957f, -7.1867313f, 1.6053666f, -0.5203959f, 0.8686391f, -0.0675404f, -2.8893898f, -0.0796400f, 1.2672142f, -0.0371844f, -1.8065344f, -2.2551982f, 0.0355568f, 0.0672171f, 0.7150316f, 1.3620002f, -0.4106106f, 0.0126076f, 0.0408083f, 1.5958146f },\n", + "{ 0.0525989f, 1.8947815f, -0.2513640f, -0.3715420f, -0.1752283f, 1.3911799f, -0.7633898f, -0.1716654f, -0.0145629f, -1.7601604f, -0.1943324f, -0.5716376f, -0.8281464f, -0.0308049f, -1.4709659f, -0.4294116f, -0.1030817f, -0.1823493f, 0.7561242f, -0.1608112f, 0.3980689f, -0.2464017f, -1.3065518f, 0.0875702f, -0.1504322f, -0.0352198f, -0.4051513f, 0.7010455f, -0.2363433f, -0.1118084f, -0.1329087f, -0.3257700f },\n", + "{ -0.1209070f, 0.1677164f, -0.1353413f, -0.0410048f, -0.1432644f, 0.2649301f, 0.2247741f, -0.0425357f, -0.2644008f, 1.4204332f, -0.2540753f, 0.2481354f, 1.9494507f, -0.2003033f, -0.5938342f, -0.3314930f, 1.5038266f, -2.4000788f, -1.6202501f, -0.0256936f, -0.2890913f, -0.2113032f, 0.9030544f, 1.1483711f, 0.0545346f, -0.1961582f, -0.2267976f, 0.2372836f, 2.5995049f, -0.1469661f, -0.1017130f, 1.6176132f },\n", + "{ 0.0542207f, 2.7658713f, -0.1700335f, -0.3357265f, -0.1097085f, 1.6508883f, 0.0132292f, 0.1211861f, -0.0852982f, 0.9232512f, 0.0202751f, 0.3138782f, 0.2674713f, 0.1247260f, 0.3859081f, 0.3961721f, 1.0556988f, 0.8574673f, -0.1462571f, -0.1600272f, 0.4117427f, -0.1561815f, 0.0553897f, -0.2753994f, 5.8420453f, 0.0883128f, 0.3594444f, -0.7174141f, 0.5683901f, 0.0096710f, -0.0957449f, -0.0195320f },\n", + "{ 0.1561092f, -0.0417566f, -0.1044470f, 0.1186895f, -0.1195878f, 0.0446987f, -0.1386125f, -0.0103878f, 0.1173026f, 0.1349312f, -0.0676422f, -0.1452308f, 0.0093872f, 0.0069650f, 0.1739093f, -0.1592752f, -0.1329019f, -0.0459163f, -0.1511888f, -0.0040456f, 0.0065862f, 0.0106182f, 0.0318060f, 0.1003269f, 0.0249398f, 0.1661194f, -0.0286407f, -0.1062361f, 0.0026465f, -0.0091479f, -0.1493473f, 0.0519762f },\n", + "{ -0.0702637f, 0.1154817f, -0.0680643f, 0.1447217f, 0.1394082f, -0.0691432f, 0.0939426f, 0.0483852f, 0.1437123f, -0.1085759f, 0.0333924f, -0.0683726f, 0.0707103f, -0.0723069f, 0.0124601f, -0.0309495f, -0.0308395f, -0.0695953f, -0.1078720f, 0.0858701f, -0.0773453f, 0.0477413f, 0.0615588f, 0.1656474f, 0.1718751f, -0.1125762f, 0.1753366f, -0.0557704f, 0.0921221f, 0.0372290f, -0.1084552f, -0.0438967f },\n", + "{ -0.0557757f, 0.0694144f, 0.1150911f, -0.0202319f, 0.0661389f, -0.0928373f, 0.0441888f, -0.0028318f, -0.0039446f, 0.0294675f, 0.1353384f, 0.0427515f, 0.0695194f, 0.1329748f, 0.1339706f, 0.0713900f, -0.1384726f, 0.0925476f, 0.1581103f, 0.0100842f, -0.1248652f, -0.0173615f, 0.1637451f, -0.0025173f, -0.0331219f, -0.0335269f, 0.0949441f, 0.0538645f, 0.0834281f, 0.0137191f, -0.1360130f, 0.0074489f },\n", + "{ -0.0949665f, -0.2181539f, 0.0871969f, 3.0772011f, -0.1152011f, -0.0022047f, 1.2700632f, -0.1173392f, -0.1678371f, -1.3448639f, -0.2893313f, 1.5105180f, -0.6029126f, -1.1568675f, 1.4823192f, 0.1635401f, -2.2136483f, -1.4164798f, -0.4795305f, -0.0807557f, -1.6675406f, -0.0992591f, 2.1212378f, -0.9400231f, -0.5339298f, -0.0342672f, -2.3564072f, 1.3407421f, -3.8635128f, -0.1171367f, -0.0364181f, -3.2491686f },\n", + "{ -0.1047117f, -0.0540412f, -0.1137928f, 0.1582367f, -0.0982449f, 0.0511854f, -0.0805884f, -0.1141258f, 0.0931992f, -0.0227052f, 0.0780590f, -0.1288135f, -0.1186576f, -0.0754066f, -0.1234059f, -0.0091936f, 0.0205475f, 0.1640417f, -0.1527465f, 0.0068472f, -0.1239804f, -0.0448335f, -0.0061169f, -0.0078998f, 0.0253047f, 0.0712901f, 0.0024753f, -0.0259875f, -0.1238613f, 0.1096537f, -0.0953007f, 0.1385384f },\n", + "{ 0.0521762f, 1.4885306f, -0.1298001f, 2.3033395f, -0.1589162f, -0.8458843f, 0.0631668f, -0.1424429f, -0.0384785f, 0.5599840f, 0.0008631f, -1.5839294f, 1.9202064f, 0.6930331f, 0.4948464f, -0.6195241f, -3.0526664f, 3.1423819f, -1.3433597f, -0.1167206f, -1.3491610f, -0.0901343f, -1.2291449f, 3.5039587f, 0.4674770f, -0.3027362f, 0.8279622f, 0.3417586f, 0.1367343f, -0.1085793f, -0.1048759f, 1.2729272f },\n", + "{ -0.0029521f, 0.2439991f, -0.0858953f, -2.7804739f, -0.0220416f, 0.0256599f, -0.3304259f, -0.0586597f, -0.0459698f, 0.1670698f, -0.1359344f, -0.3957845f, -1.6954739f, 0.3318155f, 0.9375985f, 0.5211958f, 0.6071047f, -3.4249072f, 1.3199407f, 0.0136374f, 1.2692807f, 0.0233104f, -0.0731508f, 2.2171400f, -0.6052189f, -0.0698463f, 1.6376522f, -1.1908000f, -0.1706121f, -0.0380146f, 0.0144418f, 1.5177792f },\n", + "{ -0.0314772f, 0.0523589f, -0.0517322f, -0.0100344f, 0.0714635f, -0.1646974f, 0.0800682f, 0.1132821f, -0.0028872f, -0.1239987f, -0.1322138f, -0.1059789f, 0.1752418f, 0.0475279f, -0.0046871f, 0.1574167f, -0.0231106f, -0.0261228f, 0.0236005f, 0.1663371f, 0.1059707f, 0.1229704f, 0.1427562f, -0.1648343f, 0.0992667f, -0.0631751f, -0.1411413f, -0.0999486f, -0.0972435f, -0.1422556f, 0.0973614f, -0.0156000f },\n", + "{ -0.1309903f, -0.5060971f, -0.1911870f, 2.2349114f, 0.1010354f, 0.5538697f, 1.8757060f, -0.1538645f, -0.2073075f, -1.8350753f, 0.0532570f, 1.8151909f, -0.6800886f, 0.2615838f, -0.6204563f, -0.1238837f, -0.4772464f, -2.4070835f, -0.2783994f, -0.0211087f, -4.4925098f, -0.0790045f, 1.3566529f, -0.3650998f, -0.4658130f, -0.0479139f, -1.9361999f, 2.1485121f, -3.1108823f, -0.0020647f, -0.0489678f, -0.4781263f },\n", + "{ -0.0099352f, -1.9572417f, 0.0918592f, 0.7327217f, -0.0609625f, -0.1969659f, 0.1922992f, -0.1091586f, -0.2125459f, -1.9542989f, -0.1648019f, -0.9355955f, 0.9144324f, -5.0530005f, -0.2265045f, -0.5638458f, 4.4370432f, -2.0318019f, -1.5679311f, 0.0221776f, -0.4063498f, -0.1160609f, 0.9651156f, -0.2401051f, 0.1903293f, -0.2355373f, 0.2334733f, 0.1025979f, 0.7150746f, 0.0315593f, -0.0001765f, 0.0137871f },\n", + "{ 0.0320691f, -1.8876421f, -0.1241799f, -3.1652985f, -0.1528286f, 2.1882250f, -2.5907574f, 0.0210803f, -0.1545521f, 0.7706368f, -0.1652040f, -4.1518817f, 4.2974262f, 0.3074523f, 3.3711803f, -37.9055862f, 1.0623894f, 0.4360786f, -2.6417589f, 0.1113010f, 3.8902094f, -0.1616735f, 0.5595753f, 1.5364015f, -2.4740698f, -0.0240434f, -28.0232792f, 0.6092473f, 1.6978041f, -0.0458809f, 0.0664777f, 0.2603019f },\n", + "{ 0.1044999f, 0.0054908f, 0.1407564f, -0.1701076f, -0.1274551f, 0.0443607f, 0.1182709f, -0.1103420f, -0.1343671f, -0.0042888f, -0.1611361f, 0.0154269f, 0.2285106f, 0.0870507f, 0.0914433f, 0.0657276f, -0.1664300f, -0.0342912f, 0.1037545f, -0.1175308f, 0.1135652f, 0.1325845f, -0.1459545f, -0.2156865f, -0.1673723f, -0.1156510f, 0.0179541f, 0.0541515f, 0.0957617f, -0.1297485f, 0.1045326f, 0.2950188f },\n", + "{ -0.1401742f, -2.8181052f, -0.0588381f, -0.1517100f, -0.0608850f, -3.5837226f, -0.1528927f, -0.0211265f, 0.0881796f, -0.4448619f, -0.1457623f, -0.8828475f, 0.1261238f, -1.0495204f, -3.7918513f, -0.4645159f, -0.0800092f, 0.0624971f, 0.1528609f, -0.1069645f, 0.4319421f, 0.0651448f, -0.6571375f, -0.0323338f, -4.6534319f, -0.0538999f, -0.2221518f, 0.0972160f, 0.1496329f, 0.0570569f, -0.1125795f, -0.0153687f },\n", + "{ -0.1065502f, 0.0606179f, -0.1400291f, -0.0220975f, -0.0613350f, -0.0038843f, -0.0132201f, 0.1678067f, 0.1008587f, -0.1255144f, -0.0675021f, -0.0475353f, 0.0278098f, 0.0527470f, -0.0089845f, -0.0622052f, 0.1088723f, 0.0053812f, 0.0627310f, -0.0226460f, -0.1096366f, -0.0505830f, -0.0301058f, -0.0775778f, -0.0008928f, -0.1157909f, 0.0544982f, 0.0430219f, -0.0134386f, -0.1095094f, 0.1215172f, 0.0081556f },\n", + "{ -0.1747307f, -0.7465636f, -0.0497346f, -2.0686443f, 0.0190713f, -2.9156351f, -5.4731860f, -0.0728399f, -0.0845178f, -14.8429976f, -0.1068359f, 1.8549156f, -3.1135283f, -0.0907917f, -0.0262453f, -8.8010912f, -4.3007965f, -1.6772208f, -0.2576891f, -0.0163111f, -7.8583646f, 0.0697906f, -0.0943863f, -0.7450574f, 1.1493169f, 0.0921000f, -0.2395420f, 0.5794312f, -4.2405462f, -0.0910322f, -0.1381017f, -1.0270567f },\n", + "{ -0.0446755f, -0.8131990f, -0.1741483f, -1.7555307f, 0.0153283f, 0.0734032f, -0.5930048f, -0.0398877f, -0.0215982f, 0.0497884f, -0.0504920f, 0.0942539f, -1.1370168f, -0.8821361f, -0.0879569f, 0.3811991f, 1.2224945f, 0.3782545f, 1.4800016f, 0.0494110f, 1.7101970f, -0.2885793f, -0.1778114f, -1.3913733f, -0.0944610f, -0.3578439f, 0.3491475f, -3.0349872f, 0.8044587f, 0.0928676f, -0.0395946f, 0.2008810f },\n", + "{ 0.0721043f, -0.1181163f, 0.0108281f, -0.1215726f, 0.1285277f, 0.0851443f, 0.0791321f, 0.1765833f, -0.0324889f, -0.0150838f, -0.0051942f, 0.1685798f, 0.1521861f, 0.0283858f, 0.0326072f, 0.0346215f, -0.1081120f, -0.0745824f, -0.1762613f, 0.0901582f, 0.1335704f, 0.1599123f, -0.0097813f, 0.0364541f, -0.0391450f, -0.0079635f, 0.1014886f, 0.0130333f, 0.0438304f, -0.0074333f, 0.0845035f, -0.0471010f },\n", + "{ 0.0360538f, -0.9701002f, -0.2217611f, -1.1626705f, 0.0548465f, 0.6605385f, -0.6693703f, -0.1432099f, -0.0754442f, -0.2380328f, -0.0754142f, -2.3242903f, 3.5773275f, 0.0707042f, 0.2052065f, -1.3753067f, -0.8530636f, 3.1850073f, -0.2901604f, -0.1291050f, -4.4672642f, -0.2425279f, 0.1252670f, 0.4261391f, -0.8620862f, 0.1153403f, -0.1999598f, -4.7756801f, 2.8851914f, -0.1340472f, 0.0482952f, 1.7996837f },\n", + "{ -0.1654812f, 0.9604513f, 0.1770310f, -16.5736618f, -0.0350192f, -0.5557595f, -35.3047371f, -0.1299658f, 0.0065243f, -3.0823336f, 0.0351931f, 4.9456911f, -1.4382623f, -1.6900688f, -1.9084880f, -3.1811504f, -8.0212736f, -7.3994560f, 4.9219728f, 0.0433824f, 0.6197430f, 0.0308996f, 5.2004323f, 0.5327767f, 1.0885966f, 0.1487215f, -21.4211712f, -1.8733859f, 1.9195696f, -0.0539309f, -0.0795544f, -3.1121061f },\n", + "{ -0.0058153f, 1.7521383f, -0.2205407f, 2.6318321f, -0.0038140f, -1.4131194f, 3.0181022f, 0.0373498f, -0.1246315f, -1.8323456f, -0.1470954f, 2.9131169f, 1.1522563f, 0.6036215f, -3.3962972f, 7.0906253f, -1.5353408f, -0.2648884f, 0.5501783f, -0.2262681f, -2.4874980f, -0.0533402f, 3.0222948f, 0.3296265f, 1.4057258f, 0.0185255f, 6.1208682f, 0.7210779f, -0.3055671f, -0.2595702f, -0.1286864f, 0.6510819f },\n", + "{ -0.2145578f, 0.4758183f, -0.1186396f, -0.6096930f, -0.1574199f, -0.1929667f, -0.6877209f, -0.2098342f, 0.0726678f, 0.1379885f, 0.0710437f, -1.1860796f, 0.6582619f, 0.2388466f, 0.0458675f, -0.0634391f, -0.1678368f, -8.2454395f, -0.6461441f, -0.2063597f, 0.0304686f, 0.0319904f, -1.0730971f, 1.1281222f, 0.1292592f, -0.3054110f, 0.7732272f, -1.0069786f, -0.0847367f, -0.2342585f, -0.1553642f, 1.5100089f },\n", + "{ -0.1022291f, 2.7367072f, -0.1738961f, -1.0328600f, -0.0864617f, -0.3224345f, -2.6092832f, -0.2382921f, 0.0578183f, 0.4115438f, 0.0121692f, -1.0689495f, 0.5158959f, 2.9600139f, 0.8839240f, -0.7147520f, -2.7168157f, 1.2148006f, 1.5884653f, -0.1227511f, 1.3176637f, -0.1335970f, -1.4691980f, 1.1131358f, -0.1302031f, 0.0779746f, 0.2622980f, 0.0837635f, 2.7756395f, -0.0315265f, 0.0868374f, -4.2980185f },\n", + "{ 0.0228074f, 2.1787968f, -0.1889012f, -0.8560471f, -0.1063542f, -0.2869910f, 0.2767612f, -0.1183861f, -0.0992468f, 2.1517978f, -0.0428540f, 1.0697522f, 1.9683092f, 2.1042306f, -0.0426359f, -0.3499008f, -0.9989156f, 0.0880459f, 2.9753070f, -0.1941337f, -3.1616704f, -0.0093505f, 1.4922180f, 2.8480091f, 0.2656264f, -0.1299839f, -1.0458518f, -1.6748481f, -3.1420829f, -0.1360553f, -0.1117443f, -1.3989290f },\n", + "{ -0.0246332f, 0.1165779f, 0.0255498f, -0.0601489f, 0.1545041f, -0.0977981f, 0.1242626f, -0.1533627f, -0.1294386f, -0.0231293f, -0.1460808f, 0.1763088f, 0.0953614f, -0.0716483f, -0.1003436f, 0.0804519f, 0.1373295f, -0.0686773f, 0.1198382f, 0.1519430f, 0.1640775f, -0.1675753f, 0.0790529f, -0.1521838f, 0.0378523f, 0.1039687f, -0.0701027f, 0.0509319f, 0.1355647f, 0.0978021f, 0.0391430f, 0.0241266f },\n", + "};\n", + "\n", + "ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_output_layer[1] = {\n", + "-0.7420582f };\n", + "\n", + "ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_output_layer[32][1] = {\n", + "{ 0.0381968f },\n", + "{ 1.0667214f },\n", + "{ 0.0505496f },\n", + "{ -1.5677565f },\n", + "{ 0.0066824f },\n", + "{ -0.9951485f },\n", + "{ 0.9438043f },\n", + "{ 0.0068631f },\n", + "{ -0.0216870f },\n", + "{ 0.6560486f },\n", + "{ -0.0235629f },\n", + "{ 0.9653404f },\n", + "{ 0.6641668f },\n", + "{ -0.5351945f },\n", + "{ -0.5303048f },\n", + "{ 1.9339687f },\n", + "{ 0.4359012f },\n", + "{ -0.7492802f },\n", + "{ -0.5728400f },\n", + "{ 0.0473893f },\n", + "{ -0.5091293f },\n", + "{ -0.1926489f },\n", + "{ -0.6562935f },\n", + "{ -0.5583456f },\n", + "{ -0.7618014f },\n", + "{ -0.0316967f },\n", + "{ 1.1637378f },\n", + "{ -0.5158406f },\n", + "{ -0.5268564f },\n", + "{ 0.0735416f },\n", + "{ 0.0270067f },\n", + "{ -0.5614370f },\n", + "};\n", + "\n" + ] + } + ], + "source": [ + "def print_formatted_weights_biases(weights, biases, layer_name):\n", + " # Print biases\n", + " print(f\"ALPAKA_STATIC_ACC_MEM_GLOBAL const float bias_{layer_name}[{len(biases)}] = {{\")\n", + " print(\", \".join(f\"{b:.7f}f\" for b in biases) + \" };\")\n", + " print()\n", + "\n", + " # Print weights\n", + " print(f\"ALPAKA_STATIC_ACC_MEM_GLOBAL const float wgtT_{layer_name}[{len(weights[0])}][{len(weights)}] = {{\")\n", + " for row in weights.T:\n", + " formatted_row = \", \".join(f\"{w:.7f}f\" for w in row)\n", + " print(f\"{{ {formatted_row} }},\")\n", + " print(\"};\")\n", + " print()\n", + "\n", + "def print_model_weights_biases(model):\n", + " # Make sure the model is in evaluation mode\n", + " model.eval()\n", + "\n", + " # Iterate through all named modules in the model\n", + " for name, module in model.named_modules():\n", + " # Check if the module is a linear layer\n", + " if isinstance(module, nn.Linear):\n", + " # Get weights and biases\n", + " weights = module.weight.data.cpu().numpy()\n", + " biases = module.bias.data.cpu().numpy()\n", + "\n", + " # Print formatted weights and biases\n", + " print_formatted_weights_biases(weights, biases, name.replace('.', '_'))\n", + "\n", + "print_model_weights_biases(model)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Ensure input_features_tensor is moved to the appropriate device\n", + "input_features_tensor = input_features_tensor.to(device)\n", + "\n", + "# Make predictions\n", + "with torch.no_grad():\n", + " model.eval()\n", + " outputs = model(input_features_tensor)\n", + " predictions = outputs.squeeze().cpu().numpy()\n", + "\n", + "full_tracks = (np.concatenate(branches['t5_isFake']) == 0) * (np.concatenate(branches['t5_pMatched']) > 0.95)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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wgsvUL9+fZycnPDy8qJDhw788MMP113HkurVq8eRI0fYunVrqW4veXl5PP/887Rp0wZ3d3e8vLzo2rUrK1eutKnc119/HQB/f3+rbkdms5nZs2fTpEkTHB0d8fPzY+TIkVy4cMGqjF69etGiRQu2bdtGt27d0Ol0jB07ttznVKls+4q9ePEiu3fvZsSIEWg0Gkt6t27diIyMtLqzvmLFCoQQjBkzxqqMMWPGkJuby9q1a4HC18rR0RGtVgtg+Szl5eUB8N5771FQUMArr7xiUx2vNHbsWP79919OnDhhSdu4cSPnz58vVTcobH198sknadasGS4uLvj5+dGnTx/++usvS55z587h6+sLwPTp0y3v/+jRoy15jh8/zoMPPoi/vz+Ojo6EhYUxcuTIUq1LmZmZTJgwAR8fH7y9vRk2bBixsbGl6rV06VK6du2KXq/HxcWFAQMG8N9//5XKt3jxYho3boyjoyNNmzbl//7v/675NSvLuXPnUBSF2bNnM2PGDOrXr4+joyObN2++pvPdbDbz8ccfW76fPDw86NKlC7/99ttVn3/+/PloNBqmTp1qSVuwYAGtW7fGxcUFV1dXmjRpwquvvlrhsSxYsICAgAD69etnlV78ufnrr7/o0qULzs7OBAcH88Ybb1ha8mx57221fPlyXFxcuPfee63Sx4wZQ2xsLDt37ix339GjR/Ppp58CWHW7OnfuHFD4+XnllVeoX78+Dg4OBAcHM3HiRNLS0q65nlfj4ODA/fffz8KFC23ucilJdUYNB0dSNarork1WVpZQq9Wib9++lrTilpOkpCTx3HPPCY1GI06cOGHZXl7LycSJE0VcXJzQ6XRixIgRNtehWPEd7gcffFBs2bJF5OTklJv3yy+/FIqiiF69eonvv/9ebNy4UcyfP188+eSTljzfffedAET//v3FihUrxNKlS0X79u2Fg4OD+Ouvv0odb3h4uHj55ZfFhg0bxIoVK4QQhXemtVqteP7558XatWvF999/L5o0aSL8/f2tWpuuZDAYhJ+fn3j44YdLbevUqZNo166d5XHjxo1Fw4YNxbfffiu2bt0qfvnlF/H888+LzZs3X/X1uprIyEgRGBgojEaj2LhxowDEtGnTSuUDRGhoqGjWrJn44YcfxG+//SYGDhxYqrVj/PjxQqfTiblz54rNmzeLVatWiXfffVd8/PHHV61HccvJ0qVLhcFgKPVTbN++faJBgwaibdu2Yvv27WL79u1i3759Qggh0tLSxOjRo8W3334r/vzzT7F27VrxwgsvCJVKJb755purPv++ffvEuHHjLHd2t2/fLmJiYoQQQjz++OMCEE899ZRYu3at+Oyzz4Svr68IDQ0VSUlJljJ69uwpvLy8RGhoqPj444/F5s2bxdatWyt+E8TVW07Wrl0rAPHHH3+U2jZ8+HARGBhoefzAAw8IX1/fUvmysrIEIF555RUhhBDR0dFCq9WK+fPni9TUVPHyyy8Lb29vkZOTI06dOiV0Op3NdS+puOWkuJXkpZdesmy7//77xa233lrmHfDjx4+LCRMmiB9//FFs2bJFrFq1SowbN06oVCrL+Z2Xl2d5LcaNG2d5/0+dOiWEEGL//v3CxcVF1KtXT3z22Wdi06ZNYsmSJeK+++6ztLIWf8c0aNBAPP3002LdunXiyy+/FJ6enqJ3795Wx/L2228LRVHE2LFjxapVq8Svv/4qunbtKvR6vThy5IglX3GZd999t/j999/FkiVLRMOGDUVoaOgNt5ycPXtWACI4OFj07t1bLFu2TKxfv16cPXv2ms73ESNGCEVRxKOPPipWrlwp1qxZI95++23x4YcfWvKU/L42m83i+eefF1qt1uqc/OGHHwQgnn76abF+/XqxceNG8dlnn4lnnnmmwmNr0KCBuO+++0ql9+zZU3h7e4ugoCDx0UcfiXXr1olnnnnG6rWo6L0vfu1saVHt0qWL6NixY6n0w4cPC0B8/vnn5e576tQpMXz4cAFY6rB9+3aRl5cnzGazGDBggNBoNOKNN94Q69evF++9957Q6/Wibdu2FbZ2FZ9H/v7+QqVSCU9PTzF06FBx6NChMvMvXbpUAOLgwYMVHrMk1SUyOLEjtgQG/v7+omnTppbHJYOT5ORk4e7uLu655x7L9qsFJ0II8dprrwmVSiUOHDhgcx2EKPxHNWTIEAEIQKjVatG2bVvx2muvicTEREu+zMxM4ebmJm655ZZyu3qZTCYRFBQkWrZsadXNJjMzU/j5+Vl1TSk+3ilTpliVsX37dgGI999/3yo9JiZGODs7W12glWXSpEnC2dlZpKWlWdKKu0AUX9QnJycLQMybN++qZV2Lbdu2CUBMnjxZCFF4QVK/fn0RHh5e6vUChLOzs1WgZTQaRZMmTUTDhg0taS1atBBDhgy55roUByfl/RQHCkLY3q3LaDQKg8Egxo0bJ9q2bVth/pLnc7Fjx44JwCqYFUKInTt3CkC8+uqrlrSePXsKQGzatMmGI7Z2teCkOHjevn17qW2PP/64cHBwsDzu16+faNy4cZnP4eDgIB5//HHL4/nz5wsHBwcBCHd3d7Fy5UohhBC33XabGDdu3DUfgxCXgxMhCl/PgIAAYTAYREpKinB0dBSLFy+2qXtO8XvXt29fMXToUEv61fbt06eP8PDwsPoOuFLxd8yV7+fs2bMFYOmaGh0dLTQajXj66aet8mVmZoqAgADLRXbx90e7du2sPjPnzp0TWq220oKTiIgISxe88pR3vhd/zl977bWr7l/8fZ2TkyPuuece4e7uLjZu3GiV56mnnhIeHh7XdExCCJGQkCAA8e6775baVvy5KT7/ij322GNCpVKJ8+fPCyEq7talVqtFnz59KqxLo0aNxIABA0qlx8bGCqBUl8grldetqzh4mj17tlV6cRCxcOHCq5a7Zs0a8dprr4nff/9dbN26VXzyySciJCRE6PV6sX///lL5T548KQCxYMGCq5YrSXWN7NYlWRFXaT729vbm5Zdf5pdffrlqs3hJL730El5eXrz88svXVA9HR0eWL1/O0aNH+eCDD3jggQdISkri7bffpmnTppauJP/++y8ZGRk8+eST5Q7oPXHiBLGxsYwYMcKqm42Liwv33HMPO3bsICcnx2qfe+65x+rxqlWrUBSFRx55BKPRaPkJCAigdevWFQ7gHDt2LLm5uVYDiBctWoSjoyMPPfQQAF5eXkRERDBnzhzmzp3Lf//9h9lstvk1K0vxQPjirkfF3STOnz9fZjezvn374u/vb3msVqu5//77OXXqlKWLU6dOnVizZg2TJ09my5Yt5ObmXlOdZs2axe7du0v9lHzeq/n555/p3r07Li4uaDQatFotX331FceOHbumehTbvHkzQKnuI506daJp06alXidPT0/69OlzXc9VkfLO4SvTrzZ4veS2CRMmcOnSJY4dO0ZCQgJ33XUX3377LQcPHmTOnDlcunSJhx9+GF9fXyIiIvjss8+uqb5jxowhISGBNWvWWAb+X9mVpqTPPvuMdu3a4eTkZHnvNm3aZNN7l5OTw9atW7nvvvss3X+u5q677rJ63KpVKwBLl8Z169ZhNBoZOXKk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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "pt: 0 to 5\n", + "93% Retention Cut: {0.7831, 0.8153, 0.8313, 0.823, 0.7426, 0.7532, 0.8392, 0.8636, 0.9172, 0.9389} Mean: 0.8307\n", + "98% Retention Cut: {0.4493, 0.4939, 0.5715, 0.6488, 0.5709, 0.5938, 0.7164, 0.7565, 0.8103, 0.8593} Mean: 0.6471\n", + "99% Retention Cut: {0.2946, 0.3312, 0.4081, 0.5213, 0.4509, 0.495, 0.6333, 0.6726, 0.7225, 0.7661} Mean: 0.5295\n" + ] + }, + { + "data": { + "image/png": "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qjZs2KA2bNigtm3bppRSKikpSQ0bNkx9//336q+//lJLlixRzzzzjNLpdOrbb7+95v63bdumRowYYXmyu2HDBnXixAmllFIPPfSQAtSjjz6qlixZoj799FPl7++vQkND1blz5yzb6NSpk/Lx8VGhoaHqo48+UitXrlSrV6++/klQ1y45WbJkiQLUokWLCswbOHCgCg4Otvx91113KX9//wLLpaWlKUA9//zzSiml4uPjlcFgUNOmTVOXLl1SY8eOVb6+viojI0PFxsYqV1fXYsd+pfySk/xSkueee84y784771Q33XRToU/ADxw4oEaNGqVmzZqlVq1apX7//Xc1YsQIpdPpLJ/vrKwsy3sxYsQIy/mPjY1VSim1Y8cO5e7ursLDw9Wnn36qVqxYoX744Qc1ePBgSylr/jWmVq1a6n//+59aunSp+vLLL1W1atVUly5drI7l9ddfV5qmqQceeED9/vvv6tdff1Vt27ZVbm5uau/evZbl8rd52223qd9++0398MMPKioqSoWGhv7nkpOjR48qQIWEhKguXbqouXPnqj///FMdPXq0RJ/3IUOGKE3T1IMPPqgWLFig/vjjD/X666+rDz74wLLMlddrs9msnn76aWUwGKw+kzNnzlSA+t///qf+/PNPtXz5cvXpp5+qxx577LrHVqtWLTV48OAC0zt16qR8fX1V9erV1YcffqiWLl2qHnvsMav34nrnPv+9K06Jav61JiAgQOn1euXh4aF69Ohhda0vSmxsrBo4cKACLDFs2LBBZWVlKbPZrHr27KkcHBzUSy+9pP7880/19ttvKzc3N9W0adPrlnbl/75cKSwsTNWoUUPVr19ffffdd2rp0qVq0KBBCrB8P0+cOKF+/fVXy3m58pqYr169euqOO+647vEJUVlJclJFFScxCAwMVPXq1bP8fWVycv78eeXl5aUGDBhgmX+t5EQppcaPH690Op3auXNnsWNQKu+H6vbbb1eAApRer1dNmzZV48ePV2fPnrUsl5qaqjw9PVWHDh2KrOplMplU9erVVcOGDa2q2aSmpqqAgACrqin5x/vyyy9bbWPDhg0KUO+8847V9BMnTigXFxerG7TCPPXUU8rFxUUlJSVZpuVXgci/qT9//rwC1Pvvv3/NbZXEmjVrFKDGjRunlMq7IYmIiFBhYWEF3i9Aubi4WCVaRqNRRUdH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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "pt: 5 to inf\n", + "93% Retention Cut: {0.6982, 0.7335, 0.7395, 0.8015, 0.7356, 0.6149, 0.6848, 0.6468, 0.7187, 0.7079} Mean: 0.7081\n", + "98% Retention Cut: {0.4488, 0.4448, 0.5067, 0.5929, 0.4836, 0.4112, 0.4968, 0.4403, 0.5597, 0.5067} Mean: 0.4891\n", + "99% Retention Cut: {0.3302, 0.3319, 0.3761, 0.4848, 0.3578, 0.2981, 0.3546, 0.3146, 0.4669, 0.4086} Mean: 0.3724\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib.colors import LogNorm\n", + "\n", + "def plot_for_pt_bin(pt_min, pt_max, percentiles, eta_bin_edges, eta_list, predictions, full_tracks, branches):\n", + " \"\"\"\n", + " Calculate and plot cut values for specified percentiles in a given pt bin\n", + " \n", + " Parameters:\n", + " -----------\n", + " pt_min : float\n", + " Minimum pt value for the bin\n", + " pt_max : float\n", + " Maximum pt value for the bin\n", + " percentiles : list\n", + " List of percentiles to calculate (e.g., [92.5, 96.7, 99])\n", + " eta_bin_edges : array\n", + " Edges of the eta bins\n", + " eta_list : list\n", + " List of eta values\n", + " predictions : array\n", + " Array of DNN predictions\n", + " full_tracks : array\n", + " Boolean array for track selection\n", + " branches : dict\n", + " Dictionary containing branch data\n", + " \"\"\"\n", + " # Filter data based on pt bin\n", + " abs_eta = eta_list[0][full_tracks & (np.concatenate(branches['t5_pt']) > pt_min) & \n", + " (np.concatenate(branches['t5_pt']) <= pt_max)]\n", + " predictions_filtered = predictions[full_tracks & (np.concatenate(branches['t5_pt']) > pt_min) & \n", + " (np.concatenate(branches['t5_pt']) <= pt_max)]\n", + " \n", + " # Dictionary to store cut values for different percentiles\n", + " cut_values = {p: [] for p in percentiles}\n", + "\n", + " # Loop through each eta bin\n", + " for i in range(len(eta_bin_edges) - 1):\n", + " # Get indices of tracks within the current eta bin\n", + " bin_indices = (abs_eta >= eta_bin_edges[i]) & (abs_eta < eta_bin_edges[i + 1])\n", + " \n", + " # Get the corresponding DNN prediction scores\n", + " bin_predictions = predictions_filtered[bin_indices]\n", + " \n", + " # Calculate the percentile cut values for the current bin\n", + " for percentile in percentiles:\n", + " cut_value = np.percentile(bin_predictions, 100 - percentile) # Convert retention to percentile\n", + " cut_values[percentile].append(cut_value)\n", + "\n", + " # Plot 2D histogram\n", + " plt.figure(figsize=(10, 6))\n", + " plt.hist2d(abs_eta, predictions_filtered, bins=[eta_bin_edges, 50], norm=LogNorm())\n", + " plt.colorbar(label='Counts')\n", + " plt.xlabel(\"Absolute Eta\")\n", + " plt.ylabel(\"DNN Prediction Score\")\n", + " plt.title(f\"DNN Score vs. Abs Eta for 100% Matched Tracks (pt: {pt_min} to {pt_max})\")\n", + "\n", + " # Plot the cut values with different colors\n", + " cut_x = eta_bin_edges[:-1] + (eta_bin_edges[1] - eta_bin_edges[0]) / 2 # Mid-points of the bins\n", + " colors = plt.cm.rainbow(np.linspace(0, 1, len(percentiles))) # Generate distinct colors\n", + " \n", + " for percentile, color in zip(percentiles, colors):\n", + " plt.plot(cut_x, cut_values[percentile], '-', color=color, marker='o', \n", + " label=f'{percentile}% Retention Cut')\n", + " \n", + " plt.legend()\n", + " plt.grid(True, alpha=0.3)\n", + " plt.show()\n", + " \n", + " # Print the cut values\n", + " print(f\"\\npt: {pt_min} to {pt_max}\")\n", + " for percentile in percentiles:\n", + " values = cut_values[percentile]\n", + " print(f\"{percentile}% Retention Cut:\", \n", + " '{' + ', '.join(str(x) for x in np.round(values, 4)) + '}',\n", + " \"Mean:\", np.round(np.mean(values), 4))\n", + "\n", + "# Example usage:\n", + "def analyze_pt_bins(pt_bins, percentiles, eta_bin_edges, eta_list, predictions, full_tracks, branches):\n", + " \"\"\"\n", + " Analyze and plot for multiple pt bins and percentiles\n", + " \n", + " Parameters:\n", + " -----------\n", + " pt_bins : list\n", + " List of pt bin edges\n", + " percentiles : list\n", + " List of percentiles to calculate\n", + " Other parameters same as plot_for_pt_bin function\n", + " \"\"\"\n", + " for i in range(len(pt_bins) - 1):\n", + " plot_for_pt_bin(pt_bins[i], pt_bins[i + 1], percentiles, eta_bin_edges, \n", + " eta_list, predictions, full_tracks, branches)\n", + "\n", + "# Example call:\n", + "percentiles = [93, 98, 99]\n", + "pt_bins = [0, 5, np.inf]\n", + "eta_bin_edges = np.arange(0, 2.75, 0.25)\n", + "analyze_pt_bins(pt_bins, percentiles, eta_bin_edges, eta_list, predictions, full_tracks, branches)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "analysisenv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/RecoTracker/LSTCore/standalone/analysis/occupancy/compute_occupancies.ipynb b/RecoTracker/LSTCore/standalone/analysis/occupancy/compute_occupancies.ipynb new file mode 100644 index 0000000000000..246d12b11e8c5 --- /dev/null +++ b/RecoTracker/LSTCore/standalone/analysis/occupancy/compute_occupancies.ipynb @@ -0,0 +1,586 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import numpy as np\n", + "\n", + "def load_root_file(file_path, branches=None, print_branches=False):\n", + " all_branches = {}\n", + " with uproot.open(file_path) as file:\n", + " tree = file[\"tree\"]\n", + " # Load all ROOT branches into array if not specified\n", + " if branches is None:\n", + " branches = tree.keys()\n", + " # Option to print the branch names\n", + " if print_branches:\n", + " print(\"Branches:\", branches)\n", + " # Each branch is added to the dictionary\n", + " for branch in branches:\n", + " all_branches[branch] = tree[branch].array(library=\"np\")\n", + " return all_branches\n", + "\n", + "# Branches relevant to the occupancy selections\n", + "mod_occ_branches = ['module_layers', 'module_subdets', 'module_rings', 'module_eta',\n", + " 'md_occupancies', 'sg_occupancies', 't3_occupancies', 't5_occupancies']\n", + "\n", + "# Root file generated with compile -d option turned on to generate relevant occupancy branches\n", + "file_path = \"occ_1000_p06.root\"\n", + "branches = load_root_file(file_path, mod_occ_branches)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "events = np.shape(branches['module_layers'])[0]\n", + "\n", + "module_layers = np.concatenate(branches['module_layers'])\n", + "module_subdets = np.concatenate(branches['module_subdets'])\n", + "module_rings = np.concatenate(branches['module_rings'])\n", + "module_eta = np.abs(np.concatenate(branches['module_eta']))\n", + "\n", + "category_numbers = np.full_like(module_layers, -1)\n", + "\n", + "# Different category masks\n", + "mask1 = (module_layers <= 3) & (module_subdets == 5)\n", + "mask2 = (module_layers >= 4) & (module_subdets == 5)\n", + "mask3 = (module_layers <= 2) & (module_subdets == 4) & (module_rings >= 11)\n", + "mask4 = (module_layers >= 3) & (module_subdets == 4) & (module_rings >= 8)\n", + "mask5 = (module_layers <= 2) & (module_subdets == 4) & (module_rings <= 10)\n", + "mask6 = (module_layers >= 3) & (module_subdets == 4) & (module_rings <= 7)\n", + "\n", + "category_numbers[mask1] = 0\n", + "category_numbers[mask2] = 1\n", + "category_numbers[mask3 | mask4] = 2\n", + "category_numbers[mask5 | mask6] = 3\n", + "\n", + "eta_numbers = np.full_like(module_eta, -1)\n", + "\n", + "# Different eta masks\n", + "eta_numbers[module_eta < 0.75] = 0\n", + "eta_numbers[(module_eta >= 0.75) & (module_eta < 1.5)] = 1\n", + "eta_numbers[(module_eta >= 1.5) & (module_eta < 2.25)] = 2\n", + "eta_numbers[(module_eta >= 2.25) & (module_eta < 3)] = 3\n", + "\n", + "# Split the arrays back into event-wise lists\n", + "split_indices = np.cumsum([len(x) for x in branches['module_layers'][:-1]])\n", + "\n", + "category_numbers_split = np.split(category_numbers, split_indices)\n", + "eta_numbers_split = np.split(eta_numbers, split_indices)\n", + "\n", + "# Add category number and eta number branches\n", + "branches['category_number'] = np.array(category_numbers_split, dtype=object)\n", + "branches['eta_number'] = np.array(eta_numbers_split, dtype=object)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "\n", + "font = {'size' : 20}\n", + "\n", + "matplotlib.rc('font', **font)\n", + "\n", + "def plot_histogram(data, title, xlabel, ylabel, occ_percentile=None):\n", + " plt.figure(figsize=(10, 6))\n", + " plt.hist(data, bins=50, edgecolor='black', alpha=0.7)\n", + " plt.title(title)\n", + " plt.xlabel(xlabel)\n", + " plt.ylabel(ylabel)\n", + " plt.grid(True)\n", + " plt.yscale('log')\n", + " # Plotting a vertical line at the occupancy value\n", + " if occ_percentile is not None:\n", + " non_zero_data = data[data > 0]\n", + " percentile_value = np.percentile(non_zero_data, occ_percentile)\n", + " plt.axvline(percentile_value, color='red', linestyle='dashed', linewidth=1, label=f'{occ_percentile}th percentile: {percentile_value:.0f}')\n", + " plt.legend()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_occupancies(branches, occupancy_variables, occ_percentiles, plot=False):\n", + " cat_eta_combinations = [(cat, eta) for cat in range(4) for eta in range(4)]\n", + "\n", + " for var, percentile in zip(occupancy_variables, occ_percentiles):\n", + " for cat, eta in cat_eta_combinations:\n", + " data_to_plot = [\n", + " occupancy for sublist_cat, sublist_eta, sublist_occ in zip(branches['category_number'], branches['eta_number'], branches[var])\n", + " for c, e, occupancy in zip(sublist_cat, sublist_eta, sublist_occ) if c == cat and e == eta\n", + " ]\n", + " data_to_plot = np.array(data_to_plot)\n", + " non_zero_data = data_to_plot[data_to_plot > 0]\n", + " if non_zero_data.any():\n", + " if plot:\n", + " plot_histogram(data_to_plot, f'{var} for Category {cat} and Eta {eta}', 'Occupancy', 'Frequency', percentile)\n", + " else:\n", + " percentile_value = np.percentile(non_zero_data, percentile)\n", + " print(f'{var} for Category {cat} and Eta {eta} - {percentile}th percentile: {percentile_value:.0f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "md_occupancies for Category 0 and Eta 0 - 99.99th percentile: 60\n", + "md_occupancies for Category 0 and Eta 1 - 99.99th percentile: 57\n", + "md_occupancies for Category 0 and Eta 2 - 99.99th percentile: 54\n", + "md_occupancies for Category 0 and Eta 3 - 99.99th percentile: 48\n", + "md_occupancies for Category 1 and Eta 0 - 99.99th percentile: 259\n", + "md_occupancies for Category 1 and Eta 1 - 99.99th percentile: 195\n", + "md_occupancies for Category 2 and Eta 1 - 99.99th percentile: 23\n", + "md_occupancies for Category 2 and Eta 2 - 99.99th percentile: 28\n", + "md_occupancies for Category 3 and Eta 1 - 99.99th percentile: 25\n", + "md_occupancies for Category 3 and Eta 2 - 99.99th percentile: 25\n", + "md_occupancies for Category 3 and Eta 3 - 99.99th percentile: 33\n", + "sg_occupancies for Category 0 and Eta 0 - 99.9th percentile: 936\n", + "sg_occupancies for Category 0 and Eta 1 - 99.9th percentile: 351\n", + "sg_occupancies for Category 0 and Eta 2 - 99.9th percentile: 256\n", + "sg_occupancies for Category 0 and Eta 3 - 99.9th percentile: 61\n", + "sg_occupancies for Category 1 and Eta 0 - 99.9th percentile: 1358\n", + "sg_occupancies for Category 1 and Eta 1 - 99.9th percentile: 763\n", + "sg_occupancies for Category 2 and Eta 1 - 99.9th percentile: 210\n", + "sg_occupancies for Category 2 and Eta 2 - 99.9th percentile: 268\n", + "sg_occupancies for Category 3 and Eta 1 - 99.9th percentile: 60\n", + "sg_occupancies for Category 3 and Eta 2 - 99.9th percentile: 97\n", + "sg_occupancies for Category 3 and Eta 3 - 99.9th percentile: 96\n", + "t3_occupancies for Category 0 and Eta 0 - 99.9th percentile: 1146\n", + "t3_occupancies for Category 0 and Eta 1 - 99.9th percentile: 544\n", + "t3_occupancies for Category 0 and Eta 2 - 99.9th percentile: 216\n", + "t3_occupancies for Category 0 and Eta 3 - 99.9th percentile: 83\n", + "t3_occupancies for Category 1 and Eta 0 - 99.9th percentile: 1032\n", + "t3_occupancies for Category 1 and Eta 1 - 99.9th percentile: 275\n", + "t3_occupancies for Category 3 and Eta 1 - 99.9th percentile: 115\n", + "t3_occupancies for Category 3 and Eta 2 - 99.9th percentile: 110\n", + "t3_occupancies for Category 3 and Eta 3 - 99.9th percentile: 76\n", + "t5_occupancies for Category 0 and Eta 0 - 99.99th percentile: 325\n", + "t5_occupancies for Category 0 and Eta 1 - 99.99th percentile: 237\n", + "t5_occupancies for Category 0 and Eta 2 - 99.99th percentile: 217\n", + "t5_occupancies for Category 0 and Eta 3 - 99.99th percentile: 176\n", + "t5_occupancies for Category 3 and Eta 2 - 99.99th percentile: 129\n", + "t5_occupancies for Category 3 and Eta 3 - 99.99th percentile: 180\n" + ] + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACEAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAoqtqDuljK0bFXA4I6jmo7iFLe3kmku50RF3MxfoB1PSgDm4fGV95Mc8+lxeW8Mc22Gcs5EkbuoAKjn92QfqK0/Dusz6rHqU0zW8iwTKsYtX8xcGFHwGwMnLGrlkbTUIPPtL6WWIHbuV+47dKSfRIbiSN2u7+Mp0EN08YP1CkA/jQG5hWnjSW7MCeRZxGYqfOe5PlIGTdsZtv8ArB02/j7VP/wl4SH7ROlrHCZpIipn+eLashHmDHykmPAHv377/wBhUgjzpsE5xu7/AJU0WSl3Bmm6jPzDn9KAOXXx026bfawAIpwqzkup2RsC4x8qkyYzn+fEtp4yuLqOKYadH5I8tZts25tzSyRfJgYYZjz16Gugi0m3gMpieZTMxeT5/vEjHP5VL9iA6Tz/APfX/wBagDmJfGM8Vlb3ohgmE0DP5cE4ZUJeFRvYgYK+Yc9On5XdL8Ty32qW1ncW0NuZ4S67ZxKWYZz93IAwM84zn14rYeyVUbE03PX5hznr2pwsVU5E0wOMZDdvTpQBy0PijULS6aK8SCUy3cioA+w7BP5IWMbfmYfeOT6evF6XXb5/DFrqRSC0N1LEpkDGRYInIBdsgcjP0GRnitZ7XbPGPtE+MMcbx149vc1J9kOMebcY9PMFA7HNXnix7C6t9Pt5odReVDi5DKPmO/Z8o+8Mpg7f0qCHxxdBED6fFcFLQTyPBOBvPll/kB5I42nGcHPpXVLZYP8ArJ+OFw44H5Ux7SL/AFbTSqdp480Ahe5HcUCOdHjeUSGM29nIUlZC8VyWWXHlcRHb8z/ven+z78WofFF2zWKy2EYOoSFLUJKW+6+G3fLwQgZ/+AkVo2elWWn2qpbSSpCz7wTPu3Me+45JJ+tOk0+2kuEuzNKZbcMoYzcR5xu46A479cUAVr7U57fxTp1nFcxtFcMySwZUsnyMwOB8w5A56Y+oqheeMng1m606CzjlaLCxsZtuW8yJCGGCQP3oIOOccZrofsfzbvMn3YxneM4o+x8k+ZPk9TvFAHNS+Lbt760s1it7eQ3UcMu6XJkzM8beWCvI/dkk8Y3D0pup6/qVtqeupBPF/oUJaCF2jwSIQ/K/fPJPTj9a6f7HyD5k+R0O8VG1tHGxklmkU9AzSAHGPX86AMvT/FP2vxINIMcLgxFvOhlyNyqhPHXaQ4w3TirWj6k91rGtWUl5FP8AZZ1EartDIpQHacehJGTV4WQX7sk44xw4qLy7dCWF0yktsJ81RlvT60AaNFUXRoZYCs0xzKFZWbIIwaKAL1FFc9rOl313qby2saiN7TynYzFd5EittwOgKhhn/aoA1tRKmymTILbQduecZ61Frv8AyAL/AP64P/KsyHR20/TJbmSRxePEI3HmF1VA5KqM+gOM1o64pGg353k/uH4wPSnHdEy2ZzPgbWrVY/7JKy/aGmdgdo2/dB659K7ivC4ppIboPEzRv5+NyMVP+r9Qa9R8J67HrWnpEn2hZYIY/MaTadxIxkHk9j1rpxNJp86ObDVk1yM6OmL/AKx/wo2N/wA9G/If4U1VbzH/AHjduw/wrlOslopmxv8Ano35D/CjY3/PRvyH+FABL/qz+FPqKRW8s/vG7dh/hTtjf89G/If4UARy/wDHzF9D/NacYmJJ8+Qe3H+FMdGNzGN7fdbsPb2qTyv9o/kP8KRTdkhEjZWyZnb2OP8ACsLWfDI1bVFuvM2J5RWRQ2DIdjqB04H7wnrzjoa21i+d/mPX0HoPan+V/tH8h/hTE3c5i48KXFxoMemtdJvV5HEw6oZC+/AxjgOAvA6dqr3HgqSSa5kjuVVZC6pGzHCqyyjcSAMtmXPOeBjPp1/lf7R/If4U2SL5fvHqOw9fpQIwr7RL86dDZ2lwSBdu+WnddkZR8AsDuOGKnGfSoY/DOpebKZtauH3SFw/mMP4XC/KMAYLKepB2iul8r/aP5D/Cjyv9o/kP8KAOZk8N6nK6kanJCotzF5cU77Vb5stk8nO4HqCCo60ybwncySXWy8XbMrJl2diF/ehVOTyAJF5/2a6nyv8AaP5D/CmpF8z/ADH73oPQe1AGVpOkXthcyyXN9Jch5mfLytwDuxheg6gY5HAqjL4bupzPKfskd09z5sU0RZREoBCkKBgtgnOcgkntgDpfK/2j+Q/wo8r/AGj+Q/woAhuf9ZB/13H/AKCaKS5Qq9t8xx5w4wPQ0UAW6Khlu7eCWOKaeOOSXIjV2AL49PWqd7rUFhdNBNDOWEQlUqAQ/wA4TaOeuWXrgc9aALGpDOnzfQfzqHXf+QBf/wDXB/5VSfWYb+3nRYmSIRBt7nGG37SjDsQR6nNW9ckQ6FfgMCfIfjPtTjuiZbM8ZH/HwP8Ar4/9p1a0bUptNuLeRLmaGEJE0vlsRlQ3OQOvGarBW+0D5T/r/wD2nUQRvs4+U/6hO3+1XrySaszx4tp3R7lp+oW2p2oubRy8RYrkqV5HXg1Ov+sf8K8o0jxTqejf6PEsclv5rjy3XHbOcjnrXp1jdrc2sU7lVaWNHK56EjOK8yrSdN+R6tKqqi8y5RTPNj/vr+dHmx/31/OsjUJf9Wfwp9RSSx+WfnXt3p3mx/31/OgBr/8AH1F/ut/SpartJH9qiO9fut3+lS+bH/fX86RT2QJ9+T6/0FPqJJY97/OvX19hTvNj/vr+dMkfTJPufiP50ebH/fX86bJLHs++vUd/egCWimebH/fX86PNj/vr+dAD6Yn3n/3v6CjzY/76/nTUlj3P86/e9fYUAS0UzzY/76/nR5sf99fzoAhu/v23/XYfyNFNuXRntgGBPnDofY0UAY3ihVlltLd7RL1ZFfEDq7qGyuJGRQQyr7jqRitKXQdPmdGeKQ+XB5CjznACZB6Z65AOevA5rH8YxzCXT7hIkaOIyeY7Qs/lggfMSqNgA4OOM4611VAGddWsNpor28C7IkAwM5/izyT1JPel13/kAX//AFwf+VTaj/yD5uvTt9ah13/kAX//AFwf+VOO6Jl8LPFx/wAfA/6+P/adQj/j3H/XBP8A0Kph/wAfA/6+P/adQj/j3H/XBP8A0KvZPFJf+W//AG3b/wBAr2rR/wDkFWn/AF7x/wDoIrxYf8fA/wCu7f8AoFdT4H16LTXW0mjmka6EKoykELkkc5PvXNiYOUbrodWFmoys+p6fRRRXnHpDJf8AVn8KfTJf9Wfwp9AET/8AH1F/ut/Spaib/j6i/wB1v6VLSKeyGJ9+T6/0FPpiffk+v9BT6ZIUyT7n4j+dPpkn3PxH86AH0UUUAFMT7z/739BT6Yn3n/3v6CgB9FFFAFa7+/bf9dh/I0UXf37b/rsP5GigDmvGgDT2C+dHGdspUsittICtvO6N+AAeOCSRVrVDqkN/5Vm99Khs8O4Vcbg65IOAN5Tf7ZxTNfgu7rW7If2dLNbwfMJFhilUE98OchgVHI7Ma6egDnILe/j0ya7u5CZXiVBG/DBQ5wWwcFtpGcAVo65v/sK/ztx5D9PpU+pDOnzfQfzFRa7/AMgC/wD+uD/ypx3RMtmeMDb9oHX/AF//ALTqEbfs4+9/qE/9CqUf8fA/6+P/AGnUI/49x/1wT/0KvYPGJxt+0Dr/AK9v/QKLedrYQTwsyyRxwsjYBwd3FIP+Pgf9d2/9AqIf8e6f9cYv/QqGhpnpnhbxZLqUqafcI8lzl8zttAOOeg9q6795/sfrXhaOyTKUdlPnPypIP3TXqa+Io9OXRrKSCSV7qCL94GHGcDnPWuCvR5X7vU78PX5o2l0N+TzPLP3O3rTv3n+xRL/qz+FPrlOsrt5n2qP7v3W9fapf3n+x+tNb/j6i/wB1v6VLSKeyIl8ze/3evv6CnfvP9j9aE+/J9f6Cn0yRn7z/AGP1psnmbf4Oo9fWpaZJ9z8R/OgA/ef7H60fvP8AY/Wn0UAM/ef7H601PM3P9z73v6CpaYn3n/3v6CgA/ef7H60fvP8AY/Wn0UAVLnfvtt23HnDp9DRTrv79t/12H8jRQBZqncarZWk8kM8+yRIvOYFT93OMjjnkgYHPI9auVlahoiajei4e6mQLD5aogXAO9XDZIzkMi+3HSgBZdQt76zuFt3ZgIkkD44IYkfzUgg1Jrv8AyAL/AP64P/Kq82l29lo0kUaB3wN8rqNznfuJJA9ST6DNTa5Gg0G/IRQfIfnHtTjuiZbM8ZH/AB8D/r4/9p1CP+Pcf9cE/wDQqnDN9oHzH/X+v/TOoQ7fZx8x/wBQnf8A2q9g8YlH/HwP+u7f+gVEP+PdP+uMX/oVTBm+0D5j/r27/wCxUYdvs6fMf9VF3/2qGCHL/rV/67v/AOgmrugszaxpu5mPNv1Of46qKzeavzH/AF79/Y1Jpt2LO6tbmQM6RLA7KDycNSkrplQdmj2t7mBnaBZ4zMvJjDjcPwqxXmWla3Yy+MLjUJ2FtBJvAEvYgL6fQ16SiwyIroqMrDIIHUV5dSm4OzPVp1FNXQj/APH1F/ut/SpartFH9qi+Rfut2HtU3lR/3F/KsjZ7IRPvyfX+gp9RJHHvf5F6+nsKf5Uf9xfypkjqZJ9z8R/Ol8qP+4v5UySOPZ9xeo7e9AEtFN8qP+4v5UeVH/cX8qAHUxPvP/vf0FL5Uf8AcX8qYkce5/kX73p7CgCWim+VH/cX8qPKj/uL+VAEF39+2/67D+Ropt0iK9sQqg+cOg9jRQBboorntZ1m6sNTa2hkiINp5oUxkmM+Yqljg8gKzHH+zQBr6l/yD5s+g7Z71Drv/IAv/wDrg/8AKsu3uNTuNOmvbplaCSPCIo25+YAMARxkAt1PDD0rS1xmOhX4KEDyH5yPSnHdEy2Z4yP+Pgf9fH/tOoR/x7j/AK4J/wChVOAPtA+b/lv6f9M6hAH2cfN/ywTt/tV7FzxrEo/4+B/13b/0Coh/x7p/1xi/9CqYAfaB83/Ldu3+xUYA+zp8w/1UXb/aoYJD1/1q/wDXd/8A0E1Cv+oX/rjD/wChVOoHmr83/Ld+3saiUDyF+Yf6mLt/tUXCxIv+uH/XST+Vey2upWVtb2FrNcxx3EsMeyNjy2RgY/GvG1A84fN/y0k7e1djr92llrOh3UwbZFbwMQvJI39q5sRHnaXqdWHnyRb9CxaapDY+Pr9r288qDEir5jnbnKcAfnXeo6yIroQysMgjuK8W1e8i1HXJruLcqSvKQGHPYV6Ymv21g2mafLFKZriGLYVAxzwM8+ornq07Wa3/AMkjppVb3T2/zbNtPvyfX+gp9RKzb3/dnr6j0FO3N/zzP5iuc6B9Mk+5+I/nRub/AJ5n8xTZGbb/AKs9R3HrQBLRWVrGvW+iRxPdRSkSEhdgB6DPrWiJGZQRGcEZ6inZ2uK6bsSUxPvP/vf0FG5v+eZ/MU1Gbc/7s/e9R6CkMlopm5v+eZ/MVmS+ILaHW49JaKb7RIAQQBt5BPXPtTSb2E2luXbv79t/12H8jRTblmL22UI/fDuPQ0UhluiiigCOeFLiFopAdjDBwcGsnWokh08xk3ExuHWARmcoCWOOTg4H4VtVFcW8F3A0NxCksTfeR1DA/gaAOZsPCPh6/sLa+js5lWdFnUNO+RuX6+hxU/8Awgfh/bt+ySY2hf8AXv0H410aqqIqIoVVGAAMAClq/aT7sj2cOyObbwNoQBZbSQuCWANw4y2Metc9a6ToE8lijaVMq3EcO8fbHPlFi4QD+8Mxtk8dvw9EZQ6lWAKkYIPeqkGk6dbGEwWNvGYAREUjA8sHrj06n86PaT7sPZw7IyP+EG0DIP2WXIYt/r36n8aT/hA/D4GPssuMBf8AXv0HTvXSUUe0n3Yezh2RwuseH9B0mRSdPlkQxyzM0d2/mKFUsx2njbwBnPVhWnBoWl69AJL21lEtsxtyn2lmC7DxgjGR36VvS6fZzXQupbWF5wnliRkBbbzxn05PHvVW8nj0Wyt4bO1hQSTLDGmfLjUtk5JA479uSR60ueW9x8kdrGf/AMILoAOfssueT/r379e9W5/DlhJLDclJXnt1AhJnYY28qPz9jVa08WQ3NuX+xyl1mFuQjoVaXPRSSMjHIYgAj34ovPFWnxq0L200xberxjZ0UyBs5YD/AJZP9eKHOT3YKEV0Kena4Ly/S3aK7jLy+VJuuDmN/wB5gAEA4IiJ5wRkcenSfYx/z3uP+/hrmo/EOgW85a10smS2BCvFCgwmJGZlJI4/dyZ75+tag8TWuImME4SeYwwNhf3rhtuAM5Hc844UmpKNH7GP+e9x/wB/DXP69rlpo97DZvLcPK6NKQLgKQFVmUYPXdsI9q6mopraC4AE8McoGcb1BxkEHr6gkfjQBippll4isle/imLRSyRlDcMQrKxRsEYyOK1hZKAAJ7jA/wCmpqWCCG2hWGCJIokGFRFwB+FSU7vYVluULyF7eynmh+1TyxxsyRLKQXIHCg+9Y2n6ul5qCW4FyBI/lu32g/JKFZim0qDgBDknvxiumkjSaJopUV43GGVhkEVXh02xt5Ulhs4I5I08tGSMAqvXAPpSGL9jH/Pe4/7+Gqb+HrCTUVv2Exuk+7J5zZHBHrjua1aKabWwmk9ysLNBIjtJM5Q7gGkJGaKs0UhhRRRQAUUUUAFFFFABRRRQAUUUUAFMlhiuImimjSSNvvI6gg/UGiigCFtPsnBDWduwKCM5iU5UdF6dB6VHNpGnTyK8tjbswfzMmMctgjJ9eGPWiigCUWNmru4tYA0hJciMZYnI59ep/M01tNs2uI5/s6CSOQygqMZcgruIHU4JGT60UUAWqKKKACiiigAooooAKKKKACiiigD/2Q==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACEAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iisXVNbk029aDyI3UweZGxlwd3mKmGGOF+cHPPQ8UAbVFc/Bq17dWdxcvD5cBTCPHyQ4Yq2D/EMjIOBxWm8GFJE11/31QBzcPjK+8mOefS4vLeGObbDOWciSN3UAFRz+7IP1Fafh3WZ9Vj1KaZreRYJlWMWr+YuDCj4DYGTljWl9mH/AD1uvzrCvbzw+bhBNrtxE8Z+7DeMi9f4gpx19aaTewm0tyC08aS3ZgTyLOIzFT5z3J8pAybtjNt/1g6bfx9qn/4S8JD9onS1jhM0kRUz/PFtWQjzBj5STHgD3799a3NneRb7e7kmjJPKOGGake1UKT5lzkkZ56/pSGc0vjpt02+1gARThVnJdTsjYFxj5VJkxnP8+JbTxlcXUcUw06PyR5azbZtzbmlki+TAwwzHnr0NbsWm28BlMRuFMzF5OfvEjHP5VL9mUdJbn86AObl8YzxWVveiGCYTQM/lwThlQl4VG9iBgr5hz06fld0vxPLfapbWdxbQ25nhLrtnEpZhnP3cgDAzzjOfXitf7KmCPMueevPX9KabVUAKyXIPC5B7Z6dKAObh8UahaXTRXiQSmW7kVAH2HYJ/JCxjb8zD7xyfT14vS67fP4YtdSKQWhupYlMgYyLBE5ALtkDkZ+gyM8VsG2Xg+bc5B4570v2U4x5txj03igDm7zxY9hdW+n280OovKhxchlHzHfs+UfeGUwdv6VBD44ugiB9PiuCloJ5HgnA3nyy/yA8kcbTjODn0rqhZgYw84wMD5hxUclpH/qzNKrbTx5gBC98dxQBzw8byiQxm3s5CkrIXiuSyy48riI7fmf8Ae9P9n34tQ+KLtmsVlsIwdQkKWoSUt918Nu+XghAz/wDASKv22lWen2Wy0kljjZi6sZ925z33HJJqQ6fbSTpdyTTNLbqyhzNxHkfNx0Bx3xnFAFa+1Oe38U6dZxXMbRXDMksGVLJ8jMDgfMOQOemPqKoXnjJ4NZutOgs45WiwsbGbblvMiQhhgkD96CDjnHGa6H7J827zLjdjGd4zikNmc5ElxkkZO8UAc3L4tu3vrSzWK3t5DdRwy7pcmTMzxt5YK8j92STxjcPSm6nr+pW2p66kE8X+hQloIXaPBIhD8r988k9OP1rp/snIPmXGR0O8Ux7aKNvMkmlU9NzSAHp6/TNAGVp/in7X4kGkGOFwYi3nQy5G5VQnjrtIcYbpxUum6nPP4n1CwNzHcW0cSyIVKko24gqSvTHAw3Jwa0hZhfuvOOMcOKj8uJT8t1IMvtOJV5b0+tAGjRVB1aGaDbLOcyBWDNkEYNFAF+oJLG0mmM0trA8pQxl2jBYqeq59Pap6qzajZW8skU11FHJHH5zqzAFUzjd9M0AMv4kj0qSONFRFUBVUYAAI4Aq1L/qzWbcalZ3tvPBbXCSuIVlO3kbSeDnp2q3qNx9k025uQu/yoy+3OM4GcUA9Di/GviB/tJ0dIWQpKhMyykZ+QtjAHv615/kmDJJJMCZJ/wB6tbWNUOsa014YRCWmC7A27pH64FZI/wCPcf8AXBP/AEKvVpQ5IJHkVp882y1b3E1re+bbzPDJ5zDfGxU42dMiuw0Hx3M4ittUVWDJERMvG0HqWyeelcWP+Pgf9d2/9ApLXon/AFwj/rTqUozWoqdWUNme52t3b31utxayrLE2QHU8HBwamrxXS9ZvdJvFltpcnzZF2SElMYJ6ZFek6B4tsdZhVXYW9xtTKysq7y390ZyeRXBVoShr0PRpYiNTTqdDTZPuj/eH86dTZPuj/eH86wNwbp+I/nTDExJPnyD24/wqXGetJsX+6PyoGnYYsbKwJmdvY4/wrA1rwyNW1RbrzNieUVkUNgyHa6gdOB+8JPPOOhroti/3R+VMkRdo+UfeHb3oBu5y9x4UuLjQE05rpN6vI4mHVDIX34GMcBwF4HTtUE/gqSSa5kjuVVZC6pGzHCqyyjcSAMtmXPOeBjNddMqiCQhRnae3tTkRdi/KOg7UBbS5z99ol+dOhs7S4JAu3fLTuuyMo+AWB3HDFTjPpUEfhnUvNkM2tXEm6QuH8xh/C4X5RgDBZT1IO0V1Oxf7o/KmSIuF+UfeHagRzMnhvU5XUjU5IVFuYvLinfarfNlsnk53A9QQVHWmz+E7mSS52Xi7ZlZMuzsQv70KpyeQBIvP+zXV7F/uj8qNi/3R+VAGLpOkXthcyyXN9Jch5mfLytwDuxheg6gY5HAqjeeGbi6/tDm1T7ZKjdWOzbn5vcnP3eB155rqNi/3R+VMdF+X5R970oAhuf8AWQf9dx/6CaKW6ADW2Bj98P5GigCzWRqeiPqN8Lg3flosPlqgjyQ29XDZz6ovGPWtGW7t4JY4pp445JciNXYAvj09amoAxZNKgsNGkRQHmx8820BnJfcenbJPFWNcjUaFfkZz5D9z6VY1LnT5voO2e9Q67/yAL/8A64P/ACpx3RMtmeMBj9oH/Xf0/wCmdQhj9nH/AFwTt/tVKP8Aj4H/AF8f+06hH/HuP+uCf+hV7Fjxrk4Y/aB/13bt/sUWzHCf9cI+31pB/wAfA/67t/6BSWvRP+uEf9aLBccrHzV/67v29jTIppIkjkjco6xQlWXgg7uopV/1qf8AXd//AEE1Ev8AqF/64w/+hUWQXZ2uh+N3tiLfVA8sQZwJgWaQkcjPPSvQEaG4t0ljJKvtYcnocV4eP9aP+usn8q1fDmuXOjzII2P2ZlieWJVXL9e56Vy1cMnrA66OKa0mew+UvofzNHlL6H8zWXo3iSw1tQsEm24wxaBvvLg4Pt6fnWvXC007M7001dDPKX0P5mmyRrtHB+8O59alpkn3R/vD+dIYyeJfs8nB+6e59KckS+WvB6DuaJ/+PeT/AHT/ACpyf6tfoKXUr7InlL6H8zTZI1wvB+8O5qWmSdF/3hTJDyl9D+Zo8pfQ/mafRQAzyl9D+Zprxr8vB+8O5qWmSfw/7woAr3KKr2xGf9cO/saKdd/ftv8ArsP5GigDE8UKsstpbvaJerIr4gdXdQ2VxIyKCGVfcdSMUmpNf2V4LXTRd/Z1swAqRb1Qh1HysRy+zfgEnoOPWLxjHMJdPuEiRo4jJ5jtCz+WCB8xKo2ADg44zjrXVUAc5DFqI02S8u5XLPCI/KkBBxvOGYDgNtxkAdfStHXN/wDYV/nbjyH6fSp9SGdPm+g7e4qLXf8AkAX/AP1wf+VOO6JlszxgbftA6/6//wBp1CNv2cfe/wBQn/oVSj/j4H/Xx/7TqEf8e4/64J/6FXsHjE42/aB1/wBe3/oFFttwnX/UR/1pB/x8D/ru3/oFJa9E/wCuEf8AWgBy7fNXr/r3/kaiXb5C/e/1MX/oVPX/AFqf9d3/APQTUS/6hf8ArjD/AOhUATDb5o6/6yT+VLbbcjr/AKmP+tNH+tH/AF1k/lS23Uf9cY/60AWLK9uLC58y0uJYXJlBZMZIzXonh/xnBqYjt7nbBckRhAxLGQsPYYHIrzJP9Yv+9L/OmIxVFZSVISDBBwR81ZVKMZrXc1pVpU3pse8/vP8AY/WmyeZtH3fvD+dcH4V8Yx28SWGossUMYk2zu7MzEN0xj0P6V3rMHjVlOQSpB/GvOnBwdmenTqRmrobP5nkSfc+6f5UqeZ5a/c6Cln/495P90/ypyf6tfoKz6mv2RP3n+x+tNk8zC/d+8KlpknRf94UyQ/ef7H60fvP9j9afRQAz95/sfrTX8z5fu/eFS0yT+H/eFAFe5377bdtx5w6fQ0U67+/bf9dh/I0UAc140AaewXzo4ztlKlkVtpAVt53RvwADxwSSK2LvWF0uYWssU8zCAOkuVzK29U29sHLLzgDms7X4Lu61uyH9nSzW8HzCRYYpVBPfDnIYFRyOzGtq50ixvLk3FxB5khiMOS7Y2k5xjOOoBz14HpQBnf2wuoWtz+5aKFYxlnyCH3FSvocEdiaua5Ih0K/AYZ8h/wCVOu7aK20Z7eCMJEigKo7cijXf+QBf/wDXB/5U47omWzPGArfaBwf9f/7TqEI32ccH/UJ/6FUo/wCPgf8AXx/7TqEf8e4/64J/6FXsHjE4VvtA4P8Ar2/9AotlbCcH/UR/1pB/x8D/AK7t/wCgUlr0T/rhH/WgByo3mrwf9e/8jUSo3kLwf9TF/wChU9f9an/Xd/8A0E1Ev+oX/rjD/wChUATBG80cH/WSfypbZWyOD/qY/wCtNH+tH/XWT+VLbdR/1xj/AK0ACo3mLwfvS/zpio3lrwfuQf8AoVOT/WL/AL0v86Yv+rX/AHIP/QqAH7W3dD1mr0Pwn4na7jFpqVzuuS0YhXyscY9QMdu9edfxfjNU1q7Ry70ZlYJHhlOCOD3rOrTVSNmaUqrpu6Pb55U8iT5h90/ypUlTy1+YdBXmPh/xZNYvJHqNzdT25jlWNOGwQ3HJ56Z716jHzGp9hXm1Kbpysz1adWNSF0J5sf8AeFMklTC/MPvCpqZJ0X/eFQUHmx/3hR5sf94U+igBnmx/3hTXlT5fmH3hUtMk/h/3hQBXuZFZ7YBgT5w/kaKdd/ftv+uw/kaKALNIWUEgsMgZPPalrn9Y0S51DUmnhW1WNrXyWLk7nIkVwrADlflIPP8AEePUA07+WKS0uIkdGdFVmUNyATwf0P5UzXf+QBf/APXB/wCVUE0k6dosmZT55RUbYTsUbywVR6DcR9Ku64mNCvzuY/uH4J9qcd0TLZnjI/4+B/18f+06hH/HuP8Argn/AKFU4b/SB8o/1/8A7TqEN/o4+Vf9Qnb/AGq9g8YlH/HwP+u7f+gUlr0T/rhH/WnBv9IHA/17f+gUWzcJ8o/1Efb60ANX/Wp/13f/ANBNRL/qF/64w/8AoVTq371flH+vf+RqJW/cL8q/6mLt/tUAPH+tH/XWT+VLbdR/1xj/AK0Bv3o+Uf6yT+VLbNyOB/qY/wCtADU/1i/70v8AOmL/AKtf9yD/ANCqRW/eL8o+9L296Yrfu1+VfuQdv9qgBf4vxmp8H3z/ANc4/wCtN3fN90dZu1SQN8x4H+rj/rQBEDgg+gmP/j1ep6V400+5sZZbwx2fk7QEaTcz56EADJ59q8s3cHgdJv8A0KnMfnPyjrD296yq0lU3N6VV01oe42d5Bf2kd1bPvhkztbBGcHHQ/SpJOi/7wrz3wBeXMuoy2z3MvkJFIVj3nauJB0Hbqa73KSKDHNvG4DKsDXn1IckuU9ClPnjzFiimeX/tv+dHl/7b/nWZoPpkn8P+8KPL/wBt/wA6a6fd+dvvetAEd39+2/67D+RoptymHtjuY/vh1PsaKALdFFc9rOs3VhqbW0MkRBtPNCmMkxnzFUscHkBWY4/2aANfUv8AkHzcgcDr9ah13/kAX/8A1wf+VZdvcanPp017dMrQSR4RFG3PzABgCMgEAt1PDD0rS1xmOhX4KEDyH5yPSnHdEy2Z4yP+Pgf9fH/tOoR/x7j/AK4J/wChVOAPtA+b/lv6f9M6hAH2cfN/ywTt/tV7FzxrEo/4+B/13b/0Ckteif8AXCP+tOAH2gfN/wAt27f7FJbAYT5h/qI+31ouFhF/1qf9d3/9BNRL/qF/64w/+hVOoHmr83/Ld+3+yaiUDyF+Yf6mLt/tUXCw8f60f9dZP5Utt1H/AFxj/rQAPNHzf8tJO3tS2wGR83/LGPt9aAGp/rF/3pf50xf9Wv8AuQf+hVIoHmL838Uvb3pigeWvzD7kHb/aoCwv8X4zU+D75/65x/1puBu+93m7U+ADefm/5Zx9vrRcLEXY/Sf/ANCpX++frD/6FRgYPzDpN2/2qcwG8/MOsPb3ovqVb3TofB11b2t3etcTxQq1tOqmRwoJ3jjmq+l6/cabpt1YWyCMyOjiZWwynA6DHt+tYhA2n5h92ft71NCB5j/N2Tt7Vm6cW231t+BSqSSSXS/4nqeg6/ZNodq17qlt9o2HzPNmUNkE9ea2F1Gxe2a5W8tzAhw0okG0H0JzjuK8MZV8pvmH+rm7f7VdBb6xbQ+GLzSmWQzy3CMrBflH3Ov5VzTw3VM6oYro0esJPDLAJ45UaEjcJFYFceuaqpqunXUyRW9/bSyFuESVWJ/AGsnRyR4FQBSR9lk5/wC+q4nwcAPFUJHJ3dP+2dYxpXUnfY2lWacVbc9Ru/v23/XYfyNFNuWYvbZQj98O49DRWJuW6KKKAI54UuIWikBKMMHBxWTrUSQ6eYybiY3DrAIzOUBLHHJwcD8K2qiuLeC7gaG4hSWJvvI6hgfwNAHM2HhHw9f2FtfR2cyrOizqGnfI3L9fQ4qf/hA/D+3b9kkxtC/69+g/GujVVRFRFCqowABgAUtX7Sfdkezh2Rzn/CDaBu3fZZc7t3+vfrjHrWVqnhzQdJlRTp8xh+zSSGRLp9wEQ3bdp65Gec13FV5rC0ubiO4ntopJogQjugJUHggH3o9pPuw9nDsjl9M8KaFfwu72EkM0MzI6i6dwGHUg5GRg+lXP+ED8PgY+yy4wF/179B071v29tBaQLBbQxwxL0SNQoH4CpaPaT7sPZw7I5z/hBdAzn7LLnJP+vfqevesjV/D+haO6j+zpZI/JaRjHdvvVY1LcqeNvAXOerCu6rI1kWttJBdGxt5ruZ1tUklAAAbPDNgnb147k470e0n3Yezh2Rj6Z4T0G+t2lawkiljlkidRdOwDBiGwcjIOPSrf/AAgnh/GPssuMKP8AXv26d6bpviSzFgEt9OaNY5fs/lwlAhlJ6LkjjnO4gA59eKnuPFtlbts8id5MuCi7ARtMgOcsB/yyf9KPaT7sPZw7Ii/4QXQP+fWXv/y3fv171j61oWh6LLCDpk7xzDasi3Tj5lBIU54AOMdc9TjgmthvGmn75ljguZTEckoq4K7XYsCSOB5Tj1yMUs2raRcyxXFxpxkM7tawSPGjGU7tpUc5GctwccBqPaT7sPZw7Iqad4Q0C/sxObGSNt8sbp9pdgGDlWwc8jKnmrZ8C6ATn7LL2/5bv26d66CGGK3hSGGNI4kGFRBgAewp9HtJ92Hs4dkc3/wgnh//AJ9Zf4v+W79+vesHVdP8M6Zq8enJZyPcPGGIF4y/NlQi4JJwc8nsBXoVQz2ltdDFxBFL8pX50B4PUc+tHtJ92Hs4dkcvp3hDw9qGnpcfYZY929GT7S5wdxDDOeRkHmrf/CC6Bkn7LLkkH/Xv1HTvXQRRRwRJFDGscaDCoowAPQCn0e0n3Yezh2RnxaNawWQs4mnW3ClNnmt0PUfrXLS2GmaJreyDTp4pyyC1lN04E7MVQjkEADfz344FdzVWXTLG4kkkms4JHkXY7PGCWXjg/kPyFTzPuPlT6FfTfK1CxtL8NPiRBKqPITtJH69aK0ERIo1jjVURQAqqMAAdgKKRQ6iiigAooooAKKKKACiiigAooooAKZLDFcRNFNGkkbfeR1BB+oNFFAELafZOCGs7dgUEZzEpyo6L06D0qObSNOnkV5bG3Zg/mZMY5bBGT68MetFFAEosbNXdxawBpCS5EYyxORz69T+ZprabZtcRz/Z0EkchlBUYy5BXcQOpwSMn1oooAtUUUUAFFFFABRRRQAUUUUAFFFFAH//Z", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACEAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAoqrqLyR2ErRMVfgBh1HIqO5iS2t5JpLudI0G5mL9B37UAYl94sks9TurIwWytG6JGzz/LtYqC7kAhAC2MHnp65FtPELP4Sh1vyIw0qodnm/Iu5wuS2PujOScdAanjt9P1uxkMN5PNbyHazRylCSO2Rg0W/h20tJEaC4vkRFCLCLp/LAxjGzO3p7UAZMfjKR0nf7Lb/AOj27ylRP81xtMg/c/L8y/u859G6ethvFQhkihl+xSSS+R5bW9xuWTzJTG20452gAn69q2/sK8fv5vl6fN0/SmPYoI+JpgBwMMOM/hQByLfENo9HF61pbO5jSYLFc5Xa0bOULEACQBenuK0JvFtxC0hayhETSSRwyNOQBslSMtJ8vyr+8B4zwDW7BpUFtbR28LypDEoVEDcAAYH6VIbIEYM8/wD33/8AWoA5i78X3NlctEtrFdFpMKy3CrFgRRuQrkDJJc4z6GrieI7i503XXijgju9PjdkTf5g4DbSxHHO3oDkdDitaezCwjE83DLj5h6gelPazCKds84ywzhuuT9KB20ucuvi69tFa1lt4bm5iUISZtrM+IzvZQvyofMwD7DjnjU1bUrm3v7K0mvoNNjlgklkuWAKmRSoCAtx/ET6kDjHNarWaj5vPnJOB9+kaz3DDSTke7g0COWufGlwb6e0tY7UeTPGvnyyYUp5wifcByvJ4J/Xu+LxtPN5mbCCBPP8AKWS4ugqp9/PmYyVPycZHVgK6Y2QOcvOc9fnHNVb7TLa7hktriafawDOouNhKg9SRg4oAwF8dzPbCZNPhLNAsiw/aDvyYlkyRt4j+fbu9e3NbdjrVxca3NpM9qiT26eZM6OSoU48sjIGdx3j28s1Zjs4IIYkjlkSLascYEgAx2ApIdMghuZ5YpJ/Pm2tK3nZJwMDr0HXA6dfegDJ0DXru9uLz7VIkiRw+c6ImDbtvdTGcck4UHnnr6iqNv46ubq1llh0+BjCsskn+kcFEjSTggHkiTGD0I59K6sWhGcS3AzyfnHNNNlhcLJOBn++Px7UAY+leIZ9T8SyWeIY7dIZj5SvukDJKEBcY+XIyQPQ1l6T4l1KW0024murZxc3ASfzHTCKY5GwoTkElQAG57V1v2TBJ82cE9TvHNMjtIWLCOWQnPzbXXr70AZmgeI/+EgsL+TCWpgIAlDh1CsgYN7YB5B9OaueGdRbVfDljeSTxzyyRDzJI8YLd+nA+lWGt0jwjTyrvOApkA3H096YkUOFWG6fBbbhZV69x9aANGiqWxobi3xNMQ0hVldsjG1j/AEFFAF2iiue1jR7y91R5reOARva+U7NIQZCJFbYQB90hWXOf4jxQBqahJG9pPErqzptLKCCV5GMio9f/AORfv/8Arg/8qzotIbTtId2kxcsio2w5ULvyFGRzgHaCew4xV/XlI0C/O9j+4bg49KqPxImXws4Lwhr8tjqQtLm8SHTzI+Q4UDOzPXr1969OjkSWNZI2DI4DKwOQQehrwoEfaB8o/wBef/QK9A8H+KRdW8dpf3EEDJHEkCjgvnIxznPQfnXXiaX20ceFrfYkdvTJf9WfqP50uw/89G/T/CmSIfLP7xu3p6/SuI7iWim7D/z0b9P8KNh/56N+n+FADLj/AFP/AAJf/QhTpPufiP51FcIfJ/1jfeX0/vD2p8iHZ/rG6j09fpS6lfZHv0H1FMMTE/6+Qfl/hTihIwXb9P8ACk8of3j+Q/wpiTsCRlWyZXb2OP8ACuf1fwx/aWrNeCQIhjwybv8AWPtKjPBwoznHIJHSug8of3j+Q/wpskQwPmP3h2Hr9KAbuc1N4Unm0e0sGu13wMSJxwVDEs+BjHHAXGMY7dKm0vwzLp17DcLcBfKwhVHfDoPN6gnGSZFPttrofKH94/kP8KPKH94/kP8ACgRyf/CN6zOZHfU5YA1wz+Uk7ZZd8hUludpAZMADHyj8LMnh3UPLlWPUnDyxsvmmV8xuXY5AzjkFV9gvFdH5Q/vH8h/hTJIhgfMfvDsPX6UAc1L4VvJrUpJqDyMduVkmdlKgAheMfxAc4zTj4Y1D7Yk66kyL5290jcrkbiRzg5wDjHfJrpvKH94/kP8ACjyh/eP5D/CgDK1LSZ7+wtLcGINFKkjSMzMV2sDxnlunQmqMXh26tzbeV9lEcN8LhIyWbyk27SFYjOTkn0HSuj8of3j+Q/wpjxD5fmP3h2H+FADJv+Pm2/67H/0BqKJk23Fp8xI808cf3GooAtUVDLd28EscU08cckufLV2AL49PWsTWNP1C51R5LSN/Ke18t28/aHIkVtuM8ZUMN3+1QBrakQbGUZ5wDj8RUOv/APIv3/8A1wf+VZkOky2GmyXUsshvJI0icM+9VQPlVGfQHGfxrR14MNAv8vkeQ/GPaqj8SJl8LPGh/wAfA/67n/0XTbeaS3EU0TbZI4omVsZwQ1PBX7QPl/5bnv8A7FRAr9nHy/8ALGPv/tV67PGR6j4U8UjU8WN00sl6C5MhRQpAPt7Edq6iX/Vn6j+deFq2J+Mg+a/IbH8Nd94Z8X/bYY7O/ljjmKxLAEiY7s8cnnuB6VwV6HL70dj0KGIUvdludzRTNr/3/wDx2ja/9/8A8drlOsbc/wCp/wCBL/6EKdJ9z8R/OorhX8n7/wDEv8P+0KfIr7fv9x296XUr7JLRTNr/AN//AMdo2v8A3/8Ax2mSPpkn3R/vD+dG1/7/AP47TZFfaPn/AIh296AJaKZtf+//AOO0bX/v/wDjtAD6ZJ90f7w/nRtf+/8A+O02RXwPn/iHb3oAlopm1/7/AP47Rtf+/wD+O0APpkn8P+8KNr/3/wDx2mOr/L8/8Q7UANuP+Pi0/wCup/8AQGops4YXNplsjzT2/wBhqKAMXxQolltLd7RLxZFfEDq7qGyuJGRQQyr7jqRiuhhhjt4EhiXbHGoVRknAHTrXMeMY5hNp9wkaNHEZPMdoWfywQMMSqNgA4OOM461Z1iPVG1R/sSXZha1wxSQBciRSQuTw5TeM47jmgDW1IZ0+X8P5iodf/wCRfv8A/rg/8qzIrG8t9Ne8upW+0PEsZjfkhQ/G4g8ttIGf51o68H/sC/yy48h+g9vrVR+JEy+FnjQ/4+B/13P/AKLqEf8AHuP+uMf/AKFU42/aBwf9ee/+xUQK/Zxwf9TH3/2q9c8YkH+u/wC2z/8AoNNgZlCMrFWEcJBBwRyaeNvndD/rX7/7NMi27V4P+qh7+5oYI7Xwz4zNoI7LUWVbZTIBMd7uSCSM9fevQ45FliSRDlHUMp9Qa8JXbvXg/wCtk7+xrpPDvjC705ooLmUy2ziHc87M5jU8HAFcdbD396B20MRb3Znp9z/qf+BL/wChCnSfc/Efzqml5Hf6elzazJJC7Da2wjOGwevuKtSCTZ95eo/h9/rXF1O/7KJaKbiT+8v/AHz/APXoxJ/eX/vn/wCvQIdTJPuj/eH86XEn95f++f8A69MkEm0fMv3h/D7/AFoAlopuJP7y/wDfP/16MSf3l/75/wDr0AOpkn3R/vD+dLiT+8v/AHz/APXpkgkwPmX7w/h9/rQBLRTcSf3l/wC+f/r0Yk/vL/3z/wDXoAdTJP4f94UuJP7y/wDfP/16ZIJPl+ZfvD+H/wCvQAy4/wCPi0/66n/0BqKbOG+02mSCPNPQY/gb3ooA5vxmA9xp6edHGdspUsittICtvO6N+AAeOCSRXWRoUiVC7OVABdsZb3OMCua16C7utbsh/Z8s1vB8wkWGKVQT3w5yGBUcjsxqbWJdTTVHSy+2GJrXLbIwVUiRc7SR9/ZvwPpQBral/wAg+XOO3X6iodf/AORfv/8Arg/8qzYIdQj0yW7vJC0kkaII3yCAH4LYON20jOAK0Ne3/wBgX+QuPIfp9KqPxImXws8aH/HwP+u5/wDRdQj/AI9x/wBcY/8A0Kpxt+0Dr/rz/wCgVENv2cfe/wBTH/6FXrnjEg/13/bZ/wD0GmRfdT/rlD/M1INvnd/9a/8A6DTItu1fvf6qH+ZoYIVfvr/11k/kajX/AFS/9c4P/QqlXbvXr/rZP5GmLt8tev8Aq4P/AEKmBcsdXvdKmMtpNtJaQEMNwwGB6fhXrWla1aa1Z+ZayFyhQPlCvJwe9eMvtx3+9L/OpIiFcMrMGCxYI4Nc1Wipu+zOmlXdOKT1R7vRXmPhrxfJp7eTqFxNJaqkgjXywxBD+vXpnqa9Gt7lbqMSQSRSL6q2cVxVKcoOzO6nUjUV0WKZJ90f7w/nR+89F/OmyeZtHC/eHf3rM0JaKZ+89F/Oj956L+dAD6ZJ90f7w/nR+89F/OmyeZgcL94d/egCWimfvPRfzo/eei/nQA+mSfw/7wo/eei/nTZPM+XhfvDvQAy4/wCPi0/66n/0BqKbPv8AtNpu24809P8AcaigC1RRXPaxqN/a6o8Nq0pRrXfhbcuIz5igsCBydhY7f9npQBral/yD5fw7+4qHX/8AkX7/AP64P/Ks+CTUX0qW7uxkSxoqqxKnIdhuK4+XKlTj+VXteL/2Bf5VQPIfv7fSqj8SJl8LPGh/x8D/AK7n/wBF1CP+Pcf9cY//AEKpxt+0Dk/689v9iogF+zjk/wCpj7f7VeueNYkH+u/7bP8A+g0yL7qf9cof5mpAF87qf9a/b/ZpkQXavJ/1UPb3NDBIVfvr/wBdZP5Go1/1S/8AXOD/ANCqVQu9eT/rZO3saYoXyl5P+rg7f7VMLCP0/wCBS/zp8fUf7sVNcLjqfvS9venx7cjk/di7VPUq3ur+uwwf0m/9CrT0TW7nRbqN4pJPs+6IyQoQA+eOazgF9T0m7f7VJheOT/yx7e9EkpKzFFuLuj0DSvHyz6lKNRMdvaEP5QWNmYEMBgkZ7Z7V27kMgIORuH868HO3Y3J+7P2/2q0dN1S60y7EltO4Cuh8sk7CdvdQea5amGT1gddLFNaTPaqK4zSviBa3CpHfxmGUqcuoJViDg4AyR+NdS9/BHdLavPbrcMMrEZQGP4fga45QlF2aOyM4yV0y1TJPuj/eH86Myf3V/wC+v/rU2QyYHyr94fxe/wBKkslopmZP7q/99f8A1qMyf3V/76/+tQA+mSfw/wC8KMyf3V/76/8ArU2QyfL8q/eH8X/1qAGXH/Hxaf8AXU/+gNRTZy/2m0yoA809Dn+BqKALVFFc9rGs3Vjqj20MkRBtfNCmMkxnzFUucHkBWZsf7NAGtqQzp8o+n8xUOv8A/Iv3/wD1wf8AlWXBPqdxp0t7eFWgkRQiKNufmADYI4zgt1P3h6Vpa8zHQL8FCB5Dc5HpVR+JEy+FnjQ/4+B/13P/AKLqEf8AHuP+uMf/AKFU4A+0D5v+W57f7FRAD7OPmH+pj7f7VeueMSD/AF3/AG2f/wBBpkX3U/65Q/zNSADzvvf8tX7f7NMiA2r8w/1UPb3NDYIVfvr/ANdZP5Go1/1S/wDXOD/0KpVA3r83/LWTt7GmKB5a/MP9XB2/2qdwsI/T/gUv86fH1H+7FTXAx97+KXt70+MDcPm/hi7VPUq3ur+uwwf0m/8AQqPT/tj/ADpwA/vDpN2/2qQAcfMP+WPb3p3JsNb7jf7s/wD6FUqf61v96P8AlUZA2N8w+7P2/wBqpUA80/N/Enb2ouFiDcVjLKSCIpiCO3zVaurq4u7syXM8kziSMbpGLHGOlVmA8lvmH+qm7f7VSsB57fN/y1j7e1Ggand6H4306z0qzspYLtpUQqWVVI4OP73vXSz6/aprsejmOb7QxUhgBs6buuc9B6V5BbAedD83Z+3+2K7y8J/4WXbnHOV4/wC2Zriq0Yp6dmzupVpNa90juqKr3V2LS0muZI28uJC7YxnAGayh4qsjpB1Pyp/IEvlY2jdu+mfeuVRb2OtyS3Zu0yT+H/eFZGi+JrTXmkW0inBRQx8wAcEkevtTn1+2OuLpHlTfacg5wNv3d3XPpRySTtYFOLV7mhcf8fFp/wBdT/6A1FNnZjc2mUI/env/ALDUVJRaooooAjmhS4haKQEqw5wcVk63EkWn+UxuJjcOsCxmcoCWOOWwcDr2raqK4toLuBoLmGOaJuqSKGB/A0AczY+EPD19Y217HaTKs6LOoad8jcv19DU//CB+H9u37LJjAX/Xv0HTvXRqqooVVCqowABgAUtX7Sfdkezh2Rzn/CC6BnP2WXOS3+vfqeD3rnr7SNEspbiBdJkcwlVV0vX2kKjybSSOGCpnHP3l55r0SqR0fTWEoNhbETP5kgMQIdsk7j6nk8+9HtJ92Hs4dkclpGheHtVuZY106aNVDSRsblyWG90JIz8pyp454P4Vrf8ACCeHwMfZZcYA/wBe/bp3rehtLa3lllhgijklOZGRAC59z3qaj2k+7D2cOyObPgTw+etrL1J/179+veuWuIfDCXt7a22nyStaEbmW9YEqiuzcZOMeWwAPX2HNem1ka2LWIQbrC1uJrmdIlM4AUMAzAscHoAwHu2O9HtJ9w9nDsjntJ8P+HtUmnQadNEEXehNy53IzuuSM8HMZ457Vqf8ACCaB/wA+svb/AJbv26d6ZpniGweFri20xo5J5xFJ5XlgSTY3HkkZGMnccA9uTU9x4vsLc48md2G4sF25UL5mScsP+eL/AKUe0n3Yezh2RH/wgnh/GPssvRh/r379e9cu8Hh0+cYtLuN0cjthrqRS0ce/c/Ix/wAs2AAzn1FdUfGVgZZkjguZPKY7ioXGwBiXBJ5Hyt78dKYL/RJmhL6Uv+mz5hZooz5zhgN3XIOGZucHAY0e0n3Yezh2Rl6T4d8ParJPH/ZssSom5CbpzvjZ3Xnng5jPHPbmtY+BtALZ+yy5yD/r36jp3rdhtLe2eV4IIomlbfIUUAufU+pqaj2k+7D2cOyOcXwNoCMCttKCM4/fv3OfX1rCfUdPm1eW7Nhc/ardmfzvtTAmJCylgCMHocAZBz97IOPQKpf2Rpu4t9gtdxk80nyl+/8A3unXk8+9Jzk92NQitkZmmzw69DcwSrcJGY1baZyd8b7gM4xg/Kcjt61OPC+lixNkEm+zF/MMfnNjd69c1pwWlta+Z9ngii8xi77EC7mPc46mpqSbWw3FPcwY9AsNBs7m402GVZFiJ2faGAbGTjJzj8qw5rrT11SLUFs7n7S/lqsv2ogmV41IUjGAu1gC36V280MdxC8M0ayROCrIwyGB7EVVGkaaq7RYWwHleTjyh/q/7v09qOZ73DlW1jG0vWY77UoIzBOBuaMM8+7bKEywxjlcE4b9KK3YtPs4JlmhtII5FjESukYBCD+EH09qKQyzRRRQAUUUUAFFFFABRRRQAUUUUAFRzQRXETRTxJLG3VHUMD+BoooAifT7KTdvs7dtyhWzEpyB0HToKjl0jTppllksoGdX8zPljlsEZPqeT19aKKAJVsbNWdltYAZCS5EY+Ynrn16mm/2bZ/aY7gW6LJG7SKVGBvYYLEDqcEjJ55PrRRQBaooooAKKKKACiiigAooooAKKKKAP/9k=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACEAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iisrUNaGn3bQPau+YRJGysPnYuqbfbl15oA1aK5+PXJ72G6Y2s1tCiAJN1y+7awyOOGyPwJ44rRnWOCB5Xu7hFQZZixwB+VAGNf+LHstTurIwW4aNkWNnn4wzIpdyAQgBfoeenY5FqPxEz+Ek1vyI9zgfIJfkGX27i2PujqTjoDUwh0/VrOQR3k80Mnyu0UrAnHbcuD+tNt9BsrSSNoLjUI0jXYsQuJPLAxj7n3f096AM2LxjJIszfZbf8A0eCSUqJ8m52tIv7nj5h+7zn0YVMfFYheGKY2UjzeT5bW9xuSQvN5ZCnHO0EE/XtWubaMOgE9xwDjnp9OKcLSIYxNOMdPb9KAOSb4hOmkfbDaWzuY45VWO5yuGR2KMxAAcBOn+0KuyeMLiNpGNjEISzrC7TEY2vGpaT5flX95kkZwFNblvptra20dtA86QxqFRATgADA7UkEKyK+64uDh2HXtn6UDtpcwL3xhc2M7RrbRXTMwCslwqxf6tXIVyByc8Z9D6Vft/EU13DrKrFBHc2KM0aeZvGPm2liOOdvQHI7++r9li27fOnx6dv5UC2jGcT3AzycE8/pQI5WPxhfWdp5VxBDdXUcOW/fbXd/KWTcVC8Rndtz61satqN1bXWn2017BpyTRyPLckBlDrtwgLcDO5jzzhDitFLdGRWM9xkqMnP8A9alNqsgI824Ye7f4igDl7vxncC8ns7VbUmJo8XEsmEKiaOOQso5UfvMgnjAzyKlTxpPJNOn2CGJFuPIWWa5VVQhyuZAMlQcZHHOQK6JrPIP7yfJ65Ycj8qiutLgureSKeS58twN5WYoSB/tDB/WgDnF8eStZC5FhCSbbzRCLg7yfIMu4Db/q+Nm717Vt2mtXUmunR7i0RLiNPOkdHJQREAKwJAyS25cf7BNWbeytoYooLeV1RIwI0WQcIOBj2pkdhbRXVxdpPMJHAWZzPn7vQc9AMk446k96AKunapPL4m1Cxa5jnto4hIhXaxQ7iCp29McDDcnBrIg8dXF3DI1tYQOyFmy0+FMYiMgPAJDYGMHpnn0rqhabScSTgnk4cc0CzA6STj/gY/woAxNN8STan4ljtFEMVv5U5MW/MuUaMAsMfKDuJHPIIrNsfEmpyRRytdWzF9Q8iQTOgWOPdIOAvzKflUfN3rrFtCCT5s+Seu8dPypj2sMQLPK6bjyS4Ge//wBegDM0TxOutR6lkR2y2qK6z7wyhGDEMw/hI2kkHHvirXhrUJtT0x7mS4S4iaVhBKAAzx8YLAcAnnjjjGQDmrhs8KwEk4z/ALY5/SoxHbwrj7WyDdtx5qj5vT60AaNFUHUwzQbZpyTIFKscgjBooAv1TuNKsbu4NxcWySSmIxFm5+Q8kfnVysjUtabTrxoGtd4MIkjYSY3MZFTaRjgZdeee/FAFi9t4rfR3ggjWOJFAVVGABkUmu/8AIAv/APrg/wDKs9dWmvrO5eW2MVvsAVlBOHDbWUnvyOCO3XFXtccHQb8Yb/UP/CfSnHdEy2ZyvgbXI1b+x/Ife0rt5uRj7oPT8K7yvD7S5ubG+E9rMYpRMQGUjODH716r4d1621bT4gkzy3EcKGYmMj5iOT09Qa6cTTtLmXU5sLVvHle6Nhv9an0NPqJpB5qcN0P8Jp/mL6N/3ya5TrHVBa/dk/66N/OpfMX0b/vk1XtZBtk4b/WN/CfWl1H0LVFN8xfRv++TR5i+jf8AfJpiEi/1SfQUhUvuAdk56rj096SKQeUnDdB/CaUsh6qT/wAAP+FADTC2P9fL/wCO/wCFRahZC+0y4s3O4SoV5bHPbkD+lSyGPaPkP3h/AfX6U7Mf9w/98H/CgbdzmLDwpcWF7aXaXSNLAHd93SR234XAHCjzOg44HAqvN4Jkea5eO4RVlEiJGWOEVlcbsjGWy/fPA611+Y/7h/74P+FMynmj5D93+4aBGHqGi6g+nW9naXLYF1I5dpnGyMrJtBIO47Sy8Z7CoE8M6kZJjLrVwxaRnV/MYdVcKdowBtLLxkg7BXTZj/uH/vg/4UZj/uH/AL4P+FAHMyeG9SlmDDUnhj8ny/Kinfah5zgnk5yDnIII702Xwncu9ztvF2zZGXZ2O3EiqpyeQA689flrpkKfN8h+8f4DTsx/3D/3wf8ACgDI0jSL3T5pHub6S63SM+55W6HOML0HUccjjiqNt4S8ozo8sbW8tzFJ5RG7akZLAA4HzEkAk84GMmujcx7G+Q9D/Af8KVTHtHyHp/cP+FAEVz/rIP8AruP/AEE0Ulyy77YAEfvh/CR2NFAFuqk+mWNzcGee0hllMZiLugJKHqv09qllu7eCWOKaeOOSXIjV2AL49PWsvVdck02+aDyInU2/mITIQd3mKnzDHC/ODnnoeKALd9BFDpDwwxrHEigKijAABHQCk13/AJAF/wD9cH/lWbHql5f2U881qsdmYgEeNtxaQOVbHfbwMcdOe9aGuODoV+MN/qH6j2px3RMtmeMj/j4H/Xx/7Tra8Ja7NpFzHFHFE6XCxK7OSNo3EcfnWMF/0gcj/X+v/TOoQv8Ao4GV/wBQnf8A2q9ecVJNM8iEnFpo94DrI6MjBl55ByKlrzXwr4nTTHFld+TFZrI+JArFskZ6D/CvRYriOaJJY9zI6hlIU8g9K8qpTcHZnq06inG6Jar2v3ZP+ujfzqXzB/db/vk1BayDbJ8rf6xv4fes+pr0LVFM8wf3W/75NHmD+63/AHyaYgi/1SfQU+oopB5SfK3QfwmneYP7rf8AfJoAWT7o/wB4fzFOqKSQbR8rfeH8J9ad5g/ut/3yaAH0z/lsP92jzB/db/vk03zB5w+Vvu/3TQBLRTPMH91v++TR5g/ut/3yaACP+L/eNPqJJB83yt94/wAJp3mD+63/AHyaAFf/AFbfQ0q/dH0pjyDY3yt0P8JoWQbR8rdP7poAiu/v23/XYfyNFNuXBe2GG/1w6j2NFAGN4oVZZbS3e0S9WRXxA6u6hsriRkUEMq+46kYraXTLFAg+yQkpF5KsyBm2f3cnnHtXP+MY5hLp9wkSNHEZPMdoWfywQPmJVGwAcHHGcdau6trsum6g1uFt2BtvNTc5BDeYqZb/AGRvzn2NAGhqEaJpUkaIFRVAVVGAACOgFM13/kAX/wD1wf8AlWbHqN3fafLczRAWjRAApg5kDlSVOclTjPNaGuPnQr8bWH7h+SPanHdEy2Z4yP8Aj4H/AF8f+06hH/HuP+uCf+hVOF/0gcj/AF//ALTqEL/o4+Zf9Qnf/ar2LnjWJh/rj/13b/0CvQPCHi1bmCOz1GWGKQRwpbqiMC2QRz19B6VwAX991H+vb/0CokysSlXAIihwQcfxVnUpqorM1pVJU3dHvdV7X7sn/XRv51x3hTxVZw2senXbujq8n7+WQbepOMk56V11nMrxM6AsrOSGHIIzXmTg4Ssz1YTU4XRbopnmf7D/AJUeZ/sP+VSMIv8AVJ9BT6iif90nyP0HaneZ/sP+VACyfdH+8P5inVFI/wAo+RvvDt707zP9h/yoAfTP+Ww/3aPM/wBh/wAqZv8A3w+Rvu+lAE1FM8z/AGH/ACo8z/Yf8qACP+L/AHjT6iR/vfI33j2p3mf7D/lQAr/6tvoaVfuj6VG8nyN8j9D2pVk+UfI/T0oAiu/v23/XYfyNFNuXy9sNrD98Oo9jRQBznjQBp7BfOjjO2UqWRW2kBW3ndG/AAPHBJIrp1tIsKZEWWQJsMsigsw9yB3/Kuf1+C7utbsh/Z0s1vB8wkWGKVQT3w5yGBUcjsxqxrGvS6bqLWytakG181Q5IZD5iqWbn7oDZ7fdPNAGnqKAaZKiqAoAwAOmCKj13/kAX/wD1wf8AlWZDf3l7ps11cR/6M0ahNmCrtvILLznacA856/no64xOg342MP3D88elOO6Jlszxkf8AHwP+vj/2nUI/49x/1wT/ANCqcKPtA+Yf6/8A9p1CFH2cfMP9Qn/oVexc8axMP9d/23b/ANAqFf8AUr/1xh/9CqcD9994f69v/QKhVR5K/MP9VD/6FQFh6/61f+u7/wDoJrq/CPi64tRBZ3m64SURKrs4URAsV9Oe35VyyqPNX5h/r3/kahjUG1Qbl/1Uf/oZrOpCM9Ga0pygm15fqe9o6SKGRlZT0KnIp1eT6J4svtGAt1EU1qHkCxH5cHrnOCfWvSNM1m01a3EtpIsuFUuEOdpIzivPqUpQeux6NOtGotNy7F/qk+gp9RROfKT923Qen+NO3n/nm36f41kaiyfdH+8P5inVFI52j9233h6ev1p28/8APNv0/wAaAH0z/lsP92jef+ebfp/jTd584fu2+77f40AS0Uzef+ebfp/jRvP/ADzb9P8AGgAj/i/3jT6iRz837tvvH0/xp28/882/T/GgBX/1bfQ0q/dH0pjufLb923Q+n+NCudo/dt09v8aAIrv79t/12H8jRTbliXthsYfvh1x6GigC3TSiFtxVScYzjtTq5/WNdn07U2to5LYg2vmhWB3IfMVSx55UBi2MD7p59ADV1Jc6dKAOw4H1FRa7/wAgC/8A+uD/AMqzYb28u9KmurmMNBJEgTZgAsHYFgDzgjYwyTWhrjE6FfjYw/cPzx6U47omWzPGR/x8D/r4/wDadQj/AI9x/wBcE/8AQqnAH2gfMP8AX+//ADzqEAfZx8w/1Cev96vYPGsTD/Xf9t2/9AqFf9Sv/XGH/wBCqcAed94f69v/AECoVA8lfmH+qi9f71AWJF/1yf8AXd/5GoY/+PVP+uUf/oZqdQPNX5h/r39fQ1DGB9lT5h/qo/8A0M0nuUvhfyJB/rR/11k/lV3Std1HR0/0G4EaskJZSgYNyRznnpVMAeaPmH+sk9fSmKB5Y+Yfcg9f71DSkrMUW4u6PYvDeqjU9KhaaeFrr5t6IQCAGIHGeOMVs14XE7w3G6KZo2Ly5KMVPX2qzp2tX+nSxTRXkrBRCzRtK21+cHI75rjlhXumd0cWtpI9pk+6P94fzFOrJ0fU5dU0aC8lhCu7HIQ8cPjv9K0UnWUExjeB12sD/WuRpp2Z1ppq6JaZ/wAth/u0b2/55t+Y/wAabvbzh+7b7vqP8aQyWimb2/55t+Y/xo3t/wA82/Mf40AEf8X+8afUSO3zfu2+8e4/xp29v+ebfmP8aAFf/Vt9DSr90fSmO7eW37tuh7j/ABoV22j923T1H+NAEV39+2/67D+RoptyxL22UI/fDk49DRQBboorntZ1m6sNTa2hkiINp5oUxkmM+Yqljg8gKzHH+zQBramN2nTDHYfzFRa7/wAgC/8A+uD/AMqyoJ9SuNNmvbsq9vIgCIq7c/MAGAI4zgt1P3h6Vp64zHQr8FCB5D85HpTjuiZbM8ZH/HwP+vj/ANp1CP8Aj3H/AFwT/wBCqcAfaB83/Lf0/wCmdQgD7OPm/wCWCdv9qvYueNYmH+u/7bt/6BUK/wCpX/rjD/6FU4A8773/AC3bt/sVCoHkr8w/1UXb/aoCxIv+uT/ru/8AI1BH/wAeqf8AXKP/ANDNWFA81fm/5bv29jUMYH2VPmH+qj7f7ZpPcpL3X8iQf60f9dZP5Uxf9WP9yD/0KpAB5o+b/lpJ29qYoHlj5h9yDt/tUyR4/wBeP9+b+dRr/q1/3IP/AEKpQB5w+b+OXt71GoHlr8w+5B2/2qEFtS5ZapfWDsbW6kjz5wIzkYznoeKt6V4jvNHsJ7azVEaYxEy4+ZSeDgdKywBu+93m7U0AcfMP+WPb3qHCL3RanJbM9TtPE8dj4bsLzU2llluN43IgycMevQdMV0YIaRSOhXNeS3urW13oGnaegkEtsZizMPlPJ6fnXq0bNlP3Z+56ivPrQ5de9z0aNTm07WLFFRSTGKJ5GjbaqljgjtXP2PjbTdQvo7OGG5EkjBRuUAZIz61motq6Rq5Ri7NnRR/xf7xp9Vnn8iCaZ422xhnOCM4AzVbSNag1q2ee1ilCI+w7wAc4B9felZ2uO6vY0H/1bfQ0q/dH0pjs2xv3Z6HuKzH8QW0OsxaS0U32hwCCANvIJ659qEm9gbS3L139+2/67D+RoptyzF7bKEfvh3HoaKQy3RRRQBHNClxC0UgyjDBwcVk61EkOnmMm4mNw6wCMzlASxxycHA/Ctqori3gu4GhuIUlib7yOoYH8DQBzNh4R8PX9hbX0dnMqzos6hp3yNy/X0OKn/wCED8P7dv2STG0L/r36D8a6NVVEVEUKqjAAGABS1ftJ92R7OHZHnN7puiWd5PC+kTrNG7NEjXbr5qBGYyZIwBhCAATyRnHWt+HwR4dmt45EtJQjopAM79Oo71tyaTp0plMljbOZWDSFogd5HQn16n86uUe0n3Yezh2Rx+qeFND02zF0mnyS7ZUDD7U643MFJHXPXpWLPp3h+3mlgXSJnwXWEG9YBliMm7P93mJsdc5HI7eh3dnbX8Bgu4I54iQSkihhkdODUT6Tp0vm+ZYWzeawaTdEp3kdCeOaPaT7h7OHZGJD4K8PTwxzpazAOPMGZ3z8w+tUL7wvo1ndG2i0iW4Js3njC3bhnaMrhMf8DGDn8K7asfW1tYTBcPY2891K4tY3mwAofOQWwSBx07nAo9pPuw9nDsjlbLSvD9zfW1t/Z0xLt5byfapMpKRISu0gH/lkwJ4we1b3/CCeH8Y+yy4wo/179uneoNP1rTGjS4h0dUmgf7IrRCPAcn7qMSDt5zuwAc+pxVy48W2Vu2zyJ3ky4KLsBG0yA5ywH/LJ/wBKPaT7sPZw7I5i80vQ7WS4Q6TIxgd8vHeuVKhS78kfewOV/wBrqOcXtJ8PeHtUlmQadNEEVJEP2pzuTc6qTzwcxtxz25qc654cBnii0nzQkvnMFgTDHEjGQZIH/LOTPfP1rRg1vTLYiSGxeEXlw0aOiIPPkDbexzk/MeccKTR7Sfdh7OHZFe48FaDBbyTLanKKzfvLp0Xnk5OTge+KgOttEIpZrW8hSW3DQ752xI5P3QdvHGDkkHBziuruLeG7t3t7iJJYZBteN1yrD0INV/7J0/OfsNuT5Zi5jB+Q9V+ntUuTe7GoxjsivYqmpaeJXa4TcXjdPOJAKsVYA9xkHmsW+0DSPD6xajb2MzskihmW4cFB03dxxnvge9dXDDFbwpDDGscaDCogwAPYUy4s7a78v7RBHL5bbk3qG2n1GaFJrYbinujkRr8U0ZikgumSVBK4N10gfYAen3v3g+X689K6Gx0Kz02ForMzxRs24gTMcnGO59hU40nTl24sbYbZPNXES8P/AHunX3q5Rd2sFle5zmrXs9heC0itru4aWIvGyTsCSCAR93GQCTxk4HSqVg2mapr8M6wzNKU/d3QuW5YRoxG3A4xKOT78Diulm0ywuZXlms4JJHXaztGCSPTP4D8qfFY2kE3nQ2sMcuwR70jAO0dFyO3A49qE2tgaT3EFmgkR2kmcodwDSEjNFWaKQwooooAKKKKACiiigAooooAKKKKACmSwxXETRTRpJG33kdQQfqDRRQBC2n2TghrO3YFBGcxKcqOi9Og9Kjm0jTp5FeWxt2YP5mTGOWwRk+vDHrRRQBKLGzV3cWsAaQkuRGMsTkc+vU/maa2m2bXEc/2dBJHIZQVGMuQV3EDqcEjJ9aKKALVFFFABRRRQAUUUUAFFFFABRRRQB//Z", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACEAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiue1nTL+71R5bWMCJ7TynYzFd5Eittx2yoZc/7VAHQb1LlNw3AZIzzilrm7bSJNK06a78+RL2RAr7X3Ko3cAZHOFwufb3rUuLcW9vJNJfXKIi7mYuMADr2oAx7/wAWPZandWRgtw0bIsbPPxhmRS7kAhAC/Q89OxyLUfiJn8JJrfkR7nA+QS/IMvt3FsfdHUnHQGpYrWx1qxkMOoXE0Eh2O0cu0kjtkAGi38N21pJG0F5qEaRrsWIXTeWBjH3Pu/p70BuZkXjGSRZm+y2/+jwSSlRPk3O1pF/c8fMP3ec+jCpj4rELwxTGykebyfLa3uNySF5vLIU452ggn69q2PsGJFH2q44U4+YcfTilGnAYxc3Ax05Xj9KAOSb4hOmkfbDaWzuY45VWO5yuGR2KMxAAcBOn+0KuyeMLiNpGNjEISzrC7TEY2vGpaT5flX95kkZwFNbA0mKy07ybeeeOKGPCKGGFAHHUe1TpYlk5u7nuPvD/AAoHbS5zl74wubGdo1torpmYBWS4VYv9WrkK5A5OeM+h9Kv2/iKa7h1lVigjubFGaNPM3jHzbSxHHO3oDkd/fV/s4Fdv2q4x6ZXH8qRrEp927uRuYZ+Yc/pQI5aPxhfWdp5VxBDdXUcOW/fbXd/KWTcVC8Rndtz61satqN1bXWn2017BpyTRyPLckBlDrtwgLcDO5jzzhDitP+z+c/arnOMZ3Dp+VNaxLZU3Nyw92X/CgDmLvxncC8ns7VbUmJo8XEsmEKiaOOQso5UfvMgnjAzyKlTxpPJNOn2CGJFuPIWWa5VVQhyuZAMlQcZHHOQK6H7AxZs3FwQevzLz9eKiutIiuraSKe4u/LcfOVm2Egf7S4P60Ac6vjyVrIXIsISTbeaIRcHeT5Bl3Abf9Xxs3evatu01q6k106PcWiJcRp50jo5KCIgBWBIGSW3Lj/YJqaDT4IYYoLa4lVEiAjRXXhBwMcdKSLTYIp7i7W6uPOcBZpPOB+6OBz0AyTjjqT3oAradqk8vibULFrmOe2jiEiFdrFDuIKnb0xwMNycGsiDx1cXcMjW1hA7IWbLT4UxiIyA8AkNgYwemefSuoFiVzi4uRk5OHXn9KT7AwI23FyBnn5l/woAx9N8STan4ljtFEMVv5U5MW/MuUaMAsMfKDuJHPIIrNsfEmpyRRytdWzF9Q8iQTOgWOPdIOAvzKflUfN3rqxYsCSLi5BPfev8AhUb2UcQLPczIGPJLoM9/T8aAM/QfEy64NQBRLdbZVdZhIGGxg2CR/CRtOQfxxU/hnUbjUbS7NzMkxguWiSRCpDLtUjlflJ+Y9OnQ8g1cWxcbv9IuRk9mX/Cmi3jROL2ZVVtnEigA+nTrQBo0VntE8E0DC5uGzLtZXYEEYPtRQBoUUVz2s2mpzamzWUdx5TWux2W42qSJFO0DdwxUONwA+8OfQA1tSwbCYZ5wOn1qLXf+QBf/APXB/wCVZcOmXFlpc1zNIwupIwjqx34UP8oY/wATBcDPt3rS1wP/AGFf5fI8h+Me1OO6JlszK8Cf8i+//Xw/8hXT15b4P1Wa31pbZ7ww2hkfKO4CZ8vPf3r05dzqGWVWVhkEDIIrWvFxqO/Uyw8lKmrdBf8AlsP900+otr+aPnH3T/DTtr/3x/3zWJuNuf8Aj1l/3DTo/ufif51Fcq/2WX5/4D/DT41fZ98dT/D70uo+hLTJOi/7wo2v/fH/AHzTZFfC/OPvD+GmIlqMqX3AOyc9Vx6e9Ltf++P++aQxserA/wDAaAG+S2T/AKRL/wCO/wCFRahZC+0y4s3O4SoV5bHPbkD+lSCM+Y3K9v4af5R9V/75oG3c5iw8KXFhe2l2l0jSwK7vu6SO2/C4A4QeZ0HHA4FV5fBMjyXLx3CKsvmIkZY4RWRxuyMZbL988DrXXNGdp5Xp/dpEjOxeV6f3aBGFqGi6g+nW9naXLYF1I5dpnGyMrJtBIO47Sy8Z7CoE8M6l5kxl1q4YvIzq/mMOquFO0YA2ll4yQdgrpvKPqv8A3zTGjO9OV6/3fagDnJPDepSzBhqTwx+R5flRTvtQ85wTyc5BzkEEd6bL4TuXe523a7ZsjLs7HbiRVU5PIAdeevy11HlH1X/vmjyj6r/3zQBj6PpF7p88j3N891ulZtzyt0OcYXoOo45HHFZDeCrgTtNBfCLE26KPJKoMEBuANzDd3znoSa6xIzl+V+9/d9qf5R9V/wC+aAIbn/WQf9dx/wCgmikuVZXtvmGPOHAGOxooAt0VDLd28EscU08cckuRGrsAXx6etYmsQapJqbGxS68prXa7JOFUsJFOFBbhigcbsDqOfQA19SGdPm+g/nUOu/8AIAv/APrg/wDKsuHTru106W9uZ5mupIliMUrBwihyVGRyWCnBOTzk81pa4H/sG/yy48h/4fb6047omWzPGcZuAD/z8f8AtOvS/Aut3OqWJtpo4lS2hiCFAckYI5yfavNRt+0Dg/6/1/6Z1LpuoSadLBPG86qiRuyxyFdwDdD616danzxt1PLoVPZyv0Pb/wDlsP8AdNPrL0fVP7ZtVvI0MSksm1xk8H2NaWJP7y/98/8A168xpp2Z6qaauhlz/wAesv8AuH+VOj+5+J/nUVyH+yy/Mv3D/D7fWnxiTZ95ep/h9/rU9S3siWmSdF/3hS4k/vL/AN8//XpkgkwvzL94fw//AF6ZJLRTcSf3l/75/wDr0Yk/vL/3z/8AXoARf9a/0FPqJRJ5j/Mvb+H/AOvT8Sf3l/75/wDr0AK33T9KRPuL9BTWEm0/MvT+7/8AXoQSbF+Zeg/h/wDr0ASUx/vx/X+hpcSf3l/75/8Ar0xhJvT5l6/3fb60AS0U3En95f8Avn/69GJP7y/98/8A16AETq/+9/QU+okEmX+Zfvf3fYe9PxJ/eX/vn/69AEF39+2/67D+Ropt0H322WUjzh0HsfeigDG8UKsstpbvaJerIr4gdXdQ2VxIyKCGVfcdSMV0EMMdvAkMS7Y41CqMk4A6da5nxjHMJdPuEiRo4jJ5jtCz+WCB8xKo2ADg44zjrVnWTqg1R1sReGJrT5imNgIkXO3PR9m/H4UAa2pDOnTZ9B/MVFrv/IAv/wDrg/8AKsuK1votNkvbqVjM8IjMUnXG/wCUtg43bSM471pa5v8A7Cv87ceQ/wDKnHdEy2Z4yP8Aj4H/AF8f+06hH/HuP+uCf+hVONv2gdf9f/7TqEbfs4+9/qE/9Cr2DxjodB8S3GjXeHaWa1Err5CsAMlc5/MV6vazi6tIbgKVEsauAeoyM14cNvnd/wDXt/6BXT+DfEjWMkdnMJ5/tAhVGeTIjzkd/wAOnpXJiKN/eidmHrW92R6Vc/8AHrL/ALh/lTo/ufif51FcFzaykFMbDzT4/M2fw9T/ADrg6no9ES0yTov+8KP3n+zTZPMwv3fvCmSS0Uz95/s0fvP9mgAX/Wv9BT6iXzPMf7vanfvP9mgBzfdP0pE+4v0FNbzNp+70oTzNi/d6UASUx/vx/X+ho/ef7NNbzN6fd6/0oAlopn7z/Zo/ef7NAAnV/wDe/oKfUSeZl/u/e/pTv3n+zQBDd/ftv+uw/kaKbc799tnbjzh0+hooA5zxoA09gvnRxnbKVLIrbSArbzujfgAHjgkkV1kaGOJULtIVABdsZb3OMCua1+C7utbsh/Z0s1vB8wkWGKVQT3w5yGBUcjsxqbWLnU4dTaOyN0Y2tcnZBuVGEi5Knb9/YXwCT0HHqAa2pf8AIOm+g/mKi13/AJAF/wD9cH/lWZAmojTJry8dmZ41RY3ypxvOGYdAxXHAArR1wv8A2Ff5C48h+/tTjuiZfCzxkf8AHwP+vj/2nUI/49x/1wT/ANCqcbftA5P+v9P+mdQjb9nHJ/1Cdv8Aar2LnjWJh/rv+3hv/QKgX/UL/wBcYf8A0KrA2+d1P+vbt/sVCu3yV5P+qi7f7VAHfeF/EtjBpX9lTboXUy/vXZVTOScZzn9K7qFleFWVgytyCDkEV4UwXPU/65+3+ya7rw542bFpp1xahspCkbx8Yzx82T/KuGvQ1conoUK/uKMjv6ZJ0X/eFGZP7q/99f8A1qbIZML8q/eH8X/1q5DrJaKZmT+6v/fX/wBajMn91f8Avr/61AAv+tf6Cn1Epk8x/lXt/F/9anZk/ur/AN9f/WoAc33T9KRPuL9BTWMm0/KvT+9/9ahDJsX5V6D+L/61AElMf78f1/oaMyf3V/76/wDrU1jJvT5V6/3vb6UAS0UzMn91f++v/rUZk/ur/wB9f/WoAE6v/vf0FPqJDJl/lX73972HtTsyf3V/76/+tQBDd/ftv+uw/kaKbcl99tkKB5w6H2NFAFuiiue1nUb+11N4bVpWRrTfhbcsIz5igsDjk7S52/7PSgDW1IZ06b6Dv7iotd/5AF//ANcH/lWbDJqD6VNd3Y3LJEiqrEq2Q7DcVI+XKlTj+VaGuF/7Cv8AKgDyH5z7U47omWzPGR/x8D/r4/8AadQj/j3H/XBP/QqnAX7QPmP+v9P+mdQgL9nHzH/UJ2/2q9i541iYf67/ALeG/wDQKhX/AFK/9cYf/QqnAXzup/17dv8AYqFQvkr8x/1UXb/aoCw5vvf9tpP/AEE063uJLWSG4hIEkccLKSM4IakYLnqf9c/b/ZNNwvlD5j/qYe3+1S6l7RXqek+GfGL6jOLK+RFkG/NwXCg4PAxj0Pr2rr3IKqQcgsK8K2oZBk5/eSdR7V6Dp3jaK5uNP0+2tHKlYlZ5G2kE8cAZ9K4q9CzvA7aFe6tNnb0Uzc/9wf8AfVGZP7g/76rkOsF/1r/QU+olL+Y/yDt/FTsyf3B/31QA5vun6UifcX6CmsX2n5B0/vUIX2L8g6f3qAJKY/34/r/Q0Zk/uD/vqmsX3p8g6/3vagCWimZk/uD/AL6ozJ/cH/fVAAnV/wDe/oKfUSF8v8g+9/e9qdmT+4P++qAIbv79t/12H8jRTbksXtsqAPOHf2NFAFuiiue1nWbqw1NraGSIg2nmhTGSYz5iqWODyArMcf7NAGtqQzp0w9h/MVFrv/IAv/8Arg/8qyoLjU7jTZr27KvbyJhEVdufmADAEcZwW6n7w9K09cZjoV+ChA8h+cj0px3RMtmeMj/j4H/Xx/7TqEf8e4/64J/6FU4A+0D5v+W/p/0zqEAfZx83/LBO3+1XsXPGsTD/AF3/AG8N/wCgVCv+pX/rjD/6FU4A8773/Ldu3+xUKgeSvzD/AFUXb/aoCwrdf+20n/oJpP8Alkv/AFxh/wDQqewGfvf8tn7f7JpuB5Q+Yf6mHt/tUr6lfYQ4f60f9dZP5UxP9WP+ucP/AKFUgA80fN/y0k7e1NQDYPm/5Zw9v9qmyUdFpnjPUtMs4rKCK1aJGkALoxPDE/3vevUrafzrSCV9oaSNWIHuM14aoHmL838Uvb3rX8Q6tbawbJoA6iG2hQ7177u2K5atBSa5dDro4hxT5tTvdP125uvFl3prpD5EYbayg7vl29847mtnUtRh0uwlvJwzJHjKpjcckDjP1ry3wvq9tompm4uBIyFZlAjXJ+8D3+lXvHzibWLaT7oMMJGfQuaydD94o9DVV/3bl1PRLC/i1PTY7yFXWOUEgOMEYJHb6VZT7i/QVh+FWYeFrQBSRtfnP+01Jqviuy0SeO3uopy7IrDy1BGCcDv6isHBuTjE6FNKClI36Y/34/r/AENVtP1FNSsYryCNxFJnbuwDwSPX2qdmben7s9fUelQ1bQtO+qJaKZub/nmfzFG5v+eZ/MUACdX/AN7+gp9Ytt4jtZry+tlim32od5MgYwpwcc1W0/xpp2pX6WcENyJXbaNygDOM+vpV8kuxHtI9zau/v23/AF2H8jRTblmL22UI/fDuPQ0VBZbooooAjmhS4haKQEqwwcHFZOtRJDp5jJuJjcOsAjM5QEsccnBwPwraqK4t4LuBobiFJYm+8jqGB/A0AczYeEfD1/YW19HZzKs6LOoad8jcv19Dip/+ED8P7dv2STG0L/r36D8a6NVVEVEUKqjAAGABS1ftJ92R7OHZHmzWOhx3BSbR545o3Z5YjduCiblXfyOSd4wBxjPOa6X/AIQTw/jH2WTGAv8Ar36Dp3rYGk6cpBFhbArJ5oPlDh/73196uUe0n3Yezh2RxGqeHNA0yeLzNOleFo5pmdbp9ylELEYzzkZ71n22l6C90lpJpMqsrxwzEXrMELMfL29Nw9emPeu/msbS5ninntopJos+W7oCUzwcHtmmRaXp8DQtFY26GDPlFYgNmeuPTNHtJ9w9nDsjH/4QXQM5+yy5yT/r36nr3rAn0TRoFkLaRKsUF2LeaRbuQrGigMrnAJx8w4xx6969CrE1S20+wjjePTLR5rm7XBkUKvmn+Njg88fUnAo9pPuw9nDsjD0fw94f1SSYf2dLCUAkQ/anbcjlgCeeDlDkc445qxqfhDQdO06W5WxL+Uo+V7uRAQOgB55z0GOSasab4hsRBLLb6YY5HuPKl8nYFknJ7EkZGOdxABHvxTtT8Q6TNH9nurF7oB2JiZUO0oZMn5mxx5LEfhR7Sfdh7OHZHONp+hrc+Uujz+ZI7JCsl6y/MMeYG67evvnHaun/AOEe0fXbW0vp4p3EkMbR75mBVfvKOD2zVCXXvD0jXaDSvPJx5pECYkRVdt2SRkDymHrkYrVXxJZqkOLeZYppTBbkBcSMG24Azx3POOFNLnlvcfJHaxVuP+JO39nWFpcTIsDyxxxXR3DB7gg4BJODk5IPFZoh0jX9StkurWabcFi843LgiQKZNu3AOBg88c8YrrJdMsZp5J5LOB5pE2O5QEsvoT3FOi06yglSWG0gjkRPLRkjAKp/dB9PakpNO6Y3FNWaIbbSYLK1W3tXnSNAdqeccevX61zT+JUj8157e8jFqxE4Fwcg/PtwCoJzsJ5xjIPIrs2UOpVgCpGCD3qomk6dEYylhbKYwwQiJfl3dccd+9IexV0xjf28jSGeKWKVopEE5YBh6HAyOnam6vKdKtFuQLiaPzFWTEzAqpON3Qjj3wPetO3toLSBYLaGOGJeiRqFA/AUlxZ213s+028U3ltuTzFDbT6jNAHExT2FtcXEj6fcx3cxcXcbXTbkjLR56gZJMinA9+e1b9r4Q0eyuVubeGWOZTkMJ34OMevpWiuk6coQLY2w2Seav7ocP/e+vA59quVXNLuTyR7FYWaCRHaSZyh3ANISM0VZoqSgooooAKKKKACiiigAooooAKKKKACmSwxXETRTRpJG33kdQQfqDRRQBC2n2TghrO3YFBGcxKcqOi9Og9Kjm0jTp5FeWxt2YP5mTGOWwRk+vDHrRRQBKLGzV3cWsAaQkuRGMsTkc+vU/maa2m2bXEc/2dBJHIZQVGMuQV3EDqcEjJ9aKKALVFFFABRRRQAUUUUAFFFFABRRRQB//9k=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACFAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAoqvfO8djM6NtYLwfSo5rfyomka8nVVGSS4AA/KgDn9V1jVEvtStoLrT7ZLZ4SjSyhHKMuW+8CvXODjtWnca35Hhy11NIiftAh2/aD5YTzCoy5AO0Ddk0kd1pV3eG1j1RZp8fdEiscDn0qddFjF29z9uv2Lggo1yzR8/wCwfl/Si1gvcxI/GjyW09x9kgUQQeYY2uMPKefmT5eY+M7vTJxxU83i0W0qwSraSTMIink3G5ZN5kB28c42frW59hXIPnzZAwDkcD8qZJpsTRFGklKkFcAgcHsOOKAOTf4hGLSxdtaW7thZCIrnKFDGHIDEAbxkDb15GPa/N4tuIHcSWUCo8skcMjTkKAk/klpDt+Ucg8Z9K2o9MjggigiaZYo8BV3LgADHpUps8ggyzkHIILL/AIUAc3c+L7m0vTbLaJcs0pAZZ1WPAjhYhGIGSTISM+h/Cz/wklzc6Hrs8McEd5p8UjIm8yKMKxUkgYOdvQE++K2TaJkK00vHzAFl4x36UC1RUyJ5Qrns64Yn8Oc0Ac3/AMJbeWrvZvbQ3FzFiIkz4YuGjUs4CfKpMmQQOcdOeNLVdSuYNStLOW+g02N7d5XuHAKvIpUbAWwMck+pHpzWl9mX538+bjhm3rxjnnilazLkBpZ2Xrgsp57dqAOXn8aXEl/NaWsdqoiuI086WT5ShlMbZA5U5HGfX83w+N551dv7PhgUzeWklxdBVTiQkSYBKn93gcdWA7V0psQd2XmO7rkrz9eKgu9Ggvrd4Lh7oxyEFwkuwtj1K4NAHPL47le3EqafCWaFXWL7R84YxpJkjbwnz7Q3qOnNbdhrVxc63NpU1qiT26GSdkclQpx5ZGQM7vn+mw1aWxhtokQSSRxooRRuUAKBwOnQUkWlRwXE88clyJZyDI5kyWwMAc9APQccn1oAyPD+vXV7cXf2qSORI4POdUTBt23upjOOScKOvPX1FUYPHdxdWsssOnwMYVlkk/0jgokaScEA8kPjB6Ec103lJGzE3cqgnH+sUZb/AB6U5bRBlVmlGDggMvGfwoAyNL8Qz6n4lezxDHbpDOfKEm6QMkqoC4x8ueSBk5BrM0rxJqc1rp08tzbP9puhHN5roAilJG+UJyCSoADc9q6qa08uKSRbicPj72Rn+VOGnRrnEkgycnG3k/lQO2lzJ0HxMuvWV/IRHa/Z8YlEisu1k3Kx9CAeQfxqx4Y1G41LTZpLmRJHiuJIg67TuUHjlflJweo47dQaviwUAgTzAHqARz+lJHZ4BVbidVU4ADAAfpQIuUVSlieBoWW4mbMiqQzAgg/hRQBdoorntZ1i6sdUa3gkjIa08wKYixjIkVS3B5AUscf7NAGvqP8AyD5uM/LUOuf8gG//AOuD/wAjWZBPqNxp0l7cFTC8O0J93cQ5AcAjgFcHGe9aOtl/7Cv8qAPIfnPtTjuhS2Z4wADMARx57f8AoFd94R8Xq8CWmqTxowjhWALE3OcjkjPoK4NQvnj5v+W7dv8AYpkLmGNZY5CrpDGysB0IJwa9SrTU1Znk0qkqbuj3qmv0H1H865Hwn4o+3Y0+5eae93v+8ZQBgDOMj29q60lyMGMfnXmTg4OzPVhNTV0NMTk58+Qc9ML/AIUqxsrZMzsPQgf0FMcHKful+960/B/55L+dTYvmZz+teGTquqi6EmyMwlJBvwZDsdQv3TgfPk8kHA+U1WuPCt3caBFpzXMYkR3dZgf9WZC+7C7cfKGAXAXpxtrqcH/nkv50YP8AzyX86BHIT+C53mupI7hVSUuqRtIcKGWUbiQBubMnQ54XGav32j6l/Z0FnaXDti7d9zXEi7Yij4BYHccMV49h2roMH/nkv50wg+Yv7peh7/SgDnY/Dmr+bKZtauH3SFw4lYfwuF+QAAYLKcZIO2kl8PavK6ldTkgT7OYvLjunIV/my2SMtncD1BG0YzXTYP8AzyX86MH/AJ5L+dAHLXHhW9le523ilZlZAZJHYhf3oVSDnOBInPX5a0tJ0rULK5lkur6S5DzFwWmbAX5sYXAA6gYyRxmtfB/55L+dGD/zyX86AMFvD8k4voJ4rNbe41BLrCgsdgC7hjAwzbOf941NoejXGkNe+dcCVJpN69SxJdmLEnoSGUY6fLnvWqAfNb90vQd/rT8Ef8sl/OgBLn/j2k+lS1XuS/2aT5B09al3P/cH/fVLqV9kfTE6v/vUbn/uD/vqmoz5f5B97+9TJI7zpD/12T+dFNuyxEGVwPOXv70UAW6KjaeJJUieVFkkzsQsAWx1wO9SUAVNT/5B030H86i1z/kA3/8A1wf+RqbUeNPm5x8vWodc/wCQDf8A/XB/5GnHdClszxdf9eP+u7f+gVCP+Pb/ALd4/wCZqZf9eP8Aru3/AKBUI/49v+3eP+Zr2TxEX7DULnTdRFxaOEl81lyVB4Ke9et6FrNtrFhE8Nwk0yxIZtoIwxH+INeNj/j5H/Xdv/QKvaLr99oahrR12NFCXRlBD8kYz1HXtXPXo86utzow9b2bs9j2eTqn+9T6ydE1R9Y0qG8kiWNmkZSqnI4JFa1ec007M9NNNXQUUUUhhTD/AK1fof6U+mH/AFq/Q/0oAfRRRQAUUUUANH+tb/dH9adTR/rW/wB0f1p1AEV1/wAe0n0qWobr/j2k+lTUupX2UFMTq/8AvU+mJ1f/AHqZJDedIf8Arsn86KLzpD/12T+dFAGF4s8h2tILm2W6jcNshaTA8wFdrMAQSo5zjOMjitOXU7LSmFlIZx5UAkUlWfcu4KAD/E2Sox15FZHi95oLnTp4gAFMis+9025AwSVI+XIBI9q2L7RLbULv7RNJPuERiCq+FA3BsjjqCqnPtQBXbWba/t7mOH7qxByzEDaSSNrDqDkHirOuOp0K/AYZ8h+/tTZ7KGy0R7eEHao6scliWyST3JJJp+uAf2Df8D/UP/KnHdClszxhVPnjg/69u3+xUIVvs33T/wAe8fb3NSgnzxz/AMt2/wDQKiBP2bqf+PeP+Zr2DxSYKftA4P8Ar27f7FQqreQvyn/Uxdv9qpgT9oHP/Ldv/QKhUnyF5P8AqYv/AEKgDq/B+qvaawsV1etFZBpPkkkwgOM9+K9PWWN1DLIpUjIIPUV4WpPndf8AlrJ/6DXe+FvGMDWgh1e5t4CqRCIhCAQRjk8jsPSuLE0nfmR3YasrcjO43p/fX86N6f31/Oo7a4tryETW0sc0RJAdCCOKl2j0FcZ2ib0/vr+dNLp5q/MvQ9/pT9o9BTSo81eB0P8ASgBd6f31/Ojen99fzpdo9BRtHoKAE3p/fX86N6f31/Ol2j0FG0egoAYHTzW+Zfujv9advT++v50gUea3A+6P607aPQUAQ3MifZpPnXp61LvT++v51HcqPs0nA6VLtHoKXUr7Im9P76/nTEdMv8y/e9ak2j0FMRRl+B96mSQ3bqRAAwJ85e/vRS3gAEHA/wBcv86KAOd8ZGQyWUSTKgdZflYjBIAOXBOCgAbPXtwa6iJWSJFdzI4ABcgDcfXArl/ESm61yxikspJIYfm8w2Uk6fN7oRjG3GDkHdyOK6ugCrqP/IPm+npnvUOuf8gG/wD+uD/yNTagwNjOoYbgvI7iodc/5AN//wBcH/kacd0KWzPF1/14/wCu7f8AoFQj/j2/7d4/5mpl/wBeP+u7f+gVCP8Aj2/7d4/5mvZPERMP+Pkf9d2/9AqFf9Qv/XGL/wBCqYf8fI/67t/6BUK/6hf+uMX/AKFQBOv+u/7ayf8AoNQr/ql/65wf+hVMv+u/7ayf+g1Cv+qX/rnB/wChUDO/8C67K0y6OYE8tWkYSbjn16fjXfV4vomrvouqfakhWVi8ibWbb2/+tW/4T8WRWTSpqc9y3n+Uyu77ljzkckngdOlcNeg+ZyijuoV0oqMmek0w/wCtX6H+lMtrqC8gWe2lSWJs4dDkHHFPP+tX6H+lcZ2j6KKKACiiigBo/wBa3+6P606mj/Wt/uj+tOoAiuf+PaT6VLUV1/x7SfSpaXUr7IUxOr/71PpidX/3qZJDedIf+uyfzoovOkP/AF2T+dFAFmud1nT9QudUaS0jYRPaGN38/aGPmK23HbKhhu/2q6KigDnodNnstIllmlb7Q8SoyZDBFDsVG4jJIDbcn0q/rasNCvyXJHkPxgelWNSGdPm+n9ah1z/kA3//AFwf+Rpx3QpbM8YUjzx8o/17d/8AYqIEfZvuj/j3j7+5qRf9eP8Aru3/AKBUI/49v+3eP+Zr2LHi3JwR9oHy/wDLdu/+xUSkeQvyj/Uxd/8AaqQf8fI/67t/6BUK/wCoX/rjF/6FQFywpHnfd/5ayd/9moVI8pflH+rh7/7VSr/rv+2sn/oNQr/ql/65wf8AoVFguTAjzh8v/LV+/wDs1EpHlL8o/wBXD3/2qeP9cP8Ars//AKDUa/6pf+uUP/oVFgueh2OtvoXg2yuEh83zJpE2ltuOWOc4PpXYxM0yQy7iN8e7GBxnFeI+bIcRmVzGHlwhY7R+HSui8Ja9qFvqNtZiXzIZmhVvNyxAOQcEnjpXHVw+jkvM7aOI1UX5HqW1v+eh/IUbW/56H8hT6K4juGbW/wCeh/IUbW/56H8hT6KAIgrea37w/dHYe9O2t/z0P5ClH+tb/dH9adQBXuVb7NJ+8PT0FS7W/wCeh/IU26/49pPpUtLqV9kZtb/nofyFNRWy/wC8P3vQVLTE6v8A71Mkr3asBBlyf3y8YHrRTrzpD/12T+dFAFmiisLVtdl02/a3CQMptvNTc5BDeYqZb/Z+fOfY0Aaeo/8AIPmyCfl7VDrn/IBv/wDrg/8AI1mQalf31jPczwoto0ZVDHzlg23IOckEhj06bfetHW3zoV+Nrf6h+3tTjuhS2Z4yv+vH/Xdv/QKhH/Ht/wBu8f8AM1OF/fjkf69u/wDsVEF/0b7y/wDHvH39zXsXPFsSD/j5H/Xdv/QKhX/UL/1xi/8AQqsBf9IHI/157/7FQqv7hfmX/Uxd/wDaouFiVf8AXf8AbWT/ANBqFf8AVL/1zg/9CqdV/fdR/rX7/wCzUKr+6X5l/wBXD3/2qLhYeP8AXD/rs/8A6DUa/wCqX/rlD/6FUwX98OR/rn7/AOzUSr+6X5l/1UPf/aouFh4+/wD8DlrS8Nf8h+w/66W/8zWcF+fqPvy96u6JPFZ6raXE7hYo2gZiOcDJqZ/CyqekkdSmvjS/Gt699c3Btt0ihAWYA8Y+X8DRc+I49W8XaY2n3NwLfMQdCWQHLnqO/FcxrVxFe63cXMDhopJZSpPGeKZok8Vnq1nczuFijMDMRzgZNY+xjy83W36G/tpc3L0v+p7ZVa/voNNspLu5LCKPG7aMnkgDj8ax/wDhN9A/5/G7/wDLJu3XtWV4j8VaPqOhXFrbXRaZzHtBjYfxA9SPauKNKTaTTO2VWKi2mjq7C9h1G3S7tyxikUFSwwepHT8Kt1xXh3xTpFho1tbXFyVlRWBAjY9HOeg9xXSS65YQ30NnJKwuJgDGmw8g9OfwpSg07WHComk7keu6zZ6PaKbtnAlyF2IW6fStQHIBHQ1w/wAR2BsLQkFQDIefoK6nTNXs9UtzJZu0qoQrHYRg4z3ocLRUkUp3bizQpidX/wB6jzP9hvyrPbWrGDUl0+SRlupCCqbDznpz07GpSb2G2luWrzpD/wBdk/nRTbt8iAbWH75eo96KQy3UT20EkvmvBG0hXZuKAnb6Z9KlooAhmtkmtWt/uIV2jYB8vpisvWw0WmvFLc3Mn2g+SscUaFmLA8DOB0B6ntW1Ve8sre/g8m4QsgYMNrFSCOhBBBB+lAHJWvgLR7u3hu4b2+McoEyElBkMvH8Poaf/AMK30rZt+2X2NgT7ydB0/hrr4oo4IUhiQJHGoVVHQAcAU+tPbVO5l7Gn2OP/AOFdaZv3fbL3O4v95OuMf3aaPhvpQUL9svsBVX7ydAcj+Guyoo9tU7h7Gn2PN7rw3olrqMtqZtUM8brtXMX74vtGEzjP3hk9BzWhZ+AtGvbGC5gvL8xSxIyZKA4HIz8vWuputGsb2cz3EcjyYwp85xs5ByuD8pyq8jB4q3BBFa28dvAgSKJQiKOgAGAKPbVO4/Y0+xyf/CutL3bvtl7ncW+8nUjH92kHw30oKF+2X2Aqr95OinI/hrsaqahfrYQxuY3leWRYo40xlmPQZPA7n8KPbVO4vY0+xzEnw70xEZxc37su5gqtHliewyuKwX0Xw5FDBK1xqqwyW8UxOIztyrOinj7xCN0yOnIrto/Een3VtLn7SjKxhkRY2LLJnaUBXPzZ9D056VnSx+F7aGGKSOV1SNrdI8TSHavmKQRySVAkGTyBnFHtqncfsafYo2HgbSL62E8dzqCbZJEZHaPcrBirA4UjqD0NWP8AhXGlgY+2X3RR95P4Tkfw1pQa/oOnwvbQXDERNlgqPIxLBnLE4JOQrkn2NXP7f07GfOYKWKI5jba7AgEKcfNyccUe2qdxexp9jB/4Vzpf/P5ffxfxJ/F1/hqrqPgbSNN0+e9kn1KSOFVdljaPdhe/IA4613dV72zh1CyltLkM0Mq7XCuVJHcZBBo9tU7h7Gn2PPpfDeiQX1xamXVGlhcRpGDEGlaQgnbnGRyOTgDB5rp49CtNUmsNZS9uSyxRtCcIBt6rkbfetGbQ7C4cyTJLI+0KrtO5KYIPynPynKgkjGcc1ehhjt4I4IUCRRqERR0UAYApOpN7spU4LZGNrPhqHXYEhvby52pnHlhB1GD/AA1JpPh9NFgeG0vLjY7bjvCE5wB/d9q2KKXM7WvoVyq9+pl6jcS6bAs0k9zJGXCsY0j+XJABwcE8kcDJ9q5ie40yXV11SWfUTcRDzE2xxhfJXd+8x3Xhvf2rsbzTre/a3acSE28nmR7JGXDYxngjPU9aqHw3pJzm16tuP7xvf5ev3eT8v3eelJNrYGk9y2bSRnQyXUjqrBtu1Rkj6CirVFIYUUUUAFFFFABRRRQAUUUUAFFFFABUN1aQXsBhuIw6ZDYyQQQcggjkEHuKKKAKY8P6WqFVtQikLkI7LyDkNwfvcfe6+9RXHhjSrmYSvbsG3722yMN3DDB54HzsTjGSee9FFAEieHtJjeR0sowZMhsE4wQwIAzgD536f3jQ+gWDS27LGUWC4+0rGDlfMwQDg9PvE8Y5oooA06KKKACiiigAooooAKKKKACiiigD/9k=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACEAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAoqpfThbaZYpQJlAyFILKCeuPzplzEltbyTy3c6RoNzMX6Dv2oA5/Vda1OK61OGK8sLaO0mj2mSUJI0Zi3H7wK5LdDjsa1r3Wza6Fa6hHF/x8eUB9pbyxHvxzIcHbjPPvxU1oLPUoPtFteSTx527w2eR26UiaLEl09x9sv2Z8go907Jz6ITtH5UAYkfjOSW0mufstvGIokfypLjDsWA+cDb/qhu5f0BOOKfdeMRZlonjtZZgoZRFPlZB5cjkrxyAY8Z966H7CpOfPnzjGd3b8qhbTIbiCSGWSZo2DRld2PlPBHSgDmZPHxht45GtbeQmQBjDcZRk2xk7WIGWHmAFevH5WT4vuVYrLZ20XmSbYpXnIjVfMdMyHb8v3BjGeWA966FNOjjjWNZZgifdG7pTjYqQQZ5yD1Bb/61AHNP4uuYdTSzWzWffOy7zOqLtBQYQnG4/Nn1xj14kbxJd3nhXVby1W3hvrXKhQ/mKhwCPmAw3B7ZH8q3zZDzFBnmxyfvd+PanCxUDAnnA9A3/wBagDmx4ru0nNmttbzXAlEAJn5VhMsRaQBfl3bt646gdqvahqU8euR2UuoQ6fCLdZVd1B89yxBUFuwAHA5+cdK0jZnz8rNPtwd3zjk8Y7Ur2ZZf9bOSORlxwaAOYh8aXF5qCQW8NtHGt0iPJJJndGyzYGByr7osYPqBjmov+E+uDpZvDp1vCCrSL512AuBGX2EgEiTjGCB39MV1jWiqjM0swUfMxLjHrk1Vu9IstSh+zXDzSRt+8Maz7dw6ZO0jIPvwaAMg+MLhrhoIbKBpGkEaIZyGQ+bHHmQbflB8zcvXIFaul61Nf6heWUtssUll8twwYkBySVAyOQUw3tuAq0IYh0uJOW2cSjkjt9ajtdNht5LjyZZw8snmyfvsksQBk59gAPYcUAZema9KLXXJrm4S5hsDvjlTa25Nm7kpx2PHUDGaq2vjS5uVjYafDtRys5FxuxiVY/kwCG+/nr2xXSiz2jCyTgegcCgWeBgSTgegcUAYGl+JLrU31ST/AEdEgsUnjijfe0bEy5D8DDDYuV7VSsPFF9HZ6fc3Nzbywy2801wXdC2URGCp5YxnlvlPPFdX9jIIxLOMnn5xzTY7SJgfKlkIBz8jjg/hQBk2niVL7wze6jczJp32aVopJUZZVGMcr1BzkADnk961tEuLm60a1nu2jad0yxjII68dCRnGM4OM5xStaou2NpZQG4CGQc/hTVii2KI7qTDZCbZRgn0FAGhRVFUeG4t8TStuJVldsj7pNFAF6ue1jRru+1N54I7cRvaiJ2eQhpCJFfawC/dIUrnP8R4roagkvLWKR45LmFHjTzHVnAKp/eI7D3oAwodDXS9Lkl3EXciqshRsqBuGAMjoFwo9h2ya0NfUjQL872P7huDj0p11e2t3a3EUEyyuiozbeRgkEEHoePSjxB/yL1//ANcG/lVR+JEy+FmV4HBbw9kMV/fvwPwrpNh/56N+n+Fc74F/5F3/ALbv/Sulqqv8SXqTR/hx9Bmw/wDPRv0/wpsaHDfvG+8fT/CpaZH0b/eNZmgbD/z0b9P8KNh/56N+n+FPooAiKHzV/eN0Pp7e1O2H/no36f4UH/Wr9D/Sn0AQ7CxwJXXBPTHP6UGFsf8AHxL/AOO/4UMAbpMj+Bv5inSIvlP8o+6e1Iq7SK2pWP2/TJbUncWAwWOOQQRng9wOxHtWFpnhS40y+tbqO7V2hiIfd/y0Y4B7cKB0GccDgc56jYv90flS7F/uj8qZJxo8EOCdt15YM6lcHPlxrt4Hy8sdg+bg+55ze0bwzLpd1BMLgDygsbKjuQ6KjjkE4ySyt7YxXSbF/uj8qYiLuf5R9709hQByUPhvWpFR5dTlh/fF2iSdjuG5sMWOcHBXgcfKPwst4b1AQSRx6m+94QvmmV9ysGJbHJGGHBPUY4rp9i/3R+VGxf7o/KgDlZPCt3JEokv3lIZGKSzOQwTyyFJGO6NyBn5qWPwxqEd5DMNUcIs3mSIjld3CYJODnAUjHo1dMyrvT5R19Pan7F/uj8qAMm70y4nbSHTyC9nLvkaRmY42MhCk5P8AF364rJXwnPIbaWaSCG5W58+V7fhdoaNgqqV4/wBWq9c46k5NdZsX+6PyprIuxvlHT0oArSj/AEy2OT/rG4/4CaKWQYnssf3j/wCgmigC3WLqmiTajqAuFuYo0EIjCmIsdwkVwSdwyMoBjHQnmtSW7t4JY4pp445Jc+WrsAXx6etQ3Gq2VpPJDPNskji81gVP3c4445OSBgc8j1oAzm0iLTtGZQ26cABpRlc5k3EAZ4GSeKs6+gGgX5Gf9Q38R9Kjl1ey1CKe3tZhI6RJKcccM3HvnjpU3iD/AJF+/wD+uDfyqo/EiZfCzI8DtG2hbC43+c/yhsHt2rpvLX/a/wC+jXj/AIb1K30jXlu7hXKB3X5FBPKV6/bzpc20VxHnZKgdcjnBGRWuIg4zb7mOGqKUEuwvlr/tf99GmxxrhvvfeP8AEalpkfRv941gdAeWv+1/30aPLX/a/wC+jT6KAIjGvmr97of4j7U7y1/2v++jQf8AWr9D/Sn0AVzGv2tPvfcb+I+op8ka+U/3vun+I0H/AI+0/wCubfzFPl/1T/7ppFPoJ5a/7X/fRo8tf9r/AL6NPopkjPLX/a/76NNSNdz/AHvvf3j6CpaYn3n/AN7+goAPLX/a/wC+jR5a/wC1/wB9Gn0UARNGu9Pvdf7x9Kd5a/7X/fRof76fX+hp9ADPLX/a/wC+jSNGuxvvdP7xqSkf7jfSgCpIoW4syM/ePUk/wminS/6+z/3j/wCgmigDF8UKs01pbvaJeLIr4gdXdQ2VxIyKCGVc9x1IxVy68PQ3M0brczxRxQCGONNpC4ZXVskE5BRepxxWb4xjmE2n3CRo0cRkEjtCz+WCBhiVRsAHBxxnHWtq71m1srl4JhKHWISjCEhwWCgL6nLKMe4oAhn06Gz0Q26AvtIJdgNzHfuJOPck07X40GgX5CgEQNzj2qvJrNtfwTRRghREkgd+P4sFSOzAjGKs6+6nw/fgMCfIbv7VUfiRMvhZ42Gbzx8x/wBef/QK9D8Ea62oWhgvpLZTFHEsIwFZsgjueegrzwK32gcH/Xnt/sUthM1ncW115W8wpC4U8Zw3TNenVpqcbHl0ajhK57n5Uf8AcX8qbHEmG+RfvHtVDRNZTVtOS5dUhkZmBj35Iwce1X45Ew3zr94968tpp2Z6qaauh3lR/wBxfyo8qP8AuL+VL5if31/OjzE/vr+dIYwxJ5q/IvQ9vpTvKj/uL+VNMieavzr0Pf6U/wAxP76/nQBCY4/tafIv3G7e4p8kSeU/yL909qaZE+1p86/cbv7inSSJ5T/Ov3T3pIp9B3lR/wBxfyo8qP8AuL+VL5if31/OjzE/vr+dMkTyo/7i/lTUiTc/yL9709hT/MT++v50xJE3P86/e9fYUAO8qP8AuL+VHlR/3F/Kl8xP76/nR5if31/OgBjRJvT5F6+ntTvKj/uL+VNaRN6fOvX19qf5if31/OgBPKj/ALi/lSNFHsb5F6elO8xP76/nSNImxvnXp60AVnRVuLMhQDuPQf7JookZTcWYDAnceh/2TRQBz3jMB7jT186OM7ZSpZFbaQFbed0b8AA8cEkitm50K3vJ1muJrl3WHyc+Zj+INuwAPm3KDkelZmvQXd1rdl/xL5ZreD5hIsMUqgnvhzkMCo5HZjWlf60un3bW720j/uhJGysMOxdUC+3LryeOaAHXNnDZ6IbaFcRptxuOSTuBJJPUk80viAD/AIR+/wCP+WDfyqmNY/tC0uG8l4oVVPmZTkPv2lemDgjqDVrX3U6BfgZz5Ddj6VUfiRMvhZ42P+Pgf9dz/wCgVEp/cL/1xi/9CqYKftA/67nv/sVEqHyF/wCuMXf/AGq9c8azNTRNXbRdUN2kCzMWkTazbe2euPavVtH1ay1e2MtrKrkAM4APylhnHIrxnafOH/XWTv7Vp6Lr+oaHt+ylDGyQF42A+bkjr1HFc9eip6rc6aFZw0ex7JgegowPQVm6Lq39qaXDdSIscj7sopLYwxH9K0PNX3/I157VnZnop3V0BA81eB0P9KdgegqMyL5q9eh7H2p3mr7/AJGkMYQPtacfwN/MU+UDyn4H3TURkX7UnX7jdj6inySL5T9funsaRT6EmB6CjA9BTfNX3/I0eavv+RpkjsD0FNQDc/A+9/QUeavv+RpqSLufr970PoKAJMD0FGB6Cm+avv8AkaPNX3/I0ADgb04HX+hp2B6Co2kXenXr6H0p3mr7/kaAHYHoKRwNjcDpSeavv+RpGkXY3Xp6GgCCUD7RZ8fxH/0E0UjuGuLMDP3j2/2TRQBcqlc6TY3dybi4t1klMRiLMT9wnOMfXB/AVdrE1XXJdNv2txFCym3EiFpCCGMip83HCjeDn2NAFu8t4rfSDBBGI4k2hVUcABhTfEH/ACL1/wD9cG/lVGLU7i+02a4mgKwMibCnIL7yrYOckcKQcDg1c1986Bfjaw/cNyfpVR+JEy+FnjY/4+B/13P/AKBUK/6hf+uMX/oVThf9IHzD/Xn/ANAqJV/cL8y/6mL/ANCr17njWH/8th/11k/9Bpg+4n/XOD/0KpNv74fMP9bJ/wCg03b8ifMP9XB/6FRcLEtvcTWs6yW80kLl5QWjYqcc9xXomheObO4sz/akkdrIix7fmZy+R16etecBfmX5h/rJf60xV+RfmH3IP/QqzqUo1NzWlVlT2PcLS+ttQSOe1mWWNlbBHHQ46HmrdeN6DrD6FdyXUUUUrN5ikMxHG7Pb6V6tp+rWmqQebaSiZRgNs7HGcV59Wk6b8j0KVZVF5lk/8faf7jfzFPl/1T/7pqEv/pafI33G7e4p8j/un+RvuntWJ0PoS0Uzf/sN+VG//Yb8qZI+mJ95/wDe/oKN/wDsN+VNR/mf5G+96ewoAlopm/8A2G/Kjf8A7DflQAP99Pr/AENPqJn+dPkbr6e1O3/7DflQA+kf7jfSm7/9hvypGf5G+RunpQBDL/r7P/eP/oJoprtm4sxtYfMev+6aKALlQvaW0splkt4nkK7C7ICSvpn09qmrntY1m5sdUe2hkiINqJApjJMZ8xVLnB5AVmbH+zQBq6jGq6Y6IoVV2gKBwACKh8Qf8i9f/wDXBv5VmQT6ncadJeXhVoJFUJGq7c/MAGwRkZwW6n7w9K0dfZjoF+ChA8hucj0qo/EiZfCzxsf8fA/67n/0CoV/1C/9cYv/AEKpwB9oHzf8tz2/2KiUDyF+Yf6mLt/tV6541h//AC2H/XWT/wBBpo+4n/XOD/0Kn4Hnfe/5aydv9mmgDYnzD/Vwdv8AaouFhR99f+ukv9aYv+rX/cg/9CqQAbl+b/lpL2+tMUDYvzD7kHb/AGqAsO/5Zv8AWX+Zrb8KXVxF4gtIY7iVInePdGrkK3B6joaxsDy3+bvL29zVzRryLTtYtruXcyRvESFHPQiomrxa/rYum7ST/rc6e88aajp3iO7ieOK4hjMqIh+XaFYdwMmvQC2+2LYxlM/pXimq3UV9q11dxEqkvnsoYcgbhVdSfMH7w/ei7muaWHUkraHUsS4uz1/4dnu9Fcp4M1y3u9Oh06NJTPBGxZmAwcNjg5966jc3/PM/mK5JRcXZnZCSkrofTE+8/wDvf0FZmn6/balfXNnBFMJbckPuAA4OOOfUVoozbn/dn73qPQUmmtGNNPVEtFM3N/zzP5ijc3/PM/mKQwf78f1/oafUTM29P3Z6+o9Kdub/AJ5n8xQA+kf7jfSq95erY2c11LG/lxIXbbgnArH03xfYaveGztobgS4b76gDgZPeqUW1dIlyinZs15f9fZ/7x/8AQTRTXJNxZ5Uj5j3/ANk0VJRcooooAjnhS4haKQHa3XBwaydbiSLT/Kb7RObmRYFjM5QEt6tg4GM9q2qiuLaC7gaC5hjmibqkihgfwNAHNWPhDw9fWNtex2kyrOizqGnfI3L359DU3/CB+HwuPssmMBf9e/QdO9dGqqihVAVQMAAYAFLV+0n3ZHs4dkclqHg7RrOykuLfTJ7mVTkRLcOC2SAT1PY56dqzNJ0bw5qd4tvHYSmJ0zHKLpznYI2IxwQB5owTycHIFd5PBFcwtDPGskbfeRxkGo4bCztpTLBawxSFAhZIwp2joOO3A/Kj2k+7D2cOyMT/AIQXQM/8esvUn/Xv1PXvTH8C6CsbbLORmCjapuHAO3kDOfWumpGVXRkYAqwwQe4o9pPuw9nDsjzWW18PQ2sFzJpNwI3thPIq3jHa0iuwA9f9WwzxjI49NzTfCWg39s0rWEkUiStE6C5dgGjYrwcjI49K6KPR9NhWNY9PtVWJCkYES/KpzkDjgHJ49zUN5Omj29pbWVtAvnTeTEpPlxodrMScA/3T25JFHtJ92Hs4dkZ3/CCeH/8An1l6Ef69+/J71kX3hzSrea+hh0aeaS3SCRPLu5CWV2Zc4wcbdpOOc1tWXiyG9tYpUs590kghADJgybdxAJI4ABOTgHt1qpe61oHnSyzaZ58s0f75vLQkohk+9k848pjj6Yo9pPuHs4dkQ+HbfSBqbJptvLCkkTlJ0uWbeB5bNwegzIuD356V1P2Mf897j/v4a5+HxJo0V5O9tp7+ah2SSxRIMxqPvZyMrgdueOlaEfiS2ka1BgnX7Y222ztPmcjPQ8cHdg4OAfSpbb1ZSSWiKt3p1poAkv7SCV5pnCyD7SwaQseijnLEnpx9RVCTxGkLTfubpsB5hm6xmJd4J6cN+6bC+45646u6sbW9EYureKby23p5ig7WxjI9Dgn86ibStObdusbY75PNbMS8v/ePHXk8+9Dbe4JJbD/sYP8Ay3uP+/hpGtMKSs05IHAMpGatUjosiMjqGVhggjgikM5N9bMaQ3E8F0lrmXdOlwzoxXIAU7ed3YnaPr31dKl/tG3kdzPDLFJ5boJy4zgMMHAzww7etW4tI06AQiKxt0EIIixGPkz6elWLa1t7OEQ20EcMQ5CRqFA/AUAV59MhureSCaSd4pFKsplPINcvdafpnhzVoVtdPmElwNsUy3Tj94xC7TkEDr2ycAnFdrVWbTbG4leWazgkkdNjM8YJK+n0pqTSsmJxTd2jD0fWYr+/gj8mcDDIryT7sSKiswxjph+G7+goreisLOCYTQ2sMcoQRh0jAIQdFz6e1FIZYooooAKKKKACiiigAooooAKKKKACo5oIbmIxTxJLG3VHUMD+BoooAifT7KTdvs7dtwAbMQOQOgPHbtUcmkadLMsz2UBkV/MB8sctyMn1PJ60UUASrY2aFytrApckuRGBuJ659aaNNsxcx3C26LJGzOu0YG5hgtgcFscZ68n1oooAtUUUUAFFFFABRRRQAUUUUAFFFFAH/9k=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "occupancy_variables = ['md_occupancies', 'sg_occupancies', 't3_occupancies', 't5_occupancies']\n", + "percents = [99.99, 99.9, 99.9, 99.99]\n", + "compute_occupancies(branches, occupancy_variables, occ_percentiles=percents, plot=False) # To print\n", + "compute_occupancies(branches, occupancy_variables, occ_percentiles=percents, plot=True) # To plot" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/RecoTracker/LSTCore/standalone/bin/lst.cc b/RecoTracker/LSTCore/standalone/bin/lst.cc index 369680bc4309e..17eb4a54628d6 100644 --- a/RecoTracker/LSTCore/standalone/bin/lst.cc +++ b/RecoTracker/LSTCore/standalone/bin/lst.cc @@ -53,6 +53,7 @@ int main(int argc, char **argv) { cxxopts::value()->default_value("trackingNtuple/tree"))( "o,output", "Output file name", cxxopts::value())( "N,nmatch", "N match for MTV-like matching", cxxopts::value()->default_value("9"))( + "p,ptCut", "Min pT cut In GeV", cxxopts::value()->default_value("0.8"))( "n,nevents", "N events to loop over", cxxopts::value()->default_value("-1"))( "x,event_index", "specific event index to process", cxxopts::value()->default_value("-1"))( "g,pdg_id", "The simhit pdgId match option", cxxopts::value()->default_value("0"))( @@ -145,6 +146,10 @@ int main(int argc, char **argv) { } } + //_______________________________________________________________________________ + // --ptCut + ana.ptCut = result["ptCut"].as(); + //_______________________________________________________________________________ // --nmatch ana.nmatch_threshold = result["nmatch"].as(); @@ -308,7 +313,9 @@ void run_lst() { // Load various maps used in the lst reconstruction TStopwatch full_timer; full_timer.Start(); - auto hostESData = lst::loadAndFillESHost(); + // Determine which maps to use based on given pt cut for standalone. + std::string ptCutString = (ana.ptCut >= 0.8) ? "0.8" : "0.6"; + auto hostESData = lst::loadAndFillESHost(ptCutString); auto deviceESData = cms::alpakatools::CopyToDevice>::copyAsync(queues[0], *hostESData.get()); float timeForMapLoading = full_timer.RealTime() * 1000; @@ -388,7 +395,7 @@ void run_lst() { full_timer.Start(); std::vector events; for (int s = 0; s < ana.streams; s++) { - LSTEvent *event = new LSTEvent(ana.verbose >= 2, queues[s], &deviceESData); + LSTEvent *event = new LSTEvent(ana.verbose >= 2, ana.ptCut, queues[s], &deviceESData); events.push_back(event); } float timeForEventCreation = full_timer.RealTime() * 1000; diff --git a/RecoTracker/LSTCore/standalone/bin/lst_make_tracklooper b/RecoTracker/LSTCore/standalone/bin/lst_make_tracklooper index 7686b3df42bf5..0c3c9be329e91 100755 --- a/RecoTracker/LSTCore/standalone/bin/lst_make_tracklooper +++ b/RecoTracker/LSTCore/standalone/bin/lst_make_tracklooper @@ -28,7 +28,6 @@ usage() echo " -G GPU (CUDA) backend (Compile for CUDA)" echo " -R ROCm backend (Compile for ROCm)" echo " -A All backends (Compile for all backends, including ROCm)" - echo " -P PT Cut Value (In GeV, Default is 0.8, Works only for standalone version of code)" echo " -w Warning mode (Print extra warning outputs)" echo exit @@ -47,7 +46,6 @@ while getopts ":cxgsmdp3NCGRA2ehwP:" OPTION; do R) ROCMBACKEND=true;; A) ALLBACKENDS=true;; w) PRINTWARNINGS=true;; - P) PTCUTVALUE=$OPTARG;; h) usage;; :) usage;; esac @@ -64,7 +62,6 @@ if [ -z ${CUDABACKEND} ]; then CUDABACKEND=false; fi if [ -z ${ROCMBACKEND} ]; then ROCMBACKEND=false; fi if [ -z ${ALLBACKENDS} ]; then ALLBACKENDS=false; fi if [ -z ${PRINTWARNINGS} ]; then PRINTWARNINGS=false; fi -if [ -z ${PTCUTVALUE} ]; then PTCUTVALUE=0.8; fi # Default to only CPU and CUDA backends if [ "${CPUBACKEND}" == false ] && [ "${CUDABACKEND}" == false ] && [ "${ROCMBACKEND}" == false ]; then @@ -101,7 +98,6 @@ echo " CPUBACKEND : ${CPUBACKEND}" | tee -a ${LOG} echo " CUDABACKEND : ${CUDABACKEND}" | tee -a ${LOG} echo " ROCMBACKEND : ${ROCMBACKEND}" | tee -a ${LOG} echo " PRINTWARNINGS : ${PRINTWARNINGS}" | tee -a ${LOG} -echo " PTCUTVALUE : ${PTCUTVALUE} GeV" | tee -a ${LOG} echo "" | tee -a ${LOG} echo " (cf. Run > sh $(basename $0) -h to see all options)" | tee -a ${LOG} echo "" | tee -a ${LOG} @@ -159,8 +155,6 @@ if $PRINTWARNINGS; then PRINTWARNINGSOPT="LSTWARNINGSFLAG=-DWARNINGS" fi -PTCUTOPT="PTCUTFLAG=-DPT_CUT=${PTCUTVALUE}" - if [ -z "${MAXMAKETHREADS}" ]; then MAXMAKETHREADS=32 fi @@ -177,9 +171,9 @@ echo "-------------------------------------------------------------------------- echo "---------------------------------------------------------------------------------------------" >> ${LOG} 2>&1 echo "---------------------------------------------------------------------------------------------" >> ${LOG} 2>&1 if $SHOWLOG; then - (cd LST && make clean && make ${BACKENDOPT} ${PRINTWARNINGSOPT} ${PTCUTOPT} -j ${MAXMAKETHREADS} ${MAKETARGET} && cd -) 2>&1 | tee -a ${LOG} + (cd LST && make clean && make ${BACKENDOPT} ${PRINTWARNINGSOPT} -j ${MAXMAKETHREADS} ${MAKETARGET} && cd -) 2>&1 | tee -a ${LOG} else - (cd LST && make clean && make ${BACKENDOPT} ${PRINTWARNINGSOPT} ${PTCUTOPT} -j ${MAXMAKETHREADS} ${MAKETARGET} && cd -) >> ${LOG} 2>&1 + (cd LST && make clean && make ${BACKENDOPT} ${PRINTWARNINGSOPT} -j ${MAXMAKETHREADS} ${MAKETARGET} && cd -) >> ${LOG} 2>&1 fi if ([[ "$BACKENDOPT" == *"all"* ]] || [[ "$BACKENDOPT" == *"cpu"* ]]) && [ ! -f LST/liblst_cpu.so ]; then @@ -214,9 +208,9 @@ echo "-------------------------------------------------------------------------- echo "---------------------------------------------------------------------------------------------" >> ${LOG} 2>&1 echo "---------------------------------------------------------------------------------------------" >> ${LOG} 2>&1 if $SHOWLOG; then - make EXES="${EXES}" ${TRACKLOOPERTARGET} ${PTCUTOPT} -j ${MAXMAKETHREADS} 2>&1 | tee -a ${LOG} + make EXES="${EXES}" ${TRACKLOOPERTARGET} -j ${MAXMAKETHREADS} 2>&1 | tee -a ${LOG} else - make EXES="${EXES}" ${TRACKLOOPERTARGET} ${PTCUTOPT} -j ${MAXMAKETHREADS} >> ${LOG} 2>&1 + make EXES="${EXES}" ${TRACKLOOPERTARGET} -j ${MAXMAKETHREADS} >> ${LOG} 2>&1 fi if ([[ "$BACKENDOPT" == *"all"* ]] || [[ "$BACKENDOPT" == *"cpu"* ]]) && [ ! -f bin/lst_cpu ]; then diff --git a/RecoTracker/LSTCore/standalone/code/core/AnalysisConfig.h b/RecoTracker/LSTCore/standalone/code/core/AnalysisConfig.h index 8608bc95ed2fa..6d0da61bf2395 100644 --- a/RecoTracker/LSTCore/standalone/code/core/AnalysisConfig.h +++ b/RecoTracker/LSTCore/standalone/code/core/AnalysisConfig.h @@ -46,6 +46,9 @@ class AnalysisConfig { // pt binning options int ptbound_mode; + // pt cut + float ptCut; + // pdg id of the particles to compute efficincies on int pdg_id; diff --git a/RecoTracker/LSTCore/standalone/code/core/trkCore.cc b/RecoTracker/LSTCore/standalone/code/core/trkCore.cc index ffb2e7de205ac..e480aa3608a4b 100644 --- a/RecoTracker/LSTCore/standalone/code/core/trkCore.cc +++ b/RecoTracker/LSTCore/standalone/code/core/trkCore.cc @@ -291,7 +291,8 @@ std::vector matchedSimTrkIdxs(std::vector hitidxs, std::vector hi //___________________________________________________________________________________________________________________________________________________________________________________________ std::vector matchedSimTrkIdxs(std::vector hitidxs, std::vector hittypes, - bool verbose) { + bool verbose, + float *pmatched) { if (hitidxs.size() != hittypes.size()) { std::cout << "Error: matched_sim_trk_idxs() hitidxs and hittypes have different lengths" << std::endl; std::cout << "hitidxs.size(): " << hitidxs.size() << std::endl; @@ -425,6 +426,7 @@ std::vector matchedSimTrkIdxs(std::vector hitidxs, } int maxHitMatchCount = 0; // ultimate maximum of the number of matched hits std::vector matched_sim_trk_idxs; + float max_percent_matched = 0.0f; for (auto &trkidx_perm : allperms) { std::vector counts; for (auto &unique_idx : unique_idxs) { @@ -436,10 +438,18 @@ std::vector matchedSimTrkIdxs(std::vector hitidxs, int trkidx = unique_idxs[rawidx]; if (trkidx < 0) continue; - if (counts[rawidx] > (((float)nhits_input) * 0.75)) + float percent_matched = static_cast(counts[rawidx]) / nhits_input; + if (percent_matched > 0.75f) matched_sim_trk_idxs.push_back(trkidx); maxHitMatchCount = std::max(maxHitMatchCount, *std::max_element(counts.begin(), counts.end())); + max_percent_matched = std::max(max_percent_matched, percent_matched); } + + // If pmatched is provided, set its value + if (pmatched != nullptr) { + *pmatched = max_percent_matched; + } + std::set s; unsigned size = matched_sim_trk_idxs.size(); for (unsigned i = 0; i < size; ++i) @@ -701,7 +711,7 @@ void addInputsToLineSegmentTrackingPreLoad(std::vector> &out_ float eta = p3LH.Eta(); float ptErr = trk.see_ptErr()[iSeed]; - if ((ptIn > PT_CUT - 2 * ptErr)) { + if ((ptIn > ana.ptCut - 2 * ptErr)) { TVector3 r3LH(trk.see_stateTrajGlbX()[iSeed], trk.see_stateTrajGlbY()[iSeed], trk.see_stateTrajGlbZ()[iSeed]); TVector3 p3PCA(trk.see_px()[iSeed], trk.see_py()[iSeed], trk.see_pz()[iSeed]); TVector3 r3PCA(calculateR3FromPCA(p3PCA, trk.see_dxy()[iSeed], trk.see_dz()[iSeed])); @@ -722,7 +732,7 @@ void addInputsToLineSegmentTrackingPreLoad(std::vector> &out_ PixelType pixtype = PixelType::kInvalid; if (ptIn >= 2.0) { pixtype = PixelType::kHighPt; - } else if (ptIn >= (PT_CUT - 2 * ptErr) and ptIn < 2.0) { + } else if (ptIn >= (ana.ptCut - 2 * ptErr) and ptIn < 2.0) { if (pixelSegmentDeltaPhiChange >= 0) { pixtype = PixelType::kLowPtPosCurv; } else { diff --git a/RecoTracker/LSTCore/standalone/code/core/trkCore.h b/RecoTracker/LSTCore/standalone/code/core/trkCore.h index e1ff0a00bd002..912143b052d9f 100644 --- a/RecoTracker/LSTCore/standalone/code/core/trkCore.h +++ b/RecoTracker/LSTCore/standalone/code/core/trkCore.h @@ -34,7 +34,8 @@ float runpT3(LSTEvent *event); std::vector matchedSimTrkIdxs(std::vector hitidxs, std::vector hittypes, - bool verbose = false); + bool verbose = false, + float *pmatched = nullptr); std::vector matchedSimTrkIdxs(std::vector hitidxs, std::vector hittypes, bool verbose = false); int getDenomSimTrkType(int isimtrk); int getDenomSimTrkType(std::vector simidxs); diff --git a/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc b/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc index 1da3099947c79..deed88f833a00 100644 --- a/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc +++ b/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc @@ -1,3 +1,7 @@ +// to use computeRadiusFromThreeAnchorHits +#include "LSTEvent.h" +#include "Triplet.h" + #include "write_lst_ntuple.h" using namespace ALPAKA_ACCELERATOR_NAMESPACE::lst; @@ -72,6 +76,8 @@ void createOptionalOutputBranches() { ana.tx->createBranch>("pT5_eta"); ana.tx->createBranch>("pT5_phi"); ana.tx->createBranch>("pT5_isFake"); + ana.tx->createBranch>("t5_sim_vxy"); + ana.tx->createBranch>("t5_sim_vz"); ana.tx->createBranch>("pT5_isDuplicate"); ana.tx->createBranch>("pT5_score"); ana.tx->createBranch>("pT5_layer_binary"); @@ -118,6 +124,7 @@ void createOptionalOutputBranches() { ana.tx->createBranch>("t5_isDuplicate"); ana.tx->createBranch>("t5_foundDuplicate"); ana.tx->createBranch>("t5_pt"); + ana.tx->createBranch>("t5_pMatched"); ana.tx->createBranch>("t5_eta"); ana.tx->createBranch>("t5_phi"); ana.tx->createBranch>("t5_score_rphisum"); @@ -126,17 +133,65 @@ void createOptionalOutputBranches() { ana.tx->createBranch>("t5_moduleType_binary"); ana.tx->createBranch>("t5_layer_binary"); ana.tx->createBranch>("t5_matched_pt"); - ana.tx->createBranch>("t5_partOfTC"); ana.tx->createBranch>("t5_innerRadius"); ana.tx->createBranch>("t5_outerRadius"); ana.tx->createBranch>("t5_bridgeRadius"); ana.tx->createBranch>("t5_chiSquared"); ana.tx->createBranch>("t5_rzChiSquared"); ana.tx->createBranch>("t5_nonAnchorChiSquared"); + ana.tx->createBranch>("t5_dBeta1"); + ana.tx->createBranch>("t5_dBeta2"); + + // Occupancy branches + ana.tx->createBranch>("module_layers"); + ana.tx->createBranch>("module_subdets"); + ana.tx->createBranch>("module_rings"); + ana.tx->createBranch>("module_rods"); + ana.tx->createBranch>("module_modules"); + ana.tx->createBranch>("module_isTilted"); + ana.tx->createBranch>("module_eta"); + ana.tx->createBranch>("module_r"); + ana.tx->createBranch>("md_occupancies"); + ana.tx->createBranch>("sg_occupancies"); + ana.tx->createBranch>("t3_occupancies"); + ana.tx->createBranch("tc_occupancies"); + ana.tx->createBranch>("t5_occupancies"); + ana.tx->createBranch("pT3_occupancies"); + ana.tx->createBranch("pT5_occupancies"); + + // T5 DNN branches + createT5DNNBranches(); #endif } +//________________________________________________________________________________________________________________________________ +void createT5DNNBranches() { + // Common branches + ana.tx->createBranch>("t5_t3_idx0"); + ana.tx->createBranch>("t5_t3_idx1"); + ana.tx->createBranch>("t5_tc_idx"); + ana.tx->createBranch>("t5_partOfTC"); + ana.tx->createBranch>("t5_t3_pt"); + ana.tx->createBranch>("t5_t3_eta"); + ana.tx->createBranch>("t5_t3_phi"); + + // Hit-specific branches + std::vector hitIndices = {"0", "1", "2", "3", "4", "5"}; + std::vector hitProperties = {"r", "x", "y", "z", "eta", "phi", "detId", "layer", "moduleType"}; + + for (const auto& idx : hitIndices) { + for (const auto& prop : hitProperties) { + std::string branchName = "t5_t3_" + idx + "_" + prop; + if (prop == "detId" || prop == "layer" || prop == "moduleType") { + ana.tx->createBranch>(branchName); + } else { + ana.tx->createBranch>(branchName); + } + } + } +} + //________________________________________________________________________________________________________________________________ void createGnnNtupleBranches() { // Mini Doublets @@ -284,10 +339,74 @@ void setOptionalOutputBranches(LSTEvent* event) { setPixelQuintupletOutputBranches(event); setQuintupletOutputBranches(event); setPixelTripletOutputBranches(event); + setOccupancyBranches(event); + setT5DNNBranches(event); #endif } +//________________________________________________________________________________________________________________________________ +void setOccupancyBranches(LSTEvent* event) { + auto modules = event->getModules(); + auto miniDoublets = event->getMiniDoublets(); + auto segments = event->getSegments(); + auto triplets = event->getTriplets(); + auto quintuplets = event->getQuintuplets(); + auto pixelQuintuplets = event->getPixelQuintuplets(); + auto pixelTriplets = event->getPixelTriplets(); + auto trackCandidates = event->getTrackCandidates(); + + std::vector moduleLayer; + std::vector moduleSubdet; + std::vector moduleRing; + std::vector moduleRod; + std::vector moduleModule; + std::vector moduleEta; + std::vector moduleR; + std::vector moduleIsTilted; + std::vector trackCandidateOccupancy; + std::vector tripletOccupancy; + std::vector segmentOccupancy; + std::vector mdOccupancy; + std::vector quintupletOccupancy; + + for (unsigned int lowerIdx = 0; lowerIdx <= modules.nLowerModules(); lowerIdx++) { + //layer = 0, subdet = 0 => pixel module + moduleLayer.push_back(modules.layers()[lowerIdx]); + moduleSubdet.push_back(modules.subdets()[lowerIdx]); + moduleRing.push_back(modules.rings()[lowerIdx]); + moduleRod.push_back(modules.rods()[lowerIdx]); + moduleEta.push_back(modules.eta()[lowerIdx]); + moduleR.push_back(modules.r()[lowerIdx]); + bool isTilted = (modules.subdets()[lowerIdx] == 5 and modules.sides()[lowerIdx] != 3); + moduleIsTilted.push_back(isTilted); + moduleModule.push_back(modules.modules()[lowerIdx]); + segmentOccupancy.push_back(segments.totOccupancySegments()[lowerIdx]); + mdOccupancy.push_back(miniDoublets.totOccupancyMDs()[lowerIdx]); + + if (lowerIdx < modules.nLowerModules()) { + quintupletOccupancy.push_back(quintuplets.totOccupancyQuintuplets()[lowerIdx]); + tripletOccupancy.push_back(triplets.totOccupancyTriplets()[lowerIdx]); + } + } + + ana.tx->setBranch>("module_layers", moduleLayer); + ana.tx->setBranch>("module_subdets", moduleSubdet); + ana.tx->setBranch>("module_rings", moduleRing); + ana.tx->setBranch>("module_rods", moduleRod); + ana.tx->setBranch>("module_modules", moduleModule); + ana.tx->setBranch>("module_isTilted", moduleIsTilted); + ana.tx->setBranch>("module_eta", moduleEta); + ana.tx->setBranch>("module_r", moduleR); + ana.tx->setBranch>("md_occupancies", mdOccupancy); + ana.tx->setBranch>("sg_occupancies", segmentOccupancy); + ana.tx->setBranch>("t3_occupancies", tripletOccupancy); + ana.tx->setBranch("tc_occupancies", trackCandidates.nTrackCandidates()); + ana.tx->setBranch("pT3_occupancies", pixelTriplets.totOccupancyPixelTriplets()); + ana.tx->setBranch>("t5_occupancies", quintupletOccupancy); + ana.tx->setBranch("pT5_occupancies", pixelQuintuplets.totOccupancyPixelQuintuplets()); +} + //________________________________________________________________________________________________________________________________ void setPixelQuintupletOutputBranches(LSTEvent* event) { // ============ pT5 ============= @@ -325,6 +444,7 @@ void setPixelQuintupletOutputBranches(LSTEvent* event) { ana.tx->pushbackToBranch("pT5_phi", phi); ana.tx->pushbackToBranch("pT5_layer_binary", layer_binary); ana.tx->pushbackToBranch("pT5_moduleType_binary", moduleType_binary); + ana.tx->pushbackToBranch("pT5_rzChiSquared", pixelQuintuplets.rzChiSquared()[pT5]); pT5_matched_simIdx.push_back(simidx); @@ -393,10 +513,12 @@ void setQuintupletOutputBranches(LSTEvent* event) { moduleType_binary |= (modules.moduleType()[module_idx[i]] << i); } - std::vector simidx = matchedSimTrkIdxs(hit_idx, hit_type); + float percent_matched; + std::vector simidx = matchedSimTrkIdxs(hit_idx, hit_type, false, &percent_matched); ana.tx->pushbackToBranch("t5_isFake", static_cast(simidx.size() == 0)); ana.tx->pushbackToBranch("t5_pt", pt); + ana.tx->pushbackToBranch("t5_pMatched", percent_matched); ana.tx->pushbackToBranch("t5_eta", eta); ana.tx->pushbackToBranch("t5_phi", phi); ana.tx->pushbackToBranch("t5_innerRadius", __H2F(quintuplets.innerRadius()[quintupletIndex])); @@ -404,6 +526,9 @@ void setQuintupletOutputBranches(LSTEvent* event) { ana.tx->pushbackToBranch("t5_outerRadius", __H2F(quintuplets.outerRadius()[quintupletIndex])); ana.tx->pushbackToBranch("t5_chiSquared", quintuplets.chiSquared()[quintupletIndex]); ana.tx->pushbackToBranch("t5_rzChiSquared", quintuplets.rzChiSquared()[quintupletIndex]); + ana.tx->pushbackToBranch("t5_nonAnchorChiSquared", quintuplets.nonAnchorChiSquared()[quintupletIndex]); + ana.tx->pushbackToBranch("t5_dBeta1", quintuplets.dBeta1()[quintupletIndex]); + ana.tx->pushbackToBranch("t5_dBeta2", quintuplets.dBeta2()[quintupletIndex]); ana.tx->pushbackToBranch("t5_layer_binary", layer_binary); ana.tx->pushbackToBranch("t5_moduleType_binary", moduleType_binary); @@ -414,6 +539,21 @@ void setQuintupletOutputBranches(LSTEvent* event) { sim_t5_matched.at(simtrk) += 1; } } + + // Avoid fakes when calculating the vertex distance, set default to 0.0. + if (simidx.size() == 0) { + ana.tx->pushbackToBranch("t5_sim_vxy", 0.0); + ana.tx->pushbackToBranch("t5_sim_vz", 0.0); + continue; + } + + int vtxidx = trk.sim_parentVtxIdx()[simidx[0]]; + float vtx_x = trk.simvtx_x()[vtxidx]; + float vtx_y = trk.simvtx_y()[vtxidx]; + float vtx_z = trk.simvtx_z()[vtxidx]; + + ana.tx->pushbackToBranch("t5_sim_vxy", sqrt(vtx_x * vtx_x + vtx_y * vtx_y)); + ana.tx->pushbackToBranch("t5_sim_vz", vtx_z); } } @@ -498,6 +638,109 @@ void setPixelTripletOutputBranches(LSTEvent* event) { ana.tx->setBranch>("pT3_isDuplicate", pT3_isDuplicate); } +//________________________________________________________________________________________________________________________________ +void fillT5DNNBranches(LSTEvent* event, unsigned int iT3) { + auto hits = event->getHits(); + auto modules = event->getModules(); + + std::vector hitIdx = getHitsFromT3(event, iT3); + std::vector hitObjects(hitIdx.size()); + + for (int i = 0; i < hitIdx.size(); ++i) { + unsigned int hit = hitIdx[i]; + float x = hits.xs()[hit]; + float y = hits.ys()[hit]; + float z = hits.zs()[hit]; + hitObjects[i] = lst_math::Hit(x, y, z); + + std::string idx = std::to_string(i); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_r", sqrt(x * x + y * y)); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_x", x); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_y", y); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_z", z); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_eta", hitObjects[i].eta()); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_phi", hitObjects[i].phi()); + + int subdet = trk.ph2_subdet()[hits.idxs()[hit]]; + int is_endcap = subdet == 4; + int layer = trk.ph2_layer()[hits.idxs()[hit]] + 6 * is_endcap; + int detId = trk.ph2_detId()[hits.idxs()[hit]]; + unsigned int module = hits.moduleIndices()[hit]; + + ana.tx->pushbackToBranch("t5_t3_" + idx + "_detId", detId); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_layer", layer); + ana.tx->pushbackToBranch("t5_t3_" + idx + "_moduleType", modules.moduleType()[module]); + } + + float g, f; + auto const& devHost = cms::alpakatools::host(); + float radius = computeRadiusFromThreeAnchorHits(devHost, + hitObjects[0].x(), + hitObjects[0].y(), + hitObjects[1].x(), + hitObjects[1].y(), + hitObjects[2].x(), + hitObjects[2].y(), + g, + f); + ana.tx->pushbackToBranch("t5_t3_pt", k2Rinv1GeVf * 2 * radius); + + // Angles + ana.tx->pushbackToBranch("t5_t3_eta", hitObjects[2].eta()); + ana.tx->pushbackToBranch("t5_t3_phi", hitObjects[0].phi()); +} + +//________________________________________________________________________________________________________________________________ +void setT5DNNBranches(LSTEvent* event) { + auto triplets = event->getTriplets(); + auto modules = event->getModules(); + auto ranges = event->getRanges(); + auto const quintuplets = event->getQuintuplets(); + auto trackCandidates = event->getTrackCandidates(); + + std::unordered_set allT3s; + std::unordered_map t3_index_map; + + for (unsigned int idx = 0; idx < modules.nLowerModules(); ++idx) { + for (unsigned int jdx = 0; jdx < triplets.nTriplets()[idx]; ++jdx) { + unsigned int t3Idx = ranges.tripletModuleIndices()[idx] + jdx; + if (allT3s.insert(t3Idx).second) { + t3_index_map[t3Idx] = allT3s.size() - 1; + fillT5DNNBranches(event, t3Idx); + } + } + } + + std::unordered_map t5_tc_index_map; + std::unordered_set t5s_used_in_tc; + + for (unsigned int idx = 0; idx < trackCandidates.nTrackCandidates(); idx++) { + if (trackCandidates.trackCandidateType()[idx] == LSTObjType::T5) { + unsigned int objIdx = trackCandidates.directObjectIndices()[idx]; + t5s_used_in_tc.insert(objIdx); + t5_tc_index_map[objIdx] = idx; + } + } + + for (unsigned int idx = 0; idx < modules.nLowerModules(); ++idx) { + for (unsigned int jdx = 0; jdx < quintuplets.nQuintuplets()[idx]; ++jdx) { + unsigned int t5Idx = ranges.quintupletModuleIndices()[idx] + jdx; + std::vector t3sIdx = getT3sFromT5(event, t5Idx); + + ana.tx->pushbackToBranch("t5_t3_idx0", t3_index_map[t3sIdx[0]]); + ana.tx->pushbackToBranch("t5_t3_idx1", t3_index_map[t3sIdx[1]]); + + if (t5s_used_in_tc.find(t5Idx) != t5s_used_in_tc.end()) { + ana.tx->pushbackToBranch("t5_partOfTC", 1); + ana.tx->pushbackToBranch("t5_tc_idx", t5_tc_index_map[t5Idx]); + } else { + ana.tx->pushbackToBranch("t5_partOfTC", 0); + ana.tx->pushbackToBranch("t5_tc_idx", -999); + } + } + } +} + //________________________________________________________________________________________________________________________________ void setGnnNtupleBranches(LSTEvent* event) { // Get relevant information @@ -717,16 +960,16 @@ std::tuple> parseTrackCandidate( float pt, eta, phi; std::vector hit_idx, hit_type; switch (type) { - case lst::LSTObjType::pT5: + case LSTObjType::pT5: std::tie(pt, eta, phi, hit_idx, hit_type) = parsepT5(event, idx); break; - case lst::LSTObjType::pT3: + case LSTObjType::pT3: std::tie(pt, eta, phi, hit_idx, hit_type) = parsepT3(event, idx); break; - case lst::LSTObjType::T5: + case LSTObjType::T5: std::tie(pt, eta, phi, hit_idx, hit_type) = parseT5(event, idx); break; - case lst::LSTObjType::pLS: + case LSTObjType::pLS: std::tie(pt, eta, phi, hit_idx, hit_type) = parsepLS(event, idx); break; } diff --git a/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.h b/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.h index 314096f72679e..5bfe439fadbb3 100644 --- a/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.h +++ b/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.h @@ -18,15 +18,19 @@ void createOutputBranches(); void createRequiredOutputBranches(); void createOptionalOutputBranches(); void createGnnNtupleBranches(); +void createT5DNNBranches(); void fillOutputBranches(LSTEvent* event); void setOutputBranches(LSTEvent* event); void setOptionalOutputBranches(LSTEvent* event); +void setOccupancyBranches(LSTEvent* event); void setPixelQuintupletOutputBranches(LSTEvent* event); void setQuintupletOutputBranches(LSTEvent* event); void setPixelTripletOutputBranches(LSTEvent* event); void setGnnNtupleBranches(LSTEvent* event); void setGnnNtupleMiniDoublet(LSTEvent* event, unsigned int MD); +void fillT5DNNBranches(LSTEvent* event, unsigned int T3); +void setT5DNNBranches(LSTEvent* event); std::tuple> parseTrackCandidate(LSTEvent* event, unsigned int); std::tuple, std::vector> parsepT5(LSTEvent* event, diff --git a/RecoTracker/LSTCore/standalone/setup.sh b/RecoTracker/LSTCore/standalone/setup.sh index 1a35fa8e69bdf..f08180201192d 100644 --- a/RecoTracker/LSTCore/standalone/setup.sh +++ b/RecoTracker/LSTCore/standalone/setup.sh @@ -7,25 +7,28 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $DIR/code/rooutil/thisrooutil.sh ARCH=$(uname -m) -if [[ $(hostname) == *lnx4555* ]]; then - export SCRAM_ARCH=el9_amd64_gcc12 -elif [[ $ARCH == "aarch64" || $ARCH == "arm64" ]]; then - export SCRAM_ARCH=el9_aarch64_gcc12 +if [ -z ${CMSSW_SEARCH_PATH+x} ]; then + if [ -z ${FORCED_CMSSW_VERSION+x} ]; then + export CMSSW_VERSION=CMSSW_14_2_0_pre4 + else + export CMSSW_VERSION=$FORCED_CMSSW_VERSION + fi + + source /cvmfs/cms.cern.ch/cmsset_default.sh + CMSSW_PATH=$(scram list -c CMSSW | grep -w $CMSSW_VERSION | awk '{print $3}') + cd $CMSSW_PATH + eval `scramv1 runtime -sh` else - export SCRAM_ARCH=el8_amd64_gcc12 + cd $CMSSW_BASE/src fi -export CMSSW_VERSION=CMSSW_14_2_0_pre3 - -source /cvmfs/cms.cern.ch/cmsset_default.sh -cd /cvmfs/cms.cern.ch/$SCRAM_ARCH/cms/cmssw/$CMSSW_VERSION/src -eval `scramv1 runtime -sh` # Export paths to libraries we need -export BOOST_ROOT=$(scram tool info boost | grep BOOST_BASE | cut -d'=' -f2) export ALPAKA_ROOT=$(scram tool info alpaka | grep ALPAKA_BASE | cut -d'=' -f2) +export BOOST_ROOT=$(scram tool info boost | grep BOOST_BASE | cut -d'=' -f2) export CUDA_HOME=$(scram tool info cuda | grep CUDA_BASE | cut -d'=' -f2) -export ROOT_ROOT=$(scram tool info root_interface | grep ROOT_INTERFACE_BASE | cut -d'=' -f2) +export FMT_ROOT=$(scram tool info fmt | grep FMT_BASE | cut -d'=' -f2) export ROCM_ROOT=$(scram tool info rocm | grep ROCM_BASE | cut -d'=' -f2) +export ROOT_ROOT=$(scram tool info root_interface | grep ROOT_INTERFACE_BASE | cut -d'=' -f2) cd - > /dev/null echo "Setup following ROOT. Make sure the appropriate setup file has been run. Otherwise the looper won't compile." diff --git a/RecoTracker/MeasurementDet/plugins/MaskedMeasurementTrackerEventProducer.cc b/RecoTracker/MeasurementDet/plugins/MaskedMeasurementTrackerEventProducer.cc index f66eabd4424c0..2017b8508f877 100644 --- a/RecoTracker/MeasurementDet/plugins/MaskedMeasurementTrackerEventProducer.cc +++ b/RecoTracker/MeasurementDet/plugins/MaskedMeasurementTrackerEventProducer.cc @@ -2,12 +2,15 @@ #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "RecoTracker/MeasurementDet/interface/MeasurementTrackerEvent.h" class dso_hidden MaskedMeasurementTrackerEventProducer final : public edm::stream::EDProducer<> { public: explicit MaskedMeasurementTrackerEventProducer(const edm::ParameterSet &iConfig); - ~MaskedMeasurementTrackerEventProducer() override {} + ~MaskedMeasurementTrackerEventProducer() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions &descriptions); private: void produce(edm::Event &, const edm::EventSetup &) override; @@ -16,33 +19,40 @@ class dso_hidden MaskedMeasurementTrackerEventProducer final : public edm::strea typedef edm::ContainerMask > PixelMask; typedef edm::ContainerMask > Phase2OTMask; - edm::EDGetTokenT src_; + const edm::EDGetTokenT src_; - bool skipClusters_; - bool phase2skipClusters_; + const bool skipClusters_; + const bool phase2skipClusters_; edm::EDGetTokenT maskStrips_; edm::EDGetTokenT maskPixels_; edm::EDGetTokenT maskPhase2OTs_; }; +void MaskedMeasurementTrackerEventProducer::fillDescriptions(edm::ConfigurationDescriptions &descriptions) { + edm::ParameterSetDescription desc; + desc.add("src", edm::InputTag("MeasurementTrackerEvent")); + desc.add("clustersToSkip", edm::InputTag(""))->setComment("keep empty string for Phase2"); + desc.add("phase2clustersToSkip", edm::InputTag(""))->setComment("keep empty string for Phase1"); + descriptions.addWithDefaultLabel(desc); +} + MaskedMeasurementTrackerEventProducer::MaskedMeasurementTrackerEventProducer(const edm::ParameterSet &iConfig) : src_(consumes(iConfig.getParameter("src"))), - skipClusters_(false), - phase2skipClusters_(false) { - //FIXME:temporary solution in order to use this class for both phase0/1 and phase2 - if (iConfig.existsAs("clustersToSkip")) { - skipClusters_ = true; + skipClusters_(!iConfig.getParameter("clustersToSkip").label().empty()), + phase2skipClusters_(!iConfig.getParameter("phase2clustersToSkip").label().empty()) { + if (skipClusters_) { edm::InputTag clustersToSkip = iConfig.getParameter("clustersToSkip"); maskPixels_ = consumes(clustersToSkip); maskStrips_ = consumes(clustersToSkip); } - if (iConfig.existsAs("phase2clustersToSkip")) { - phase2skipClusters_ = true; + + if (phase2skipClusters_) { edm::InputTag phase2clustersToSkip = iConfig.getParameter("phase2clustersToSkip"); maskPixels_ = consumes(phase2clustersToSkip); maskPhase2OTs_ = consumes(phase2clustersToSkip); } + produces(); } diff --git a/RecoTracker/MeasurementDet/python/MaskedMeasurementTrackerEventProducer_cfi.py b/RecoTracker/MeasurementDet/python/MaskedMeasurementTrackerEventProducer_cfi.py index c25a6ea0cc8eb..946ee16b9184c 100644 --- a/RecoTracker/MeasurementDet/python/MaskedMeasurementTrackerEventProducer_cfi.py +++ b/RecoTracker/MeasurementDet/python/MaskedMeasurementTrackerEventProducer_cfi.py @@ -1,7 +1,4 @@ import FWCore.ParameterSet.Config as cms -MaskedMeasurementTrackerEvent = cms.EDProducer("MaskedMeasurementTrackerEventProducer", - src = cms.InputTag("MeasurementTrackerEvent"), - OnDemand = cms.bool(False), - clustersToSkip = cms.InputTag(""), -) +from RecoTracker.MeasurementDet.maskedMeasurementTrackerEventProducer_cfi import maskedMeasurementTrackerEventProducer as _maskedMeasurementTrackerEventProducer +MaskedMeasurementTrackerEvent = _maskedMeasurementTrackerEvent.clone() diff --git a/RecoTracker/MkFitCore/BuildFile.xml b/RecoTracker/MkFitCore/BuildFile.xml index d95f078a55719..a2445e506cfe6 100644 --- a/RecoTracker/MkFitCore/BuildFile.xml +++ b/RecoTracker/MkFitCore/BuildFile.xml @@ -5,6 +5,7 @@ + diff --git a/RecoTracker/MkFitCore/src/KalmanUtilsMPlex.cc b/RecoTracker/MkFitCore/src/KalmanUtilsMPlex.cc index 78c224d0bbaf5..bd4223b2da009 100644 --- a/RecoTracker/MkFitCore/src/KalmanUtilsMPlex.cc +++ b/RecoTracker/MkFitCore/src/KalmanUtilsMPlex.cc @@ -1255,7 +1255,7 @@ namespace mkfit { if (propToHit) { MPlexLS propErr; MPlexLV propPar; - propagateHelixToPlaneMPlex(psErr, psPar, Chg, msPar, plNrm, propErr, propPar, outFailFlag, N_proc, propFlags); + propagateHelixToPlaneMPlex(psErr, psPar, Chg, plPnt, plNrm, propErr, propPar, outFailFlag, N_proc, propFlags); kalmanOperationPlaneLocal(KFO_Update_Params | KFO_Local_Cov, propErr, @@ -1337,7 +1337,7 @@ namespace mkfit { propPar = psPar; if (propToHit) { MPlexLS propErr; - propagateHelixToPlaneMPlex(psErr, psPar, inChg, msPar, plNrm, propErr, propPar, outFailFlag, N_proc, propFlags); + propagateHelixToPlaneMPlex(psErr, psPar, inChg, plPnt, plNrm, propErr, propPar, outFailFlag, N_proc, propFlags); kalmanOperationPlaneLocal(KFO_Calculate_Chi2, propErr, diff --git a/RecoTracker/MkFitCore/src/MkBuilder.cc b/RecoTracker/MkFitCore/src/MkBuilder.cc index 28abf7bb5d1f4..71c7b717f368e 100644 --- a/RecoTracker/MkFitCore/src/MkBuilder.cc +++ b/RecoTracker/MkFitCore/src/MkBuilder.cc @@ -660,7 +660,7 @@ namespace mkfit { continue; } // Check if the candidate is close to it's max_r, pi/2 - 0.2 rad (11.5 deg) - if (iteration_dir == SteeringParams::IT_FwdSearch && ccand[ic].pT() < 1.2) { + if (iteration_dir == SteeringParams::IT_FwdSearch && ccand[ic].pT() < 1.2f) { const float dphi = std::abs(ccand[ic].posPhi() - ccand[ic].momPhi()); if (ccand[ic].posRsq() > 625.f && dphi > 1.371f && dphi < 4.512f) { // printf("Stopping cand at r=%f, posPhi=%.1f momPhi=%.2f pt=%.2f emomEta=%.2f\n", diff --git a/RecoTracker/MkFitCore/src/PropagationMPlex.cc b/RecoTracker/MkFitCore/src/PropagationMPlex.cc index 079c3d58c0ac9..197e73c8b4600 100644 --- a/RecoTracker/MkFitCore/src/PropagationMPlex.cc +++ b/RecoTracker/MkFitCore/src/PropagationMPlex.cc @@ -1001,20 +1001,22 @@ namespace mkfit { const TrackerInfo& tinfo = *pflags.tracker_info; +#if !defined(__clang__) #pragma omp simd +#endif for (int n = 0; n < NN; ++n) { if (n < N_proc) { if (outFailFlag(n, 0, 0) || (noMatEffPtr && noMatEffPtr->constAt(n, 0, 0))) { hitsRl(n, 0, 0) = 0.f; hitsXi(n, 0, 0) = 0.f; } else { - auto mat = tinfo.material_checked(std::abs(outPar(n, 2, 0)), msRad(n, 0, 0)); + const auto mat = tinfo.material_checked(std::abs(outPar(n, 2, 0)), msRad(n, 0, 0)); hitsRl(n, 0, 0) = mat.radl; hitsXi(n, 0, 0) = mat.bbxi; } const float r0 = hipo(inPar(n, 0, 0), inPar(n, 1, 0)); const float r = msRad(n, 0, 0); - propSign(n, 0, 0) = (r > r0 ? 1. : -1.); + propSign(n, 0, 0) = (r > r0 ? 1.f : -1.f); } } MPlexHV plNrm; diff --git a/RecoTracker/MkFitCore/src/PropagationMPlexEndcap.cc b/RecoTracker/MkFitCore/src/PropagationMPlexEndcap.cc index 35f31dbb077fa..a424ffd9b6405 100644 --- a/RecoTracker/MkFitCore/src/PropagationMPlexEndcap.cc +++ b/RecoTracker/MkFitCore/src/PropagationMPlexEndcap.cc @@ -129,14 +129,16 @@ namespace mkfit { const TrackerInfo& tinfo = *pflags.tracker_info; +#if !defined(__clang__) #pragma omp simd +#endif for (int n = 0; n < NN; ++n) { if (n >= N_proc || (noMatEffPtr && noMatEffPtr->constAt(n, 0, 0))) { hitsRl(n, 0, 0) = 0.f; hitsXi(n, 0, 0) = 0.f; } else { - const float hypo = std::hypot(outPar(n, 0, 0), outPar(n, 1, 0)); - auto mat = tinfo.material_checked(std::abs(msZ(n, 0, 0)), hypo); + const auto hypo = std::hypot(outPar(n, 0, 0), outPar(n, 1, 0)); + const auto mat = tinfo.material_checked(std::abs(msZ(n, 0, 0)), hypo); hitsRl(n, 0, 0) = mat.radl; hitsXi(n, 0, 0) = mat.bbxi; } diff --git a/RecoTracker/MkFitCore/src/PropagationMPlexPlane.cc b/RecoTracker/MkFitCore/src/PropagationMPlexPlane.cc index 8bba667b05297..1861957aa21db 100644 --- a/RecoTracker/MkFitCore/src/PropagationMPlexPlane.cc +++ b/RecoTracker/MkFitCore/src/PropagationMPlexPlane.cc @@ -2,6 +2,7 @@ #include "RecoTracker/MkFitCore/interface/PropagationConfig.h" #include "RecoTracker/MkFitCore/interface/Config.h" #include "RecoTracker/MkFitCore/interface/TrackerInfo.h" +#include "RecoTracker/MkFitCore/interface/cms_common_macros.h" #include "PropagationMPlex.h" @@ -431,7 +432,7 @@ namespace { //float s[nmax - nmin]; //first iteration outside the loop #pragma omp simd - for (int n = 0; n < NN; ++n) { + for (int n = 0; n < N_proc; ++n) { s[n] = (std::abs(plNrm(n, 2, 0)) < 1.f ? getS(delta0[n], delta1[n], delta2[n], @@ -462,7 +463,7 @@ namespace { // Note, sinT/cosT not updated #pragma omp simd - for (int n = 0; n < NN; ++n) { + for (int n = 0; n < N_proc; ++n) { s[n] += (std::abs(plNrm(n, 2, 0)) < 1.f ? getS(delta0[n], delta1[n], @@ -482,14 +483,14 @@ namespace { } //end Niter-1 // use linear approximation if s did not converge (for very high pT tracks) - for (int n = 0; n < NN; ++n) { + for (int n = 0; n < N_proc; ++n) { #ifdef DEBUG if (debug) std::cout << "s[n]=" << s[n] << " sl[n]=" << sl[n] << " std::isnan(s[n])=" << std::isnan(s[n]) << " std::isfinite(s[n])=" << std::isfinite(s[n]) << " std::isnormal(s[n])=" << std::isnormal(s[n]) << std::endl; #endif - if ((std::abs(sl[n]) > std::abs(s[n])) || std::isnormal(s[n]) == false) + if (mkfit::isFinite(s[n]) == false && mkfit::isFinite(sl[n])) // replace with sl even if not fully correct s[n] = sl[n]; } @@ -650,14 +651,16 @@ namespace mkfit { const TrackerInfo& tinfo = *pflags.tracker_info; +#if !defined(__clang__) #pragma omp simd +#endif for (int n = 0; n < NN; ++n) { if (n >= N_proc || (noMatEffPtr && noMatEffPtr->constAt(n, 0, 0))) { hitsRl(n, 0, 0) = 0.f; hitsXi(n, 0, 0) = 0.f; } else { const float hypo = std::hypot(outPar(n, 0, 0), outPar(n, 1, 0)); - auto mat = tinfo.material_checked(std::abs(outPar(n, 2, 0)), hypo); + const auto mat = tinfo.material_checked(std::abs(outPar(n, 2, 0)), hypo); hitsRl(n, 0, 0) = mat.radl; hitsXi(n, 0, 0) = mat.bbxi; } diff --git a/RecoTracker/NuclearSeedGenerator/src/SeedFromNuclearInteraction.cc b/RecoTracker/NuclearSeedGenerator/src/SeedFromNuclearInteraction.cc index 05943ba2d95cf..5c040d71ebdf5 100644 --- a/RecoTracker/NuclearSeedGenerator/src/SeedFromNuclearInteraction.cc +++ b/RecoTracker/NuclearSeedGenerator/src/SeedFromNuclearInteraction.cc @@ -35,7 +35,7 @@ void SeedFromNuclearInteraction::setMeasurements(const TSOS& inner_TSOS, //theHits.push_back( inner_TM.recHit() ); // put temporarily - TODO: remove this line theHits.push_back(outerHit_); - initialTSOS_.reset(new TrajectoryStateOnSurface(inner_TSOS)); + initialTSOS_ = std::make_shared(inner_TSOS); // calculate the initial FreeTrajectoryState. freeTS_.reset(stateWithError()); @@ -70,7 +70,7 @@ void SeedFromNuclearInteraction::setMeasurements(TangentHelix& thePrimaryHelix, theHits.push_back(innerHit_); theHits.push_back(outerHit_); - initialTSOS_.reset(new TrajectoryStateOnSurface(inner_TSOS)); + initialTSOS_ = std::make_shared(inner_TSOS); // calculate the initial FreeTrajectoryState from the inner and outer TM assuming that the helix equation is already known. freeTS_.reset(stateWithError(helix)); @@ -149,7 +149,7 @@ bool SeedFromNuclearInteraction::construct() { return false; const TransientTrackingRecHit::ConstRecHitPointer& tth = theHits[iHit]; - updatedTSOS_.reset(new TrajectoryStateOnSurface(theUpdator.update(state, *tth))); + updatedTSOS_ = std::make_shared(theUpdator.update(state, *tth)); } LogDebug("NuclearSeedGenerator") << "Seed ** updated state " << updatedTSOS_->cartesianError().matrix(); diff --git a/RecoTracker/PixelTrackFitting/python/PixelTracks_cff.py b/RecoTracker/PixelTrackFitting/python/PixelTracks_cff.py index c8c3719edfc84..79b257ab64fa3 100644 --- a/RecoTracker/PixelTrackFitting/python/PixelTracks_cff.py +++ b/RecoTracker/PixelTrackFitting/python/PixelTracks_cff.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms from HeterogeneousCore.AlpakaCore.functions import * -from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA from RecoLocalTracker.SiStripRecHitConverter.StripCPEfromTrackAngle_cfi import * from RecoLocalTracker.SiStripRecHitConverter.SiStripRecHitMatcher_cfi import * @@ -88,123 +87,11 @@ _pixelTracksTask_lowPU.replace(pixelTracksHitQuadruplets, pixelTracksHitTriplets) trackingLowPU.toReplaceWith(pixelTracksTask, _pixelTracksTask_lowPU) - -# "Patatrack" pixel ntuplets, fishbone cleaning, Broken Line fit, and density-based vertex reconstruction -from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit - -from RecoTracker.PixelSeeding.caHitNtupletCUDAPhase1_cfi import caHitNtupletCUDAPhase1 as _pixelTracksCUDA -from RecoTracker.PixelSeeding.caHitNtupletCUDAPhase2_cfi import caHitNtupletCUDAPhase2 as _pixelTracksCUDAPhase2 -from RecoTracker.PixelSeeding.caHitNtupletCUDAHIonPhase1_cfi import caHitNtupletCUDAHIonPhase1 as _pixelTracksCUDAHIonPhase1 - # Phase 2 modifier from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker # HIon modifiers from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA -# SwitchProducer providing the pixel tracks in SoA format on the CPU -pixelTracksSoA = SwitchProducerCUDA( - # build pixel ntuplets and pixel tracks in SoA format on the CPU - cpu = _pixelTracksCUDA.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA", - idealConditions = False, - onGPU = False - ) -) - -# use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows -run3_common.toModify(pixelTracksSoA.cpu, - idealConditions = True -) - -# convert the pixel tracks from SoA to legacy format -from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAPhase1_cfi import pixelTrackProducerFromSoAPhase1 as _pixelTrackProducerFromSoA -from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAPhase2_cfi import pixelTrackProducerFromSoAPhase2 as _pixelTrackProducerFromSoAPhase2 -from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAHIonPhase1_cfi import pixelTrackProducerFromSoAHIonPhase1 as _pixelTrackProducerFromSoAHIonPhase1 - -pixelNtupletFit.toReplaceWith(pixelTracks, _pixelTrackProducerFromSoA.clone( - pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting", -)) - -(pixelNtupletFit & phase2_tracker).toReplaceWith(pixelTracks, _pixelTrackProducerFromSoAPhase2.clone( - pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting", -)) - -(pixelNtupletFit & pp_on_AA).toReplaceWith(pixelTracks, _pixelTrackProducerFromSoAHIonPhase1.clone( - pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting", -)) - -pixelNtupletFit.toReplaceWith(pixelTracksTask, cms.Task( - # build the pixel ntuplets and the pixel tracks in SoA format on the GPU - pixelTracksSoA, - # convert the pixel tracks from SoA to legacy format - pixelTracks -)) - -# "Patatrack" sequence running on GPU (or CPU if not available) -from Configuration.ProcessModifiers.gpu_cff import gpu - -# build the pixel ntuplets and pixel tracks in SoA format on the GPU -pixelTracksCUDA = _pixelTracksCUDA.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA", - idealConditions = False, - onGPU = True, -) - -# use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows -run3_common.toModify(pixelTracksCUDA, - idealConditions = True -) - -# SwitchProducer providing the pixel tracks in SoA format on the CPU -from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAPhase1_cfi import pixelTrackSoAFromCUDAPhase1 as _pixelTracksSoA -from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAPhase2_cfi import pixelTrackSoAFromCUDAPhase2 as _pixelTracksSoAPhase2 -from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAHIonPhase1_cfi import pixelTrackSoAFromCUDAHIonPhase1 as _pixelTracksSoAHIonPhase1 - -gpu.toModify(pixelTracksSoA, - # transfer the pixel tracks in SoA format to the host - cuda = _pixelTracksSoA.clone() -) - -(gpu & phase2_tracker).toModify(pixelTracksSoA,cuda = _pixelTracksSoAPhase2.clone( -)) - -(gpu & pp_on_AA).toModify(pixelTracksSoA,cuda = _pixelTracksSoAHIonPhase1.clone( -)) - -phase2_tracker.toModify(pixelTracksSoA,cpu = _pixelTracksCUDAPhase2.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA", - onGPU = False -)) - -(pp_on_AA & ~phase2_tracker).toModify(pixelTracksSoA,cpu = _pixelTracksCUDAHIonPhase1.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA", - onGPU = False -)) - -phase2_tracker.toReplaceWith(pixelTracksCUDA,_pixelTracksCUDAPhase2.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA", - onGPU = True, -)) - -(pp_on_AA & ~phase2_tracker).toReplaceWith(pixelTracksCUDA,_pixelTracksCUDAHIonPhase1.clone( - pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA", - onGPU = True, -)) - -(pixelNtupletFit & gpu).toReplaceWith(pixelTracksTask, cms.Task( - # build the pixel ntuplets and pixel tracks in SoA format on the GPU - pixelTracksCUDA, - # transfer the pixel tracks in SoA format to the CPU, and convert them to legacy format - pixelTracksTask.copy() -)) - -## GPU vs CPU validation -# force CPU vertexing to use hit SoA from CPU chain and not the converted one from GPU chain -from Configuration.ProcessModifiers.gpuValidationPixel_cff import gpuValidationPixel -(pixelNtupletFit & gpu & gpuValidationPixel).toModify(pixelTracksSoA.cpu, - pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA@cpu" - ) - ###################################################################### ### Alpaka Pixel Track Reco diff --git a/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc b/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc index f646e38d2c808..c8e9b11d940eb 100644 --- a/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc +++ b/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc @@ -13,7 +13,7 @@ #include "Geometry/CommonDetUnit/interface/GeomDet.h" #include "DataFormats/TrackerCommon/interface/TrackerTopology.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" using namespace std; diff --git a/RecoTracker/TkSeedGenerator/plugins/SeedCombiner.h b/RecoTracker/TkSeedGenerator/plugins/SeedCombiner.h index 7410b1128628b..f7f9c7890e935 100644 --- a/RecoTracker/TkSeedGenerator/plugins/SeedCombiner.h +++ b/RecoTracker/TkSeedGenerator/plugins/SeedCombiner.h @@ -9,6 +9,9 @@ #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" #include "FWCore/Utilities/interface/Visibility.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" namespace edm { class Event; @@ -21,9 +24,8 @@ class dso_hidden SeedCombiner : public edm::stream::EDProducer<> { SeedCombiner(const edm::ParameterSet& cfg); ~SeedCombiner() override = default; - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - void produce(edm::Event& ev, const edm::EventSetup& es) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: std::vector> inputCollections_; diff --git a/RecoTracker/TkSeedGenerator/python/GlobalSeedsFromTripletsWithVertices_cff.py b/RecoTracker/TkSeedGenerator/python/GlobalSeedsFromTripletsWithVertices_cff.py index c4282b6351786..4eab3c5176e92 100644 --- a/RecoTracker/TkSeedGenerator/python/GlobalSeedsFromTripletsWithVertices_cff.py +++ b/RecoTracker/TkSeedGenerator/python/GlobalSeedsFromTripletsWithVertices_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms print() diff --git a/RecoVertex/AdaptiveVertexFinder/plugins/VertexMerger.cc b/RecoVertex/AdaptiveVertexFinder/plugins/VertexMerger.cc index 75e9c5729ce65..761e7c8f4f40d 100644 --- a/RecoVertex/AdaptiveVertexFinder/plugins/VertexMerger.cc +++ b/RecoVertex/AdaptiveVertexFinder/plugins/VertexMerger.cc @@ -1,22 +1,23 @@ #include #include -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - +#include "DataFormats/Candidate/interface/VertexCompositePtrCandidate.h" #include "DataFormats/Common/interface/Handle.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "RecoVertex/VertexTools/interface/VertexDistance3D.h" -#include "RecoVertex/VertexTools/interface/SharedTracks.h" -#include "DataFormats/Candidate/interface/VertexCompositePtrCandidate.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/InputTag.h" #include "RecoVertex/VertexPrimitives/interface/ConvertToFromReco.h" #include "RecoVertex/VertexPrimitives/interface/VertexState.h" +#include "RecoVertex/VertexTools/interface/SharedTracks.h" +#include "RecoVertex/VertexTools/interface/VertexDistance3D.h" template class TemplatedVertexMerger : public edm::stream::EDProducer<> { @@ -24,6 +25,7 @@ class TemplatedVertexMerger : public edm::stream::EDProducer<> { typedef std::vector Product; TemplatedVertexMerger(const edm::ParameterSet ¶ms); + static void fillDescriptions(edm::ConfigurationDescriptions &descriptions); void produce(edm::Event &event, const edm::EventSetup &es) override; private: @@ -77,6 +79,15 @@ void TemplatedVertexMerger::produce(edm::Event &event, const edm::EventSetu event.put(std::move(recoVertices)); } +template +void TemplatedVertexMerger::fillDescriptions(edm::ConfigurationDescriptions &descriptions) { + edm::ParameterSetDescription desc; + desc.add("maxFraction", 0.7); + desc.add("minSignificance", 2); + desc.add("secondaryVertices", edm::InputTag("inclusiveVertexFinder")); + descriptions.addWithDefaultLabel(desc); +} + typedef TemplatedVertexMerger VertexMerger; typedef TemplatedVertexMerger CandidateVertexMerger; diff --git a/RecoVertex/AdaptiveVertexFinder/python/vertexMerger_cfi.py b/RecoVertex/AdaptiveVertexFinder/python/vertexMerger_cfi.py deleted file mode 100644 index ffcab77d8863e..0000000000000 --- a/RecoVertex/AdaptiveVertexFinder/python/vertexMerger_cfi.py +++ /dev/null @@ -1,9 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -vertexMerger = cms.EDProducer("VertexMerger", - secondaryVertices = cms.InputTag("inclusiveVertexFinder"), - maxFraction = cms.double(0.7), - minSignificance = cms.double(2) -) - - diff --git a/RecoVertex/BeamSpotProducer/plugins/BeamSpotCompatibilityChecker.cc b/RecoVertex/BeamSpotProducer/plugins/BeamSpotCompatibilityChecker.cc index 1661427845f16..e0abd152be0a4 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BeamSpotCompatibilityChecker.cc +++ b/RecoVertex/BeamSpotProducer/plugins/BeamSpotCompatibilityChecker.cc @@ -5,7 +5,7 @@ // /**\class BeamSpotCompatibilityChecker BeamSpotCompatibilityChecker.cc RecoVertex/BeamSpotProducer/plugins/BeamSpotCompatibilityChecker.cc - Description: Class to check the compatibilty between the BeamSpot payload in the database and the one in the event + Description: Class to check the compatibility between the BeamSpot payload in the database and the one in the event Implementation: Makes use of the Significance struct to establish how compatible are the data members of the two BeamSpots in input @@ -38,7 +38,7 @@ #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/ESGetToken.h" #include "FWCore/Utilities/interface/InputTag.h" - +#include "RecoVertex/VertexTools/interface/VertexDistance3D.h" // // class declaration // @@ -47,20 +47,22 @@ namespace { struct Significance { - Significance(const double& a, const double& b, const double& errA, const double& errB) - : m_A(a), m_B(b), m_ErrA(errA), m_ErrB(errB) { + Significance(const double& a, const double& b, const double& errA, const double& errB, const std::string& var) + : m_A(a), m_B(b), m_ErrA(errA), m_ErrB(errB), m_var(var) { if (m_ErrA == 0 && m_ErrB == 0) { edm::LogError("LogicalError") << "Can't calculate significance when both errors are zero!" << std::endl; } m_combinedError = std::sqrt((m_ErrA * m_ErrA) + (m_ErrB * m_ErrB)); } - float getSig(bool verbose) { + float getSig(const bool verbose) { if (verbose) { - edm::LogInfo("BeamSpotCompatibilityChecker") - << "A= " << m_A << "+/-" << m_ErrA << " " - << "B= " << m_B << "+/-" << m_ErrB << " | delta=" << std::abs(m_A - m_B) << "+/-" << m_combinedError - << std::endl; + edm::LogPrint("BeamSpotCompatibilityChecker") + << std::fixed << std::setprecision(6) // Set fixed-point format with 3 decimal places + << m_var << ": A= " << std::setw(10) << m_A << " +/- " << std::setw(10) << m_ErrA + << " B= " << std::setw(5) << m_B << " +/- " << std::setw(10) << m_ErrB + << " | delta= " << std::setw(10) << std::abs(m_A - m_B) << " +/- " << std::setw(10) << m_combinedError + << " Sig= " << std::setw(10) << std::abs(m_A - m_B) / m_combinedError << std::endl; } return std::abs(m_A - m_B) / m_combinedError; } @@ -71,6 +73,7 @@ namespace { double m_ErrA; double m_ErrB; double m_ErrAB; + std::string m_var; double m_combinedError; }; } // namespace @@ -82,7 +85,8 @@ class BeamSpotCompatibilityChecker : public edm::global::EDAnalyzer<> { void analyze(edm::StreamID, edm::Event const&, edm::EventSetup const&) const final; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - static std::array compareBS(const reco::BeamSpot& BSA, const reco::BeamSpot& BSB); + static std::array compareBS(const reco::BeamSpot& BSA, const reco::BeamSpot& BSB, const bool verbose); + static double computeBeamSpotCompatibility(const reco::BeamSpot& beamSpot1, const reco::BeamSpot& beamSpot2); private: // ----------member data --------------------------- @@ -184,7 +188,7 @@ void BeamSpotCompatibilityChecker::analyze(edm::StreamID sid, edm::LogPrint("BeamSpotCompatibilityChecker") << "BS from DB: \n" << spotDB << std::endl; } - auto significances = compareBS(spotDB, spotEvent); + auto significances = compareBS(spotDB, spotEvent, verbose_); std::vector labels = {"x0", "y0", "z0", "sigmaX", "sigmaY", "sigmaZ"}; std::string msg = " |delta X0|=" + std::to_string(std::abs(deltaX0) * cmToum) + @@ -192,7 +196,7 @@ void BeamSpotCompatibilityChecker::analyze(edm::StreamID sid, " um |delta Z0|=" + std::to_string(std::abs(deltaZ0) * cmToum) + " um |delta sigmaX|=" + std::to_string(std::abs(deltaSigmaX) * cmToum) + " um |delta sigmaY|=" + std::to_string(std::abs(deltaSigmaY) * cmToum) + - " um |delta sigmaZ|=" + std::to_string(std::abs(deltaSigmaZ)) + "cm"; + " um |delta sigmaZ|=" + std::to_string(std::abs(deltaSigmaZ)) + " cm"; if (verbose_) { edm::LogPrint("BeamSpotCompatibilityChecker") << msg.c_str() << std::endl; } @@ -213,22 +217,44 @@ void BeamSpotCompatibilityChecker::analyze(edm::StreamID sid, } } -std::array BeamSpotCompatibilityChecker::compareBS(const reco::BeamSpot& beamSpotA, - const reco::BeamSpot& beamSpotB) { - auto xS = Significance(beamSpotA.x0(), beamSpotB.x0(), beamSpotA.x0Error(), beamSpotB.x0Error()); - auto yS = Significance(beamSpotA.y0(), beamSpotB.y0(), beamSpotA.y0Error(), beamSpotB.y0Error()); - auto zS = Significance(beamSpotA.z0(), beamSpotB.z0(), beamSpotA.z0Error(), beamSpotB.z0Error()); - auto xWS = Significance( - beamSpotA.BeamWidthX(), beamSpotB.BeamWidthX(), beamSpotA.BeamWidthXError(), beamSpotB.BeamWidthXError()); - auto yWS = Significance( - beamSpotA.BeamWidthY(), beamSpotB.BeamWidthY(), beamSpotA.BeamWidthYError(), beamSpotB.BeamWidthYError()); - auto zWS = Significance(beamSpotA.sigmaZ(), beamSpotB.sigmaZ(), beamSpotA.sigmaZ0Error(), beamSpotB.sigmaZ0Error()); +std::array BeamSpotCompatibilityChecker::compareBS(const reco::BeamSpot& spotA, + const reco::BeamSpot& spotB, + const bool verbose) { + // Lambda to calculate the significance + auto calcSignificance = [&](auto a, auto b, auto aErr, auto bErr, auto var) { + return Significance(a, b, aErr, bErr, var).getSig(verbose); + }; + // Populate the array using the lambda std::array ret = { - {xS.getSig(false), yS.getSig(false), zS.getSig(false), xWS.getSig(false), yWS.getSig(false), zWS.getSig(false)}}; + {calcSignificance(spotA.x0(), spotB.x0(), spotA.x0Error(), spotB.x0Error(), "x"), + calcSignificance(spotA.y0(), spotB.y0(), spotA.y0Error(), spotB.y0Error(), "y"), + calcSignificance(spotA.z0(), spotB.z0(), spotA.z0Error(), spotB.z0Error(), "z"), + calcSignificance( + spotA.BeamWidthX(), spotB.BeamWidthX(), spotA.BeamWidthXError(), spotB.BeamWidthXError(), "widthX"), + calcSignificance( + spotA.BeamWidthY(), spotB.BeamWidthY(), spotA.BeamWidthYError(), spotB.BeamWidthYError(), "witdhY"), + calcSignificance(spotA.sigmaZ(), spotB.sigmaZ(), spotA.sigmaZ0Error(), spotB.sigmaZ0Error(), "witdthZ")}}; + return ret; } +double BeamSpotCompatibilityChecker::computeBeamSpotCompatibility(const reco::BeamSpot& beamSpot1, + const reco::BeamSpot& beamSpot2) { + reco::Vertex vertex1( + reco::Vertex::Point(beamSpot1.x0(), beamSpot1.y0(), beamSpot1.z0()), beamSpot1.rotatedCovariance3D(), 0, 0, 0); + reco::Vertex vertex2( + reco::Vertex::Point(beamSpot2.x0(), beamSpot2.y0(), beamSpot2.z0()), beamSpot2.rotatedCovariance3D(), 0, 0, 0); + + // Calculate distance and significance using VertexDistance3D + VertexDistance3D distanceCalculator; + // double distance = distanceCalculator.distance(vertex1, vertex2).value(); // Euclidean distance + double significance = distanceCalculator.distance(vertex1, vertex2).significance(); // Distance significance + + // Return the significance as a measure of compatibility + return significance; // Smaller values indicate higher compatibility +} + // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void BeamSpotCompatibilityChecker::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; diff --git a/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc b/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc index 47c1daf735e41..79fe97af78acc 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc +++ b/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc @@ -41,6 +41,16 @@ class BeamSpotOnlineProducer : public edm::stream::EDProducer<> { static void fillDescriptions(edm::ConfigurationDescriptions& iDesc); private: + // helper methods + bool shouldShout(const edm::Event& iEvent) const; + bool processTransientRecord(const edm::EventSetup& iSetup, reco::BeamSpot& result, bool shoutMODE); + void createBeamSpotFromTransient(const BeamSpotObjects& spotDB, reco::BeamSpot& result) const; + bool processScalers(const edm::Event& iEvent, reco::BeamSpot& result, bool shoutMODE); + void createBeamSpotFromScaler(const BeamSpotOnline& spotOnline, reco::BeamSpot& result) const; + bool isInvalidScaler(const BeamSpotOnline& spotOnline, bool shoutMODE) const; + void createBeamSpotFromDB(const edm::EventSetup& iSetup, reco::BeamSpot& result, bool shoutMODE) const; + + // data members const bool changeFrame_; const double theMaxZ, theSetSigmaZ; double theMaxR2; @@ -88,151 +98,161 @@ void BeamSpotOnlineProducer::fillDescriptions(edm::ConfigurationDescriptions& iD iDesc.addWithDefaultLabel(ps); } -void BeamSpotOnlineProducer::produce(Event& iEvent, const EventSetup& iSetup) { - // product is a reco::BeamSpot object +void BeamSpotOnlineProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { auto result = std::make_unique(); - reco::BeamSpot aSpot; - //shout MODE only in stable beam - bool shoutMODE = false; + + // Determine if we should "shout" based on the beam mode + bool shoutMODE = shouldShout(iEvent); + bool fallBackToDB{false}; + + // Use transient record if enabled + if (useTransientRecord_) { + fallBackToDB = processTransientRecord(iSetup, *result, shoutMODE); + } else { + // Process online beam spot scalers + fallBackToDB = processScalers(iEvent, *result, shoutMODE); + } + + // Fallback to DB if necessary + if (fallBackToDB) { + createBeamSpotFromDB(iSetup, *result, shoutMODE); + } + + iEvent.put(std::move(result)); +} + +bool BeamSpotOnlineProducer::shouldShout(const edm::Event& iEvent) const { edm::Handle gtEvmReadoutRecord; if (iEvent.getByToken(l1GtEvmReadoutRecordToken_, gtEvmReadoutRecord)) { - if (gtEvmReadoutRecord->gtfeWord().beamMode() == theBeamShoutMode) - shoutMODE = true; - } else { - shoutMODE = true; + return gtEvmReadoutRecord->gtfeWord().beamMode() == theBeamShoutMode; } - bool fallBackToDB = false; - if (useTransientRecord_) { - auto const& spotDB = iSetup.getData(beamTransientToken_); - if (spotDB.beamType() != 2) { - if (shoutMODE && beamTransientRcdESWatcher_.check(iSetup)) { - edm::LogWarning("BeamSpotOnlineProducer") - << "Online Beam Spot producer falls back to DB value because the ESProducer returned a fake beamspot "; - } - fallBackToDB = true; - } else { - // translate from BeamSpotObjects to reco::BeamSpot - // in case we need to switch to LHC reference frame - // ignore for the moment rotations, and translations - double f = 1.; - if (changeFrame_) - f = -1.; - reco::BeamSpot::Point apoint(f * spotDB.x(), f * spotDB.y(), f * spotDB.z()); - - reco::BeamSpot::CovarianceMatrix matrix; - for (int i = 0; i < reco::BeamSpot::dimension; ++i) { - for (int j = 0; j < reco::BeamSpot::dimension; ++j) { - matrix(i, j) = spotDB.covariance(i, j); - } - } - double sigmaZ = spotDB.sigmaZ(); - if (theSetSigmaZ > 0) - sigmaZ = theSetSigmaZ; - - // this assume beam width same in x and y - aSpot = reco::BeamSpot(apoint, sigmaZ, spotDB.dxdz(), spotDB.dydz(), spotDB.beamWidthX(), matrix); - aSpot.setBeamWidthY(spotDB.beamWidthY()); - aSpot.setEmittanceX(spotDB.emittanceX()); - aSpot.setEmittanceY(spotDB.emittanceY()); - aSpot.setbetaStar(spotDB.betaStar()); - aSpot.setType(reco::BeamSpot::Tracker); + return true; // Default to "shout" if the record is missing +} + +bool BeamSpotOnlineProducer::processTransientRecord(const edm::EventSetup& iSetup, + reco::BeamSpot& result, + bool shoutMODE) { + auto const& spotDB = iSetup.getData(beamTransientToken_); + + if (spotDB.beamType() != 2) { + if (shoutMODE && beamTransientRcdESWatcher_.check(iSetup)) { + edm::LogWarning("BeamSpotOnlineProducer") + << "Online Beam Spot producer falls back to DB value due to fake beamspot in transient record."; } - } else { - // get scalar collection - Handle handleScaler; - iEvent.getByToken(scalerToken_, handleScaler); - - // beam spot scalar object - BeamSpotOnline spotOnline; - - // product is a reco::BeamSpot object - auto result = std::make_unique(); - - if (!handleScaler->empty()) { - // get one element - spotOnline = *(handleScaler->begin()); - - // in case we need to switch to LHC reference frame - // ignore for the moment rotations, and translations - double f = 1.; - if (changeFrame_) - f = -1.; - - reco::BeamSpot::Point apoint(f * spotOnline.x(), spotOnline.y(), f * spotOnline.z()); - - reco::BeamSpot::CovarianceMatrix matrix; - matrix(0, 0) = spotOnline.err_x() * spotOnline.err_x(); - matrix(1, 1) = spotOnline.err_y() * spotOnline.err_y(); - matrix(2, 2) = spotOnline.err_z() * spotOnline.err_z(); - matrix(3, 3) = spotOnline.err_sigma_z() * spotOnline.err_sigma_z(); - - double sigmaZ = spotOnline.sigma_z(); - if (theSetSigmaZ > 0) - sigmaZ = theSetSigmaZ; - - aSpot = reco::BeamSpot(apoint, sigmaZ, spotOnline.dxdz(), f * spotOnline.dydz(), spotOnline.width_x(), matrix); - - aSpot.setBeamWidthY(spotOnline.width_y()); - aSpot.setEmittanceX(0.); - aSpot.setEmittanceY(0.); - aSpot.setbetaStar(0.); - aSpot.setType(reco::BeamSpot::LHC); // flag value from scalars - - // check if we have a valid beam spot fit result from online DQM - if (spotOnline.x() == 0 && spotOnline.y() == 0 && spotOnline.z() == 0 && spotOnline.width_x() == 0 && - spotOnline.width_y() == 0) { - if (shoutMODE) { - edm::LogWarning("BeamSpotOnlineProducer") - << "Online Beam Spot producer falls back to DB value because the scaler values are zero "; - } - fallBackToDB = true; - } - double r2 = spotOnline.x() * spotOnline.x() + spotOnline.y() * spotOnline.y(); - if (std::abs(spotOnline.z()) >= theMaxZ || r2 >= theMaxR2) { - if (shoutMODE) { - edm::LogError("BeamSpotOnlineProducer") - << "Online Beam Spot producer falls back to DB value because the scaler values are too big to be true :" - << spotOnline.x() << " " << spotOnline.y() << " " << spotOnline.z(); - } - fallBackToDB = true; - } - } else { - //empty online beamspot collection: FED data was empty - //the error should probably have been send at unpacker level - fallBackToDB = true; + return true; // Trigger fallback to DB + } + + // Create BeamSpot from transient record + createBeamSpotFromTransient(spotDB, result); + return false; // No fallback needed +} + +void BeamSpotOnlineProducer::createBeamSpotFromTransient(const BeamSpotObjects& spotDB, reco::BeamSpot& result) const { + double f = changeFrame_ ? -1.0 : 1.0; + reco::BeamSpot::Point apoint(f * spotDB.x(), f * spotDB.y(), f * spotDB.z()); + + reco::BeamSpot::CovarianceMatrix matrix; + for (int i = 0; i < reco::BeamSpot::dimension; ++i) { + for (int j = 0; j < reco::BeamSpot::dimension; ++j) { + matrix(i, j) = spotDB.covariance(i, j); } } - if (fallBackToDB) { - edm::ESHandle beamhandle = iSetup.getHandle(beamToken_); - const BeamSpotObjects* spotDB = beamhandle.product(); - // translate from BeamSpotObjects to reco::BeamSpot - reco::BeamSpot::Point apoint(spotDB->x(), spotDB->y(), spotDB->z()); + double sigmaZ = (theSetSigmaZ > 0) ? theSetSigmaZ : spotDB.sigmaZ(); + result = reco::BeamSpot(apoint, sigmaZ, spotDB.dxdz(), spotDB.dydz(), spotDB.beamWidthX(), matrix); + result.setBeamWidthY(spotDB.beamWidthY()); + result.setEmittanceX(spotDB.emittanceX()); + result.setEmittanceY(spotDB.emittanceY()); + result.setbetaStar(spotDB.betaStar()); + result.setType(reco::BeamSpot::Tracker); +} + +bool BeamSpotOnlineProducer::processScalers(const edm::Event& iEvent, reco::BeamSpot& result, bool shoutMODE) { + edm::Handle handleScaler; + iEvent.getByToken(scalerToken_, handleScaler); + + if (handleScaler->empty()) { + return true; // Fallback to DB if scaler collection is empty + } - reco::BeamSpot::CovarianceMatrix matrix; - for (int i = 0; i < reco::BeamSpot::dimension; ++i) { - for (int j = 0; j < reco::BeamSpot::dimension; ++j) { - matrix(i, j) = spotDB->covariance(i, j); - } + // Extract data from scaler + BeamSpotOnline spotOnline = *(handleScaler->begin()); + createBeamSpotFromScaler(spotOnline, result); + + // Validate the scaler data + if (isInvalidScaler(spotOnline, shoutMODE)) { + return true; // Trigger fallback to DB + } + return false; // No fallback needed +} + +void BeamSpotOnlineProducer::createBeamSpotFromScaler(const BeamSpotOnline& spotOnline, reco::BeamSpot& result) const { + double f = changeFrame_ ? -1.0 : 1.0; + reco::BeamSpot::Point apoint(f * spotOnline.x(), spotOnline.y(), f * spotOnline.z()); + + reco::BeamSpot::CovarianceMatrix matrix; + matrix(0, 0) = spotOnline.err_x() * spotOnline.err_x(); + matrix(1, 1) = spotOnline.err_y() * spotOnline.err_y(); + matrix(2, 2) = spotOnline.err_z() * spotOnline.err_z(); + matrix(3, 3) = spotOnline.err_sigma_z() * spotOnline.err_sigma_z(); + + double sigmaZ = (theSetSigmaZ > 0) ? theSetSigmaZ : spotOnline.sigma_z(); + result = reco::BeamSpot(apoint, sigmaZ, spotOnline.dxdz(), f * spotOnline.dydz(), spotOnline.width_x(), matrix); + result.setBeamWidthY(spotOnline.width_y()); + result.setEmittanceX(0.0); + result.setEmittanceY(0.0); + result.setbetaStar(0.0); + result.setType(reco::BeamSpot::LHC); +} + +bool BeamSpotOnlineProducer::isInvalidScaler(const BeamSpotOnline& spotOnline, bool shoutMODE) const { + if (spotOnline.x() == 0 && spotOnline.y() == 0 && spotOnline.z() == 0 && spotOnline.width_x() == 0 && + spotOnline.width_y() == 0) { + if (shoutMODE) { + edm::LogWarning("BeamSpotOnlineProducer") + << "Online Beam Spot producer falls back to DB due to zero scaler values."; } + return true; + } - // this assume beam width same in x and y - aSpot = reco::BeamSpot(apoint, spotDB->sigmaZ(), spotDB->dxdz(), spotDB->dydz(), spotDB->beamWidthX(), matrix); - aSpot.setBeamWidthY(spotDB->beamWidthY()); - aSpot.setEmittanceX(spotDB->emittanceX()); - aSpot.setEmittanceY(spotDB->emittanceY()); - aSpot.setbetaStar(spotDB->betaStar()); - aSpot.setType(reco::BeamSpot::Tracker); - - GlobalError bse(aSpot.rotatedCovariance3D()); - if ((bse.cxx() <= 0.) || (bse.cyy() <= 0.) || (bse.czz() <= 0.)) { - edm::LogError("UnusableBeamSpot") << "Beamspot from fallback to DB with invalid errors: " << aSpot.covariance(); + double r2 = spotOnline.x() * spotOnline.x() + spotOnline.y() * spotOnline.y(); + if (std::abs(spotOnline.z()) >= theMaxZ || r2 >= theMaxR2) { + if (shoutMODE) { + edm::LogError("BeamSpotOnlineProducer") + << "Online Beam Spot producer falls back to DB due to out-of-range scaler values: " << spotOnline.x() << ", " + << spotOnline.y() << ", " << spotOnline.z(); } + return true; } + return false; +} - *result = aSpot; +void BeamSpotOnlineProducer::createBeamSpotFromDB(const edm::EventSetup& iSetup, + reco::BeamSpot& result, + bool shoutMODE) const { + edm::ESHandle beamhandle = iSetup.getHandle(beamToken_); + const BeamSpotObjects* spotDB = beamhandle.product(); - iEvent.put(std::move(result)); + reco::BeamSpot::Point apoint(spotDB->x(), spotDB->y(), spotDB->z()); + + reco::BeamSpot::CovarianceMatrix matrix; + for (int i = 0; i < reco::BeamSpot::dimension; ++i) { + for (int j = 0; j < reco::BeamSpot::dimension; ++j) { + matrix(i, j) = spotDB->covariance(i, j); + } + } + + result = reco::BeamSpot(apoint, spotDB->sigmaZ(), spotDB->dxdz(), spotDB->dydz(), spotDB->beamWidthX(), matrix); + result.setBeamWidthY(spotDB->beamWidthY()); + result.setEmittanceX(spotDB->emittanceX()); + result.setEmittanceY(spotDB->emittanceY()); + result.setbetaStar(spotDB->betaStar()); + result.setType(reco::BeamSpot::Tracker); + + GlobalError bse(result.rotatedCovariance3D()); + if ((bse.cxx() <= 0.0) || (bse.cyy() <= 0.0) || (bse.czz() <= 0.0)) { + edm::LogError("UnusableBeamSpot") << "Beamspot from DB fallback has invalid errors: " << result.covariance(); + } } #include "FWCore/Framework/interface/MakerMacros.h" diff --git a/RecoVertex/BeamSpotProducer/plugins/BuildFile.xml b/RecoVertex/BeamSpotProducer/plugins/BuildFile.xml index 8f846964d224d..5de80f16f24e5 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BuildFile.xml +++ b/RecoVertex/BeamSpotProducer/plugins/BuildFile.xml @@ -8,6 +8,7 @@ + diff --git a/RecoVertex/BeamSpotProducer/python/BeamSpot_cff.py b/RecoVertex/BeamSpotProducer/python/BeamSpot_cff.py index 5c17275c17274..03775db850083 100644 --- a/RecoVertex/BeamSpotProducer/python/BeamSpot_cff.py +++ b/RecoVertex/BeamSpotProducer/python/BeamSpot_cff.py @@ -1,16 +1,10 @@ import FWCore.ParameterSet.Config as cms from RecoVertex.BeamSpotProducer.BeamSpot_cfi import * -from RecoVertex.BeamSpotProducer.offlineBeamSpotToCUDA_cfi import offlineBeamSpotToCUDA from RecoVertex.BeamSpotProducer.beamSpotDeviceProducer_cfi import beamSpotDeviceProducer as _beamSpotDeviceProducer offlineBeamSpotTask = cms.Task(offlineBeamSpot) -from Configuration.ProcessModifiers.gpu_cff import gpu -_offlineBeamSpotTask_gpu = offlineBeamSpotTask.copy() -_offlineBeamSpotTask_gpu.add(offlineBeamSpotToCUDA) -gpu.toReplaceWith(offlineBeamSpotTask, _offlineBeamSpotTask_gpu) - from Configuration.ProcessModifiers.alpaka_cff import alpaka _offlineBeamSpotTask_alpaka = offlineBeamSpotTask.copy() offlineBeamSpotDevice = _beamSpotDeviceProducer.clone(src = cms.InputTag('offlineBeamSpot')) diff --git a/RecoVertex/BeamSpotProducer/scripts/BeamSpotWorkflow.py b/RecoVertex/BeamSpotProducer/scripts/BeamSpotWorkflow.py index bf4df5707c705..0ac172bd860ce 100755 --- a/RecoVertex/BeamSpotProducer/scripts/BeamSpotWorkflow.py +++ b/RecoVertex/BeamSpotProducer/scripts/BeamSpotWorkflow.py @@ -30,7 +30,6 @@ Fermilab 2010 """ -from __future__ import print_function from builtins import range diff --git a/RecoVertex/BeamSpotProducer/scripts/CommonMethods.py b/RecoVertex/BeamSpotProducer/scripts/CommonMethods.py index b247d44746753..d2946149596f2 100644 --- a/RecoVertex/BeamSpotProducer/scripts/CommonMethods.py +++ b/RecoVertex/BeamSpotProducer/scripts/CommonMethods.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range import math, re, optparse, subprocess, os, sys, time, datetime from BeamSpotObj import BeamSpot diff --git a/RecoVertex/BeamSpotProducer/scripts/beamvalidation.py b/RecoVertex/BeamSpotProducer/scripts/beamvalidation.py index 2fdb2caae215f..8dc962d1e447b 100644 --- a/RecoVertex/BeamSpotProducer/scripts/beamvalidation.py +++ b/RecoVertex/BeamSpotProducer/scripts/beamvalidation.py @@ -25,7 +25,6 @@ Fermilab 2010 """ -from __future__ import print_function from builtins import range diff --git a/RecoVertex/BeamSpotProducer/scripts/checkPayloads.py b/RecoVertex/BeamSpotProducer/scripts/checkPayloads.py index bf862bf0ab052..1bb49c50aaeab 100755 --- a/RecoVertex/BeamSpotProducer/scripts/checkPayloads.py +++ b/RecoVertex/BeamSpotProducer/scripts/checkPayloads.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,subprocess,re import xmlrpclib from CommonMethods import * diff --git a/RecoVertex/BeamSpotProducer/scripts/checkRuns.py b/RecoVertex/BeamSpotProducer/scripts/checkRuns.py index 892cf682ee92b..3cbcad73eab55 100755 --- a/RecoVertex/BeamSpotProducer/scripts/checkRuns.py +++ b/RecoVertex/BeamSpotProducer/scripts/checkRuns.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import sys,os,re import xmlrpclib diff --git a/RecoVertex/BeamSpotProducer/scripts/copyAndRename.py b/RecoVertex/BeamSpotProducer/scripts/copyAndRename.py index b9799e46a13fc..fefbc7f46ab29 100755 --- a/RecoVertex/BeamSpotProducer/scripts/copyAndRename.py +++ b/RecoVertex/BeamSpotProducer/scripts/copyAndRename.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,subprocess from CommonMethods import * def main(): diff --git a/RecoVertex/BeamSpotProducer/scripts/copyFiles.py b/RecoVertex/BeamSpotProducer/scripts/copyFiles.py index 321ba409d0e5e..3f6788bde7565 100755 --- a/RecoVertex/BeamSpotProducer/scripts/copyFiles.py +++ b/RecoVertex/BeamSpotProducer/scripts/copyFiles.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os from CommonMethods import * diff --git a/RecoVertex/BeamSpotProducer/scripts/createPayload.py b/RecoVertex/BeamSpotProducer/scripts/createPayload.py index 3a104c15006d8..0936d8625b7ad 100755 --- a/RecoVertex/BeamSpotProducer/scripts/createPayload.py +++ b/RecoVertex/BeamSpotProducer/scripts/createPayload.py @@ -34,7 +34,6 @@ Fermilab 2010 """ -from __future__ import print_function from builtins import range diff --git a/RecoVertex/BeamSpotProducer/scripts/getBeamSpotDB.py b/RecoVertex/BeamSpotProducer/scripts/getBeamSpotDB.py index 4c2bc39ffc0d6..d7f560b785e4a 100755 --- a/RecoVertex/BeamSpotProducer/scripts/getBeamSpotDB.py +++ b/RecoVertex/BeamSpotProducer/scripts/getBeamSpotDB.py @@ -28,7 +28,6 @@ Fermilab 2010 """ -from __future__ import print_function import sys,os, re diff --git a/RecoVertex/BeamSpotProducer/scripts/ntuplemaker.py b/RecoVertex/BeamSpotProducer/scripts/ntuplemaker.py index fff69dca1b7b4..8c64fbe0dc5b4 100755 --- a/RecoVertex/BeamSpotProducer/scripts/ntuplemaker.py +++ b/RecoVertex/BeamSpotProducer/scripts/ntuplemaker.py @@ -31,7 +31,6 @@ Fermilab 2010 """ -from __future__ import print_function from builtins import range diff --git a/RecoVertex/BeamSpotProducer/scripts/plotBeamSpotDB.py b/RecoVertex/BeamSpotProducer/scripts/plotBeamSpotDB.py index a90ee9f314e78..63b8008712ec8 100755 --- a/RecoVertex/BeamSpotProducer/scripts/plotBeamSpotDB.py +++ b/RecoVertex/BeamSpotProducer/scripts/plotBeamSpotDB.py @@ -41,7 +41,6 @@ Fermilab 2010 """ -from __future__ import print_function from builtins import range diff --git a/RecoVertex/BeamSpotProducer/scripts/rename.py b/RecoVertex/BeamSpotProducer/scripts/rename.py index e190e2e20f74e..4c52a35f78723 100755 --- a/RecoVertex/BeamSpotProducer/scripts/rename.py +++ b/RecoVertex/BeamSpotProducer/scripts/rename.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import sys,os,re from CommonMethods import * diff --git a/RecoVertex/BeamSpotProducer/scripts/root/BxAnalysis/lumiregperbunch.py b/RecoVertex/BeamSpotProducer/scripts/root/BxAnalysis/lumiregperbunch.py index aac2c98e9a98f..9f79b2c6f4176 100755 --- a/RecoVertex/BeamSpotProducer/scripts/root/BxAnalysis/lumiregperbunch.py +++ b/RecoVertex/BeamSpotProducer/scripts/root/BxAnalysis/lumiregperbunch.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import sys,os,calendar from ROOT import gDirectory,TFile diff --git a/RecoVertex/BeamSpotProducer/scripts/splitter.py b/RecoVertex/BeamSpotProducer/scripts/splitter.py index 44d388f49bcc9..1bf3a20744fdd 100755 --- a/RecoVertex/BeamSpotProducer/scripts/splitter.py +++ b/RecoVertex/BeamSpotProducer/scripts/splitter.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,subprocess from CommonMethods import * diff --git a/RecoVertex/BeamSpotProducer/scripts/uploadPayloads.py b/RecoVertex/BeamSpotProducer/scripts/uploadPayloads.py index c2b4dcc0b6b7d..22fde49cb0f3b 100755 --- a/RecoVertex/BeamSpotProducer/scripts/uploadPayloads.py +++ b/RecoVertex/BeamSpotProducer/scripts/uploadPayloads.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,subprocess from CommonMethods import * diff --git a/RecoVertex/BeamSpotProducer/scripts/uploader.py b/RecoVertex/BeamSpotProducer/scripts/uploader.py index f5a95cb72cef9..a397eca49ae81 100755 --- a/RecoVertex/BeamSpotProducer/scripts/uploader.py +++ b/RecoVertex/BeamSpotProducer/scripts/uploader.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,subprocess from CommonMethods import * diff --git a/RecoVertex/BeamSpotProducer/test/BuildFile.xml b/RecoVertex/BeamSpotProducer/test/BuildFile.xml index 2c75914b38196..f293d839f3b4c 100644 --- a/RecoVertex/BeamSpotProducer/test/BuildFile.xml +++ b/RecoVertex/BeamSpotProducer/test/BuildFile.xml @@ -19,6 +19,7 @@ + diff --git a/RecoVertex/BeamSpotProducer/test/InspectFwBeamSpot.py b/RecoVertex/BeamSpotProducer/test/InspectFwBeamSpot.py index b9d8a6a7edcc4..4e2eff61766fb 100644 --- a/RecoVertex/BeamSpotProducer/test/InspectFwBeamSpot.py +++ b/RecoVertex/BeamSpotProducer/test/InspectFwBeamSpot.py @@ -9,7 +9,6 @@ #____________________________________________________________ -from __future__ import print_function import configparser as ConfigParser import ROOT import sys diff --git a/RecoVertex/BeamSpotProducer/test/scripts/AnalyzeLumiScan.py b/RecoVertex/BeamSpotProducer/test/scripts/AnalyzeLumiScan.py index baf401be31ca4..67a927594c117 100644 --- a/RecoVertex/BeamSpotProducer/test/scripts/AnalyzeLumiScan.py +++ b/RecoVertex/BeamSpotProducer/test/scripts/AnalyzeLumiScan.py @@ -14,7 +14,6 @@ # #____________________________________________________________ -from __future__ import print_function from builtins import range import sys,os,re,string diff --git a/RecoVertex/BeamSpotProducer/test/scripts/PlotLumiScan.py b/RecoVertex/BeamSpotProducer/test/scripts/PlotLumiScan.py index d66006a79960d..9d02490687845 100644 --- a/RecoVertex/BeamSpotProducer/test/scripts/PlotLumiScan.py +++ b/RecoVertex/BeamSpotProducer/test/scripts/PlotLumiScan.py @@ -14,7 +14,6 @@ # #____________________________________________________________ -from __future__ import print_function from builtins import range import sys,os import string diff --git a/RecoVertex/BeamSpotProducer/test/scripts/pv.py b/RecoVertex/BeamSpotProducer/test/scripts/pv.py index f0cbda04c182b..5953dfc1df3e1 100644 --- a/RecoVertex/BeamSpotProducer/test/scripts/pv.py +++ b/RecoVertex/BeamSpotProducer/test/scripts/pv.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import ROOT from builtins import range from ROOT import gROOT, gSystem, TFile, TH1I, TCanvas, TFitterMinuit diff --git a/RecoVertex/BeamSpotProducer/test/testBeamSpotCompatibility.cc b/RecoVertex/BeamSpotProducer/test/testBeamSpotCompatibility.cc index de5515318e718..18904fb034a5c 100644 --- a/RecoVertex/BeamSpotProducer/test/testBeamSpotCompatibility.cc +++ b/RecoVertex/BeamSpotProducer/test/testBeamSpotCompatibility.cc @@ -12,7 +12,7 @@ TEST_CASE("Significance Calculation", "[Significance]") { double errA = 1.0; double errB = 1.5; - Significance sig(a, b, errA, errB); + Significance sig(a, b, errA, errB, "test"); float significance = sig.getSig(false); // Correct the expected value based on actual calculation @@ -47,7 +47,7 @@ TEST_CASE("BeamSpot Compatibility Checker", "[compareBS]") { pset.addParameter("bsFromDB", edm::InputTag("")); BeamSpotCompatibilityChecker checker(pset); - auto significances = checker.compareBS(beamSpotA, beamSpotB); + auto significances = checker.compareBS(beamSpotA, beamSpotB, true); // Print significances for (size_t i = 0; i < significances.size(); ++i) { diff --git a/RecoVertex/Configuration/python/RecoPixelVertexing_cff.py b/RecoVertex/Configuration/python/RecoPixelVertexing_cff.py index 0a2bb0d2b63b7..96dec2b62dd1b 100644 --- a/RecoVertex/Configuration/python/RecoPixelVertexing_cff.py +++ b/RecoVertex/Configuration/python/RecoPixelVertexing_cff.py @@ -1,105 +1,21 @@ import FWCore.ParameterSet.Config as cms from HeterogeneousCore.AlpakaCore.functions import * -from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA from RecoTracker.PixelTrackFitting.PixelTracks_cff import * from RecoVertex.PixelVertexFinding.PixelVertices_cff import * -# legacy pixel vertex reconsruction using the divisive vertex finder -pixelVerticesTask = cms.Task( - pixelVertices -) - -# "Patatrack" pixel ntuplets, fishbone cleaning, Broken Line fit, and density-based vertex reconstruction -from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit -from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker - -# HIon modifiers +# HIon Modifiers from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA +# Phase 2 Tracker Modifier +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker -# build the pixel vertices in SoA format on the CPU -from RecoVertex.PixelVertexFinding.pixelVertexProducerCUDAPhase1_cfi import pixelVertexProducerCUDAPhase1 as _pixelVerticesCUDA -from RecoVertex.PixelVertexFinding.pixelVertexProducerCUDAPhase2_cfi import pixelVertexProducerCUDAPhase2 as _pixelVerticesCUDAPhase2 -from RecoVertex.PixelVertexFinding.pixelVertexProducerCUDAHIonPhase1_cfi import pixelVertexProducerCUDAHIonPhase1 as _pixelVerticesCUDAHIonPhase1 - -pixelVerticesSoA = SwitchProducerCUDA( - cpu = _pixelVerticesCUDA.clone( - pixelTrackSrc = "pixelTracksSoA", - onGPU = False - ) -) - -phase2_tracker.toModify(pixelVerticesSoA,cpu = _pixelVerticesCUDAPhase2.clone( - pixelTrackSrc = "pixelTracksSoA", - onGPU = False, - PtMin = 2.0 -)) - -(pp_on_AA & ~phase2_tracker).toModify(pixelVerticesSoA,cpu = _pixelVerticesCUDAHIonPhase1.clone( - pixelTrackSrc = "pixelTracksSoA", - doSplitting = False, - onGPU = False, -)) - -# convert the pixel vertices from SoA to legacy format -from RecoVertex.PixelVertexFinding.pixelVertexFromSoA_cfi import pixelVertexFromSoA as _pixelVertexFromSoA - -(pixelNtupletFit).toReplaceWith(pixelVertices, _pixelVertexFromSoA.clone( - src = "pixelVerticesSoA" -)) - -(pixelNtupletFit).toReplaceWith(pixelVerticesTask, cms.Task( - # build the pixel vertices in SoA format on the CPU - pixelVerticesSoA, - # convert the pixel vertices from SoA to legacy format +# legacy pixel vertex reconsruction using the divisive vertex finder +pixelVerticesTask = cms.Task( pixelVertices -)) - - -# "Patatrack" sequence running on the GPU -from Configuration.ProcessModifiers.gpu_cff import gpu - -# build pixel vertices in SoA format on the GPU -pixelVerticesCUDA = _pixelVerticesCUDA.clone( - pixelTrackSrc = "pixelTracksCUDA", - onGPU = True ) -phase2_tracker.toReplaceWith(pixelVerticesCUDA,_pixelVerticesCUDAPhase2.clone( - pixelTrackSrc = "pixelTracksCUDA", - onGPU = True, - PtMin = 2.0 -)) - -(pp_on_AA & ~phase2_tracker).toReplaceWith(pixelVerticesCUDA,_pixelVerticesCUDAHIonPhase1.clone( - pixelTrackSrc = "pixelTracksCUDA", - doSplitting = False, - onGPU = True -)) - -# transfer the pixel vertices in SoA format to the CPU -from RecoVertex.PixelVertexFinding.pixelVerticesSoA_cfi import pixelVerticesSoA as _pixelVerticesSoA -gpu.toModify(pixelVerticesSoA, - cuda = _pixelVerticesSoA.clone( - src = cms.InputTag("pixelVerticesCUDA") - ) -) - -## GPU vs CPU validation -# force CPU vertexing to use track SoA from CPU chain and not the converted one from GPU chain -from Configuration.ProcessModifiers.gpuValidationPixel_cff import gpuValidationPixel -(pixelNtupletFit & gpu & gpuValidationPixel).toModify(pixelVerticesSoA.cpu, - pixelTrackSrc = "pixelTracksSoA@cpu" -) - -(pixelNtupletFit & gpu).toReplaceWith(pixelVerticesTask, cms.Task( - # build pixel vertices in SoA format on the GPU - pixelVerticesCUDA, - # transfer the pixel vertices in SoA format to the CPU and convert them to legacy format - pixelVerticesTask.copy() -)) - -## pixel vertex reconstruction with Alpaka +############################################################ +## Pixel vertex reconstruction with Alpaka # pixel vertex SoA producer with alpaka on the device from RecoVertex.PixelVertexFinding.pixelVertexProducerAlpakaPhase1_cfi import pixelVertexProducerAlpakaPhase1 as _pixelVerticesAlpakaPhase1 diff --git a/RecoVertex/PixelVertexFinding/plugins/PixelVertexProducer.cc b/RecoVertex/PixelVertexFinding/plugins/PixelVertexProducer.cc index 6735519b118ea..608d13853c334 100644 --- a/RecoVertex/PixelVertexFinding/plugins/PixelVertexProducer.cc +++ b/RecoVertex/PixelVertexFinding/plugins/PixelVertexProducer.cc @@ -20,20 +20,24 @@ // Created: Thu May 25 10:17:32 CDT 2006 // -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "DataFormats/BeamSpot/interface/BeamSpot.h" +#include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" +#include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/VertexReco/interface/Vertex.h" +#include "DataFormats/VertexReco/interface/VertexFwd.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/BeamSpot/interface/BeamSpot.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/VertexReco/interface/Vertex.h" -#include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" #include "RecoVertex/PixelVertexFinding/interface/DivisiveVertexFinder.h" + #include #include #include @@ -42,6 +46,7 @@ class PixelVertexProducer : public edm::stream::EDProducer<> { public: explicit PixelVertexProducer(const edm::ParameterSet&); ~PixelVertexProducer() override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); void produce(edm::Event&, const edm::EventSetup&) override; @@ -59,6 +64,32 @@ class PixelVertexProducer : public edm::stream::EDProducer<> { DivisiveVertexFinder* dvf_; }; +void PixelVertexProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("Verbosity", 0); + desc.add("PtMin", 1.0); + desc.add("Method2", true); + desc.add("TrackCollection", edm::InputTag("pixelTracks")); + desc.add("beamSpot", edm::InputTag("offlineBeamSpot")); + desc.add("Finder", "DivisiveVertexFinder"); + desc.add("UseError", true); + desc.add("WtAverage", true); + desc.add("ZOffset", 5.0); + desc.add("ZSeparation", 0.05); + desc.add("NTrkMin", 2); + + { + edm::ParameterSetDescription PVComparerPSet; + PVComparerPSet.add("track_pt_min", 1.0); + PVComparerPSet.add("track_pt_max", 10.0); + PVComparerPSet.add("track_chi2_max", 999999.); + PVComparerPSet.add("track_prob_min", -1.); + desc.addOptional("PVcomparer", PVComparerPSet); + } + + descriptions.addWithDefaultLabel(desc); +} + PixelVertexProducer::PixelVertexProducer(const edm::ParameterSet& conf) // 0 silent, 1 chatty, 2 loud : verbose_(conf.getParameter("Verbosity")), diff --git a/RecoVertex/PixelVertexFinding/python/PixelVertices_cfi.py b/RecoVertex/PixelVertexFinding/python/PixelVertices_cfi.py index 2c83cb92f3775..9c78be3632edc 100644 --- a/RecoVertex/PixelVertexFinding/python/PixelVertices_cfi.py +++ b/RecoVertex/PixelVertexFinding/python/PixelVertices_cfi.py @@ -1,20 +1,4 @@ import FWCore.ParameterSet.Config as cms -from RecoVertex.PixelVertexFinding.PVClusterComparer_cfi import * - -pixelVertices = cms.EDProducer("PixelVertexProducer", - WtAverage = cms.bool(True), - ZOffset = cms.double(5.0), - beamSpot = cms.InputTag("offlineBeamSpot"), - Verbosity = cms.int32(0), - UseError = cms.bool(True), - TrackCollection = cms.InputTag("pixelTracks"), - ZSeparation = cms.double(0.05), - NTrkMin = cms.int32(2), - Method2 = cms.bool(True), - Finder = cms.string('DivisiveVertexFinder'), - PtMin = cms.double(1.0), - PVcomparer = cms.PSet( - refToPSet_ = cms.string('pvClusterComparer') - ) -) +from RecoVertex.PixelVertexFinding.pixelVertexProducer_cfi import pixelVertexProducer as _pixelVertexProducer +pixelVertices = _pixelVertexProducer.clone() diff --git a/RecoVertex/PrimaryVertexProducer/interface/SequentialPrimaryVertexFitterAdapter.h b/RecoVertex/PrimaryVertexProducer/interface/SequentialPrimaryVertexFitterAdapter.h index 3c75fbab20037..b512aa61cf492 100644 --- a/RecoVertex/PrimaryVertexProducer/interface/SequentialPrimaryVertexFitterAdapter.h +++ b/RecoVertex/PrimaryVertexProducer/interface/SequentialPrimaryVertexFitterAdapter.h @@ -7,6 +7,8 @@ */ +#include + #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" #include "TrackingTools/TransientTrack/interface/TransientTrack.h" #include "RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexFitterBase.h" @@ -27,7 +29,15 @@ class SequentialPrimaryVertexFitterAdapter : public PrimaryVertexFitterBase { const std::vector& tracklist = cluster.originalTracks(); TransientVertex v; if (useBeamConstraint && (tracklist.size() > 1)) { - v = fitter->vertex(tracklist, beamspot); + try { + v = fitter->vertex(tracklist, beamspot); + } catch (VertexException& ex) { + std::ostringstream beamspotInfo; + beamspotInfo << "While processing SequentialPrimaryVertexFitterAdapter::fit() with BeamSpot parameters: \n" + << beamspot; + ex.addContext(beamspotInfo.str()); + throw; // rethrow the exception + } } else if (!(useBeamConstraint) && (tracklist.size() > 1)) { v = fitter->vertex(tracklist); } // else: no fit ==> v.isValid()=False diff --git a/SLHCUpgradeSimulations/Configuration/python/muonCustoms.py b/SLHCUpgradeSimulations/Configuration/python/muonCustoms.py index 759973d8324bb..50c1599eac057 100644 --- a/SLHCUpgradeSimulations/Configuration/python/muonCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/muonCustoms.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms diff --git a/SLHCUpgradeSimulations/Configuration/python/muonCustomsPreMixing.py b/SLHCUpgradeSimulations/Configuration/python/muonCustomsPreMixing.py index a84a282a0b43f..4ce858874f6a1 100644 --- a/SLHCUpgradeSimulations/Configuration/python/muonCustomsPreMixing.py +++ b/SLHCUpgradeSimulations/Configuration/python/muonCustomsPreMixing.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from . import muonCustoms diff --git a/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py b/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py index e8096d7ac4501..3715fd574cdcf 100644 --- a/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py +++ b/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms def customisePostLS1_Common(process): diff --git a/SLHCUpgradeSimulations/Configuration/python/postLS1CustomsPreMixing.py b/SLHCUpgradeSimulations/Configuration/python/postLS1CustomsPreMixing.py index a30a8e42abbfa..31af59bb87c19 100644 --- a/SLHCUpgradeSimulations/Configuration/python/postLS1CustomsPreMixing.py +++ b/SLHCUpgradeSimulations/Configuration/python/postLS1CustomsPreMixing.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms diff --git a/SimCalorimetry/EcalTestBeam/python/ecalTB2006H4_GenSimDigiReco_cfg.py b/SimCalorimetry/EcalTestBeam/python/ecalTB2006H4_GenSimDigiReco_cfg.py index d3bca5e7d82ff..9dee1e57163b6 100644 --- a/SimCalorimetry/EcalTestBeam/python/ecalTB2006H4_GenSimDigiReco_cfg.py +++ b/SimCalorimetry/EcalTestBeam/python/ecalTB2006H4_GenSimDigiReco_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/AllLayerClusterToTracksterAssociatorsProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/AllLayerClusterToTracksterAssociatorsProducer.cc index a0d5cae0a429e..5199566d02e15 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/AllLayerClusterToTracksterAssociatorsProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/AllLayerClusterToTracksterAssociatorsProducer.cc @@ -32,7 +32,7 @@ AllLayerClusterToTracksterAssociatorsProducer::AllLayerClusterToTracksterAssocia const auto& tracksterCollections = pset.getParameter>("tracksterCollections"); for (const auto& tag : tracksterCollections) { std::string label = tag.label(); - if (tag.instance() != "") { + if (!tag.instance().empty()) { label += tag.instance(); } tracksterCollectionTokens_.emplace_back(label, consumes>(tag)); @@ -40,7 +40,8 @@ AllLayerClusterToTracksterAssociatorsProducer::AllLayerClusterToTracksterAssocia // Produce separate association maps for each trackster collection using the trackster label for (const auto& tracksterToken : tracksterCollectionTokens_) { - produces, std::vector>>( + produces< + ticl::AssociationMap, std::vector>>( tracksterToken.first); } } @@ -59,7 +60,7 @@ void AllLayerClusterToTracksterAssociatorsProducer::produce(edm::StreamID, // Create association map auto lcToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( + ticl::AssociationMap, std::vector>>( layer_clusters, tracksters, iEvent); // Loop over tracksters diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByHitsProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByHitsProducer.cc index 62cdbea6dedc6..90d4cffb866f5 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByHitsProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByHitsProducer.cc @@ -54,7 +54,7 @@ AllTracksterToSimTracksterAssociatorsByHitsProducer::AllTracksterToSimTracksterA const auto& tracksterCollections = pset.getParameter>("tracksterCollections"); for (const auto& tag : tracksterCollections) { std::string label = tag.label(); - if (tag.instance() != "") { + if (!tag.instance().empty()) { label += tag.instance(); } tracksterCollectionTokens_.emplace_back(label, consumes>(tag)); @@ -69,7 +69,7 @@ AllTracksterToSimTracksterAssociatorsByHitsProducer::AllTracksterToSimTracksterA const auto& simTracksterCollections = pset.getParameter>("simTracksterCollections"); for (const auto& tag : simTracksterCollections) { std::string label = tag.label(); - if (tag.instance() != "") { + if (!tag.instance().empty()) { label += tag.instance(); } simTracksterCollectionTokens_.emplace_back(label, consumes>(tag)); @@ -91,11 +91,11 @@ AllTracksterToSimTracksterAssociatorsByHitsProducer::AllTracksterToSimTracksterA for (const auto& tracksterToken : tracksterCollectionTokens_) { for (const auto& simTracksterToken : simTracksterCollectionTokens_) { std::string instanceLabel = tracksterToken.first + "To" + simTracksterToken.first; - produces, std::vector>>(instanceLabel); std::string reverseInstanceLabel = simTracksterToken.first + "To" + tracksterToken.first; - produces, std::vector>>(reverseInstanceLabel); } @@ -180,11 +180,13 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, const auto& simTracksterToHitMap = *simTracksterToHitMapHandle; // Create the association maps - auto tracksterToSimTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( + auto tracksterToSimTracksterMap = std::make_unique, + std::vector>>( recoTrackstersHandle, simTrackstersHandle, iEvent); - auto simTracksterToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( + auto simTracksterToTracksterMap = std::make_unique, + std::vector>>( simTrackstersHandle, recoTrackstersHandle, iEvent); for (unsigned int tracksterIndex = 0; tracksterIndex < recoTracksters.size(); ++tracksterIndex) { @@ -195,7 +197,9 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, recoTracksterHitsAndFractions.size()); std::vector associatedSimTracksterIndices; for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, recoFraction] = recoTracksterHitsAndFractions[i]; + const auto& hitElement = recoTracksterHitsAndFractions[i]; + unsigned int hitIndex = hitElement.index(); + float recoFraction = hitElement.fraction(); const auto& recHit = rechitManager[hitIndex]; float squaredRecoFraction = recoFraction * recoFraction; float rechitEnergy = recHit.energy(); @@ -203,25 +207,27 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, recoToSimScoresDenominator += squaredRecoFraction * squaredRecHitEnergy; const auto& hitToSimTracksterVec = hitToSimTracksterMap[hitIndex]; - for (const auto& [simTracksterIndex, fraction] : hitToSimTracksterVec) { + for (const auto& simTracksterElement : hitToSimTracksterVec) { + auto simTracksterIndex = simTracksterElement.index(); const auto& simTrackster = simTracksters[simTracksterIndex]; auto& seed = simTrackster.seedID(); float simFraction = 0; if (seed == caloParticlesHandle.id()) { unsigned int caloParticleIndex = simTrackster.seedIndex(); - auto it = std::find_if(hitToCaloParticleMap[hitIndex].begin(), - hitToCaloParticleMap[hitIndex].end(), - [caloParticleIndex](const auto& pair) { return pair.first == caloParticleIndex; }); + auto it = + std::find_if(hitToCaloParticleMap[hitIndex].begin(), + hitToCaloParticleMap[hitIndex].end(), + [caloParticleIndex](const auto& pair) { return pair.index() == caloParticleIndex; }); if (it != hitToCaloParticleMap[hitIndex].end()) { - simFraction = it->second; + simFraction = it->fraction(); } } else { unsigned int simClusterIndex = simTracksters[simTracksterIndex].seedIndex(); auto it = std::find_if(hitToSimClusterMap[hitIndex].begin(), hitToSimClusterMap[hitIndex].end(), - [simClusterIndex](const auto& pair) { return pair.first == simClusterIndex; }); + [simClusterIndex](const auto& pair) { return pair.index() == simClusterIndex; }); if (it != hitToSimClusterMap[hitIndex].end()) { - simFraction = it->second; + simFraction = it->fraction(); } } hitToAssociatedSimTracksterMap.insert(i, simTracksterIndex, simFraction); @@ -235,11 +241,11 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, // Add missing sim tracksters with 0 shared energy to hitToAssociatedSimTracksterMap for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) { - unsigned int hitId = recoTracksterHitsAndFractions[i].first; + unsigned int hitId = recoTracksterHitsAndFractions[i].index(); const auto& simTracksterVec = hitToSimTracksterMap[hitId]; for (unsigned int simTracksterIndex : associatedSimTracksterIndices) { if (std::find_if(simTracksterVec.begin(), simTracksterVec.end(), [simTracksterIndex](const auto& pair) { - return pair.first == simTracksterIndex; + return pair.index() == simTracksterIndex; }) == simTracksterVec.end()) { hitToAssociatedSimTracksterMap.insert(i, simTracksterIndex, 0); } @@ -249,16 +255,19 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, const float invDenominator = 1.f / recoToSimScoresDenominator; for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) { - unsigned int hitIndex = recoTracksterHitsAndFractions[i].first; + unsigned int hitIndex = recoTracksterHitsAndFractions[i].index(); const auto& recHit = rechitManager[hitIndex]; - float recoFraction = recoTracksterHitsAndFractions[i].second; + float recoFraction = recoTracksterHitsAndFractions[i].fraction(); float squaredRecoFraction = recoFraction * recoFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - float recoSharedEnergy = recHit.energy() * recoFraction; + float rechitEnergy = recHit.energy(); + float squaredRecHitEnergy = rechitEnergy * rechitEnergy; + float recoSharedEnergy = rechitEnergy * recoFraction; const auto& simTracksterVec = hitToAssociatedSimTracksterMap[i]; - for (const auto& [simTracksterIndex, simFraction] : simTracksterVec) { + for (const auto& simTracksterElement : simTracksterVec) { + auto simTracksterIndex = simTracksterElement.index(); + auto simFraction = simTracksterElement.fraction(); edm::Ref> simTracksterRef(simTrackstersHandle, simTracksterIndex); - float sharedEnergy = std::min(simFraction * recHit.energy(), recoSharedEnergy); + float sharedEnergy = std::min(simFraction * rechitEnergy, recoSharedEnergy); float squaredFraction = std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction)); float score = invDenominator * squaredFraction * squaredRecHitEnergy; @@ -281,26 +290,28 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, bool isSimTracksterFromCP = (seed == caloParticlesHandle.id()); std::vector simFractions(simTracksterHitsAndFractions.size(), 0.f); for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, simTracksterFraction] = simTracksterHitsAndFractions[i]; - + auto hitIndex = simTracksterHitsAndFractions[i].index(); auto it = isSimTracksterFromCP ? (std::find_if(hitToCaloParticleMap[hitIndex].begin(), hitToCaloParticleMap[hitIndex].end(), - [simObjectIndex](const auto& pair) { return pair.first == simObjectIndex; })) + [simObjectIndex](const auto& pair) { return pair.index() == simObjectIndex; })) : std::find_if(hitToSimClusterMap[hitIndex].begin(), hitToSimClusterMap[hitIndex].end(), - [simObjectIndex](const auto& pair) { return pair.first == simObjectIndex; }); - if (it != hitToCaloParticleMap[hitIndex].end() and it != hitToSimClusterMap[hitIndex].end()) { - simFractions[i] = it->second; + [simObjectIndex](const auto& pair) { return pair.index() == simObjectIndex; }); + if ((isSimTracksterFromCP and it != hitToCaloParticleMap[hitIndex].end()) or + (!isSimTracksterFromCP and it != hitToSimClusterMap[hitIndex].end())) { + simFractions[i] = it->fraction(); } float simFraction = simFractions[i]; const auto& recHit = rechitManager[hitIndex]; + float rechitEnergy = recHit.energy(); float squaredSimFraction = simFraction * simFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); + float squaredRecHitEnergy = rechitEnergy * rechitEnergy; simToRecoScoresDenominator += squaredSimFraction * squaredRecHitEnergy; - const auto& hitToRecoTracksterVec = hitToTracksterMap[hitIndex]; - for (const auto& [recoTracksterIndex, recoFraction] : hitToRecoTracksterVec) { + for (const auto& recoTracksterElement : hitToRecoTracksterVec) { + unsigned int recoTracksterIndex = recoTracksterElement.index(); + float recoFraction = recoTracksterElement.fraction(); hitToAssociatedRecoTracksterMap.insert(i, recoTracksterIndex, recoFraction); associatedRecoTracksterIndices.push_back(recoTracksterIndex); } @@ -312,32 +323,34 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, associatedRecoTracksterIndices.end()); for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - unsigned int hitIndex = simTracksterHitsAndFractions[i].first; + unsigned int hitIndex = simTracksterHitsAndFractions[i].index(); const auto& hitToRecoTracksterVec = hitToTracksterMap[hitIndex]; for (unsigned int recoTracksterIndex : associatedRecoTracksterIndices) { if (std::find_if( hitToRecoTracksterVec.begin(), hitToRecoTracksterVec.end(), [recoTracksterIndex](const auto& pair) { - return pair.first == recoTracksterIndex; + return pair.index() == recoTracksterIndex; }) == hitToRecoTracksterVec.end()) { hitToAssociatedRecoTracksterMap.insert(i, recoTracksterIndex, 0); } } } + assert(simToRecoScoresDenominator > 0.f); const float invDenominator = 1.f / simToRecoScoresDenominator; - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, simTracksterFraction] = simTracksterHitsAndFractions[i]; + const auto& hitIndex = simTracksterHitsAndFractions[i].index(); float simFraction = simFractions[i]; const auto& recHit = rechitManager[hitIndex]; + float rechitEnergy = recHit.energy(); float squaredSimFraction = simFraction * simFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - float simSharedEnergy = recHit.energy() * simFraction; - + float squaredRecHitEnergy = rechitEnergy * rechitEnergy; + float simSharedEnergy = rechitEnergy * simFraction; const auto& hitToRecoTracksterVec = hitToAssociatedRecoTracksterMap[i]; - for (const auto& [recoTracksterIndex, recoFraction] : hitToRecoTracksterVec) { + for (const auto& recoTracksterElement : hitToRecoTracksterVec) { + auto recoTracksterIndex = recoTracksterElement.index(); + float recoFraction = recoTracksterElement.fraction(); edm::Ref> recoTracksterRef(recoTrackstersHandle, recoTracksterIndex); - float sharedEnergy = std::min(recoFraction * recHit.energy(), simSharedEnergy); + float sharedEnergy = std::min(recoFraction * rechitEnergy, simSharedEnergy); float squaredFraction = std::min(squaredSimFraction, (recoFraction - simFraction) * (recoFraction - simFraction)); float score = invDenominator * squaredFraction * squaredRecHitEnergy; @@ -346,8 +359,16 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID, } } - tracksterToSimTracksterMap->sort(true); - simTracksterToTracksterMap->sort(true); + auto sortingFunc = [](const auto& a, const auto& b) { + if (a.score() != b.score()) + return a.score() < b.score(); + else + return a.index() < b.index(); + }; + + // Sort the maps by score in ascending order + tracksterToSimTracksterMap->sort(sortingFunc); + simTracksterToTracksterMap->sort(sortingFunc); // After populating the maps, store them in the event iEvent.put(std::move(tracksterToSimTracksterMap), tracksterToken.first + "To" + simTracksterToken.first); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByLCsProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByLCsProducer.cc index 237b4635e4194..358cb535fa601 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByLCsProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByLCsProducer.cc @@ -28,12 +28,12 @@ class AllTracksterToSimTracksterAssociatorsByLCsProducer : public edm::global::E std::vector, std::vector>>>> + ticl::AssociationMap, std::vector>>>> layerClusterToTracksterMapTokens_; std::vector, std::vector>>>> + ticl::AssociationMap, std::vector>>>> layerClusterToSimTracksterMapTokens_; }; @@ -43,28 +43,28 @@ AllTracksterToSimTracksterAssociatorsByLCsProducer::AllTracksterToSimTracksterAs const auto& tracksterCollections = pset.getParameter>("tracksterCollections"); for (const auto& tag : tracksterCollections) { std::string label = tag.label(); - if (tag.instance() != "") { + if (!tag.instance().empty()) { label += tag.instance(); } tracksterCollectionTokens_.emplace_back(label, consumes>(tag)); layerClusterToTracksterMapTokens_.emplace_back( label, consumes< - ticl::AssociationMap, std::vector>>( + ticl::AssociationMap, std::vector>>( edm::InputTag("allLayerClusterToTracksterAssociations", label))); } const auto& simTracksterCollections = pset.getParameter>("simTracksterCollections"); for (const auto& tag : simTracksterCollections) { std::string label = tag.label(); - if (tag.instance() != "") { + if (!tag.instance().empty()) { label += tag.instance(); } simTracksterCollectionTokens_.emplace_back(label, consumes>(tag)); layerClusterToSimTracksterMapTokens_.emplace_back( label, consumes< - ticl::AssociationMap, std::vector>>( + ticl::AssociationMap, std::vector>>( edm::InputTag("allLayerClusterToTracksterAssociations", label))); } @@ -72,11 +72,11 @@ AllTracksterToSimTracksterAssociatorsByLCsProducer::AllTracksterToSimTracksterAs for (const auto& tracksterToken : tracksterCollectionTokens_) { for (const auto& simTracksterToken : simTracksterCollectionTokens_) { std::string instanceLabel = tracksterToken.first + "To" + simTracksterToken.first; - produces, std::vector>>(instanceLabel); std::string reverseInstanceLabel = simTracksterToken.first + "To" + tracksterToken.first; - produces, std::vector>>(reverseInstanceLabel); } @@ -98,7 +98,7 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, const auto& recoTracksters = *recoTrackstersHandle; // Retrieve the correct LayerClusterToTracksterMap for the current trackster collection - Handle, std::vector>> + Handle, std::vector>> layerClusterToTracksterMapHandle; auto tracksterMapTokenIter = std::find_if(layerClusterToTracksterMapTokens_.begin(), @@ -115,7 +115,8 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, const auto& simTracksters = *simTrackstersHandle; // Retrieve the correct LayerClusterToSimTracksterMap for the current simTrackster collection - Handle, std::vector>> + Handle< + ticl::AssociationMap, std::vector>> layerClusterToSimTracksterMapHandle; auto simTracksterMapTokenIter = std::find_if(layerClusterToSimTracksterMapTokens_.begin(), @@ -127,11 +128,13 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, const auto& layerClusterToSimTracksterMap = *layerClusterToSimTracksterMapHandle; // Create the association maps - auto tracksterToSimTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( + auto tracksterToSimTracksterMap = std::make_unique, + std::vector>>( recoTrackstersHandle, simTrackstersHandle, iEvent); - auto simTracksterToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( + auto simTracksterToTracksterMap = std::make_unique, + std::vector>>( simTrackstersHandle, recoTrackstersHandle, iEvent); for (unsigned int tracksterIndex = 0; tracksterIndex < recoTracksters.size(); ++tracksterIndex) { @@ -139,7 +142,8 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, edm::Ref> recoTracksterRef(recoTrackstersHandle, tracksterIndex); const auto& layerClustersIds = recoTrackster.vertices(); float recoToSimScoresDenominator = 0.f; - ticl::mapWithFraction layerClusterToAssociatedSimTracksterMap(layerClustersIds.size()); + ticl::AssociationMap layerClusterToAssociatedSimTracksterMap( + layerClustersIds.size()); std::vector associatedSimTracksterIndices; for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { unsigned int layerClusterId = layerClustersIds[i]; @@ -149,8 +153,10 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy(); recoToSimScoresDenominator += squaredLayerClusterEnergy * squaredRecoFraction; const auto& simTracksterVec = layerClusterToSimTracksterMap[layerClusterId]; - for (const auto& [simTracksterIndex, simSharedEnergy] : simTracksterVec) { - layerClusterToAssociatedSimTracksterMap[i].push_back({simTracksterIndex, simSharedEnergy}); + for (const auto& simTracksterElement : simTracksterVec) { + auto simTracksterIndex = simTracksterElement.index(); + auto simSharedEnergy = simTracksterElement.sharedEnergy(); + layerClusterToAssociatedSimTracksterMap[i].emplace_back(simTracksterIndex, simSharedEnergy); associatedSimTracksterIndices.push_back(simTracksterIndex); } } @@ -167,7 +173,7 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, const auto& simTracksterVec = layerClusterToSimTracksterMap[layerClusterId]; for (unsigned int simTracksterIndex : associatedSimTracksterIndices) { if (std::find_if(simTracksterVec.begin(), simTracksterVec.end(), [simTracksterIndex](const auto& pair) { - return pair.first == simTracksterIndex; + return pair.index() == simTracksterIndex; }) == simTracksterVec.end()) { layerClusterToAssociatedSimTracksterMap[i].push_back({simTracksterIndex, 0.f}); } @@ -185,7 +191,9 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, float recoSharedEnergy = layerCluster.energy() * recoFraction; float invLayerClusterEnergy = 1.f / layerCluster.energy(); const auto& simTracksterVec = layerClusterToAssociatedSimTracksterMap[i]; - for (const auto& [simTracksterIndex, simSharedEnergy] : simTracksterVec) { + for (const auto& simTracksterElement : simTracksterVec) { + auto simTracksterIndex = simTracksterElement.index(); + float simSharedEnergy = simTracksterElement.sharedEnergy(); edm::Ref> simTracksterRef(simTrackstersHandle, simTracksterIndex); float sharedEnergy = std::min(simSharedEnergy, recoSharedEnergy); float simFraction = simSharedEnergy * invLayerClusterEnergy; @@ -202,7 +210,7 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, edm::Ref> simTracksterRef(simTrackstersHandle, tracksterIndex); const auto& layerClustersIds = simTrackster.vertices(); float simToRecoScoresDenominator = 0.f; - ticl::mapWithFraction layerClusterToAssociatedTracksterMap(layerClustersIds.size()); + ticl::AssociationMap layerClusterToAssociatedTracksterMap(layerClustersIds.size()); std::vector associatedRecoTracksterIndices; for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { unsigned int layerClusterId = layerClustersIds[i]; @@ -212,8 +220,10 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy(); simToRecoScoresDenominator += squaredLayerClusterEnergy * squaredSimFraction; const auto& recoTracksterVec = layerClusterToTracksterMap[layerClusterId]; - for (const auto& [recoTracksterIndex, recoSharedEnergy] : recoTracksterVec) { - layerClusterToAssociatedTracksterMap[i].push_back({recoTracksterIndex, recoSharedEnergy}); + for (const auto& recoTracksterElement : recoTracksterVec) { + auto recoTracksterIndex = recoTracksterElement.index(); + auto recoSharedEnergy = recoTracksterElement.sharedEnergy(); + layerClusterToAssociatedTracksterMap[i].emplace_back(recoTracksterIndex, recoSharedEnergy); associatedRecoTracksterIndices.push_back(recoTracksterIndex); } } @@ -228,13 +238,13 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, const auto& recoTracksterVec = layerClusterToTracksterMap[layerClusterId]; for (unsigned int recoTracksterIndex : associatedRecoTracksterIndices) { if (std::find_if(recoTracksterVec.begin(), recoTracksterVec.end(), [recoTracksterIndex](const auto& pair) { - return pair.first == recoTracksterIndex; + return pair.index() == recoTracksterIndex; }) == recoTracksterVec.end()) { - layerClusterToAssociatedTracksterMap[i].push_back({recoTracksterIndex, 0.f}); + layerClusterToAssociatedTracksterMap[i].emplace_back(recoTracksterIndex, 0.f); } } } - + assert(simToRecoScoresDenominator > 0.f); const float invDenominator = 1.f / simToRecoScoresDenominator; for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { @@ -246,7 +256,9 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, float simSharedEnergy = layerCluster.energy() * simFraction; float invLayerClusterEnergy = 1.f / layerCluster.energy(); const auto& recoTracksterVec = layerClusterToAssociatedTracksterMap[i]; - for (const auto& [recoTracksterIndex, recoSharedEnergy] : recoTracksterVec) { + for (const auto& recoTracksterElement : recoTracksterVec) { + auto recoTracksterIndex = recoTracksterElement.index(); + float recoSharedEnergy = recoTracksterElement.sharedEnergy(); edm::Ref> recoTracksterRef(recoTrackstersHandle, recoTracksterIndex); float sharedEnergy = std::min(recoSharedEnergy, simSharedEnergy); float recoFraction = recoSharedEnergy * invLayerClusterEnergy; @@ -257,8 +269,16 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID, } } } - tracksterToSimTracksterMap->sort(true); - simTracksterToTracksterMap->sort(true); + auto sortingFunc = [](const auto& a, const auto& b) { + if (a.score() != b.score()) + return a.score() < b.score(); + else + return a.index() < b.index(); + }; + + // Sort the maps by score in ascending order + tracksterToSimTracksterMap->sort(sortingFunc); + simTracksterToTracksterMap->sort(sortingFunc); // After populating the maps, store them in the event iEvent.put(std::move(tracksterToSimTracksterMap), tracksterToken.first + "To" + simTracksterToken.first); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToCPAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToCPAssociatorByEnergyScoreProducer.cc index 9bf4387cc0f82..c7f0bf7902e17 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToCPAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToCPAssociatorByEnergyScoreProducer.cc @@ -1,5 +1,7 @@ #include "LCToCPAssociatorByEnergyScoreProducer.h" +#include + template LCToCPAssociatorByEnergyScoreProducer::LCToCPAssociatorByEnergyScoreProducer(const edm::ParameterSet &ps) : hitMap_(consumes>(ps.getParameter("hitMapTag"))), @@ -13,7 +15,7 @@ LCToCPAssociatorByEnergyScoreProducer::LCToCPAssociatorByEnergyScoreProduce hits_token_.push_back(consumes>(label)); } - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); // Register the product produces(); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreProducer.cc index e83dbc43a6123..c506047d72527 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreProducer.cc @@ -1,5 +1,7 @@ #include "LCToSCAssociatorByEnergyScoreProducer.h" +#include + template LCToSCAssociatorByEnergyScoreProducer::LCToSCAssociatorByEnergyScoreProducer(const edm::ParameterSet &ps) : hitMap_(consumes>(ps.getParameter("hitMapTag"))), @@ -13,7 +15,7 @@ LCToSCAssociatorByEnergyScoreProducer::LCToSCAssociatorByEnergyScoreProduce hits_token_.push_back(consumes>(label)); } - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); // Register the product produces(); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSimTSAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSimTSAssociatorByEnergyScoreProducer.cc index 5c93dd7cf2bf2..a1110c1707297 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSimTSAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSimTSAssociatorByEnergyScoreProducer.cc @@ -1,6 +1,8 @@ // Original author: Leonardo Cristella // user include files +#include + #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" @@ -29,7 +31,7 @@ class LCToSimTSAssociatorByEnergyScoreProducer : public edm::global::EDProducer< LCToSimTSAssociatorByEnergyScoreProducer::LCToSimTSAssociatorByEnergyScoreProducer(const edm::ParameterSet &ps) : caloGeometry_(esConsumes()) { - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); // Register the product produces(); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToTSAssociatorProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToTSAssociatorProducer.cc index 6d44f84463e37..f4968e960d64c 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToTSAssociatorProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToTSAssociatorProducer.cc @@ -18,7 +18,8 @@ LCToTSAssociatorProducer::LCToTSAssociatorProducer(const edm::ParameterSet &pset : LCCollectionToken_(consumes>(pset.getParameter("layer_clusters"))), tracksterCollectionToken_( consumes>(pset.getParameter("tracksters"))) { - produces, std::vector>>(); + produces< + ticl::AssociationMap, std::vector>>(); } LCToTSAssociatorProducer::~LCToTSAssociatorProducer() {} @@ -39,7 +40,7 @@ void LCToTSAssociatorProducer::produce(edm::StreamID, edm::Event &iEvent, const // Create association map auto lcToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( + ticl::AssociationMap, std::vector>>( layer_clusters, tracksters, iEvent); // Loop over tracksters diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/MultiClusterAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/MultiClusterAssociatorByEnergyScoreProducer.cc index 75d76eb56c9c8..99de9507e9ea5 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/MultiClusterAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/MultiClusterAssociatorByEnergyScoreProducer.cc @@ -1,6 +1,8 @@ // Original author: Leonardo Cristella // user include files +#include + #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" @@ -41,7 +43,7 @@ MultiClusterAssociatorByEnergyScoreProducer::MultiClusterAssociatorByEnergyScore for (auto &label : hits_label_) { hits_token_.push_back(consumes(label)); } - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); // Register the product produces(); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSCAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSCAssociatorByEnergyScoreProducer.cc index 4992162b0eea1..b87af943f64fb 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSCAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSCAssociatorByEnergyScoreProducer.cc @@ -1,6 +1,8 @@ // Original author: Leonardo Cristella // user include files +#include + #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" @@ -38,7 +40,7 @@ TSToSCAssociatorByEnergyScoreProducer::TSToSCAssociatorByEnergyScoreProducer(con caloGeometry_(esConsumes()), hardScatterOnly_(ps.getParameter("hardScatterOnly")), hits_label_(ps.getParameter>("hits")) { - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); for (auto &label : hits_label_) { hits_token_.push_back(consumes(label)); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSAssociatorByEnergyScoreProducer.cc index 102f7c8b4c90c..3ffdb25b12612 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSAssociatorByEnergyScoreProducer.cc @@ -1,6 +1,8 @@ // Original author: Leonardo Cristella // user include files +#include + #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" @@ -38,7 +40,7 @@ TSToSimTSAssociatorByEnergyScoreProducer::TSToSimTSAssociatorByEnergyScoreProduc caloGeometry_(esConsumes()), hardScatterOnly_(ps.getParameter("hardScatterOnly")), hits_label_(ps.getParameter>("hits")) { - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); for (auto &label : hits_label_) { hits_token_.push_back(consumes(label)); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSHitLCAssociatorByEnergyScoreProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSHitLCAssociatorByEnergyScoreProducer.cc index 6c5f2124f73b6..becc775dc5603 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSHitLCAssociatorByEnergyScoreProducer.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/TSToSimTSHitLCAssociatorByEnergyScoreProducer.cc @@ -1,6 +1,8 @@ // Original author: Leonardo Cristella // user include files +#include + #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/global/EDProducer.h" @@ -38,7 +40,7 @@ TSToSimTSHitLCAssociatorByEnergyScoreProducer::TSToSimTSHitLCAssociatorByEnergyS caloGeometry_(esConsumes()), hardScatterOnly_(ps.getParameter("hardScatterOnly")), hits_label_(ps.getParameter>("hits")) { - rhtools_.reset(new hgcal::RecHitTools()); + rhtools_ = std::make_shared(); for (auto &label : hits_label_) { hits_token_.push_back(consumes(label)); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorByHitsProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorByHitsProducer.cc deleted file mode 100644 index 69d0a0a07b1d4..0000000000000 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorByHitsProducer.cc +++ /dev/null @@ -1,446 +0,0 @@ -// Author: Felice Pantaleo, felice.pantaleo@cern.ch 06/2024 -#include "TracksterToSimTracksterAssociatorByHitsProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/EDGetToken.h" -#include "DataFormats/HGCalReco/interface/Trackster.h" -#include "SimDataFormats/Associations/interface/TICLAssociationMap.h" -#include "DataFormats/Provenance/interface/ProductID.h" -#include "DataFormats/HGCRecHit/interface/HGCRecHitCollections.h" -#include "CommonTools/RecoAlgos/interface/MultiVectorManager.h" -#include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h" -#include "SimDataFormats/CaloAnalysis/interface/SimCluster.h" - -TracksterToSimTracksterAssociatorByHitsProducer::TracksterToSimTracksterAssociatorByHitsProducer( - const edm::ParameterSet& pset) - : recoTracksterCollectionToken_( - consumes>(pset.getParameter("tracksters"))), - simTracksterCollectionToken_( - consumes>(pset.getParameter("simTracksters"))), - simTracksterFromCPCollectionToken_( - consumes>(pset.getParameter("simTrackstersFromCP"))), - hitToTracksterMapToken_( - consumes>(pset.getParameter("hitToTracksterMap"))), - hitToSimTracksterMapToken_(consumes>( - pset.getParameter("hitToSimTracksterMap"))), - hitToSimTracksterFromCPMapToken_(consumes>( - pset.getParameter("hitToSimTracksterFromCPMap"))), - hitToSimClusterMapToken_(consumes>( - pset.getParameter("hitToSimClusterMap"))), - hitToCaloParticleMapToken_(consumes>( - pset.getParameter("hitToCaloParticleMap"))), - tracksterToHitMapToken_( - consumes>(pset.getParameter("tracksterToHitMap"))), - simTracksterToHitMapToken_(consumes>( - pset.getParameter("simTracksterToHitMap"))), - simTracksterFromCPToHitMapToken_(consumes>( - pset.getParameter("simTracksterFromCPToHitMap"))), - caloParticleToken_(consumes>(pset.getParameter("caloParticles"))) { - auto hitsTags = pset.getParameter>("hits"); - for (const auto& tag : hitsTags) { - hitsTokens_.push_back(consumes(tag)); - } - produces< - ticl::AssociationMap, std::vector>>( - "tracksterToSimTracksterMap"); - produces< - ticl::AssociationMap, std::vector>>( - "simTracksterToTracksterMap"); - produces< - ticl::AssociationMap, std::vector>>( - "tracksterToSimTracksterFromCPMap"); - produces< - ticl::AssociationMap, std::vector>>( - "simTracksterFromCPToTracksterMap"); -} - -TracksterToSimTracksterAssociatorByHitsProducer::~TracksterToSimTracksterAssociatorByHitsProducer() {} - -void TracksterToSimTracksterAssociatorByHitsProducer::produce(edm::StreamID, - edm::Event& iEvent, - const edm::EventSetup& iSetup) const { - using namespace edm; - - Handle> recoTrackstersHandle; - iEvent.getByToken(recoTracksterCollectionToken_, recoTrackstersHandle); - const auto& recoTracksters = *recoTrackstersHandle; - - Handle> simTrackstersHandle; - iEvent.getByToken(simTracksterCollectionToken_, simTrackstersHandle); - const auto& simTracksters = *simTrackstersHandle; - - Handle> simTrackstersFromCPHandle; - iEvent.getByToken(simTracksterFromCPCollectionToken_, simTrackstersFromCPHandle); - const auto& simTrackstersFromCP = *simTrackstersFromCPHandle; - - Handle> hitToTracksterMapHandle; - iEvent.getByToken(hitToTracksterMapToken_, hitToTracksterMapHandle); - const auto& hitToTracksterMap = *hitToTracksterMapHandle; - - Handle> hitToSimTracksterMapHandle; - iEvent.getByToken(hitToSimTracksterMapToken_, hitToSimTracksterMapHandle); - const auto& hitToSimTracksterMap = *hitToSimTracksterMapHandle; - - Handle> hitToSimTracksterFromCPMapHandle; - iEvent.getByToken(hitToSimTracksterFromCPMapToken_, hitToSimTracksterFromCPMapHandle); - const auto& hitToSimTracksterFromCPMap = *hitToSimTracksterFromCPMapHandle; - - Handle> hitToSimClusterMapHandle; - iEvent.getByToken(hitToSimClusterMapToken_, hitToSimClusterMapHandle); - const auto& hitToSimClusterMap = *hitToSimClusterMapHandle; - - Handle> hitToCaloParticleMapHandle; - iEvent.getByToken(hitToCaloParticleMapToken_, hitToCaloParticleMapHandle); - const auto& hitToCaloParticleMap = *hitToCaloParticleMapHandle; - - Handle> tracksterToHitMapHandle; - iEvent.getByToken(tracksterToHitMapToken_, tracksterToHitMapHandle); - const auto& tracksterToHitMap = *tracksterToHitMapHandle; - - Handle> simTracksterToHitMapHandle; - iEvent.getByToken(simTracksterToHitMapToken_, simTracksterToHitMapHandle); - const auto& simTracksterToHitMap = *simTracksterToHitMapHandle; - - Handle> simTracksterFromCPToHitMapHandle; - iEvent.getByToken(simTracksterFromCPToHitMapToken_, simTracksterFromCPToHitMapHandle); - const auto& simTracksterFromCPToHitMap = *simTracksterFromCPToHitMapHandle; - - Handle> caloParticlesHandle; - iEvent.getByToken(caloParticleToken_, caloParticlesHandle); - - MultiVectorManager rechitManager; - for (const auto& token : hitsTokens_) { - Handle hitsHandle; - iEvent.getByToken(token, hitsHandle); - rechitManager.addVector(*hitsHandle); - } - - auto tracksterToSimTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( - recoTrackstersHandle, simTrackstersHandle, iEvent); - auto tracksterToSimTracksterFromCPMap = std::make_unique< - ticl::AssociationMap, std::vector>>( - recoTrackstersHandle, simTrackstersFromCPHandle, iEvent); - - auto simTracksterToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( - simTrackstersHandle, recoTrackstersHandle, iEvent); - auto simTracksterFromCPToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( - simTrackstersFromCPHandle, recoTrackstersHandle, iEvent); - for (unsigned int tracksterIndex = 0; tracksterIndex < recoTracksters.size(); ++tracksterIndex) { - edm::Ref> recoTracksterRef(recoTrackstersHandle, tracksterIndex); - float recoToSimScoresDenominator = 0.f; - const auto& recoTracksterHitsAndFractions = tracksterToHitMap[tracksterIndex]; - ticl::AssociationMap hitToAssociatedSimTracksterMap(recoTracksterHitsAndFractions.size()); - std::vector associatedSimTracksterIndices; - ticl::AssociationMap hitToAssociatedSimTracksterFromCPMap( - recoTracksterHitsAndFractions.size()); - std::vector associatedSimTracksterFromCPIndices; - for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, recoFraction] = recoTracksterHitsAndFractions[i]; - const auto& recHit = rechitManager[hitIndex]; - float squaredRecoFraction = recoFraction * recoFraction; - float rechitEnergy = recHit.energy(); - float squaredRecHitEnergy = rechitEnergy * rechitEnergy; - recoToSimScoresDenominator += squaredRecoFraction * squaredRecHitEnergy; - - const auto& hitToSimTracksterVec = hitToSimTracksterMap[hitIndex]; - for (const auto& [simTracksterIndex, fraction] : hitToSimTracksterVec) { - const auto& simTrackster = simTracksters[simTracksterIndex]; - auto& seed = simTrackster.seedID(); - float simFraction = 0; - if (seed == caloParticlesHandle.id()) { - unsigned int caloParticleIndex = simTrackster.seedIndex(); - auto it = std::find_if(hitToCaloParticleMap[hitIndex].begin(), - hitToCaloParticleMap[hitIndex].end(), - [caloParticleIndex](const auto& pair) { return pair.first == caloParticleIndex; }); - if (it != hitToCaloParticleMap[hitIndex].end()) { - simFraction = it->second; - } - } else { - unsigned int simClusterIndex = simTracksters[simTracksterIndex].seedIndex(); - auto it = std::find_if(hitToSimClusterMap[hitIndex].begin(), - hitToSimClusterMap[hitIndex].end(), - [simClusterIndex](const auto& pair) { return pair.first == simClusterIndex; }); - if (it != hitToSimClusterMap[hitIndex].end()) { - simFraction = it->second; - } - } - hitToAssociatedSimTracksterMap.insert(i, simTracksterIndex, simFraction); - associatedSimTracksterIndices.push_back(simTracksterIndex); - } - - // do the same for caloparticles and simTracksterFromCP - const auto& hitToSimTracksterFromCPVec = hitToSimTracksterFromCPMap[hitIndex]; - for (const auto& [simTracksterIndex, simFraction] : hitToSimTracksterFromCPVec) { - unsigned int caloParticleIndex = simTracksters[simTracksterIndex].seedIndex(); - float caloParticleFraction = 0; - auto it = std::find_if(hitToCaloParticleMap[hitIndex].begin(), - hitToCaloParticleMap[hitIndex].end(), - [caloParticleIndex](const auto& pair) { return pair.first == caloParticleIndex; }); - if (it != hitToCaloParticleMap[hitIndex].end()) { - caloParticleFraction = it->second; - } - hitToAssociatedSimTracksterFromCPMap.insert(i, simTracksterIndex, caloParticleFraction); - associatedSimTracksterFromCPIndices.push_back(simTracksterIndex); - } - } - std::sort(associatedSimTracksterIndices.begin(), associatedSimTracksterIndices.end()); - associatedSimTracksterIndices.erase( - std::unique(associatedSimTracksterIndices.begin(), associatedSimTracksterIndices.end()), - associatedSimTracksterIndices.end()); - - std::sort(associatedSimTracksterFromCPIndices.begin(), associatedSimTracksterFromCPIndices.end()); - associatedSimTracksterFromCPIndices.erase( - std::unique(associatedSimTracksterFromCPIndices.begin(), associatedSimTracksterFromCPIndices.end()), - associatedSimTracksterFromCPIndices.end()); - - // Add missing sim tracksters with 0 shared energy to hitToAssociatedSimTracksterMap and hitToAssociatedSimTracksterFromCPMap - for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) { - unsigned int hitId = recoTracksterHitsAndFractions[i].first; - const auto& simTracksterVec = hitToSimTracksterMap[hitId]; - for (unsigned int simTracksterIndex : associatedSimTracksterIndices) { - if (std::find_if(simTracksterVec.begin(), simTracksterVec.end(), [simTracksterIndex](const auto& pair) { - return pair.first == simTracksterIndex; - }) == simTracksterVec.end()) { - hitToAssociatedSimTracksterMap.insert(i, simTracksterIndex, 0); - } - } - - const auto& simTracksterFromCPVec = hitToSimTracksterFromCPMap[hitId]; - for (unsigned int simTracksterIndex : associatedSimTracksterFromCPIndices) { - if (std::find_if( - simTracksterFromCPVec.begin(), simTracksterFromCPVec.end(), [simTracksterIndex](const auto& pair) { - return pair.first == simTracksterIndex; - }) == simTracksterFromCPVec.end()) { - hitToAssociatedSimTracksterFromCPMap.insert(i, simTracksterIndex, 0); - } - } - } - - const float invDenominator = 1.f / recoToSimScoresDenominator; - - for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) { - unsigned int hitIndex = recoTracksterHitsAndFractions[i].first; - const auto& recHit = rechitManager[hitIndex]; - float recoFraction = recoTracksterHitsAndFractions[i].second; - float squaredRecoFraction = recoFraction * recoFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - float recoSharedEnergy = recHit.energy() * recoFraction; - const auto& simTracksterVec = hitToAssociatedSimTracksterMap[i]; - for (const auto& [simTracksterIndex, simFraction] : simTracksterVec) { - edm::Ref> simTracksterRef(simTrackstersHandle, simTracksterIndex); - float sharedEnergy = std::min(simFraction * recHit.energy(), recoSharedEnergy); - float squaredFraction = - std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction)); - float score = invDenominator * squaredFraction * squaredRecHitEnergy; - tracksterToSimTracksterMap->insert(recoTracksterRef, simTracksterRef, sharedEnergy, score); - } - - const auto& simTracksterFromCPVec = hitToAssociatedSimTracksterFromCPMap[i]; - for (const auto& [simTracksterIndex, simFraction] : simTracksterFromCPVec) { - edm::Ref> simTracksterRef(simTrackstersFromCPHandle, simTracksterIndex); - float sharedEnergy = std::min(simFraction * recHit.energy(), recoSharedEnergy); - float squaredFraction = - std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction)); - float score = invDenominator * squaredFraction * squaredRecHitEnergy; - tracksterToSimTracksterFromCPMap->insert(recoTracksterRef, simTracksterRef, sharedEnergy, score); - } - } - } - - // Reverse mapping: SimTrackster -> RecoTrackster - for (unsigned int tracksterIndex = 0; tracksterIndex < simTracksters.size(); ++tracksterIndex) { - edm::Ref> simTracksterRef(simTrackstersHandle, tracksterIndex); - float simToRecoScoresDenominator = 0.f; - const auto& simTracksterHitsAndFractions = simTracksterToHitMap[tracksterIndex]; - ticl::AssociationMap hitToAssociatedRecoTracksterMap(simTracksterHitsAndFractions.size()); - std::vector associatedRecoTracksterIndices; - const auto& simTrackster = simTracksters[tracksterIndex]; - auto& seed = simTrackster.seedID(); - unsigned int simObjectIndex = simTrackster.seedIndex(); - bool isSimTracksterFromCP = (seed == caloParticlesHandle.id()); - std::vector simFractions(simTracksterHitsAndFractions.size(), 0.f); - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, simTracksterFraction] = simTracksterHitsAndFractions[i]; - - auto it = isSimTracksterFromCP - ? (std::find_if(hitToCaloParticleMap[hitIndex].begin(), - hitToCaloParticleMap[hitIndex].end(), - [simObjectIndex](const auto& pair) { return pair.first == simObjectIndex; })) - : std::find_if(hitToSimClusterMap[hitIndex].begin(), - hitToSimClusterMap[hitIndex].end(), - [simObjectIndex](const auto& pair) { return pair.first == simObjectIndex; }); - if (it != hitToCaloParticleMap[hitIndex].end() and it != hitToSimClusterMap[hitIndex].end()) { - simFractions[i] = it->second; - } - float simFraction = simFractions[i]; - const auto& recHit = rechitManager[hitIndex]; - float squaredSimFraction = simFraction * simFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - simToRecoScoresDenominator += squaredSimFraction * squaredRecHitEnergy; - - const auto& hitToRecoTracksterVec = hitToTracksterMap[hitIndex]; - for (const auto& [recoTracksterIndex, recoFraction] : hitToRecoTracksterVec) { - hitToAssociatedRecoTracksterMap.insert(i, recoTracksterIndex, recoFraction); - associatedRecoTracksterIndices.push_back(recoTracksterIndex); - } - } - - std::sort(associatedRecoTracksterIndices.begin(), associatedRecoTracksterIndices.end()); - associatedRecoTracksterIndices.erase( - std::unique(associatedRecoTracksterIndices.begin(), associatedRecoTracksterIndices.end()), - associatedRecoTracksterIndices.end()); - - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - unsigned int hitIndex = simTracksterHitsAndFractions[i].first; - const auto& hitToRecoTracksterVec = hitToTracksterMap[hitIndex]; - for (unsigned int recoTracksterIndex : associatedRecoTracksterIndices) { - if (std::find_if( - hitToRecoTracksterVec.begin(), hitToRecoTracksterVec.end(), [recoTracksterIndex](const auto& pair) { - return pair.first == recoTracksterIndex; - }) == hitToRecoTracksterVec.end()) { - hitToAssociatedRecoTracksterMap.insert(i, recoTracksterIndex, 0); - } - } - } - - const float invDenominator = 1.f / simToRecoScoresDenominator; - - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, simTracksterFraction] = simTracksterHitsAndFractions[i]; - float simFraction = simFractions[i]; - const auto& recHit = rechitManager[hitIndex]; - float squaredSimFraction = simFraction * simFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - float simSharedEnergy = recHit.energy() * simFraction; - - const auto& hitToRecoTracksterVec = hitToAssociatedRecoTracksterMap[i]; - for (const auto& [recoTracksterIndex, recoFraction] : hitToRecoTracksterVec) { - edm::Ref> recoTracksterRef(recoTrackstersHandle, recoTracksterIndex); - float sharedEnergy = std::min(recoFraction * recHit.energy(), simSharedEnergy); - float squaredFraction = - std::min(squaredSimFraction, (recoFraction - simFraction) * (recoFraction - simFraction)); - float score = invDenominator * squaredFraction * squaredRecHitEnergy; - simTracksterToTracksterMap->insert(simTracksterRef, recoTracksterRef, sharedEnergy, score); - } - } - } - - // Repeat the reverse mapping process for SimTracksterFromCP - for (unsigned int tracksterIndex = 0; tracksterIndex < simTrackstersFromCP.size(); ++tracksterIndex) { - edm::Ref> simTracksterRef(simTrackstersFromCPHandle, tracksterIndex); - float simToRecoScoresDenominator = 0.f; - const auto& simTracksterHitsAndFractions = simTracksterFromCPToHitMap[tracksterIndex]; - ticl::AssociationMap hitToAssociatedRecoTracksterMap(simTracksterHitsAndFractions.size()); - std::vector associatedRecoTracksterIndices; - std::vector simFractions(simTracksterHitsAndFractions.size(), 0.f); - const auto& simTrackster = simTrackstersFromCP[tracksterIndex]; - unsigned int simObjectIndex = simTrackster.seedIndex(); - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, simTracksterFraction] = simTracksterHitsAndFractions[i]; - auto it = std::find_if(hitToCaloParticleMap[hitIndex].begin(), - hitToCaloParticleMap[hitIndex].end(), - [simObjectIndex](const auto& pair) { return pair.first == simObjectIndex; }); - if (it != hitToCaloParticleMap[hitIndex].end()) { - simFractions[i] = it->second; - } - float simFraction = simFractions[i]; - - const auto& recHit = rechitManager[hitIndex]; - float squaredSimFraction = simFraction * simFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - simToRecoScoresDenominator += squaredSimFraction * squaredRecHitEnergy; - - const auto& hitToRecoTracksterVec = hitToTracksterMap[hitIndex]; - for (const auto& [recoTracksterIndex, recoFraction] : hitToRecoTracksterVec) { - hitToAssociatedRecoTracksterMap.insert(i, recoTracksterIndex, recoFraction); - associatedRecoTracksterIndices.push_back(recoTracksterIndex); - } - } - - std::sort(associatedRecoTracksterIndices.begin(), associatedRecoTracksterIndices.end()); - associatedRecoTracksterIndices.erase( - std::unique(associatedRecoTracksterIndices.begin(), associatedRecoTracksterIndices.end()), - associatedRecoTracksterIndices.end()); - - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - unsigned int hitIndex = simTracksterHitsAndFractions[i].first; - const auto& hitToRecoTracksterVec = hitToTracksterMap[hitIndex]; - for (unsigned int recoTracksterIndex : associatedRecoTracksterIndices) { - if (std::find_if( - hitToRecoTracksterVec.begin(), hitToRecoTracksterVec.end(), [recoTracksterIndex](const auto& pair) { - return pair.first == recoTracksterIndex; - }) == hitToRecoTracksterVec.end()) { - hitToAssociatedRecoTracksterMap.insert(i, recoTracksterIndex, 0.f); - } - } - } - - const float invDenominator = 1.f / simToRecoScoresDenominator; - - for (unsigned int i = 0; i < simTracksterHitsAndFractions.size(); ++i) { - const auto& [hitIndex, simTracksterFraction] = simTracksterHitsAndFractions[i]; - const auto& recHit = rechitManager[hitIndex]; - float simFraction = simFractions[i]; - float squaredSimFraction = simFraction * simFraction; - float squaredRecHitEnergy = recHit.energy() * recHit.energy(); - float simSharedEnergy = recHit.energy() * simFraction; - - const auto& hitToRecoTracksterVec = hitToAssociatedRecoTracksterMap[i]; - for (const auto& [recoTracksterIndex, recoFraction] : hitToRecoTracksterVec) { - edm::Ref> recoTracksterRef(recoTrackstersHandle, recoTracksterIndex); - float sharedEnergy = std::min(recoFraction * recHit.energy(), simSharedEnergy); - float squaredFraction = - std::min(squaredSimFraction, (recoFraction - simFraction) * (recoFraction - simFraction)); - float score = invDenominator * squaredFraction * squaredRecHitEnergy; - simTracksterFromCPToTracksterMap->insert(simTracksterRef, recoTracksterRef, sharedEnergy, score); - } - } - } - tracksterToSimTracksterMap->sort(true); - tracksterToSimTracksterFromCPMap->sort(true); - simTracksterToTracksterMap->sort(true); - simTracksterFromCPToTracksterMap->sort(true); - - iEvent.put(std::move(tracksterToSimTracksterMap), "tracksterToSimTracksterMap"); - iEvent.put(std::move(tracksterToSimTracksterFromCPMap), "tracksterToSimTracksterFromCPMap"); - iEvent.put(std::move(simTracksterToTracksterMap), "simTracksterToTracksterMap"); - iEvent.put(std::move(simTracksterFromCPToTracksterMap), "simTracksterFromCPToTracksterMap"); -} - -void TracksterToSimTracksterAssociatorByHitsProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add("tracksters", edm::InputTag("ticlTrackstersMerge")); - desc.add("simTracksters", edm::InputTag("ticlSimTracksters")); - desc.add("simTrackstersFromCP", edm::InputTag("ticlSimTracksters", "fromCPs")); - - desc.add("hitToTracksterMap", edm::InputTag("hitToTracksterAssociator", "hitToTracksterMap")); - desc.add("hitToSimTracksterMap", - edm::InputTag("allHitToTracksterAssociations", "hitToticlSimTracksters")); - desc.add("hitToSimTracksterFromCPMap", - edm::InputTag("allHitToTracksterAssociations", "hitToticlSimTrackstersfromCPs")); - desc.add("hitToSimClusterMap", - edm::InputTag("hitToSimClusterCaloParticleAssociator", "hitToSimClusterMap")); - desc.add("hitToCaloParticleMap", - edm::InputTag("hitToSimClusterCaloParticleAssociator", "hitToCaloParticleMap")); - desc.add("tracksterToHitMap", edm::InputTag("hitToTrackstersAssociationPR", "tracksterToHitMap")); - desc.add("simTracksterToHitMap", - edm::InputTag("allHitToTracksterAssociations", "ticlSimTrackstersToHit")); - desc.add("simTracksterFromCPToHitMap", - edm::InputTag("allHitToTracksterAssociations", "ticlSimTrackstersfromCPsToHit")); - desc.add("caloParticles", edm::InputTag("mix", "MergedCaloTruth")); - - desc.add>("hits", - {edm::InputTag("HGCalRecHit", "HGCEERecHits"), - edm::InputTag("HGCalRecHit", "HGCHEFRecHits"), - edm::InputTag("HGCalRecHit", "HGCHEBRecHits")}); - descriptions.add("tracksterToSimTracksterAssociatorByHitsProducer", desc); -} - -// Define this as a plug-in -DEFINE_FWK_MODULE(TracksterToSimTracksterAssociatorByHitsProducer); \ No newline at end of file diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorByHitsProducer.h b/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorByHitsProducer.h deleted file mode 100644 index ae38d6ceb797a..0000000000000 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorByHitsProducer.h +++ /dev/null @@ -1,48 +0,0 @@ -// Author: Felice Pantaleo, felice.pantaleo@cern.ch 06/2024 - -#ifndef TracksterToSimTracksterAssociatorByHitsProducer_h -#define TracksterToSimTracksterAssociatorByHitsProducer_h - -#include - -#include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/EDGetToken.h" -#include "DataFormats/HGCalReco/interface/Trackster.h" -#include "SimDataFormats/Associations/interface/TICLAssociationMap.h" -#include "DataFormats/Provenance/interface/ProductID.h" -#include "DataFormats/HGCRecHit/interface/HGCRecHitCollections.h" -#include "CommonTools/RecoAlgos/interface/MultiVectorManager.h" -#include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h" -#include "SimDataFormats/CaloAnalysis/interface/SimCluster.h" - -class TracksterToSimTracksterAssociatorByHitsProducer : public edm::global::EDProducer<> { -public: - explicit TracksterToSimTracksterAssociatorByHitsProducer(const edm::ParameterSet&); - ~TracksterToSimTracksterAssociatorByHitsProducer() override; - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - -private: - void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; - - edm::EDGetTokenT> recoTracksterCollectionToken_; - edm::EDGetTokenT> simTracksterCollectionToken_; - edm::EDGetTokenT> simTracksterFromCPCollectionToken_; - edm::EDGetTokenT> hitToTracksterMapToken_; - edm::EDGetTokenT> hitToSimTracksterMapToken_; - edm::EDGetTokenT> hitToSimTracksterFromCPMapToken_; - edm::EDGetTokenT> hitToSimClusterMapToken_; - edm::EDGetTokenT> hitToCaloParticleMapToken_; - edm::EDGetTokenT> tracksterToHitMapToken_; - edm::EDGetTokenT> simTracksterToHitMapToken_; - edm::EDGetTokenT> simTracksterFromCPToHitMapToken_; - edm::EDGetTokenT> caloParticleToken_; - std::vector> hitsTokens_; -}; - -#endif diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorProducer.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorProducer.cc deleted file mode 100644 index addadd8e4b1e8..0000000000000 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorProducer.cc +++ /dev/null @@ -1,202 +0,0 @@ -// Author: Felice Pantaleo, felice.pantaleo@cern.ch 06/2024 - -#include "TracksterToSimTracksterAssociatorProducer.h" -#include "SimDataFormats/Associations/interface/TICLAssociationMap.h" - -TracksterToSimTracksterAssociatorProducer::TracksterToSimTracksterAssociatorProducer(const edm::ParameterSet& pset) - : recoTracksterCollectionToken_( - consumes>(pset.getParameter("tracksters"))), - simTracksterCollectionToken_( - consumes>(pset.getParameter("simTracksters"))), - layerClustersCollectionToken_( - consumes>(pset.getParameter("layerClusters"))), - LayerClusterToTracksterMapToken_( - consumes< - ticl::AssociationMap, std::vector>>( - pset.getParameter("tracksterMap"))), - LayerClusterToSimTracksterMapToken_( - consumes< - ticl::AssociationMap, std::vector>>( - pset.getParameter("simTracksterMap"))) { - produces< - ticl::AssociationMap, std::vector>>( - "tracksterToSimTracksterMap"); - produces< - ticl::AssociationMap, std::vector>>( - "simTracksterToTracksterMap"); -} - -TracksterToSimTracksterAssociatorProducer::~TracksterToSimTracksterAssociatorProducer() {} - -void TracksterToSimTracksterAssociatorProducer::produce(edm::StreamID, - edm::Event& iEvent, - const edm::EventSetup& iSetup) const { - edm::Handle> recoTrackstersHandle; - iEvent.getByToken(recoTracksterCollectionToken_, recoTrackstersHandle); - const auto& recoTracksters = *recoTrackstersHandle; - - edm::Handle> simTrackstersHandle; - iEvent.getByToken(simTracksterCollectionToken_, simTrackstersHandle); - const auto& simTracksters = *simTrackstersHandle; - - edm::Handle> layerClustersHandle; - iEvent.getByToken(layerClustersCollectionToken_, layerClustersHandle); - const auto& layerClusters = *layerClustersHandle; - - edm::Handle, std::vector>> - layerClusterToTracksterMapHandle; - iEvent.getByToken(LayerClusterToTracksterMapToken_, layerClusterToTracksterMapHandle); - const auto& layerClusterToTracksterMap = *layerClusterToTracksterMapHandle; - - edm::Handle, std::vector>> - layerClusterToSimTracksterMapHandle; - iEvent.getByToken(LayerClusterToSimTracksterMapToken_, layerClusterToSimTracksterMapHandle); - const auto& layerClusterToSimTracksterMap = *layerClusterToSimTracksterMapHandle; - - auto tracksterToSimTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( - recoTrackstersHandle, simTrackstersHandle, iEvent); - auto simTracksterToTracksterMap = std::make_unique< - ticl::AssociationMap, std::vector>>( - simTrackstersHandle, recoTrackstersHandle, iEvent); - - for (unsigned int tracksterIndex = 0; tracksterIndex < recoTracksters.size(); ++tracksterIndex) { - const auto& recoTrackster = recoTracksters[tracksterIndex]; - edm::Ref> recoTracksterRef(recoTrackstersHandle, tracksterIndex); - const auto& layerClustersIds = recoTrackster.vertices(); - float recoToSimScoresDenominator = 0.f; - ticl::mapWithFraction layerClusterToAssociatedSimTracksterMap(layerClustersIds.size()); - std::vector associatedSimTracksterIndices; - for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { - unsigned int layerClusterId = layerClustersIds[i]; - const auto& layerCluster = layerClusters[layerClusterId]; - float recoFraction = 1.f / recoTrackster.vertex_multiplicity(i); - float squaredRecoFraction = recoFraction * recoFraction; - float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy(); - recoToSimScoresDenominator += squaredLayerClusterEnergy * squaredRecoFraction; - const auto& simTracksterVec = layerClusterToSimTracksterMap[layerClusterId]; - for (const auto& [simTracksterIndex, simSharedEnergy] : simTracksterVec) { - layerClusterToAssociatedSimTracksterMap[i].push_back({simTracksterIndex, simSharedEnergy}); - associatedSimTracksterIndices.push_back(simTracksterIndex); - } - } - - // Keep only unique associatedSimTracksterIndices - std::sort(associatedSimTracksterIndices.begin(), associatedSimTracksterIndices.end()); - associatedSimTracksterIndices.erase( - std::unique(associatedSimTracksterIndices.begin(), associatedSimTracksterIndices.end()), - associatedSimTracksterIndices.end()); - - // Add missing sim tracksters with 0 shared energy to layerClusterToAssociatedSimTracksterMap - for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { - unsigned int layerClusterId = layerClustersIds[i]; - const auto& simTracksterVec = layerClusterToSimTracksterMap[layerClusterId]; - for (unsigned int simTracksterIndex : associatedSimTracksterIndices) { - if (std::find_if(simTracksterVec.begin(), simTracksterVec.end(), [simTracksterIndex](const auto& pair) { - return pair.first == simTracksterIndex; - }) == simTracksterVec.end()) { - layerClusterToAssociatedSimTracksterMap[i].push_back({simTracksterIndex, 0.f}); - } - } - } - - const float invDenominator = 1.f / recoToSimScoresDenominator; - - for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { - unsigned int layerClusterId = layerClustersIds[i]; - const auto& layerCluster = layerClusters[layerClusterId]; - float recoFraction = 1.f / recoTrackster.vertex_multiplicity(i); - float squaredRecoFraction = recoFraction * recoFraction; - float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy(); - float recoSharedEnergy = layerCluster.energy() * recoFraction; - float invLayerClusterEnergy = 1.f / layerCluster.energy(); - const auto& simTracksterVec = layerClusterToAssociatedSimTracksterMap[i]; - for (const auto& [simTracksterIndex, simSharedEnergy] : simTracksterVec) { - edm::Ref> simTracksterRef(simTrackstersHandle, simTracksterIndex); - float sharedEnergy = std::min(simSharedEnergy, recoSharedEnergy); - float simFraction = simSharedEnergy * invLayerClusterEnergy; - float score = invDenominator * - std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction)) * - squaredLayerClusterEnergy; - tracksterToSimTracksterMap->insert(recoTracksterRef, simTracksterRef, sharedEnergy, score); - } - } - } - - for (unsigned int tracksterIndex = 0; tracksterIndex < simTracksters.size(); ++tracksterIndex) { - const auto& simTrackster = simTracksters[tracksterIndex]; - edm::Ref> simTracksterRef(simTrackstersHandle, tracksterIndex); - const auto& layerClustersIds = simTrackster.vertices(); - float simToRecoScoresDenominator = 0.f; - ticl::mapWithFraction layerClusterToAssociatedTracksterMap(layerClustersIds.size()); - std::vector associatedRecoTracksterIndices; - for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { - unsigned int layerClusterId = layerClustersIds[i]; - const auto& layerCluster = layerClusters[layerClusterId]; - float simFraction = 1.f / simTrackster.vertex_multiplicity(i); - float squaredSimFraction = simFraction * simFraction; - float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy(); - simToRecoScoresDenominator += squaredLayerClusterEnergy * squaredSimFraction; - const auto& recoTracksterVec = layerClusterToTracksterMap[layerClusterId]; - for (const auto& [recoTracksterIndex, recoSharedEnergy] : recoTracksterVec) { - layerClusterToAssociatedTracksterMap[i].push_back({recoTracksterIndex, recoSharedEnergy}); - associatedRecoTracksterIndices.push_back(recoTracksterIndex); - } - } - // keep only unique associatedRecoTracksterIndices - std::sort(associatedRecoTracksterIndices.begin(), associatedRecoTracksterIndices.end()); - associatedRecoTracksterIndices.erase( - std::unique(associatedRecoTracksterIndices.begin(), associatedRecoTracksterIndices.end()), - associatedRecoTracksterIndices.end()); - // for each layer cluster, loop over associatedRecoTracksterIndices and add the missing reco tracksters with 0 shared energy to layerClusterToAssociatedTracksterMap - for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { - unsigned int layerClusterId = layerClustersIds[i]; - const auto& recoTracksterVec = layerClusterToTracksterMap[layerClusterId]; - for (unsigned int recoTracksterIndex : associatedRecoTracksterIndices) { - if (std::find_if(recoTracksterVec.begin(), recoTracksterVec.end(), [recoTracksterIndex](const auto& pair) { - return pair.first == recoTracksterIndex; - }) == recoTracksterVec.end()) { - layerClusterToAssociatedTracksterMap[i].push_back({recoTracksterIndex, 0.f}); - } - } - } - - const float invDenominator = 1.f / simToRecoScoresDenominator; - - for (unsigned int i = 0; i < layerClustersIds.size(); ++i) { - unsigned int layerClusterId = layerClustersIds[i]; - const auto& layerCluster = layerClusters[layerClusterId]; - float simFraction = 1.f / simTrackster.vertex_multiplicity(i); - float squaredSimFraction = simFraction * simFraction; - float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy(); - float simSharedEnergy = layerCluster.energy() * simFraction; - float invLayerClusterEnergy = 1.f / layerCluster.energy(); - const auto& recoTracksterVec = layerClusterToAssociatedTracksterMap[i]; - for (const auto& [recoTracksterIndex, recoSharedEnergy] : recoTracksterVec) { - edm::Ref> recoTracksterRef(recoTrackstersHandle, recoTracksterIndex); - float sharedEnergy = std::min(recoSharedEnergy, simSharedEnergy); - float recoFraction = recoSharedEnergy * invLayerClusterEnergy; - float score = invDenominator * - std::min(squaredSimFraction, (simFraction - recoFraction) * (simFraction - recoFraction)) * - squaredLayerClusterEnergy; - simTracksterToTracksterMap->insert(tracksterIndex, recoTracksterIndex, sharedEnergy, score); - } - } - } - tracksterToSimTracksterMap->sort(true); - simTracksterToTracksterMap->sort(true); - iEvent.put(std::move(tracksterToSimTracksterMap), "tracksterToSimTracksterMap"); - iEvent.put(std::move(simTracksterToTracksterMap), "simTracksterToTracksterMap"); -} - -void TracksterToSimTracksterAssociatorProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add("tracksters", edm::InputTag("trackstersProducer")); - desc.add("simTracksters", edm::InputTag("simTrackstersProducer")); - desc.add("layerClusters", edm::InputTag("hgcalMergeLayerClusters")); - desc.add("tracksterMap", edm::InputTag("tracksterAssociatorProducer")); - desc.add("simTracksterMap", edm::InputTag("simTracksterAssociatorProducer")); - descriptions.add("tracksterToSimTracksterAssociatorProducer", desc); -} - -DEFINE_FWK_MODULE(TracksterToSimTracksterAssociatorProducer); diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorProducer.h b/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorProducer.h deleted file mode 100644 index d7854d9549e10..0000000000000 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/TracksterToSimTracksterAssociatorProducer.h +++ /dev/null @@ -1,44 +0,0 @@ -// Author: Felice Pantaleo, felice.pantaleo@cern.ch 06/2024 - -#ifndef TracksterToSimTracksterAssociatorProducer_h -#define TracksterToSimTracksterAssociatorProducer_h - -#include -#include -#include -#include -#include - -#include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/EDGetToken.h" -#include "DataFormats/HGCalReco/interface/Trackster.h" -#include "DataFormats/CaloRecHit/interface/CaloCluster.h" -#include "SimDataFormats/Associations/interface/TICLAssociationMap.h" - -class TracksterToSimTracksterAssociatorProducer : public edm::global::EDProducer<> { -public: - explicit TracksterToSimTracksterAssociatorProducer(const edm::ParameterSet&); - ~TracksterToSimTracksterAssociatorProducer() override; - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - -private: - void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; - - edm::EDGetTokenT> recoTracksterCollectionToken_; - edm::EDGetTokenT> simTracksterCollectionToken_; - edm::EDGetTokenT> layerClustersCollectionToken_; - edm::EDGetTokenT< - ticl::AssociationMap, std::vector>> - LayerClusterToTracksterMapToken_; - edm::EDGetTokenT< - ticl::AssociationMap, std::vector>> - LayerClusterToSimTracksterMapToken_; -}; - -#endif diff --git a/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociationByHits_cfi.py b/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociationByHits_cfi.py index eefe81b702bff..43a05ba1b9743 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociationByHits_cfi.py +++ b/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociationByHits_cfi.py @@ -1,34 +1,5 @@ import FWCore.ParameterSet.Config as cms from SimCalorimetry.HGCalAssociatorProducers.HitToTracksterAssociation_cfi import * -from SimCalorimetry.HGCalAssociatorProducers.tracksterToSimTracksterAssociatorByHitsProducer_cfi import tracksterToSimTracksterAssociatorByHitsProducer - - - -tracksterSimTracksterAssociationByHitsLinking = tracksterToSimTracksterAssociatorByHitsProducer.clone( - tracksters = cms.InputTag("ticlTrackstersMerge"), - hitToTracksterMap = cms.InputTag("allHitToTracksterAssociations","hitTo"+"ticlTrackstersMerge"), - tracksterToHitMap = cms.InputTag("allHitToTracksterAssociations","ticlTrackstersMerge"+"ToHit"), - hitToSimTracksterMap = cms.InputTag("allHitToTracksterAssociations", "hitTo"+"ticlSimTracksters"), - hitToSimTracksterFromCPMap = cms.InputTag("allHitToTracksterAssociations", 'hitTo'+'ticlSimTracksters'+'fromCPs'), - simTracksterToHitMap = cms.InputTag('allHitToTracksterAssociations', 'ticlSimTracksters'+'ToHit'), - simTracksterFromCPToHitMap = cms.InputTag('allHitToTracksterAssociations', 'ticlSimTracksters'+'fromCPs'+'ToHit'), -) - - -tracksterSimTracksterAssociationByHitsPR = tracksterToSimTracksterAssociatorByHitsProducer.clone( - tracksters = cms.InputTag("ticlTrackstersCLUE3DHigh"), - hitToTracksterMap = cms.InputTag("allHitToTracksterAssociations","hitTo"+"ticlTrackstersCLUE3DHigh"), - tracksterToHitMap = cms.InputTag("allHitToTracksterAssociations","ticlTrackstersCLUE3DHigh"+"ToHit"), -) - - - -from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5 - -ticl_v5.toModify(tracksterSimTracksterAssociationByHitsLinking, tracksters = cms.InputTag("ticlCandidate"), hitToTracksterMap = cms.InputTag("allHitToTracksterAssociations","hitTo"+"ticlCandidate"), tracksterToHitMap = cms.InputTag("allHitToTracksterAssociations","ticlCandidate"+"ToHit")) - - - from SimCalorimetry.HGCalAssociatorProducers.AllTracksterToSimTracksterAssociatorsByHitsProducer_cfi import AllTracksterToSimTracksterAssociatorsByHitsProducer from RecoHGCal.TICL.iterativeTICL_cff import ticlIterLabels @@ -45,14 +16,6 @@ from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2 -premix_stage2.toModify(tracksterSimTracksterAssociationByHitsLinking, - caloParticles = "mixData:MergedCaloTruth", -) - -premix_stage2.toModify(tracksterSimTracksterAssociationByHitsPR, - caloParticles = "mixData:MergedCaloTruth", -) - premix_stage2.toModify(allTrackstersToSimTrackstersAssociationsByHits, caloParticles = "mixData:MergedCaloTruth", ) diff --git a/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociation_cfi.py b/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociation_cfi.py index 92a527475a641..374a01fb24efe 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociation_cfi.py +++ b/SimCalorimetry/HGCalAssociatorProducers/python/TSToSimTSAssociation_cfi.py @@ -1,6 +1,5 @@ import FWCore.ParameterSet.Config as cms from SimCalorimetry.HGCalAssociatorProducers.LCToTSAssociator_cfi import layerClusterToCLUE3DTracksterAssociation, layerClusterToTracksterMergeAssociation, layerClusterToSimTracksterAssociation, layerClusterToSimTracksterFromCPsAssociation -from SimCalorimetry.HGCalAssociatorProducers.tracksterToSimTracksterAssociatorProducer_cfi import tracksterToSimTracksterAssociatorProducer from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5 from Configuration.ProcessModifiers.ticl_superclustering_mustache_ticl_cff import ticl_superclustering_mustache_ticl diff --git a/SimCalorimetry/HGCalSimProducers/python/customHGCdigitizer_cfi.py b/SimCalorimetry/HGCalSimProducers/python/customHGCdigitizer_cfi.py index f9b388dd2a147..675738b024f87 100644 --- a/SimCalorimetry/HGCalSimProducers/python/customHGCdigitizer_cfi.py +++ b/SimCalorimetry/HGCalSimProducers/python/customHGCdigitizer_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms """ diff --git a/SimCalorimetry/HGCalSimProducers/test/hgcalInjectTestHit_cfg.py b/SimCalorimetry/HGCalSimProducers/test/hgcalInjectTestHit_cfg.py index 33085689d5bf6..dc27001fb37f9 100644 --- a/SimCalorimetry/HGCalSimProducers/test/hgcalInjectTestHit_cfg.py +++ b/SimCalorimetry/HGCalSimProducers/test/hgcalInjectTestHit_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process('DIGI') diff --git a/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py b/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py index 9334636966344..b02962b83576a 100644 --- a/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py +++ b/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py @@ -46,7 +46,7 @@ ) from Configuration.Eras.Modifier_fastSim_cff import fastSim -fastSim.toModify( hcalSimBlock, hitsProducer=cms.string('fastSimProducer') ) +fastSim.toModify( hcalSimBlock, hitsProducer = "fastSimProducer" ) from Configuration.ProcessModifiers.premix_stage1_cff import premix_stage1 premix_stage1.toModify(hcalSimBlock, @@ -60,12 +60,16 @@ # test numbering not used in fastsim from Configuration.Eras.Modifier_run2_HCAL_2017_cff import run2_HCAL_2017 -(run2_HCAL_2017 & ~fastSim).toModify( hcalSimBlock, TestNumbering = cms.bool(True) ) +(run2_HCAL_2017 & ~fastSim).toModify( hcalSimBlock, TestNumbering = True ) # remove HE processing for phase 2, completely put in HGCal land +# Also inhibit ZDC digitization from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal -phase2_hgcal.toModify(hcalSimBlock, killHE = cms.bool(True) ) +phase2_hgcal.toModify(hcalSimBlock, + doZDCDigi = False, + killHE = True +) -# remove HE processing for phase 2, completely put in HGCal land +# inhibit ZDC digitization from Configuration.Eras.Modifier_zdcNoDigi_cff import zdcNoDigi -zdcNoDigi.toModify(hcalSimBlock, doZDCDigi = cms.bool(False) ) +zdcNoDigi.toModify(hcalSimBlock, doZDCDigi = False ) diff --git a/SimDataFormats/Associations/interface/TICLAssociationMap.h b/SimDataFormats/Associations/interface/TICLAssociationMap.h index 492ce7e4e803b..62c776744d522 100644 --- a/SimDataFormats/Associations/interface/TICLAssociationMap.h +++ b/SimDataFormats/Associations/interface/TICLAssociationMap.h @@ -7,6 +7,9 @@ #include #include #include +#include + +#include // CMSSW specific includes #include "DataFormats/Common/interface/Ref.h" @@ -15,23 +18,163 @@ namespace ticl { - // Define the possible map types - using mapWithFraction = std::vector>>; - using mapWithFractionAndScore = std::vector>>>; - using oneToOneMapWithFraction = std::vector>; - using oneToOneMapWithFractionAndScore = std::vector>>; + // Define wrapper types to differentiate between fraction and shared energy + struct FractionType { + float value; + FractionType(float v = 0.0f) : value(v) {} + FractionType& operator+=(float v) { + value += v; + return *this; + } + }; + + struct SharedEnergyType { + float value; + SharedEnergyType(float v = 0.0f) : value(v) {} + SharedEnergyType& operator+=(float v) { + value += v; + return *this; + } + }; + + // AssociationElement class to store index and value, and provide methods directly + template + class AssociationElement { + public: + using value_type = V; + AssociationElement() : index_(std::numeric_limits::max()) { + if constexpr (std::is_same_v || std::is_same_v) { + value_.value = -1.f; + } else if constexpr (std::is_same_v> || + std::is_same_v>) { + value_.first.value = -1.f; + } + } + AssociationElement(unsigned int index, const V& value) : index_(index), value_(value) {} + + unsigned int index() const { return index_; } + + bool isValid() const { + if constexpr (std::is_same_v || std::is_same_v) { + return value_.value >= 0.f; + } else if constexpr (std::is_same_v> || + std::is_same_v>) { + return value_.first.value >= 0.f; + } + } + + // Enable fraction() if ValueType is FractionType + template , int> = 0> + float fraction() const { + return value_.value; + } + + // Enable sharedEnergy() if ValueType is SharedEnergyType + template , int> = 0> + float sharedEnergy() const { + return value_.value; + } + + // Enable fraction() and score() if ValueType is std::pair + template >, int> = 0> + float fraction() const { + return value_.first.value; + } + template >, int> = 0> + float score() const { + return value_.second; + } + + // Enable sharedEnergy() and score() if ValueType is std::pair + template >, int> = 0> + float sharedEnergy() const { + return value_.first.value; + } + template >, int> = 0> + float score() const { + return value_.second; + } + + // Method to accumulate values + void accumulate(const V& other_value) { + if constexpr (std::is_same_v || std::is_same_v) { + value_.value += other_value.value; + } else if constexpr (std::is_same_v> || + std::is_same_v>) { + value_.first.value += other_value.first.value; + value_.second += other_value.second; + } + } + bool operator==(const AssociationElement& other) const { + return index_ == other.index_ && value_.value == other.value_.value; + } + + bool operator!=(const AssociationElement& other) const { return !(*this == other); } + + private: + unsigned int index_; + V value_; + }; + + // Type traits to differentiate between one-to-one and one-to-many maps + template + struct MapTraits; + + template + struct MapTraits>> { + static constexpr bool is_one_to_one = true; + using AssociationElementType = AssociationElement; + using ValueType = V; + }; + + template + struct MapTraits>>> { + static constexpr bool is_one_to_one = false; + using AssociationElementType = AssociationElement; + using ValueType = V; + }; + + // Trait to check if V is a std::pair (i.e., has a score) + template + struct IsValueTypeWithScore : std::false_type {}; + + template + struct IsValueTypeWithScore> : std::true_type {}; + + // Define map types using AssociationElement and container types + using mapWithFraction = std::vector>>; + using mapWithFractionAndScore = std::vector>>>; + using oneToOneMapWithFraction = std::vector>; + using oneToOneMapWithFractionAndScore = std::vector>>; + using mapWithSharedEnergy = std::vector>>; + using mapWithSharedEnergyAndScore = std::vector>>>; + using oneToOneMapWithSharedEnergy = std::vector>; + using oneToOneMapWithSharedEnergyAndScore = std::vector>>; + + // AssociationMap class templated on MapType template class AssociationMap { private: + MapType map_; + // Type alias for conditionally including collectionRefProds using CollectionRefProdType = typename std::conditional_t || std::is_void_v, std::monostate, std::pair, edm::RefProd>>; + CollectionRefProdType collectionRefProds; + + // Traits to deduce AssociationElementType and ValueType + using Traits = MapTraits; + using AssociationElementType = typename Traits::AssociationElementType; + using V = typename Traits::ValueType; + static constexpr bool is_one_to_one = Traits::is_one_to_one; + public: AssociationMap() : collectionRefProds() {} + // Constructor for generic use template ::value) { - if (index1 >= map_.size()) { - map_.resize(index1 + 1); - } - auto& vec = map_[index1]; - auto it = std::find_if(vec.begin(), vec.end(), [&](const auto& pair) { return pair.first == index2; }); - if (it != vec.end()) { - it->second += fraction; - } else { - vec.emplace_back(index2, fraction); - } - } else if constexpr (std::is_same::value) { - if (index1 >= map_.size()) { - map_.resize(index1 + 1); - } + void insert(unsigned int index1, unsigned int index2, float fraction_or_energy, float score = 0.0f) { + assert(index1 < map_.size()); + V value; + if constexpr (IsValueTypeWithScore::value) { + using FirstType = typename V::first_type; + value = V(FirstType(fraction_or_energy), score); + } else { + value = V(fraction_or_energy); + } + AssociationElementType element(index2, value); + + if constexpr (is_one_to_one) { + map_[index1] = element; + } else { auto& vec = map_[index1]; - auto it = std::find_if(vec.begin(), vec.end(), [&](const auto& pair) { return pair.first == index2; }); + auto it = + std::find_if(vec.begin(), vec.end(), [&](const AssociationElementType& e) { return e.index() == index2; }); if (it != vec.end()) { - it->second.first += fraction; - it->second.second += score; + // Accumulate value + it->accumulate(value); } else { - vec.emplace_back(index2, std::make_pair(fraction, score)); - } - } else if constexpr (std::is_same::value) { - auto it = std::find_if(map_.begin(), map_.end(), [&](const auto& pair) { return pair.first == index1; }); - if (it != map_.end()) { - it->second += fraction; - } else { - map_.emplace_back(index1, fraction); - } - } else if constexpr (std::is_same::value) { - auto it = std::find_if(map_.begin(), map_.end(), [&](const auto& pair) { return pair.first == index1; }); - if (it != map_.end()) { - it->second.first += fraction; - it->second.second += score; - } else { - map_.emplace_back(index1, std::make_pair(fraction, score)); + vec.push_back(element); } } } @@ -131,49 +260,81 @@ namespace ticl { template && !std::is_void_v, int> = 0> - void insert(const edm::Ref& ref1, const edm::Ref& ref2, float fraction, float score = 0.0f) { - insert(ref1.key(), ref2.key(), fraction, score); + void insert(const edm::Ref& ref1, const edm::Ref& ref2, float fraction_or_energy, float score = 0.0f) { + insert(ref1.key(), ref2.key(), fraction_or_energy, score); } void sort(bool byScore = false) { - static_assert(!std::is_same_v && - !std::is_same_v, - "Sort is not applicable for one-to-one maps"); - - if constexpr (std::is_same_v) { + if constexpr (is_one_to_one) { + // Sorting not applicable for one-to-one maps + } else { for (auto& vec : map_) { - std::sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { return a.second > b.second; }); - } - } else if constexpr (std::is_same_v) { - for (auto& vec : map_) { - if (byScore) { - std::sort( - vec.begin(), vec.end(), [](const auto& a, const auto& b) { return a.second.second > b.second.second; }); + if (byScore && IsValueTypeWithScore::value) { + std::sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { + if (a.score() != b.score()) { + return a.score() > b.score(); + } else { + return a.index() < b.index(); + } + }); } else { - std::sort( - vec.begin(), vec.end(), [](const auto& a, const auto& b) { return a.second.first > b.second.first; }); + if constexpr (std::is_same_v || std::is_same_v>) { + std::sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { + if (a.fraction() != b.fraction()) { + return a.fraction() > b.fraction(); + } else { + return a.index() < b.index(); + } + }); + } else { + std::sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { + if (a.sharedEnergy() != b.sharedEnergy()) { + return a.sharedEnergy() > b.sharedEnergy(); + } else { + return a.index() < b.index(); + } + }); + } } } } } - auto& operator[](unsigned int index1) { return map_[index1]; } + // Overload of sort() that accepts a custom comparator + template + void sort(Compare comp) { + if constexpr (is_one_to_one) { + // Sorting not applicable for one-to-one maps + } else { + for (auto& vec : map_) { + std::sort(vec.begin(), vec.end(), comp); + } + } + } + // Access methods const auto& operator[](unsigned int index1) const { return map_[index1]; } + auto& operator[](unsigned int index1) { return map_[index1]; } + const auto& at(unsigned int index1) const { - if (index1 >= map_.size()) { - throw std::out_of_range("Index out of range"); + const auto& elem = map_.at(index1); + if (!elem.isValid()) { + throw std::out_of_range("Attempted to access an unset element in AssociationMap. Element index: " + + std::to_string(index1)); } - return map_[index1]; + return elem; } auto& at(unsigned int index1) { - if (index1 >= map_.size()) { - throw std::out_of_range("Index out of range"); + auto& elem = map_.at(index1); + if (!elem.isValid()) { + throw std::out_of_range("Attempted to access an unset element in AssociationMap. Element index: " + + std::to_string(index1)); } - return map_[index1]; + return elem; } + // CMSSW-specific resize method template size()); } - // Constructor for generic use + + // Generic resize method template && std::is_void_v, int> = 0> @@ -192,24 +354,50 @@ namespace ticl { // Method to print the entire map void print(std::ostream& os) const { for (size_t i = 0; i < map_.size(); ++i) { - os << "Index " << i << ":\n"; - for (const auto& pair : map_[i]) { - os << " (" << pair.first << ", "; - if constexpr (std::is_same::value || - std::is_same::value) { - os << pair.second.first << ", " << pair.second.second; + if constexpr (is_one_to_one) { + const auto& elem = map_[i]; + if (!elem.isValid()) { + continue; + } + os << "Index " << i << ":\n"; + + os << " (" << elem.index() << ", "; + if constexpr (IsValueTypeWithScore::value) { + if constexpr (std::is_same_v) { + os << "Fraction: " << elem.fraction() << ", Score: " << elem.score(); + } else { + os << "SharedEnergy: " << elem.sharedEnergy() << ", Score: " << elem.score(); + } } else { - os << pair.second; + if constexpr (std::is_same_v) { + os << "Fraction: " << elem.fraction(); + } else if constexpr (std::is_same_v) { + os << "SharedEnergy: " << elem.sharedEnergy(); + } } os << ")\n"; + } else { + os << "Index " << i << ":\n"; + for (const auto& elem : map_[i]) { + os << " (" << elem.index() << ", "; + if constexpr (IsValueTypeWithScore::value) { + if constexpr (std::is_same_v) { + os << "Fraction: " << elem.fraction() << ", Score: " << elem.score(); + } else { + os << "SharedEnergy: " << elem.sharedEnergy() << ", Score: " << elem.score(); + } + } else { + if constexpr (std::is_same_v) { + os << "Fraction: " << elem.fraction(); + } else if constexpr (std::is_same_v) { + os << "SharedEnergy: " << elem.sharedEnergy(); + } + } + os << ")\n"; + } } } } - - private: - // For CMSSW-specific use - CollectionRefProdType collectionRefProds; - MapType map_; // Store the map directly }; } // namespace ticl diff --git a/SimDataFormats/Associations/src/classes.h b/SimDataFormats/Associations/src/classes.h index 792266ae1bdda..a240d5382b5a5 100644 --- a/SimDataFormats/Associations/src/classes.h +++ b/SimDataFormats/Associations/src/classes.h @@ -24,3 +24,5 @@ #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h" #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" #include "SimDataFormats/Associations/interface/TICLAssociationMap.h" +#include "DataFormats/Common/interface/RefProd.h" +#include "DataFormats/Common/interface/Ref.h" diff --git a/SimDataFormats/Associations/src/classes_def.xml b/SimDataFormats/Associations/src/classes_def.xml index ec07f75e23b37..9b48d619fae60 100644 --- a/SimDataFormats/Associations/src/classes_def.xml +++ b/SimDataFormats/Associations/src/classes_def.xml @@ -30,16 +30,66 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SimDataFormats/CaloAnalysis/interface/CaloParticle.h b/SimDataFormats/CaloAnalysis/interface/CaloParticle.h index 02abb97ed987f..67ba7a5841a34 100644 --- a/SimDataFormats/CaloAnalysis/interface/CaloParticle.h +++ b/SimDataFormats/CaloAnalysis/interface/CaloParticle.h @@ -165,6 +165,9 @@ class CaloParticle { /** @brief Gives the total number of SimHits, in the cluster */ int numberOfRecHits() const { return hits_.size(); } + /** @brief returns the time in ns of the caloparticle */ + float simTime() const { return time_; } + /** @brief add rechit with fraction */ void addRecHitAndFraction(uint32_t hit, float fraction) { hits_.emplace_back(hit); @@ -189,12 +192,16 @@ class CaloParticle { ++nsimhits_; } + /** @brief add vertex time to the caloparticle */ + void setSimTime(const float time) { time_ = time; } + protected: uint64_t nsimhits_{0}; EncodedEventId event_; uint32_t particleId_{0}; float simhit_energy_{0.f}; + float time_{std::numeric_limits::lowest()}; std::vector hits_; std::vector fractions_; diff --git a/SimDataFormats/CaloAnalysis/interface/MtdCaloParticle.h b/SimDataFormats/CaloAnalysis/interface/MtdCaloParticle.h index e826db9d178bd..1ffb3063ac821 100644 --- a/SimDataFormats/CaloAnalysis/interface/MtdCaloParticle.h +++ b/SimDataFormats/CaloAnalysis/interface/MtdCaloParticle.h @@ -33,11 +33,6 @@ class MtdCaloParticle : public CaloParticle { const MtdSimClusterRefVector &simClusters() const { return mtdsimClusters_; } void clearSimClusters() { mtdsimClusters_.clear(); } - /** @brief returns the time of the caloparticle */ - float simTime() const { return simhit_time_; } - - void addSimTime(const float time) { simhit_time_ = time; } - /** @brief add simhit's energy to cluster */ void addSimHit(PSimHit &hit) { simhit_energy_ += hit.energyLoss(); @@ -45,7 +40,6 @@ class MtdCaloParticle : public CaloParticle { } private: - float simhit_time_{-99.f}; MtdSimClusterRefVector mtdsimClusters_; }; diff --git a/SimDataFormats/CaloAnalysis/src/classes_def.xml b/SimDataFormats/CaloAnalysis/src/classes_def.xml index f855030468142..8ba07ba0acc82 100644 --- a/SimDataFormats/CaloAnalysis/src/classes_def.xml +++ b/SimDataFormats/CaloAnalysis/src/classes_def.xml @@ -1,5 +1,6 @@ - + + diff --git a/SimDataFormats/GeneratorProducts/src/HepMCProduct.cc b/SimDataFormats/GeneratorProducts/src/HepMCProduct.cc index 6a37507b265e0..2de4e471aeb86 100644 --- a/SimDataFormats/GeneratorProducts/src/HepMCProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/HepMCProduct.cc @@ -36,7 +36,6 @@ void HepMCProduct::addHepMCData(HepMC::GenEvent* evt) { void HepMCProduct::applyVtxGen(HepMC::FourVector const& vtxShift) { //std::cout<< " applyVtxGen called " << isVtxGenApplied_ << endl; - //fTimeOffset = 0; if (isVtxGenApplied()) return; @@ -126,16 +125,14 @@ HepMCProduct::HepMCProduct(HepMCProduct const& other) : evt_(nullptr) { isVtxGenApplied_ = other.isVtxGenApplied_; isVtxBoostApplied_ = other.isVtxBoostApplied_; isPBoostApplied_ = other.isPBoostApplied_; - //fTimeOffset = other.fTimeOffset; } // swap void HepMCProduct::swap(HepMCProduct& other) { std::swap(evt_, other.evt_); - std::swap(isVtxGenApplied_, other.isVtxGenApplied_); - std::swap(isVtxBoostApplied_, other.isVtxBoostApplied_); - std::swap(isPBoostApplied_, other.isPBoostApplied_); - //std::swap(fTimeOffset, other.fTimeOffset); + isVtxGenApplied_ = other.isVtxGenApplied_; + isVtxBoostApplied_ = other.isVtxBoostApplied_; + isPBoostApplied_ = other.isPBoostApplied_; } // assignment: use copy/swap idiom for exception safety. diff --git a/SimFastTiming/FastTimingCommon/interface/BTLDeviceSim.h b/SimFastTiming/FastTimingCommon/interface/BTLDeviceSim.h index 08aa9f125324a..69d8498620ac3 100644 --- a/SimFastTiming/FastTimingCommon/interface/BTLDeviceSim.h +++ b/SimFastTiming/FastTimingCommon/interface/BTLDeviceSim.h @@ -12,7 +12,7 @@ #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include diff --git a/SimFastTiming/MtdAssociatorProducers/plugins/MtdRecoClusterToSimLayerClusterAssociatorByHitsProducer.cc b/SimFastTiming/MtdAssociatorProducers/plugins/MtdRecoClusterToSimLayerClusterAssociatorByHitsProducer.cc index f602472e7f81f..b12ecc53d4dd2 100644 --- a/SimFastTiming/MtdAssociatorProducers/plugins/MtdRecoClusterToSimLayerClusterAssociatorByHitsProducer.cc +++ b/SimFastTiming/MtdAssociatorProducers/plugins/MtdRecoClusterToSimLayerClusterAssociatorByHitsProducer.cc @@ -14,6 +14,8 @@ #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" +#include "Geometry/Records/interface/MTDTopologyRcd.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "MtdRecoClusterToSimLayerClusterAssociatorByHitsImpl.h" diff --git a/SimFastTiming/MtdAssociatorProducers/plugins/MtdSimLayerClusterToTPAssociatorByTrackIdImpl.cc b/SimFastTiming/MtdAssociatorProducers/plugins/MtdSimLayerClusterToTPAssociatorByTrackIdImpl.cc index 3d640fb378044..826563e830797 100644 --- a/SimFastTiming/MtdAssociatorProducers/plugins/MtdSimLayerClusterToTPAssociatorByTrackIdImpl.cc +++ b/SimFastTiming/MtdAssociatorProducers/plugins/MtdSimLayerClusterToTPAssociatorByTrackIdImpl.cc @@ -29,11 +29,13 @@ reco::SimToTPCollectionMtd MtdSimLayerClusterToTPAssociatorByTrackIdImpl::associ std::map, TrackingParticleRef> tpIdMap; for (auto tpIt = trackingParticles.begin(); tpIt != trackingParticles.end(); tpIt++) { const auto& tp = *tpIt; - unsigned int tpTrackId = tp.g4Tracks()[0].trackId(); EncodedEventId tpEventId = tp.eventId(); - TrackingParticleRef tpRef = - edm::Ref(trackingParticleH, tpIt - trackingParticles.begin()); - tpIdMap[std::make_pair(tpTrackId, tpEventId.rawId())] = tpRef; + for (unsigned int igt = 0; igt < tp.g4Tracks().size(); igt++) { + unsigned int tpTrackId = tp.g4Tracks()[igt].trackId(); + TrackingParticleRef tpRef = + edm::Ref(trackingParticleH, tpIt - trackingParticles.begin()); + tpIdMap[std::make_pair(tpTrackId, tpEventId.rawId())] = tpRef; + } } // -- loop over sim clusters and get the trackId, eventId @@ -45,31 +47,26 @@ reco::SimToTPCollectionMtd MtdSimLayerClusterToTPAssociatorByTrackIdImpl::associ const auto& simClus = *simClusIt; size_t simClusIndex = simClusIt - simClusters.begin(); MtdSimLayerClusterRef simClusterRef = edm::Ref(simClusH, simClusIndex); - unsigned int simClusTrackId = simClus.g4Tracks()[0].trackId(); EncodedEventId simClusEventId = simClus.eventId(); - - // -- Check the trackId offset of the sim hits and keep only clusters with "direct" hits (offset == 0) - /* - if (simClus.trackIdOffset() != 0 ) continue; - */ - - std::pair uniqueId = std::make_pair(simClusTrackId, simClusEventId.rawId()); - auto it = tpIdMap.find(uniqueId); - - if (it != tpIdMap.end()) { - TrackingParticleRef tpRef = tpIdMap[uniqueId]; - outputCollection.insert(simClusterRef, tpRef); - - LogDebug("MtdSimLayerClusterToTPAssociator::associateSimToTP") - << "MtdSimLayerCluster: index = " << simClusIndex << " simClus TrackId = " << simClusTrackId - << " simClus EventId = " << simClusEventId.rawId() << " simClus Eta = " << simClus.eta() - << " simClus Phi = " << simClus.phi() << " simClus Time = " << simClus.simLCTime() - << " simClus Energy = " << simClus.simLCEnergy() << std::endl; - LogDebug("MtdSimLayerClusterToTPAssociator::associateSimToTP") - << " --> Found associated tracking particle: tp TrackId = " << (*tpRef).g4Tracks()[0].trackId() - << " tp EventId = " << (*tpRef).eventId().rawId() << std::endl; + for (unsigned int igt = 0; igt < simClus.g4Tracks().size(); igt++) { + unsigned int simClusTrackId = simClus.g4Tracks()[igt].trackId(); + std::pair uniqueId = std::make_pair(simClusTrackId, simClusEventId.rawId()); + auto it = tpIdMap.find(uniqueId); + + if (it != tpIdMap.end()) { + TrackingParticleRef tpRef = tpIdMap[uniqueId]; + outputCollection.insert(simClusterRef, tpRef); + + LogDebug("MtdSimLayerClusterToTPAssociator::associateSimToTP") + << "MtdSimLayerCluster: index = " << simClusIndex << " simClus TrackId = " << simClusTrackId + << " simClus EventId = " << simClusEventId.rawId() << " simClus Eta = " << simClus.eta() + << " simClus Phi = " << simClus.phi() << " simClus Time = " << simClus.simLCTime() + << " simClus Energy = " << simClus.simLCEnergy() << std::endl; + LogDebug("MtdSimLayerClusterToTPAssociator::associateSimToTP") + << " --> Found associated tracking particle: tp TrackId = " << (*tpRef).g4Tracks()[0].trackId() + << " tp EventId = " << (*tpRef).eventId().rawId() << std::endl; + } } - } // -- end loop over sim clus return outputCollection; @@ -88,11 +85,13 @@ reco::TPToSimCollectionMtd MtdSimLayerClusterToTPAssociatorByTrackIdImpl::associ std::map, std::vector> simClusIdMap; for (auto simClusIt = simClusters.begin(); simClusIt != simClusters.end(); simClusIt++) { const auto& simClus = *simClusIt; - unsigned int simClusTrackId = simClus.g4Tracks()[0].trackId(); EncodedEventId simClusEventId = simClus.eventId(); - MtdSimLayerClusterRef simClusterRef = - edm::Ref(simClusH, simClusIt - simClusters.begin()); - simClusIdMap[std::make_pair(simClusTrackId, simClusEventId.rawId())].push_back(simClusterRef); + for (unsigned int igt = 0; igt < simClus.g4Tracks().size(); igt++) { + unsigned int simClusTrackId = simClus.g4Tracks()[igt].trackId(); + MtdSimLayerClusterRef simClusterRef = + edm::Ref(simClusH, simClusIt - simClusters.begin()); + simClusIdMap[std::make_pair(simClusTrackId, simClusEventId.rawId())].push_back(simClusterRef); + } } // -- Loop over the tracking particles @@ -100,31 +99,28 @@ reco::TPToSimCollectionMtd MtdSimLayerClusterToTPAssociatorByTrackIdImpl::associ const auto& tp = *tpIt; size_t tpIndex = tpIt - trackingParticles.begin(); TrackingParticleRef tpRef = edm::Ref(trackingParticleH, tpIndex); - unsigned int tpTrackId = tp.g4Tracks()[0].trackId(); EncodedEventId tpEventId = tp.eventId(); - - std::pair uniqueId = std::make_pair(tpTrackId, tpEventId.rawId()); - auto it = simClusIdMap.find(uniqueId); - - if (it != simClusIdMap.end()) { - for (unsigned int i = 0; i < simClusIdMap[uniqueId].size(); i++) { - MtdSimLayerClusterRef simClusterRef = simClusIdMap[uniqueId][i]; - // -- Check the trackId offset of the sim hits and keep only clusters with "direct" hits (offset == 0) - /* - if (simClus.trackIdOffset() != 0 ) continue; - */ - - outputCollection.insert(tpRef, simClusterRef); - - LogDebug("MtdSimLayerClusterToTPAssociator") - << "Tracking particle: index = " << tpIndex << " tp TrackId = " << tpTrackId - << " tp EventId = " << tpEventId.rawId(); - LogDebug("MtdSimLayerClusterToTPAssociator") - << " --> Found associated MtdSimLayerCluster: simClus TrackId = " - << (*simClusterRef).g4Tracks()[0].trackId() << " simClus EventId = " << (*simClusterRef).eventId().rawId() - << " simClus Eta = " << (*simClusterRef).eta() << " simClus Phi = " << (*simClusterRef).phi() - << " simClus Time = " << (*simClusterRef).simLCTime() - << " simClus Energy = " << (*simClusterRef).simLCEnergy() << std::endl; + for (unsigned int igt = 0; igt < tp.g4Tracks().size(); igt++) { + unsigned int tpTrackId = tp.g4Tracks()[igt].trackId(); + std::pair uniqueId = std::make_pair(tpTrackId, tpEventId.rawId()); + auto it = simClusIdMap.find(uniqueId); + + if (it != simClusIdMap.end()) { + for (unsigned int i = 0; i < simClusIdMap[uniqueId].size(); i++) { + MtdSimLayerClusterRef simClusterRef = simClusIdMap[uniqueId][i]; + + outputCollection.insert(tpRef, simClusterRef); + + LogDebug("MtdSimLayerClusterToTPAssociator") + << "Tracking particle: index = " << tpIndex << " tp TrackId = " << tpTrackId + << " tp EventId = " << tpEventId.rawId(); + LogDebug("MtdSimLayerClusterToTPAssociator") + << " --> Found associated MtdSimLayerCluster: simClus TrackId = " + << (*simClusterRef).g4Tracks()[0].trackId() << " simClus EventId = " << (*simClusterRef).eventId().rawId() + << " simClus Eta = " << (*simClusterRef).eta() << " simClus Phi = " << (*simClusterRef).phi() + << " simClus Time = " << (*simClusterRef).simLCTime() + << " simClus Energy = " << (*simClusterRef).simLCEnergy() << std::endl; + } } } } diff --git a/SimG4CMS/Calo/plugins/HGCalMouseBiteTester.cc b/SimG4CMS/Calo/plugins/HGCalMouseBiteTester.cc index e0747d5aa415b..bf5af621e5a36 100644 --- a/SimG4CMS/Calo/plugins/HGCalMouseBiteTester.cc +++ b/SimG4CMS/Calo/plugins/HGCalMouseBiteTester.cc @@ -111,11 +111,11 @@ void HGCalMouseBiteTester::analyze(const edm::Event& iEvent, const edm::EventSet int orient = HGCalWaferType::getOrient(index, hgcons_.getParameter()->waferInfoMap_); int placeIndex_ = HGCalCell::cellPlacementIndex(zside, frontBack, orient); int waferType_ = HGCalWaferType::getType(index, hgcons_.getParameter()->waferInfoMap_); - double mouseBiteCut_ = waferSize_ * tan(30.0 * CLHEP::deg) - 5.0; + double mouseBiteCut_ = hgcons_.mouseBite(false); bool v17OrLess = hgcons_.v17OrLess(); HGCGuardRing guardRing_(hgcons_); HGCGuardRingPartial guardRingPartial_(hgcons_); - HGCMouseBite mouseBite_(hgcons_, angle_, mouseBiteCut_, true); + HGCMouseBite mouseBite_(hgcons_, angle_, (waferSize_ * tan(30.0 * CLHEP::deg) - mouseBiteCut_), true); const int nFine(12), nCoarse(8); double r2 = 0.5 * waferSize_; double R2 = 2 * r2 / sqrt(3); diff --git a/SimG4CMS/Calo/plugins/HGCalTestGuardRing.cc b/SimG4CMS/Calo/plugins/HGCalTestGuardRing.cc index dec9d216164f9..fba5e93ad297f 100644 --- a/SimG4CMS/Calo/plugins/HGCalTestGuardRing.cc +++ b/SimG4CMS/Calo/plugins/HGCalTestGuardRing.cc @@ -77,7 +77,7 @@ HGCalTestGuardRing::HGCalTestGuardRing(const edm::ParameterSet& ps) HGCalTypes::WaferFive, HGCalTypes::WaferThree}; edm::FileInPath filetmp("SimG4CMS/Calo/data/" + waferFile_); - std::string fileName = filetmp.fullPath(); + const std::string& fileName = filetmp.fullPath(); std::ifstream fInput(fileName.c_str()); if (!fInput.good()) { edm::LogVerbatim("HGCalSim") << "Cannot open file " << fileName; diff --git a/SimG4CMS/Calo/plugins/HGCalTestPartialWaferHits.cc b/SimG4CMS/Calo/plugins/HGCalTestPartialWaferHits.cc index f64297ff37b74..375aaa9d64a12 100644 --- a/SimG4CMS/Calo/plugins/HGCalTestPartialWaferHits.cc +++ b/SimG4CMS/Calo/plugins/HGCalTestPartialWaferHits.cc @@ -60,7 +60,7 @@ HGCalTestPartialWaferHits::HGCalTestPartialWaferHits(const edm::ParameterSet& ps << " Hits: " << caloHitSource_ << " Missing Wafer file " << missingFile_; if (!missingFile_.empty()) { edm::FileInPath filetmp("SimG4CMS/Calo/data/" + missingFile_); - std::string fileName = filetmp.fullPath(); + const std::string& fileName = filetmp.fullPath(); std::ifstream fInput(fileName.c_str()); if (!fInput.good()) { edm::LogVerbatim("HGCalSim") << "Cannot open file " << fileName; diff --git a/SimG4CMS/Calo/plugins/HGCalTestScintHits.cc b/SimG4CMS/Calo/plugins/HGCalTestScintHits.cc index 6ec7018391f29..05eb4b287dde4 100644 --- a/SimG4CMS/Calo/plugins/HGCalTestScintHits.cc +++ b/SimG4CMS/Calo/plugins/HGCalTestScintHits.cc @@ -56,7 +56,7 @@ HGCalTestScintHits::HGCalTestScintHits(const edm::ParameterSet& ps) << " Hits: " << caloHitSource_ << " Tile file " << tileFileName_; if (!tileFileName_.empty()) { edm::FileInPath filetmp("SimG4CMS/Calo/data/" + tileFileName_); - std::string fileName = filetmp.fullPath(); + const std::string& fileName = filetmp.fullPath(); std::ifstream fInput(fileName.c_str()); if (!fInput.good()) { edm::LogVerbatim("HGCalSim") << "Cannot open file " << fileName; diff --git a/SimG4CMS/Calo/src/CaloMeanResponse.cc b/SimG4CMS/Calo/src/CaloMeanResponse.cc index 558c4912cf5d5..9e85078ab883c 100644 --- a/SimG4CMS/Calo/src/CaloMeanResponse.cc +++ b/SimG4CMS/Calo/src/CaloMeanResponse.cc @@ -13,7 +13,7 @@ using CLHEP::GeV; CaloMeanResponse::CaloMeanResponse(edm::ParameterSet const& p) { edm::ParameterSet m_p = p.getParameter("CaloResponse"); edm::FileInPath fp = m_p.getParameter("ResponseFile"); - std::string fName = fp.fullPath(); + const std::string& fName = fp.fullPath(); useTable = m_p.getParameter("UseResponseTable"); scale = m_p.getParameter("ResponseScale"); edm::LogVerbatim("CaloSim") << "CaloMeanResponse initialized with scale " << scale << " and use Table " << useTable diff --git a/SimG4CMS/Calo/src/CaloSD.cc b/SimG4CMS/Calo/src/CaloSD.cc index 42b950c04dff2..feaf3fa272cdb 100644 --- a/SimG4CMS/Calo/src/CaloSD.cc +++ b/SimG4CMS/Calo/src/CaloSD.cc @@ -568,6 +568,7 @@ unsigned int CaloSD::findBoundaryCrossingParent(const G4Track* track, bool markA #endif boundaryCrossingParentMap_[id] = id; trkInfo->setStoreTrack(); + trkInfo->setIdLastStoredAncestor(id); return id; } // Else, traverse the history of the track @@ -676,6 +677,7 @@ CaloG4Hit* CaloSD::createNewHit(const G4Step* aStep, const G4Track* theTrack, in #endif if (etrack >= energyCut || forceSave) { trkInfo->setStoreTrack(); + trkInfo->setIdLastStoredAncestor(theTrack->GetTrackID()); } } else { TrackWithHistory* trkh = tkMap[currentID[k].trackID()]; diff --git a/SimG4CMS/Calo/src/HGCGuardRing.cc b/SimG4CMS/Calo/src/HGCGuardRing.cc index 977bf0e044428..7756fea428797 100644 --- a/SimG4CMS/Calo/src/HGCGuardRing.cc +++ b/SimG4CMS/Calo/src/HGCGuardRing.cc @@ -11,10 +11,10 @@ HGCGuardRing::HGCGuardRing(const HGCalDDDConstants& hgc) modeUV_(hgcons_.geomMode()), v17OrLess_(hgcons_.v17OrLess()), waferSize_(hgcons_.waferSize(false)), - sensorSizeOffset_(hgcons_.getParameter()->sensorSizeOffset_), - guardRingOffset_(hgcons_.getParameter()->guardRingOffset_) { - offset_ = sensorSizeOffset_ + 2.0 * guardRingOffset_; - xmax_ = 0.5 * (waferSize_ - offset_); + sensorSizeOffset_(hgcons_.sensorSizeOffset(false)), + guardRingOffset_(hgcons_.guardRingOffset(false)) { + offset_ = sensorSizeOffset_ + guardRingOffset_; + xmax_ = 0.5 * waferSize_ - offset_; ymax_ = xmax_ / sqrt3_; #ifdef EDM_ML_DEBUG edm::LogVerbatim("HGCSim") << "Creating HGCGuardRing with wafer size " << waferSize_ << ", Offsets " diff --git a/SimG4CMS/Calo/src/HGCGuardRingPartial.cc b/SimG4CMS/Calo/src/HGCGuardRingPartial.cc index fea159c7001a5..8daaec5df9a02 100644 --- a/SimG4CMS/Calo/src/HGCGuardRingPartial.cc +++ b/SimG4CMS/Calo/src/HGCGuardRingPartial.cc @@ -13,7 +13,7 @@ HGCGuardRingPartial::HGCGuardRingPartial(const HGCalDDDConstants& hgc) modeUV_(hgcons_.geomMode()), v17OrLess_(hgcons_.v17OrLess()), waferSize_(hgcons_.waferSize(false)), - guardRingOffset_(hgcons_.getParameter()->guardRingOffset_) { + guardRingOffset_(hgcons_.guardRingOffset(false)) { offset_ = guardRingOffset_; c22_ = (v17OrLess_) ? HGCalTypes::c22O : HGCalTypes::c22; c27_ = (v17OrLess_) ? HGCalTypes::c27O : HGCalTypes::c27; diff --git a/SimG4CMS/Calo/src/HGCScintSD.cc b/SimG4CMS/Calo/src/HGCScintSD.cc index 87d00a465704f..612067eb083db 100644 --- a/SimG4CMS/Calo/src/HGCScintSD.cc +++ b/SimG4CMS/Calo/src/HGCScintSD.cc @@ -94,7 +94,7 @@ HGCScintSD::HGCScintSD(const std::string& name, if (!fileName_.empty()) { edm::FileInPath filetmp("SimG4CMS/Calo/data/" + fileName_); - std::string fileName = filetmp.fullPath(); + const std::string& fileName = filetmp.fullPath(); std::ifstream fInput(fileName.c_str()); if (!fInput.good()) { edm::LogVerbatim("HGCSim") << "Cannot open file " << fileName; diff --git a/SimG4CMS/Calo/src/HGCalNumberingScheme.cc b/SimG4CMS/Calo/src/HGCalNumberingScheme.cc index ab4cd67482bf9..f79d6fd88299b 100644 --- a/SimG4CMS/Calo/src/HGCalNumberingScheme.cc +++ b/SimG4CMS/Calo/src/HGCalNumberingScheme.cc @@ -34,7 +34,7 @@ HGCalNumberingScheme::HGCalNumberingScheme(const HGCalDDDConstants& hgc, firstLayer_ = hgcons_.getLayerOffset(); if (!fileName.empty()) { edm::FileInPath filetmp1("SimG4CMS/Calo/data/" + fileName); - std::string filetmp2 = filetmp1.fullPath(); + const std::string& filetmp2 = filetmp1.fullPath(); std::ifstream fInput(filetmp2.c_str()); if (!fInput.good()) { edm::LogVerbatim("HGCalSim") << "Cannot open file " << filetmp2; diff --git a/SimG4CMS/Forward/interface/MtdHitCategory.h b/SimG4CMS/Forward/interface/MtdHitCategory.h new file mode 100644 index 0000000000000..29c4f02601249 --- /dev/null +++ b/SimG4CMS/Forward/interface/MtdHitCategory.h @@ -0,0 +1,15 @@ +#ifndef SimG4CMSForward_MtdHitCategory_h +#define SimG4CMSForward_MtdHitCategory_h + +#include + +namespace MtdHitCategory { + static constexpr unsigned int k_idsecOffset = 1; + static constexpr unsigned int k_idloopOffset = 2; + static constexpr unsigned int k_idFromCaloOffset = 3; + static constexpr unsigned int k_idETLfromBack = 4; + static constexpr unsigned int n_categories = + std::max({k_idsecOffset, k_idloopOffset, k_idFromCaloOffset, k_idETLfromBack}); +}; // namespace MtdHitCategory + +#endif diff --git a/SimG4CMS/Forward/interface/MtdSD.h b/SimG4CMS/Forward/interface/MtdSD.h index c035479bcaa8b..19d651fb84996 100644 --- a/SimG4CMS/Forward/interface/MtdSD.h +++ b/SimG4CMS/Forward/interface/MtdSD.h @@ -2,6 +2,8 @@ #define SimG4CMSForward_MtdSD_h #include "SimG4CMS/Forward/interface/TimingSD.h" +#include "SimG4CMS/Forward/interface/MtdHitCategory.h" + #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/ParameterSet/interface/ParameterSetfwd.h" @@ -27,11 +29,9 @@ class MtdSD : public TimingSD { protected: int getTrackID(const G4Track *) override; -private: - static constexpr unsigned int k_idsecOffset = 1; - static constexpr unsigned int k_idloopOffset = 2; - static constexpr unsigned int k_idFromCaloOffset = 3; + void setHitClassID(const G4Step *) override; +private: double energyCut; double energyHistoryCut; diff --git a/SimG4CMS/Forward/interface/TimingSD.h b/SimG4CMS/Forward/interface/TimingSD.h index b042f736b90fa..8cb888f93840f 100644 --- a/SimG4CMS/Forward/interface/TimingSD.h +++ b/SimG4CMS/Forward/interface/TimingSD.h @@ -65,6 +65,9 @@ class TimingSD : public SensitiveTkDetector, public Observer +using namespace MtdHitCategory; + //------------------------------------------------------------------- MtdSD::MtdSD(const std::string& name, const SensitiveDetectorCatalog& clg, @@ -106,12 +108,14 @@ int MtdSD::getTrackID(const G4Track* aTrack) { #ifdef EDM_ML_DEBUG trkInfo->Print(); #endif + if (!trkInfo->storeTrack()) { + theID = trkInfo->idLastStoredAncestor(); + } if (rname == "FastTimerRegionSensBTL") { - theID = trkInfo->mcTruthID(); - if (trkInfo->isExtSecondary() && !trkInfo->isInTrkFromBackscattering()) { - theID = PSimHit::addTrackIdOffset(theID, k_idsecOffset); - } else if (trkInfo->isInTrkFromBackscattering()) { + if (trkInfo->isInTrkFromBackscattering()) { theID = PSimHit::addTrackIdOffset(theID, k_idFromCaloOffset); + } else if (trkInfo->isExtSecondary() && !trkInfo->isInTrkFromBackscattering() && !trkInfo->storeTrack()) { + theID = PSimHit::addTrackIdOffset(theID, k_idsecOffset); } else if (trkInfo->isBTLlooper()) { theID = PSimHit::addTrackIdOffset(theID, k_idloopOffset); } @@ -120,7 +124,9 @@ int MtdSD::getTrackID(const G4Track* aTrack) { << " BTL Track ID: " << trkInfo->mcTruthID() << ":" << theID; #endif } else if (rname == "FastTimerRegionSensETL") { - theID = trkInfo->getIDonCaloSurface(); + if (hitClassID == k_idETLfromBack) { + theID = PSimHit::addTrackIdOffset(theID, k_idETLfromBack); + } #ifdef EDM_ML_DEBUG edm::LogVerbatim("MtdSim") << "MtdSD: Track ID: " << aTrack->GetTrackID() << " ETL Track ID: " << trkInfo->mcTruthID() << ":" << theID; @@ -135,3 +141,19 @@ int MtdSD::getTrackID(const G4Track* aTrack) { } return theID; } + +void MtdSD::setHitClassID(const G4Step* aStep) { + TrackInformation* trkInfo = cmsTrackInformation(aStep->GetTrack()); + const G4String& rname = aStep->GetTrack()->GetVolume()->GetLogicalVolume()->GetRegion()->GetName(); + if (rname == "FastTimerRegionSensETL") { + double zin = std::abs(aStep->GetPreStepPoint()->GetPosition().z()); + double zout = std::abs(aStep->GetPostStepPoint()->GetPosition().z()); + if (zout - zin < 0.) { + hitClassID = k_idETLfromBack; + trkInfo->setETLfromBack(); + } else { + hitClassID = 0; + trkInfo->setETLfromFront(); + } + } +} diff --git a/SimG4CMS/Forward/src/TimingSD.cc b/SimG4CMS/Forward/src/TimingSD.cc index 8ddfc9e0d185e..3bc7082b23019 100644 --- a/SimG4CMS/Forward/src/TimingSD.cc +++ b/SimG4CMS/Forward/src/TimingSD.cc @@ -51,7 +51,8 @@ TimingSD::TimingSD(const std::string& name, const SensitiveDetectorCatalog& clg, tSliceID(-1), timeFactor(1.0), energyCut(1.e+9), - energyHistoryCut(1.e+9) { + energyHistoryCut(1.e+9), + hitClassID(0) { slave = new TrackingSlaveSD(name); theEnumerator = new G4ProcessTypeEnumerator(); } @@ -154,6 +155,7 @@ void TimingSD::getStepInfo(const G4Step* aStep) { if (incidentEnergy > energyCut) { info = cmsTrackInformation(theTrack); info->setStoreTrack(); + info->setIdLastStoredAncestor(theTrack->GetTrackID()); } if (incidentEnergy > energyHistoryCut) { if (nullptr == info) { @@ -181,6 +183,7 @@ void TimingSD::getStepInfo(const G4Step* aStep) { tSlice = timeFactor * preStepPoint->GetGlobalTime() * invns; tSliceID = (int)tSlice; + setHitClassID(aStep); unitID = setDetUnitId(aStep); primaryID = getTrackID(theTrack); } @@ -376,3 +379,5 @@ int TimingSD::getTrackID(const G4Track* aTrack) { LogDebug("TimingSim") << "primary ID: " << aTrack->GetTrackID(); return aTrack->GetTrackID(); } + +void TimingSD::setHitClassID(const G4Step* aStep) { hitClassID = 0; } diff --git a/SimG4CMS/HcalTestBeam/test/python/run_tb06_all_cfg.py b/SimG4CMS/HcalTestBeam/test/python/run_tb06_all_cfg.py index ec4db5ad3f3af..cf34050809fc0 100644 --- a/SimG4CMS/HcalTestBeam/test/python/run_tb06_all_cfg.py +++ b/SimG4CMS/HcalTestBeam/test/python/run_tb06_all_cfg.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os, sys #====================== check input ========================== diff --git a/SimG4CMS/Muon/src/MuonSensitiveDetector.cc b/SimG4CMS/Muon/src/MuonSensitiveDetector.cc index 7acc1590035c6..c8c1f8d16803a 100644 --- a/SimG4CMS/Muon/src/MuonSensitiveDetector.cc +++ b/SimG4CMS/Muon/src/MuonSensitiveDetector.cc @@ -241,6 +241,7 @@ void MuonSensitiveDetector::createHit(const G4Step* aStep) { if (thePabs > ePersistentCutGeV_ || (thePID == 13 && allMuonsPersistent_)) { TrackInformation* info = cmsTrackInformation(theTrack); info->setStoreTrack(); + info->setIdLastStoredAncestor(theTrack->GetTrackID()); } #ifdef EDM_ML_DEBUG diff --git a/SimG4CMS/Tracker/src/TkAccumulatingSensitiveDetector.cc b/SimG4CMS/Tracker/src/TkAccumulatingSensitiveDetector.cc index fdf7f798c8b0e..d97ba804a0b3b 100644 --- a/SimG4CMS/Tracker/src/TkAccumulatingSensitiveDetector.cc +++ b/SimG4CMS/Tracker/src/TkAccumulatingSensitiveDetector.cc @@ -153,6 +153,7 @@ void TkAccumulatingSensitiveDetector::update(const BeginOfTrack* bot) { if (gTrack->GetKineticEnergy() > energyCut) { info = cmsTrackInformation(gTrack); info->setStoreTrack(); + info->setIdLastStoredAncestor(gTrack->GetTrackID()); } // // Save History? diff --git a/SimG4Core/Application/interface/RunManagerMTWorker.h b/SimG4Core/Application/interface/RunManagerMTWorker.h index 1cb4862a95dde..0458a281880f0 100644 --- a/SimG4Core/Application/interface/RunManagerMTWorker.h +++ b/SimG4Core/Application/interface/RunManagerMTWorker.h @@ -7,6 +7,7 @@ #include "SimDataFormats/Forward/interface/LHCTransportLinkContainer.h" #include "SimG4Core/Generators/interface/Generator.h" +#include "SimG4Core/Generators/interface/Generator3.h" #include "SimG4Core/Notification/interface/TmpSimEvent.h" #include "MagneticField/Engine/interface/MagneticField.h" @@ -22,6 +23,7 @@ namespace edm { class EventSetup; class ConsumesCollector; class HepMCProduct; + class HepMC3Product; } // namespace edm class Generator; @@ -89,7 +91,9 @@ class RunManagerMTWorker { void DumpMagneticField(const G4Field*, const std::string&) const; Generator m_generator; + Generator3 m_generator3; edm::EDGetTokenT m_InToken; + edm::EDGetTokenT m_InToken3; edm::EDGetTokenT m_LHCToken; edm::EDGetTokenT m_theLHCTlinkToken; edm::ESGetToken m_MagField; diff --git a/SimG4Core/Application/src/RunManagerMTWorker.cc b/SimG4Core/Application/src/RunManagerMTWorker.cc index db2bbf24ec047..83dbcf07c1410 100644 --- a/SimG4Core/Application/src/RunManagerMTWorker.cc +++ b/SimG4Core/Application/src/RunManagerMTWorker.cc @@ -35,7 +35,9 @@ #include "SimG4Core/MagneticField/interface/CMSFieldManager.h" #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMC3Product.h" #include "DataFormats/GeometryVector/interface/GlobalPoint.h" +#include "HepMC3/Print.h" #include "SimG4Core/Physics/interface/PhysicsList.h" @@ -152,8 +154,11 @@ struct RunManagerMTWorker::TLSData { RunManagerMTWorker::RunManagerMTWorker(const edm::ParameterSet& p, edm::ConsumesCollector&& iC) : m_generator(p.getParameter("Generator")), + m_generator3(p.getParameter("Generator")), m_InToken(iC.consumes( p.getParameter("Generator").getParameter("HepMCProductLabel"))), + m_InToken3(iC.consumes( + p.getParameter("Generator").getParameter("HepMCProductLabel"))), m_theLHCTlinkToken(iC.consumes(p.getParameter("theLHCTlinkTag"))), m_nonBeam(p.getParameter("NonBeamEvent")), m_UseG4EventManager(p.getParameter("UseG4EventManager")), @@ -572,6 +577,7 @@ TmpSimEvent* RunManagerMTWorker::produce(const edm::Event& inpevt, } // event and primary + m_tls->currentEvent.reset(generateEvent(inpevt)); m_simEvent.clear(); m_simEvent.setHepEvent(m_generator.genEvent()); @@ -645,26 +651,48 @@ G4Event* RunManagerMTWorker::generateEvent(const edm::Event& inpevt) { G4int evtid = (G4int)inpevt.id().event(); G4Event* evt = new G4Event(evtid); - edm::Handle HepMCEvt; - inpevt.getByToken(m_InToken, HepMCEvt); - - m_generator.setGenEvent(HepMCEvt->GetEvent()); - // required to reset the GenParticle Id for particles transported // along the beam pipe to their original value for SimTrack creation resetGenParticleId(inpevt); - if (!m_nonBeam) { - m_generator.HepMC2G4(HepMCEvt->GetEvent(), evt); - if (m_LHCTransport) { - edm::Handle LHCMCEvt; - inpevt.getByToken(m_LHCToken, LHCMCEvt); - m_generator.nonCentralEvent2G4(LHCMCEvt->GetEvent(), evt); + edm::Handle HepMCEvt; + bool found = inpevt.getByToken(m_InToken, HepMCEvt); + + if (found) { // HepMC event exists + + m_generator.setGenEvent(HepMCEvt->GetEvent()); + + if (!m_nonBeam) { + m_generator.HepMC2G4(HepMCEvt->GetEvent(), evt); + if (m_LHCTransport) { + edm::Handle LHCMCEvt; + inpevt.getByToken(m_LHCToken, LHCMCEvt); + m_generator.nonCentralEvent2G4(LHCMCEvt->GetEvent(), evt); + } + } else { + m_generator.nonCentralEvent2G4(HepMCEvt->GetEvent(), evt); + } + + } else { // no HepMC event, try to get HepMC3 event + + edm::Handle HepMCEvt3; + inpevt.getByToken(m_InToken3, HepMCEvt3); + + HepMC3::GenEvent* genevt3 = new HepMC3::GenEvent(); + genevt3->read_data(*HepMCEvt3->GetEvent()); + m_generator3.setGenEvent(genevt3); + + if (!m_nonBeam) { + m_generator3.HepMC2G4(genevt3, evt); + if (m_LHCTransport) { + edm::Handle LHCMCEvt; + inpevt.getByToken(m_LHCToken, LHCMCEvt); + //m_generator3.nonCentralEvent2G4(LHCMCEvt->GetEvent(), evt); + } + } else { + //m_generator3.nonCentralEvent2G4(HepMCEvt->GetEvent(), evt); } - } else { - m_generator.nonCentralEvent2G4(HepMCEvt->GetEvent(), evt); } - return evt; } diff --git a/SimG4Core/CustomPhysics/plugins/DBremWatcher.cc b/SimG4Core/CustomPhysics/plugins/DBremWatcher.cc index aad672e3944bc..2a56c88aa1201 100644 --- a/SimG4Core/CustomPhysics/plugins/DBremWatcher.cc +++ b/SimG4Core/CustomPhysics/plugins/DBremWatcher.cc @@ -107,6 +107,7 @@ void DBremWatcher::update(const BeginOfTrack* trk) { if (std::find(pdgs_.begin(), pdgs_.end(), pdg) != pdgs_.end()) { //Found an A' trkInfo->setStoreTrack(); + trkInfo->setIdLastStoredAncestor(theTrack->GetTrackID()); VertexPos = Vpos; aPrimeTraj = theTrack->GetMomentum(); LogDebug("DBremWatcher") << "Save SimTrack the Track " << theTrack->GetTrackID() << " Type " @@ -138,6 +139,7 @@ void DBremWatcher::update(const EndOfTrack* trk) { if (std::find(pdgs_.begin(), pdgs_.end(), pdg) == pdgs_.end() && (theTrack->GetCreatorProcess()->GetProcessName()) == "muDBrem") { trkInfo->setStoreTrack(); + trkInfo->setIdLastStoredAncestor(theTrack->GetTrackID()); } } } diff --git a/SimG4Core/CustomPhysics/python/Exotica_HSCP_SIM_cfi.py b/SimG4Core/CustomPhysics/python/Exotica_HSCP_SIM_cfi.py index e714f5a16e7ca..60a59e938ca79 100644 --- a/SimG4Core/CustomPhysics/python/Exotica_HSCP_SIM_cfi.py +++ b/SimG4Core/CustomPhysics/python/Exotica_HSCP_SIM_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms def customise(process): diff --git a/SimG4Core/CustomPhysics/python/Exotica_MT_SIM_cfi.py b/SimG4Core/CustomPhysics/python/Exotica_MT_SIM_cfi.py index 16636caea9ec7..16a3018c8cb80 100644 --- a/SimG4Core/CustomPhysics/python/Exotica_MT_SIM_cfi.py +++ b/SimG4Core/CustomPhysics/python/Exotica_MT_SIM_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms def customise(process): diff --git a/SimG4Core/CustomPhysics/src/CMSAntiSQ.cc b/SimG4Core/CustomPhysics/src/CMSAntiSQ.cc index a7a086ca850a6..f5560e3a95209 100644 --- a/SimG4Core/CustomPhysics/src/CMSAntiSQ.cc +++ b/SimG4Core/CustomPhysics/src/CMSAntiSQ.cc @@ -11,16 +11,16 @@ // ### ANTI-SEXAQUARK ### // ###################################################################### -CMSAntiSQ* CMSAntiSQ::theInstance = 0; +CMSAntiSQ* CMSAntiSQ::theInstance = nullptr; CMSAntiSQ* CMSAntiSQ::Definition(double mass) { - if (theInstance != 0) + if (theInstance != nullptr) return theInstance; const G4String name = "anti_sexaq"; // search in particle table] G4ParticleTable* pTable = G4ParticleTable::GetParticleTable(); G4ParticleDefinition* anInstance = pTable->FindParticle(name); - if (anInstance == 0) { + if (anInstance == nullptr) { // create particle // // Arguments for constructor are as follows diff --git a/SimG4Core/CustomPhysics/src/CMSSQ.cc b/SimG4Core/CustomPhysics/src/CMSSQ.cc index 05790aed39acd..89c77548ad663 100644 --- a/SimG4Core/CustomPhysics/src/CMSSQ.cc +++ b/SimG4Core/CustomPhysics/src/CMSSQ.cc @@ -11,16 +11,16 @@ // ### SEXAQUARK ### // ###################################################################### -CMSSQ* CMSSQ::theInstance = 0; +CMSSQ* CMSSQ::theInstance = nullptr; CMSSQ* CMSSQ::Definition(double mass) { - if (theInstance != 0) + if (theInstance != nullptr) return theInstance; const G4String name = "sexaq"; // search in particle table] G4ParticleTable* pTable = G4ParticleTable::GetParticleTable(); G4ParticleDefinition* anInstance = pTable->FindParticle(name); - if (anInstance == 0) { + if (anInstance == nullptr) { // create particle // // Arguments for constructor are as follows diff --git a/SimG4Core/CustomPhysics/src/CMSSQNeutronAnnih.cc b/SimG4Core/CustomPhysics/src/CMSSQNeutronAnnih.cc index 4c05c21753ab0..f7042d5285c9e 100644 --- a/SimG4Core/CustomPhysics/src/CMSSQNeutronAnnih.cc +++ b/SimG4Core/CustomPhysics/src/CMSSQNeutronAnnih.cc @@ -1,12 +1,12 @@ +#include "G4NucleiProperties.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" #include "G4PhysicalConstants.hh" #include "G4SystemOfUnits.hh" -#include "G4ParticleTable.hh" -#include "G4ParticleDefinition.hh" #include "Randomize.hh" -#include "G4NucleiProperties.hh" -#include #include "TMath.h" +#include #include "FWCore/MessageLogger/interface/MessageLogger.h" @@ -125,7 +125,7 @@ G4HadFinalState* CMSSQNeutronAnnih::ApplyYourself(const G4HadProjectile& aTrack, // << " PDGcode= " << projPDG << " on nucleus Z= " << Z // << " A= " << A << " N= " << N; - G4LorentzVector lv1 = aParticle->Get4Momentum(); + const G4LorentzVector& lv1 = aParticle->Get4Momentum(); edm::LogVerbatim("CMSSWNeutronAnnih") << "The neutron Fermi momentum (mag, x, y, z) " << targetNucleus.GetFermiMomentum().mag() / MeV << " " << targetNucleus.GetFermiMomentum().x() / MeV << " " diff --git a/SimG4Core/CustomPhysics/src/CustomParticleFactory.cc b/SimG4Core/CustomPhysics/src/CustomParticleFactory.cc index b0f1b66620086..54606ccebc6cf 100644 --- a/SimG4Core/CustomPhysics/src/CustomParticleFactory.cc +++ b/SimG4Core/CustomPhysics/src/CustomParticleFactory.cc @@ -51,7 +51,7 @@ void CustomParticleFactory::loadCustomParticles(const std::string &filePath) { G4ParticleTable *theParticleTable = G4ParticleTable::GetParticleTable(); while (getline(configFile, line)) { line.erase(0, line.find_first_not_of(" \t")); // Remove leading whitespace. - if (line.length() == 0 || line.at(0) == '#') { + if (line.empty() || line.at(0) == '#') { continue; } // Skip blank lines and comments. // The mass table begins with a line containing "BLOCK MASS" @@ -255,7 +255,7 @@ void CustomParticleFactory::getMassTable(std::ifstream *configFile) { // This should be compatible IMO to SLHA while (getline(*configFile, line)) { line.erase(0, line.find_first_not_of(" \t")); // remove leading whitespace - if (line.length() == 0 || line.at(0) == '#') + if (line.empty() || line.at(0) == '#') continue; // skip blank lines and comments if (ToLower(line).find("block") < line.npos) { edm::LogInfo("SimG4CoreCustomPhysics") << "CustomParticleFactory: Finished the Mass Table "; @@ -348,7 +348,7 @@ G4DecayTable *CustomParticleFactory::getDecayTable(std::ifstream *configFile, in while (getline(*configFile, line)) { line.erase(0, line.find_first_not_of(" \t")); // remove leading whitespace - if (line.length() == 0) + if (line.empty()) continue; // skip blank lines if (line.at(0) == '#' && ToLower(line).find("br") < line.npos && ToLower(line).find("nda") < line.npos) continue; // skip a comment of the form: # BR NDA ID1 ID2 diff --git a/SimG4Core/CustomPhysics/src/FullModelHadronicProcess.cc b/SimG4Core/CustomPhysics/src/FullModelHadronicProcess.cc index 61412807f58e5..2a58441a5c5c9 100644 --- a/SimG4Core/CustomPhysics/src/FullModelHadronicProcess.cc +++ b/SimG4Core/CustomPhysics/src/FullModelHadronicProcess.cc @@ -354,10 +354,7 @@ G4VParticleChange* FullModelHadronicProcess::PostStepDoIt(const G4Track& aTrack, G4LorentzVector p_g_cms = gluinoMomentum; //gluino in CMS BEFORE collision p_g_cms.boost(trafo_full_cms); - double e = cloud_p4_new.e() + gluinoMomentum.e(); - if (outgoingRhadron) - e += outgoingRhadron->GetPDGMass(); - G4LorentzVector p4_new(cloud_p4_new.v() + gluinoMomentum.v(), e); + G4LorentzVector p4_new(cloud_p4_new.v() + gluinoMomentum.v(), outgoingRhadron->GetPDGMass()); // G4cout<<"P4-diff: "<<(p4_new-cloud_p4_new-gluinoMomentum)/GeV<<", magnitude: " // <<(p4_new-cloud_p4_new-gluinoMomentum).m()/MeV<<" MeV" <("processesDef"); - std::string processDefFilePath = fp.fullPath(); + const std::string& processDefFilePath = fp.fullPath(); std::ifstream process_stream(processDefFilePath.c_str()); resonant = p.getParameter("resonant"); diff --git a/SimG4Core/Generators/BuildFile.xml b/SimG4Core/Generators/BuildFile.xml index b6f6a444cf0c0..a6eb74e7e3674 100644 --- a/SimG4Core/Generators/BuildFile.xml +++ b/SimG4Core/Generators/BuildFile.xml @@ -5,6 +5,7 @@ + diff --git a/SimG4Core/Generators/interface/Generator3.h b/SimG4Core/Generators/interface/Generator3.h new file mode 100644 index 0000000000000..c2bae7b9600eb --- /dev/null +++ b/SimG4Core/Generators/interface/Generator3.h @@ -0,0 +1,70 @@ +#ifndef SimG4Core_Generator3_H +#define SimG4Core_Generator3_H + +#include "DataFormats/Math/interface/LorentzVector.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "SimG4Core/Generators/interface/HepMCParticle.h" +#include "SimG4Core/Notification/interface/GenParticleInfo.h" + +#include "HepMC3/GenEvent.h" +#include "HepMC3/GenParticle.h" + +#include + +class G4Event; +class G4PrimaryParticle; +class LumiMonitorFilter; + +class Generator3 { +public: + Generator3(const edm::ParameterSet &p); + virtual ~Generator3(); + + void setGenEvent(const HepMC3::GenEvent *inpevt) { + evt_ = (HepMC3::GenEvent *)inpevt; + return; + } + void HepMC2G4(const HepMC3::GenEvent *g, G4Event *e); + void nonCentralEvent2G4(const HepMC3::GenEvent *g, G4Event *e); + virtual const HepMC3::GenEvent *genEvent() const { return evt_; } + virtual const math::XYZTLorentzVector *genVertex() const { return vtx_; } + virtual const double eventWeight() const { return weight_; } + +private: + bool particlePassesPrimaryCuts(const G4ThreeVector &p) const; + bool isExotic(int pdgcode) const; + bool isExoticNonDetectable(int pdgcode) const; + bool IsInTheFilterList(int pdgcode) const; + void particleAssignDaughters(G4PrimaryParticle *p, HepMC3::GenParticle *hp, double length); + void setGenId(G4PrimaryParticle *p, int id) const { p->SetUserInformation(new GenParticleInfo(id)); } + +private: + bool fPCuts; + bool fPtransCut; + bool fEtaCuts; + bool fPhiCuts; + bool fFiductialCuts; + double theMinPhiCut; + double theMaxPhiCut; + double theMinEtaCut; + double theMaxEtaCut; + double theMinPCut; + double theMinPtCut2; + double theMaxPCut; + double theDecRCut2; + double theEtaCutForHector; + double theDecLenCut; + double maxZCentralCMS; + int verbose; + LumiMonitorFilter *fLumiFilter; + HepMC3::GenEvent *evt_; + math::XYZTLorentzVector *vtx_; + double weight_; + double Z_lmin, Z_lmax, Z_hector; + std::vector pdgFilter; + bool pdgFilterSel; + bool fPDGFilter; +}; + +#endif diff --git a/SimG4Core/Generators/interface/LumiMonitorFilter.h b/SimG4Core/Generators/interface/LumiMonitorFilter.h index 04def01a6a9f5..f756ad18da2d0 100644 --- a/SimG4Core/Generators/interface/LumiMonitorFilter.h +++ b/SimG4Core/Generators/interface/LumiMonitorFilter.h @@ -2,6 +2,7 @@ #define SimG4Core_LumiMonitorFilter_H #include "HepMC/GenParticle.h" +#include "HepMC3/GenParticle.h" class LumiMonitorFilter { public: @@ -10,6 +11,7 @@ class LumiMonitorFilter { void Describe() const; bool isGoodForLumiMonitor(const HepMC::GenParticle *) const; + bool isGoodForLumiMonitor(const HepMC3::GenParticle *) const; private: }; diff --git a/SimG4Core/Generators/src/Generator3.cc b/SimG4Core/Generators/src/Generator3.cc new file mode 100644 index 0000000000000..c9b188ec83d97 --- /dev/null +++ b/SimG4Core/Generators/src/Generator3.cc @@ -0,0 +1,585 @@ +#include "SimG4Core/Generators/interface/Generator3.h" +#include "SimG4Core/Generators/interface/HepMCParticle.h" +#include "SimG4Core/Generators/interface/LumiMonitorFilter.h" + +#include "SimG4Core/Notification/interface/SimG4Exception.h" + +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include "HepPDT/ParticleID.hh" + +#include "G4Event.hh" +#include "G4HEPEvtParticle.hh" +#include "G4Log.hh" +#include "G4ParticleDefinition.hh" +#include "G4PhysicalConstants.hh" +#include +#include "G4UnitsTable.hh" + +#include "HepMC3/Print.h" + +#include + +using namespace edm; + +Generator3::Generator3(const ParameterSet &p) + : fPCuts(p.getParameter("ApplyPCuts")), + fPtransCut(p.getParameter("ApplyPtransCut")), + fEtaCuts(p.getParameter("ApplyEtaCuts")), + fPhiCuts(p.getParameter("ApplyPhiCuts")), + theMinPhiCut(p.getParameter("MinPhiCut")), // in radians (CMS standard) + theMaxPhiCut(p.getParameter("MaxPhiCut")), + theMinEtaCut(p.getParameter("MinEtaCut")), + theMaxEtaCut(p.getParameter("MaxEtaCut")), + theMinPCut(p.getParameter("MinPCut")), // in GeV (CMS standard) + theMaxPCut(p.getParameter("MaxPCut")), + theEtaCutForHector(p.getParameter("EtaCutForHector")), + verbose(p.getUntrackedParameter("Verbosity", 0)), + fLumiFilter(nullptr), + evt_(nullptr), + vtx_(nullptr), + weight_(0), + Z_lmin(0), + Z_lmax(0), + Z_hector(0), + pdgFilterSel(false), + fPDGFilter(false) { + bool lumi = p.getParameter("ApplyLumiMonitorCuts"); + if (lumi) { + fLumiFilter = new LumiMonitorFilter(); + } + + double theRDecLenCut = p.getParameter("RDecLenCut") * CLHEP::cm; + theDecRCut2 = theRDecLenCut * theRDecLenCut; + + theMinPtCut2 = theMinPCut * theMinPCut; + + double theDecLenCut = p.getParameter("LDecLenCut") * CLHEP::cm; + + maxZCentralCMS = p.getParameter("MaxZCentralCMS") * CLHEP::m; + + fFiductialCuts = (fPCuts || fPtransCut || fEtaCuts || fPhiCuts); + + pdgFilter.resize(0); + if (p.exists("PDGselection")) { + pdgFilterSel = (p.getParameter("PDGselection")).getParameter("PDGfilterSel"); + pdgFilter = (p.getParameter("PDGselection")).getParameter>("PDGfilter"); + if (!pdgFilter.empty()) { + fPDGFilter = true; + std::stringstream ss; + ss << "SimG4Core/Generator3: "; + if (pdgFilterSel) { + ss << " Selecting only PDG ID = "; + } else { + ss << " Filtering out PDG ID = "; + } + for (unsigned int ii = 0; ii < pdgFilter.size(); ++ii) { + ss << pdgFilter[ii] << " "; + } + edm::LogVerbatim("SimG4CoreGenerator3") << ss.str(); + } + } + + if (fEtaCuts) { + Z_lmax = theRDecLenCut * ((1 - exp(-2 * theMaxEtaCut)) / (2 * exp(-theMaxEtaCut))); + Z_lmin = theRDecLenCut * ((1 - exp(-2 * theMinEtaCut)) / (2 * exp(-theMinEtaCut))); + } + + Z_hector = theRDecLenCut * ((1 - exp(-2 * theEtaCutForHector)) / (2 * exp(-theEtaCutForHector))); + + edm::LogVerbatim("SimG4CoreGenerator3") + << "SimG4Core/Generator3: Rdecaycut= " << theRDecLenCut / CLHEP::cm + << " cm; Zdecaycut= " << theDecLenCut / CLHEP::cm << "Z_min= " << Z_lmin / CLHEP::cm + << " cm; Z_max= " << Z_lmax / CLHEP::cm << " cm;\n" + << " MaxZCentralCMS = " << maxZCentralCMS / CLHEP::m << " m;" + << " Z_hector = " << Z_hector / CLHEP::cm << " cm\n" + << " ApplyCuts: " << fFiductialCuts << " PCuts: " << fPCuts << " PtransCut: " << fPtransCut + << " EtaCut: " << fEtaCuts << " PhiCut: " << fPhiCuts << " LumiMonitorCut: " << lumi; + if (fFiductialCuts) { + edm::LogVerbatim("SimG4CoreGenerator3") + << "SimG4Core/Generator3: Pmin(GeV)= " << theMinPCut << "; Pmax(GeV)= " << theMaxPCut + << "; EtaMin= " << theMinEtaCut << "; EtaMax= " << theMaxEtaCut << "; PhiMin(rad)= " << theMinPhiCut + << "; PhiMax(rad)= " << theMaxPhiCut; + } + if (lumi) { + fLumiFilter->Describe(); + } +} + +Generator3::~Generator3() { delete fLumiFilter; } + +void Generator3::HepMC2G4(const HepMC3::GenEvent *evt_orig, G4Event *g4evt) { + HepMC3::GenEvent *evt = new HepMC3::GenEvent(*evt_orig); + //HepMC3::Print::listing(*evt); + + if ((evt->vertices()).empty()) { + std::stringstream ss; + ss << "SimG4Core/Generator3: in event " << g4evt->GetEventID() << " Corrupted Event - GenEvent with no vertex \n"; + throw SimG4Exception(ss.str()); + } + + if (!evt->weights().empty()) { + weight_ = evt->weights()[0]; + for (unsigned int iw = 1; iw < evt->weights().size(); ++iw) { + // terminate if the vector of weights contains a zero-weight + if (evt->weights()[iw] <= 0) + break; + weight_ *= evt->weights()[iw]; + } + } + + if (vtx_ != nullptr) { + delete vtx_; + } + + for (const HepMC3::GenVertexPtr &v : evt->vertices()) { + vtx_ = + new math::XYZTLorentzVector((v->position()).x(), (v->position()).y(), (v->position()).z(), (v->position()).t()); + break; + } + + edm::LogVerbatim("SimG4CoreGenerator3") + << "Generator3: primary Vertex = (" << vtx_->x() << ", " << vtx_->y() << ", " << vtx_->z() << ")"; + + unsigned int ng4vtx = 0; + unsigned int ng4par = 0; + + for (const HepMC3::GenVertexPtr &vitr : evt->vertices()) { + // loop for vertex, is it a real vertex? + // Set qvtx to true for any particles that should be propagated by GEANT, + // i.e., status 1 particles or status 2 particles that decay outside the + // beampipe. + G4bool qvtx = false; + for (const HepMC3::GenParticlePtr &pitr : vitr->particles_out()) { + // For purposes of this function, the status is defined as follows: + // 1: particles are not decayed by generator + // 2: particles are decayed by generator but need to be propagated by GEANT + // 3: particles are decayed by generator and do not need to be propagated by GEANT + int status = pitr->status(); + int pdg = pitr->pid(); + if (status > 3 && isExotic(pdg) && (!(isExoticNonDetectable(pdg)))) { + // In Pythia 8, there are many status codes besides 1, 2, 3. + // By setting the status to 2 for exotic particles, they will be + // checked: if its decay vertex is outside the beampipe, it will be + // propagated by GEANT. Some Standard Model particles, e.g., K0, cannot + // be propagated by GEANT, so do not change their status code. + status = 2; + } + if (status == 2 && abs(pdg) == 9900015) { // Additional photon? + status = 3; + } + + // Particles which are not decayed by generator + if (status == 1) { + // filter out unwanted particles and vertices + if (fPDGFilter && !pdgFilterSel && IsInTheFilterList(pdg)) { + continue; + } + + qvtx = true; + if (verbose > 2) + LogDebug("SimG4CoreGenerator3") + << "GenVertex barcode = " << vitr->id() << " " << qvtx + << " selected for GenParticle barcode = " << pitr->id(); // barcode is substituted by id + break; + } + // The selection is made considering if the partcile with status = 2 + // have the end_vertex with a radius greater than the radius of beampipe + // cylinder (no requirement on the Z of the vertex is applyed). + else if (status == 2) { + if (pitr->end_vertex() != nullptr) { + double xx = (pitr->end_vertex())->position().x(); + double yy = (pitr->end_vertex())->position().y(); + double r_dd = xx * xx + yy * yy; + if (r_dd > theDecRCut2) { + qvtx = true; + if (verbose > 2) + LogDebug("SimG4CoreGenerator3") + << "GenVertex barcode = " << vitr->id() << " selected for GenParticle barcode = " << pitr->id() + << " radius = " << std::sqrt(r_dd); // barcode is substituted by id + break; + } + } else { + // particles with status 2 without end_vertex are + // equivalent to stable + qvtx = true; + break; + } + } + } + + // if this vertex is inside fiductial volume inside the beam pipe + // and has no long-lived secondary the vertex is not saved + if (!qvtx) { + continue; + } + + double x1 = vitr->position().x() * CLHEP::mm; + double y1 = vitr->position().y() * CLHEP::mm; + double z1 = vitr->position().z() * CLHEP::mm; + double t1 = vitr->position().t() * CLHEP::mm / CLHEP::c_light; + + G4PrimaryVertex *g4vtx = new G4PrimaryVertex(x1, y1, z1, t1); + + for (const HepMC3::GenParticlePtr &pitr : vitr->particles_out()) { + int status = pitr->status(); + int pdg = pitr->pid(); + bool hasDecayVertex = (nullptr != pitr->end_vertex()); + + // Filter on allowed particle species if required + if (fPDGFilter) { + bool isInTheList = IsInTheFilterList(pdg); + if ((!pdgFilterSel && isInTheList) || (pdgFilterSel && !isInTheList)) { + if (0 < verbose) + edm::LogVerbatim("SimG4CoreGenerator3") + << " Skiped GenParticle barcode= " << pitr->id() << " PDGid= " << pdg << " status= " << status + << " isExotic: " << isExotic(pdg) << " isExoticNotDet: " << isExoticNonDetectable(pdg) + << " isInTheList: " << isInTheList << " hasDecayVertex: " << hasDecayVertex; + continue; + } + } + + if (0 < verbose) { + edm::LogVerbatim("SimG4CoreGenerator3") + << "Generator3: pdg= " << pdg << " status= " << status << " hasPreDefinedDecay: " << hasDecayVertex + << "\n isExotic: " << isExotic(pdg) << " isExoticNotDet: " << isExoticNonDetectable(pdg) + << " isInTheList: " << IsInTheFilterList(pdg) << "\n" + << " MaxZCentralCMS = " << maxZCentralCMS / CLHEP::m << " m; (x,y,z,t): (" << x1 << "," << y1 << "," << z1 + << "," << t1 << ")"; + } + if (status > 3 && isExotic(pdg) && (!(isExoticNonDetectable(pdg)))) { + status = hasDecayVertex ? 2 : 1; + } + if (status == 2 && abs(pdg) == 9900015) { // Additional photon? + status = 3; + } + + // this particle has predefined decay but has no vertex + if (2 == status && !hasDecayVertex) { + edm::LogWarning("SimG4CoreGenerator3: in event ") + << g4evt->GetEventID() << " a particle " + << " pdgid= " << pdg << " has status=2 but has no decay vertex, so will be fully tracked by Geant4"; + status = 1; + } + + double x2 = x1; + double y2 = y1; + double z2 = z1; + double decay_length = 0.0; + if (2 == status) { + x2 = pitr->end_vertex()->position().x(); + y2 = pitr->end_vertex()->position().y(); + z2 = pitr->end_vertex()->position().z(); + decay_length = std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) + (z2 - z1) * (z2 - z1)); + } + + bool toBeAdded = !fFiductialCuts; + + double px = pitr->momentum().px(); + double py = pitr->momentum().py(); + double pz = pitr->momentum().pz(); + double ptot = std::sqrt(px * px + py * py + pz * pz); + math::XYZTLorentzVector p(px, py, pz, pitr->momentum().e()); + + double ximpact = x1; + double yimpact = y1; + double zimpact = z1; + + // protection against numerical problems for extremely low momenta + // compute impact point at transition to Hector + const double minTan = 1.e-20; + if (std::abs(z1) < Z_hector && std::abs(pz) >= minTan * ptot) { + zimpact = (pz > 0.0) ? Z_hector : -Z_hector; + double del = (zimpact - z1) / pz; + ximpact += del * px; + yimpact += del * py; + } + double rimpact2 = ximpact * ximpact + yimpact * yimpact; + + if (verbose > 2) + LogDebug("SimG4CoreGenerator3") << "Processing GenParticle barcode= " << pitr->id() << " pdg= " << pdg + << " status= " << pitr->status() << " st= " << status + << " rimpact(cm)= " << std::sqrt(rimpact2) / CLHEP::cm + << " zimpact(cm)= " << zimpact / CLHEP::cm << " ptot(GeV)= " << ptot + << " pz(GeV)= " << pz; + + // Particles of status 1 trasnported along the beam pipe + // HECTOR transport of protons are done in corresponding PPS producer + if (1 == status && std::abs(zimpact) >= Z_hector && rimpact2 <= theDecRCut2) { + // very forward n, nbar, gamma are allowed + toBeAdded = (2112 == std::abs(pdg) || 22 == pdg); + if (verbose > 1) { + edm::LogVerbatim("SimG4CoreGenerator3") + << "GenParticle barcode = " << pitr->id() << " very forward; to be added: " << toBeAdded; + } + } else { + // Standard case: particles not decayed by the generator and not forward + if (1 == status && (std::abs(zimpact) < Z_hector || rimpact2 > theDecRCut2)) { + // Ptot cut for all particles + if (fPCuts && (ptot < theMinPCut || ptot > theMaxPCut)) { + continue; + } + // phi cut is applied mainly for particle gun + if (fPhiCuts) { + double phi = p.phi(); + if (phi < theMinPhiCut || phi > theMaxPhiCut) { + continue; + } + } + // eta cut is applied if position of the decay + // is within vacuum chamber and limited in Z + if (fEtaCuts) { + // eta cut + double xi = x1; + double yi = y1; + double zi = z1; + + // can be propagated along Z + if (std::abs(pz) >= minTan * ptot) { + if ((zi >= Z_lmax) & (pz < 0.0)) { + zi = Z_lmax; + } else if ((zi <= Z_lmin) & (pz > 0.0)) { + zi = Z_lmin; + } else { + if (pz > 0) { + zi = Z_lmax; + } else { + zi = Z_lmin; + } + } + double del = (zi - z1) / pz; + xi += del * px; + yi += del * py; + } + // check eta cut + if ((zi >= Z_lmin) & (zi <= Z_lmax) & (xi * xi + yi * yi < theDecRCut2)) { + continue; + } + } + const HepMC3::GenParticle *ppointer = pitr.get(); + if (fLumiFilter && !fLumiFilter->isGoodForLumiMonitor(ppointer)) { // MK: this function is always true + continue; + } + toBeAdded = true; + if (verbose > 1) + edm::LogVerbatim("SimG4CoreGenerator3") << "GenParticle barcode = " << pitr->id() << " passed case 1"; + + // Decay chain outside the fiducial cylinder defined by theRDecLenCut + // are used for Geant4 tracking with predefined decay channel + // In the case of decay in vacuum particle is not tracked by Geant4 + } else if (2 == status && x2 * x2 + y2 * y2 >= theDecRCut2 && std::abs(z2) < Z_hector) { + toBeAdded = true; + if (verbose > 1) + edm::LogVerbatim("SimG4CoreGenerator3") << "GenParticle barcode = " << pitr->id() << " passed case 2" + << " decay_length(cm)= " << decay_length / CLHEP::cm; + } + } + if (toBeAdded) { + G4PrimaryParticle *g4prim = new G4PrimaryParticle(pdg, px * CLHEP::GeV, py * CLHEP::GeV, pz * CLHEP::GeV); + + if (g4prim->GetG4code() != nullptr) { + g4prim->SetMass(g4prim->GetG4code()->GetPDGMass()); + double charge = g4prim->GetG4code()->GetPDGCharge(); + + // apply Pt cut + if (fPtransCut && 1 == status && 0.0 != charge && px * px + py * py < theMinPtCut2) { + delete g4prim; + continue; + } + g4prim->SetCharge(charge); + } + + // V.I. do not use SetWeight but the same code + // value of the code compute inside TrackWithHistory + // g4prim->SetWeight( 10000*(*vpitr)->barcode() ) ; + setGenId(g4prim, pitr->id()); + + if (2 == status) { + particleAssignDaughters(g4prim, pitr.get(), decay_length); + } + if (verbose > 1) + g4prim->Print(); + + ++ng4par; + g4vtx->SetPrimary(g4prim); + edm::LogVerbatim("SimG4CoreGenerator3") << " " << ng4par << ". new Geant4 particle pdg= " << pdg + << " Ptot(GeV/c)= " << ptot << " Pt= " << std::sqrt(px * px + py * py) + << " status= " << status << "; dir= " << g4prim->GetMomentumDirection(); + } + } + + if (verbose > 1) + g4vtx->Print(); + g4evt->AddPrimaryVertex(g4vtx); + ++ng4vtx; + } + + // Add a protection for completely empty events (produced by LHCTransport): + // add a dummy vertex with no particle attached to it + if (ng4vtx == 0) { + G4PrimaryVertex *g4vtx = new G4PrimaryVertex(0.0, 0.0, 0.0, 0.0); + if (verbose > 1) + g4vtx->Print(); + + g4evt->AddPrimaryVertex(g4vtx); + } + + edm::LogVerbatim("SimG4CoreGenerator3") + << "The list of Geant4 primaries includes " << ng4par << " particles in " << ng4vtx << " vertex"; + + delete evt; +} + +void Generator3::particleAssignDaughters(G4PrimaryParticle *g4p, HepMC3::GenParticle *vp, double decaylength) { + if (verbose > 1) { // MK: Check message below + LogDebug("SimG4CoreGenerator3") << "Special case of long decay length \n" + << "Assign daughters to mother with decaylength=" << decaylength / CLHEP::cm + << " cm"; + } + math::XYZTLorentzVector p(vp->momentum().px(), vp->momentum().py(), vp->momentum().pz(), vp->momentum().e()); + + // defined preassigned decay time + double proper_time = decaylength / (p.Beta() * p.Gamma() * c_light); + g4p->SetProperTime(proper_time); + + if (verbose > 2) { + LogDebug("SimG4CoreGenerator3") << " px= " << p.px() << " py= " << p.py() << " pz= " << p.pz() << " e= " << p.e() + << " beta= " << p.Beta() << " gamma= " << p.Gamma() + << " Proper time= " << proper_time / CLHEP::ns << " ns"; + } + + // the particle will decay after the same length if it + // has not interacted before + double x1 = vp->end_vertex()->position().x(); + double y1 = vp->end_vertex()->position().y(); + double z1 = vp->end_vertex()->position().z(); + + for (const HepMC3::GenParticlePtr &vpdec : vp->end_vertex()->particles_out()) { + // transform decay products such that in the rest frame of mother + math::XYZTLorentzVector pdec( + vpdec->momentum().px(), vpdec->momentum().py(), vpdec->momentum().pz(), vpdec->momentum().e()); + + // children should only be taken into account once + G4PrimaryParticle *g4daught = + new G4PrimaryParticle(vpdec->pid(), pdec.x() * CLHEP::GeV, pdec.y() * CLHEP::GeV, pdec.z() * CLHEP::GeV); + + if (g4daught->GetG4code() != nullptr) { + g4daught->SetMass(g4daught->GetG4code()->GetPDGMass()); + g4daught->SetCharge(g4daught->GetG4code()->GetPDGCharge()); + } + + // V.I. do not use SetWeight but the same code + // value of the code compute inside TrackWithHistory + setGenId(g4daught, vpdec->id()); + + int status = vpdec->status(); + if (verbose > 1) + LogDebug("SimG4CoreGenerator3::::particleAssignDaughters") + << "Assigning a " << vpdec->pid() << " as daughter of a " << vp->pid() << " status=" << status; + + if ((status == 2 || (status == 23 && std::abs(vp->pid()) == 1000015) || (status > 50 && status < 100)) && + vpdec->end_vertex() != nullptr) { + double x2 = vpdec->end_vertex()->position().x(); + double y2 = vpdec->end_vertex()->position().y(); + double z2 = vpdec->end_vertex()->position().z(); + double dd = std::sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2)); + particleAssignDaughters(g4daught, vpdec.get(), dd); + } + vpdec->set_status(1000 + status); + g4p->SetDaughter(g4daught); + + if (verbose > 1) + g4daught->Print(); + } +} + +// Used for non-beam particles +bool Generator3::particlePassesPrimaryCuts(const G4ThreeVector &p) const { + bool flag = true; + double ptot = p.mag(); + if (fPCuts && (ptot < theMinPCut * CLHEP::GeV || ptot > theMaxPCut * CLHEP::GeV)) { + flag = false; + } + if (fEtaCuts && flag) { + double pz = p.z(); + if (ptot < pz + 1.e-10) { + flag = false; + + } else { + double eta = 0.5 * G4Log((ptot + pz) / (ptot - pz)); + if (eta < theMinEtaCut || eta > theMaxEtaCut) { + flag = false; + } + } + } + if (fPhiCuts && flag) { + double phi = p.phi(); + if (phi < theMinPhiCut || phi > theMaxPhiCut) { + flag = false; + } + } + + if (verbose > 2) + LogDebug("SimG4CoreGenerator3") << "Generator ptot(GeV)= " << ptot / CLHEP::GeV << " eta= " << p.eta() + << " phi= " << p.phi() << " Flag= " << flag; + + return flag; +} + +bool Generator3::isExotic(int pdgcode) const { + int pdgid = std::abs(pdgcode); + return ((pdgid >= 1000000 && pdgid < 4000000 && pdgid != 3000022) || // SUSY, R-hadron, and technicolor particles + pdgid == 17 || // 4th generation lepton + pdgid == 34 || // W-prime + pdgid == 37); // charged Higgs +} + +bool Generator3::isExoticNonDetectable(int pdgcode) const { + int pdgid = std::abs(pdgcode); + HepPDT::ParticleID pid(pdgcode); + int charge = pid.threeCharge(); + return ((charge == 0) && (pdgid >= 1000000 && pdgid < 1000040)); // SUSY +} + +bool Generator3::IsInTheFilterList(int pdgcode) const { + int pdgid = std::abs(pdgcode); + for (auto &pdg : pdgFilter) { + if (std::abs(pdg) == pdgid) { + return true; + } + } + return false; +} + +void Generator3::nonCentralEvent2G4(const HepMC3::GenEvent *evt, G4Event *g4evt) { +#if 0 + + int i = g4evt->GetNumberOfPrimaryVertex(); + for (HepMC3::GenEvent::particle_const_iterator it = evt->particles_begin(); it != evt->particles_end(); ++it) { + ++i; + HepMC3::GenParticle *gp = (*it); + + // storing only particle with status == 1 + if (gp->status() != 1) + continue; + + int pdg = gp->pdg_id(); + G4PrimaryParticle *g4p = new G4PrimaryParticle( + pdg, gp->momentum().px() * CLHEP::GeV, gp->momentum().py() * CLHEP::GeV, gp->momentum().pz() * CLHEP::GeV); + if (g4p->GetG4code() != nullptr) { + g4p->SetMass(g4p->GetG4code()->GetPDGMass()); + g4p->SetCharge(g4p->GetG4code()->GetPDGCharge()); + } + setGenId(g4p, i); + G4PrimaryVertex *v = new G4PrimaryVertex(gp->production_vertex()->position().x() * CLHEP::mm, + gp->production_vertex()->position().y() * CLHEP::mm, + gp->production_vertex()->position().z() * CLHEP::mm, + gp->production_vertex()->position().t() * CLHEP::mm / CLHEP::c_light); + v->SetPrimary(g4p); + g4evt->AddPrimaryVertex(v); + if (verbose > 0) + v->Print(); + } // end loop on HepMC particles + +#endif +} diff --git a/SimG4Core/Generators/src/LumiMonitorFilter.cc b/SimG4Core/Generators/src/LumiMonitorFilter.cc index 978abbcf19c9d..065efdb2eb8ee 100644 --- a/SimG4Core/Generators/src/LumiMonitorFilter.cc +++ b/SimG4Core/Generators/src/LumiMonitorFilter.cc @@ -13,3 +13,5 @@ LumiMonitorFilter::~LumiMonitorFilter() {} void LumiMonitorFilter::Describe() const { edm::LogInfo("LumiMonitorFilter") << " is active "; } bool LumiMonitorFilter::isGoodForLumiMonitor(const HepMC::GenParticle *) const { return true; } + +bool LumiMonitorFilter::isGoodForLumiMonitor(const HepMC3::GenParticle *) const { return true; } diff --git a/SimG4Core/Notification/interface/TrackInformation.h b/SimG4Core/Notification/interface/TrackInformation.h index c4d24aeba7453..b9e2ff6e90e99 100644 --- a/SimG4Core/Notification/interface/TrackInformation.h +++ b/SimG4Core/Notification/interface/TrackInformation.h @@ -39,6 +39,9 @@ class TrackInformation : public G4VUserTrackInformation { int mcTruthID() const { return mcTruthID_; } void setMCTruthID(int id) { mcTruthID_ = id; } + int idLastStoredAncestor() const { return idLastStoredAncestor_; } + void setIdLastStoredAncestor(int id) { idLastStoredAncestor_ = id; } + // Calo section int getIDonCaloSurface() const { return idOnCaloSurface_; } void setIDonCaloSurface(int id, int ical, int last, int pdgID, double p) { @@ -96,6 +99,11 @@ class TrackInformation : public G4VUserTrackInformation { bool isInTrkFromBackscattering() const { return (mtdStatus_ >> 3) & 1; } void setExtSecondary() { mtdStatus_ |= 1 << 4; } //5th bit bool isExtSecondary() const { return (mtdStatus_ >> 4) & 1; } + void setETLfromFront() { mtdStatus_ |= 1 << 5; } //6th bit + bool isETLfromFront() const { return (mtdStatus_ >> 5) & 1; } + void setETLfromBack() { mtdStatus_ |= 1 << 6; } //7th bit + bool isETLfromBack() const { return (mtdStatus_ >> 6) & 1; } + uint8_t mtdStatus() const { return mtdStatus_; } void Print() const override; @@ -111,6 +119,7 @@ class TrackInformation : public G4VUserTrackInformation { bool startedInFineVolume_{false}; bool startedInFineVolumeIsSet_{false}; bool hasCastorHit_{false}; + int idLastStoredAncestor_{0}; int idOnCaloSurface_{0}; int idCaloVolume_{-1}; int idLastVolume_{-1}; diff --git a/SimG4Core/Notification/src/MCTruthUtil.cc b/SimG4Core/Notification/src/MCTruthUtil.cc index 89ab353951475..ab8759c5e2f59 100644 --- a/SimG4Core/Notification/src/MCTruthUtil.cc +++ b/SimG4Core/Notification/src/MCTruthUtil.cc @@ -1,3 +1,5 @@ +//#define EDM_ML_DEBUG + #include "SimG4Core/Notification/interface/MCTruthUtil.h" #include "SimG4Core/Notification/interface/TrackInformation.h" @@ -11,6 +13,7 @@ void MCTruthUtil::primary(G4Track *aTrack) { trkInfo->setGenParticlePID(aTrack->GetDefinition()->GetPDGEncoding()); trkInfo->setGenParticleP(aTrack->GetMomentum().mag()); trkInfo->setMCTruthID(aTrack->GetTrackID()); + trkInfo->setIdLastStoredAncestor(aTrack->GetTrackID()); aTrack->SetUserInformation(trkInfo); } @@ -40,6 +43,7 @@ void MCTruthUtil::secondary(G4Track *aTrack, const G4Track &mother, int flag) { motherInfo->getIDLastVolume(), aTrack->GetDefinition()->GetPDGEncoding(), aTrack->GetMomentum().mag()); + trkInfo->setIdLastStoredAncestor(aTrack->GetTrackID()); } else { // transfer calo ID from mother (to be checked in TrackingAction) trkInfo->setIDonCaloSurface(motherInfo->getIDonCaloSurface(), @@ -47,6 +51,7 @@ void MCTruthUtil::secondary(G4Track *aTrack, const G4Track &mother, int flag) { motherInfo->getIDLastVolume(), motherInfo->caloSurfaceParticlePID(), motherInfo->caloSurfaceParticleP()); + trkInfo->setIdLastStoredAncestor(motherInfo->idLastStoredAncestor()); } // for Run1 and Run2 diff --git a/SimG4Core/Notification/src/TrackInformation.cc b/SimG4Core/Notification/src/TrackInformation.cc index 8962eb767d667..769d4a4706951 100644 --- a/SimG4Core/Notification/src/TrackInformation.cc +++ b/SimG4Core/Notification/src/TrackInformation.cc @@ -1,3 +1,5 @@ +//#define EDM_ML_DEBUG + #include "SimG4Core/Notification/interface/TrackInformation.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" @@ -28,6 +30,7 @@ void TrackInformation::Print() const { << " isGeneratedSecondary = " << isGeneratedSecondary_ << "\n" << " mcTruthID = " << mcTruthID_ << "\n" << " isInHistory = " << isInHistory_ << "\n" + << " idLastStoredAncestor = " << idLastStoredAncestor() << "\n" << " idOnCaloSurface = " << getIDonCaloSurface() << "\n" << " caloIDChecked = " << caloIDChecked() << "\n" << " idCaloVolume = " << idCaloVolume_ << "\n" @@ -37,5 +40,7 @@ void TrackInformation::Print() const { << " isBTLlooper = " << isBTLlooper() << "\n" << " isInTrkFromBackscattering = " << isInTrkFromBackscattering() << "\n" - << " isExtSecondary = " << isExtSecondary(); + << " isExtSecondary = " << isExtSecondary() << "\n" + << " isETLFromFront = " << isETLfromFront() << "\n" + << " isETLFromBack = " << isETLfromBack(); } diff --git a/SimG4Core/PrintGeomInfo/test/python/g4DumpGeometry_cfg.py b/SimG4Core/PrintGeomInfo/test/python/g4DumpGeometry_cfg.py index cf988f96b8ceb..2641d5cc12d5c 100644 --- a/SimG4Core/PrintGeomInfo/test/python/g4DumpGeometry_cfg.py +++ b/SimG4Core/PrintGeomInfo/test/python/g4DumpGeometry_cfg.py @@ -5,8 +5,8 @@ #process.load('Configuration.Geometry.GeometryExtended2015Reco_cff') process.load('Configuration.Geometry.GeometryExtended2017Reco_cff') #process.load('Configuration.Geometry.GeometryExtended2021Reco_cff') -#process.load('Configuration.Geometry.GeometryExtendedRun4D77Reco_cff') -#process.load('Configuration.Geometry.GeometryExtendedRun4D83Reco_cff') +#process.load('Configuration.Geometry.GeometryExtendedRun4D110Reco_cff') +#process.load('Configuration.Geometry.GeometryExtendedRun4D108Reco_cff') from SimG4Core.PrintGeomInfo.g4TestGeometry_cfi import * process = checkOverlap(process) @@ -19,7 +19,7 @@ # Geant4 geometry check process.g4SimHits.G4CheckOverlap.OutputBaseName = cms.string("2017") -#process.g4SimHits.G4CheckOverlap.OutputBaseName = cms.string("2026D77") +#process.g4SimHits.G4CheckOverlap.OutputBaseName = cms.string("Run4D110") process.g4SimHits.G4CheckOverlap.OverlapFlag = cms.bool(False) process.g4SimHits.G4CheckOverlap.Tolerance = cms.double(0.0) process.g4SimHits.G4CheckOverlap.Resolution = cms.int32(10000) diff --git a/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py b/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py index 5f36abc9f00ae..c29a3ba1f2a14 100644 --- a/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py +++ b/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py @@ -1,6 +1,6 @@ ############################################################################### # Way to use this: -# cmsRun g4OverlapCheck2026DD4hep_cfg.py geometry=D110 tol=0.01 +# cmsRun g4OverlapCheckRun4DD4hep_cfg.py geometry=D110 tol=0.01 # # Options for geometry D95, D96, D98, D99, D100, D101, D102, D103, D104, # D105, D106, D107, D108, D109, D110, D111, D112, D113, @@ -42,8 +42,8 @@ from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 process = cms.Process('OverlapCheck',Phase2C17I13M9,dd4hep) -geomFile = "Configuration.Geometry.GeometryDD4hepExtended2026" + options.geometry + "Reco_cff" -baseName = "cms2026" + options.geometry + "DD4hep" +geomFile = "Configuration.Geometry.GeometryDD4hepExtendedRun4" + options.geometry + "Reco_cff" +baseName = "cmsRun4" + options.geometry + "DD4hep" print("Geometry file Name: ", geomFile) print("Base file Name: ", baseName) diff --git a/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DDD_cfg.py b/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DDD_cfg.py index 408692d878902..b1abbe1f906a2 100644 --- a/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DDD_cfg.py +++ b/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DDD_cfg.py @@ -1,6 +1,6 @@ ############################################################################### # Way to use this: -# cmsRun g4OverlapCheck2026DDD_cfg.py geometry=D110 tol=0.01 +# cmsRun g4OverlapCheckRun4DDD_cfg.py geometry=D110 tol=0.01 # # Options for geometry D95, D96, D98, D99, D100, D101, D102, D103, D104, # D105, D106, D107, D108, D109, D110, D111, D112, D113, @@ -41,8 +41,8 @@ from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 process = cms.Process('OverlapCheck',Phase2C17I13M9) -geomFile = "Configuration.Geometry.GeometryExtended2026" + options.geometry + "Reco_cff" -baseName = "cms2026" + options.geometry + "DDD" +geomFile = "Configuration.Geometry.GeometryExtendedRun4" + options.geometry + "Reco_cff" +baseName = "cmsRun4" + options.geometry + "DDD" print("Geometry file Name: ", geomFile) print("Base file Name: ", baseName) diff --git a/SimG4Core/SaveSimTrackAction/src/SaveSimTrack.cc b/SimG4Core/SaveSimTrackAction/src/SaveSimTrack.cc index 921dcde0baede..cf91f343f9094 100644 --- a/SimG4Core/SaveSimTrackAction/src/SaveSimTrack.cc +++ b/SimG4Core/SaveSimTrackAction/src/SaveSimTrack.cc @@ -29,6 +29,7 @@ void SaveSimTrack::update(const BeginOfTrack *trk) { int pdg = theTrack->GetDefinition()->GetPDGEncoding(); if (std::find(pdgs_.begin(), pdgs_.end(), pdg) != pdgs_.end()) { trkInfo->setStoreTrack(); + trkInfo->setIdLastStoredAncestor(theTrack->GetTrackID()); LogDebug("SaveSimTrack") << "Save SimTrack the Track " << theTrack->GetTrackID() << " Type " << theTrack->GetDefinition()->GetParticleName() << " Momentum " << theTrack->GetMomentum() / CLHEP::MeV << " MeV/c"; diff --git a/SimGeneral/CaloAnalysis/plugins/BuildFile.xml b/SimGeneral/CaloAnalysis/plugins/BuildFile.xml index 3300315764d4a..7b1458cd095ba 100644 --- a/SimGeneral/CaloAnalysis/plugins/BuildFile.xml +++ b/SimGeneral/CaloAnalysis/plugins/BuildFile.xml @@ -23,6 +23,7 @@ + diff --git a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc index 17e6b19333daf..cd585ee0f2cf4 100644 --- a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc +++ b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc @@ -47,6 +47,8 @@ #include "Geometry/HcalTowerAlgo/interface/HcalGeometry.h" #include "Geometry/Records/interface/CaloGeometryRecord.h" +#include + namespace { using Index_t = unsigned; using Barcode_t = int; @@ -151,11 +153,13 @@ namespace { CaloTruthAccumulator::calo_particles &caloParticles, std::unordered_multimap &simHitBarcodeToIndex, std::unordered_map> &simTrackDetIdEnergyMap, + std::unordered_map &vertex_time_map, Selector selector) : output_(output), caloParticles_(caloParticles), simHitBarcodeToIndex_(simHitBarcodeToIndex), simTrackDetIdEnergyMap_(simTrackDetIdEnergyMap), + vertex_time_map_(vertex_time_map), selector_(selector) {} template void discover_vertex(Vertex u, const Graph &g) { @@ -191,6 +195,7 @@ namespace { if (selector_(edge_property)) { IfLogDebug(DEBUG, messageCategoryGraph_) << "Adding CaloParticle: " << edge_property.simTrack->trackId(); output_.pCaloParticles->emplace_back(*(edge_property.simTrack)); + output_.pCaloParticles->back().setSimTime(vertex_time_map_[(edge_property.simTrack)->vertIndex()]); caloParticles_.sc_start_.push_back(output_.pSimClusters->size()); } } @@ -213,6 +218,7 @@ namespace { CaloTruthAccumulator::calo_particles &caloParticles_; std::unordered_multimap &simHitBarcodeToIndex_; std::unordered_map> &simTrackDetIdEnergyMap_; + std::unordered_map &vertex_time_map_; Selector selector_; }; } // namespace @@ -425,6 +431,12 @@ void CaloTruthAccumulator::accumulateEvent(const T &event, idx++; } + std::unordered_map vertex_time_map; + for (uint32_t i = 0; i < vertices.size(); i++) { + // Geant4 time is in seconds, convert to ns (CLHEP::s = 1e9) + vertex_time_map[i] = vertices[i].position().t() * CLHEP::s; + } + /** Build the main decay graph and assign the SimTrack to each edge. The graph built here will only contain the particles that have a decay vertex @@ -512,6 +524,7 @@ void CaloTruthAccumulator::accumulateEvent(const T &event, m_caloParticles, m_simHitBarcodeToIndex, simTrackDetIdEnergyMap, + vertex_time_map, [&](EdgeProperty &edge_property) -> bool { // Apply selection on SimTracks in order to promote them to be // CaloParticles. The function returns TRUE if the particle satisfies diff --git a/SimGeneral/CaloAnalysis/plugins/MtdTruthAccumulator.cc b/SimGeneral/CaloAnalysis/plugins/MtdTruthAccumulator.cc index 2c810aac14e17..930a1b5daec5e 100644 --- a/SimGeneral/CaloAnalysis/plugins/MtdTruthAccumulator.cc +++ b/SimGeneral/CaloAnalysis/plugins/MtdTruthAccumulator.cc @@ -52,12 +52,17 @@ #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" +#include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" +#include "SimG4CMS/Forward/interface/MtdHitCategory.h" + +#include + namespace { using Index_t = unsigned; using Barcode_t = int; @@ -106,8 +111,6 @@ class MtdTruthAccumulator : public DigiAccumulatorMixMod { */ const unsigned int maximumSubsequentBunchCrossing_; - const unsigned int bunchSpacing_; - const edm::InputTag simTrackLabel_; const edm::InputTag simVertexLabel_; edm::Handle> hSimTracks; @@ -186,7 +189,7 @@ namespace { if (!vertex_property.simTrack) return; // -- loop over possible trackIdOffsets to save also sim clusters from non-direct hits - for (unsigned int offset = 0; offset < 4; offset++) { + for (unsigned int offset = 0; offset < MtdHitCategory::n_categories + 1; offset++) { auto trackIdx = vertex_property.simTrack->trackId(); trackIdx += offset * (static_cast(PSimHit::k_tidOffset)); IfLogDebug(DEBUG, messageCategoryGraph_) @@ -223,7 +226,7 @@ namespace { if (selector_(edge_property)) { IfLogDebug(DEBUG, messageCategoryGraph_) << "Adding CaloParticle: " << edge_property.simTrack->trackId(); output_.pCaloParticles->emplace_back(*(edge_property.simTrack)); - output_.pCaloParticles->back().addSimTime(vertex_time_map_[(edge_property.simTrack)->vertIndex()]); + output_.pCaloParticles->back().setSimTime(vertex_time_map_[(edge_property.simTrack)->vertIndex()]); caloParticles_.sc_start_.push_back(output_.pSimClusters->size()); } } @@ -257,7 +260,6 @@ MtdTruthAccumulator::MtdTruthAccumulator(const edm::ParameterSet &config, : messageCategory_("MtdTruthAccumulator"), maximumPreviousBunchCrossing_(config.getParameter("maximumPreviousBunchCrossing")), maximumSubsequentBunchCrossing_(config.getParameter("maximumSubsequentBunchCrossing")), - bunchSpacing_(config.getParameter("bunchspace")), simTrackLabel_(config.getParameter("simTrackCollection")), simVertexLabel_(config.getParameter("simVertexCollection")), collectionTags_(), @@ -619,7 +621,8 @@ void MtdTruthAccumulator::accumulateEvent(const T &event, DecayChain decay; for (uint32_t i = 0; i < vertices.size(); i++) { - vertex_time_map[i] = vertices[i].position().t() * 1e9 + event.bunchCrossing() * static_cast(bunchSpacing_); + // Geant4 time is in seconds, convert to ns (CLHEP::s = 1e9) + vertex_time_map[i] = vertices[i].position().t() * CLHEP::s; } IfLogDebug(DEBUG, messageCategory_) << " TRACKS" << std::endl; diff --git a/SimGeneral/Configuration/python/RandomRunSource.py b/SimGeneral/Configuration/python/RandomRunSource.py index 32ca3536afc9c..92bf7557665c2 100644 --- a/SimGeneral/Configuration/python/RandomRunSource.py +++ b/SimGeneral/Configuration/python/RandomRunSource.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms class RandomRunSource (cms.Source): diff --git a/SimGeneral/Configuration/python/ThrowAndSetRandomRun.py b/SimGeneral/Configuration/python/ThrowAndSetRandomRun.py index 0ea98171b8fe9..da164c711fbf3 100644 --- a/SimGeneral/Configuration/python/ThrowAndSetRandomRun.py +++ b/SimGeneral/Configuration/python/ThrowAndSetRandomRun.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms # function to modify an existing Cms Source in order to set the run number diff --git a/SimGeneral/MixingModule/python/mix_fromDB_cfi.py b/SimGeneral/MixingModule/python/mix_fromDB_cfi.py index d8f7e0141a4ff..9c6405c6ce994 100644 --- a/SimGeneral/MixingModule/python/mix_fromDB_cfi.py +++ b/SimGeneral/MixingModule/python/mix_fromDB_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms # here we define part of the configuration of MixingModule diff --git a/SimGeneral/MixingModule/python/mtdTruthProducer_cfi.py b/SimGeneral/MixingModule/python/mtdTruthProducer_cfi.py index 1136536d0fc1c..ec3efc262b645 100644 --- a/SimGeneral/MixingModule/python/mtdTruthProducer_cfi.py +++ b/SimGeneral/MixingModule/python/mtdTruthProducer_cfi.py @@ -7,7 +7,6 @@ premixStage1 = cms.bool(False), maximumPreviousBunchCrossing = cms.uint32(0), maximumSubsequentBunchCrossing = cms.uint32(0), - bunchspace = cms.uint32(25), #ns simHitCollections = cms.PSet( mtdCollections = cms.VInputTag( diff --git a/SimMuon/CSCDigitizer/test/CSCNeutronReader_cfg.py b/SimMuon/CSCDigitizer/test/CSCNeutronReader_cfg.py index 611d9d1076a6f..18a7761e9bbdf 100644 --- a/SimMuon/CSCDigitizer/test/CSCNeutronReader_cfg.py +++ b/SimMuon/CSCDigitizer/test/CSCNeutronReader_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms process = cms.Process("CSCDigitizerTest") diff --git a/SimMuon/DTDigitizer/plugins/DTChamberMasker.cc b/SimMuon/DTDigitizer/plugins/DTChamberMasker.cc index 179a841a66808..6df5ffe4612bb 100644 --- a/SimMuon/DTDigitizer/plugins/DTChamberMasker.cc +++ b/SimMuon/DTDigitizer/plugins/DTChamberMasker.cc @@ -45,6 +45,7 @@ #include "Geometry/DTGeometry/interface/DTLayer.h" #include "DataFormats/DTDigi/interface/DTDigiCollection.h" +#include "SimDataFormats/DigiSimLinks/interface/DTDigiSimLinkCollection.h" #include "DataFormats/MuonDetId/interface/DTChamberId.h" #include "DataFormats/MuonDetId/interface/DTLayerId.h" #include "DataFormats/MuonDetId/interface/DTWireId.h" @@ -73,8 +74,10 @@ class DTChamberMasker : public edm::global::EDProducer<> { // ----------member data --------------------------- - const edm::EDGetTokenT m_digiToken; - const edm::EDPutTokenT m_putToken; + const edm::EDGetTokenT m_digiTokenR; + const edm::EDGetTokenT m_linkTokenR; + const edm::EDPutTokenT m_digiTokenP; + const edm::EDPutTokenT m_linkTokenP; const edm::ESGetToken m_agingObjToken; }; @@ -86,8 +89,10 @@ class DTChamberMasker : public edm::global::EDProducer<> { // constructors and destructor // DTChamberMasker::DTChamberMasker(const edm::ParameterSet &iConfig) - : m_digiToken(consumes(iConfig.getParameter("digiTag"))), - m_putToken(produces()), + : m_digiTokenR(consumes(iConfig.getParameter("digiTag"))), + m_linkTokenR(consumes(iConfig.getParameter("digiTag"))), + m_digiTokenP(produces()), + m_linkTokenP(produces()), m_agingObjToken(esConsumes()) {} // @@ -105,9 +110,9 @@ void DTChamberMasker::produce(edm::StreamID, edm::Event &event, const edm::Event DTDigiCollection filteredDigis; - if (!m_digiToken.isUninitialized()) { + if (!m_digiTokenR.isUninitialized()) { edm::Handle dtDigis; - event.getByToken(m_digiToken, dtDigis); + event.getByToken(m_digiTokenR, dtDigis); for (const auto &dtLayerId : (*dtDigis)) { uint32_t rawId = (dtLayerId.first).chamberId().rawId(); @@ -118,7 +123,16 @@ void DTChamberMasker::produce(edm::StreamID, edm::Event &event, const edm::Event } } - event.emplace(m_putToken, std::move(filteredDigis)); + DTDigiSimLinkCollection linksCopy; + + if (!m_linkTokenR.isUninitialized()) { + edm::Handle links; + event.getByToken(m_linkTokenR, links); + linksCopy = (*links); + } + + event.emplace(m_digiTokenP, std::move(filteredDigis)); + event.emplace(m_linkTokenP, std::move(linksCopy)); } // ------------ method fills 'descriptions' with the allowed parameters for the diff --git a/SimMuon/DTDigitizer/python/dtChamberMasker_cff.py b/SimMuon/DTDigitizer/python/dtChamberMasker_cff.py index e28c87b54d264..1b662a1210f02 100644 --- a/SimMuon/DTDigitizer/python/dtChamberMasker_cff.py +++ b/SimMuon/DTDigitizer/python/dtChamberMasker_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import sys @@ -32,6 +31,32 @@ def appendDTChamberMaskerAtUnpacking(process): return process +def appendDTChamberMaskerAtSim(process): + + if hasattr(process,'simMuonDTDigis') and hasattr(process,'pdigiTask'): + + sys.stderr.write("[appendDTChamberMasker] : Found simMuonDTDigis, applying filter\n") + + process.preDtDigis = process.simMuonDTDigis.clone() + process.simMuonDTDigis = _dtChamberMasker.clone() + + process.simMuonDTDigis.digiTag = cms.InputTag('preDtDigis') + + process.pdigiTask.replace(process.simMuonDTDigis,process.preDtDigis) + process.pdigiTask.add(process.simMuonDTDigis) + + if hasattr(process,"RandomNumberGeneratorService") : + process.RandomNumberGeneratorService.preDtDigis = cms.PSet( + initialSeed = cms.untracked.uint32(789342) + ) + else : + process.RandomNumberGeneratorService = cms.Service( + "RandomNumberGeneratorService", + preDtDigis = cms.PSet(initialSeed = cms.untracked.uint32(789342)) + ) + + return process + def appendDTChamberMaskerAtHLT(process): if hasattr(process,'hltMuonDTDigis') and \ @@ -47,10 +72,8 @@ def appendDTChamberMaskerAtHLT(process): process.filteredHltDtDigiSequence = cms.Sequence(process.preHltDtDigis + process.hltMuonDTDigis) if hasattr(process,'HLTMuonLocalRecoSequence') : - print("1") process.HLTMuonLocalRecoSequence.replace(process.hltMuonDTDigis, process.filteredHltDtDigiSequence) if hasattr(process,'HLTMuonLocalRecoMeanTimerSequence') : - print("2") process.HLTMuonLocalRecoMeanTimerSequence.replace(process.hltMuonDTDigis, process.filteredHltDtDigiSequence) process.globalReplace("hltMuonDTDigis",filteredHltDtDigiSequence) diff --git a/SimMuon/MCTruth/plugins/SeedToTrackProducer.cc b/SimMuon/MCTruth/plugins/SeedToTrackProducerBase.cc similarity index 74% rename from SimMuon/MCTruth/plugins/SeedToTrackProducer.cc rename to SimMuon/MCTruth/plugins/SeedToTrackProducerBase.cc index 22e92ad92964b..e7f995fae5979 100644 --- a/SimMuon/MCTruth/plugins/SeedToTrackProducer.cc +++ b/SimMuon/MCTruth/plugins/SeedToTrackProducerBase.cc @@ -1,34 +1,25 @@ -// -*- C++ -*- -// -// Package: SeedToTrackProducer -// Class: SeedToTrackProducer -// -/**\class SeedToTrackProducer SeedToTrackProducer.cc - hugues/SeedToTrackProducer/plugins/SeedToTrackProducer.cc - - Description: [one line class summary] - - Implementation: - [Notes on implementation] -*/ -// -// Original Author: Hugues Brun -// Created: Tue, 05 Nov 2013 13:42:04 GMT -// $Id$ -// -// - -#include "SeedToTrackProducer.h" - +/** \class SeedToTrackProducerBase + * + * See header file for a description of the class + * + * \author Hugues Brun + */ + +#include "SimMuon/MCTruth/plugins/SeedToTrackProducerBase.h" #include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "Geometry/Records/interface/TrackerTopologyRcd.h" +#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" +#include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h" +#include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeedCollection.h" + // // constructors and destructor // -SeedToTrackProducer::SeedToTrackProducer(const edm::ParameterSet &iConfig) +template +SeedToTrackProducerBase::SeedToTrackProducerBase(const edm::ParameterSet &iConfig) : theMGFieldToken(esConsumes()), theTrackingGeometryToken(esConsumes()), theTopoToken(esConsumes()) { - L2seedsTagT_ = consumes(iConfig.getParameter("L2seedsCollection")); + L2seedsTagT_ = consumes(iConfig.getParameter("L2seedsCollection")); L2seedsTagS_ = consumes>(iConfig.getParameter("L2seedsCollection")); produces(); @@ -41,7 +32,10 @@ SeedToTrackProducer::SeedToTrackProducer(const edm::ParameterSet &iConfig) // // ------------ method called to produce the data ------------ -void SeedToTrackProducer::produce(edm::StreamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const { +template +void SeedToTrackProducerBase::produce(edm::StreamID, + edm::Event &iEvent, + const edm::EventSetup &iSetup) const { using namespace edm; using namespace std; @@ -63,13 +57,15 @@ void SeedToTrackProducer::produce(edm::StreamID, edm::Event &iEvent, const edm:: const TrackerTopology &ttopo = iSetup.getData(theTopoToken); // now read the L2 seeds collection : - edm::Handle L2seedsCollection; + edm::Handle L2seedsCollection; iEvent.getByToken(L2seedsTagT_, L2seedsCollection); - const std::vector *L2seeds = nullptr; + const std::vector *L2seeds = nullptr; if (L2seedsCollection.isValid()) L2seeds = L2seedsCollection.product(); - else - edm::LogError("SeedToTrackProducer") << "L2 seeds collection not found !! " << endl; + else { + edm::LogError("SeedToTrackProducerBase") << "L2 seeds collection not found !! " << endl; + return; + } edm::Handle> seedHandle; iEvent.getByToken(L2seedsTagS_, seedHandle); @@ -82,13 +78,13 @@ void SeedToTrackProducer::produce(edm::StreamID, edm::Event &iEvent, const edm:: float seedPhi = theTrajectory.globalMomentum().phi(); float seedPt = theTrajectory.globalMomentum().perp(); CovarianceMatrix matrixSeedErr = theTrajectory.curvilinearError().matrix(); - edm::LogVerbatim("SeedToTrackProducer") + edm::LogVerbatim("SeedToTrackProducerBase") << "seedPt=" << seedPt << " seedEta=" << seedEta << " seedPhi=" << seedPhi << endl; /*AlgebraicSymMatrix66 errors = theTrajectory.cartesianError().matrix(); double partialPterror = errors(3,3)*pow(theTrajectory.globalMomentum().x(),2) + errors(4,4)*pow(theTrajectory.globalMomentum().y(),2); - edm::LogVerbatim("SeedToTrackProducer") << "seedPtError=" << + edm::LogVerbatim("SeedToTrackProducerBase") << "seedPtError=" << sqrt(partialPterror)/theTrajectory.globalMomentum().perp() << "seedPhiError=" << theTrajectory.curvilinearError().matrix()(2,2) << endl;*/ // fill the track in a way that its pt, phi and eta will be the same as the @@ -122,9 +118,9 @@ void SeedToTrackProducer::produce(edm::StreamID, edm::Event &iEvent, const edm:: (L2seeds->at(i)).direction(), seed); theTrack.setExtra(reco::TrackExtraRef(rTrackExtras, idx++)); - edm::LogVerbatim("SeedToTrackProducer") + edm::LogVerbatim("SeedToTrackProducerBase") << "trackPt=" << theTrack.pt() << " trackEta=" << theTrack.eta() << " trackPhi=" << theTrack.phi() << endl; - edm::LogVerbatim("SeedToTrackProducer") + edm::LogVerbatim("SeedToTrackProducerBase") << "trackPtError=" << theTrack.ptError() << "trackPhiError=" << theTrack.phiError() << endl; // fill the seed segments in the track @@ -145,9 +141,9 @@ void SeedToTrackProducer::produce(edm::StreamID, edm::Event &iEvent, const edm:: iEvent.put(std::move(selectedTrackHits)); } -TrajectoryStateOnSurface SeedToTrackProducer::seedTransientState(const TrajectorySeed &tmpSeed, - const MagneticField &mgField, - const GlobalTrackingGeometry &trackingGeometry) const { +template +TrajectoryStateOnSurface SeedToTrackProducerBase::seedTransientState( + const SeedType &tmpSeed, const MagneticField &mgField, const GlobalTrackingGeometry &trackingGeometry) const { PTrajectoryStateOnDet tmpTSOD = tmpSeed.startingState(); DetId tmpDetId(tmpTSOD.detId()); const GeomDet *tmpGeomDet = trackingGeometry.idToDet(tmpDetId); @@ -156,5 +152,11 @@ TrajectoryStateOnSurface SeedToTrackProducer::seedTransientState(const Trajector return tmpTSOS; } -// define this as a plug-in +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/PluginManager/interface/ModuleDef.h" + +typedef SeedToTrackProducerBase SeedToTrackProducer; +typedef SeedToTrackProducerBase Phase2SeedToTrackProducer; + DEFINE_FWK_MODULE(SeedToTrackProducer); +DEFINE_FWK_MODULE(Phase2SeedToTrackProducer); diff --git a/SimMuon/MCTruth/plugins/SeedToTrackProducer.h b/SimMuon/MCTruth/plugins/SeedToTrackProducerBase.h similarity index 70% rename from SimMuon/MCTruth/plugins/SeedToTrackProducer.h rename to SimMuon/MCTruth/plugins/SeedToTrackProducerBase.h index eda27d0128d8a..46764652ad840 100644 --- a/SimMuon/MCTruth/plugins/SeedToTrackProducer.h +++ b/SimMuon/MCTruth/plugins/SeedToTrackProducerBase.h @@ -1,20 +1,18 @@ -// -*- C++ -*- -// -// Package: SeedToTrackProducer -// Class: SeedToTrackProducer -// -/**\class SeedToTrackProducer SeedToTrackProducer.cc - hugues/SeedToTrackProducer/plugins/SeedToTrackProducer.cc +#ifndef SimMuon_MCTruth_SeedToTrackProducerBase_h +#define SimMuon_MCTruth_SeedToTrackProducerBase_h - Description: +/** \class SeedToTrackProducerBase + * + * Base class used to produce MuonTracks from seeds + * + * \author Hugues Brun + * Created: Tue, 05 Nov 2013 13:42:04 GMT + * + * Modified to be templated on the seed collection type + * to make it compatible with Phase 2 seeds + * \author Luca Ferragina (INFN BO), 2024 + */ -*/ -// -// Original Author: Hugues Brun -// Created: Tue, 05 Nov 2013 13:42:04 GMT -// $Id$ -// -// // system include files #include @@ -47,21 +45,26 @@ typedef math::Error<5>::type CovarianceMatrix; -class SeedToTrackProducer : public edm::global::EDProducer<> { +template +class SeedToTrackProducerBase : public edm::global::EDProducer<> { public: - explicit SeedToTrackProducer(const edm::ParameterSet &); + explicit SeedToTrackProducerBase(const edm::ParameterSet &); private: void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const final; - TrajectoryStateOnSurface seedTransientState(const TrajectorySeed &, + + using SeedType = typename SeedCollection::value_type; + TrajectoryStateOnSurface seedTransientState(const SeedType &, const MagneticField &, const GlobalTrackingGeometry &) const; // ----------member data --------------------------- - edm::EDGetTokenT L2seedsTagT_; + edm::EDGetTokenT L2seedsTagT_; edm::EDGetTokenT> L2seedsTagS_; const edm::ESGetToken theMGFieldToken; const edm::ESGetToken theTrackingGeometryToken; const edm::ESGetToken theTopoToken; }; + +#endif diff --git a/SimMuon/MCTruth/python/SeedToTrackProducer_cfi.py b/SimMuon/MCTruth/python/SeedToTrackProducer_cfi.py index bd5a1031689b5..6ec9834fcb6ba 100644 --- a/SimMuon/MCTruth/python/SeedToTrackProducer_cfi.py +++ b/SimMuon/MCTruth/python/SeedToTrackProducer_cfi.py @@ -3,3 +3,11 @@ SeedToTrackProducer = cms.EDProducer('SeedToTrackProducer', L2seedsCollection = cms.InputTag("ancientMuonSeed") ) + + +Phase2SeedToTrackProducer = cms.EDProducer('Phase2SeedToTrackProducer', + L2seedsCollection = cms.InputTag("hltL2MuonSeedsFromL1TkMuon") + ) + +from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon +phase2_muon.toReplaceWith(SeedToTrackProducer, Phase2SeedToTrackProducer) \ No newline at end of file diff --git a/SimMuon/Neutron/plugins/NeutronHitsCollector.cc b/SimMuon/Neutron/plugins/NeutronHitsCollector.cc index 38957b9c102c8..aca09a7a693f0 100644 --- a/SimMuon/Neutron/plugins/NeutronHitsCollector.cc +++ b/SimMuon/Neutron/plugins/NeutronHitsCollector.cc @@ -110,7 +110,7 @@ void NeutronHitsCollector::produce(edm::Event& iEvent, const edm::EventSetup& iS // ----- MuonCSCHits ----- // std::unique_ptr simCSC(new edm::PSimHitContainer); - if (neutron_label_csc.length() > 0) { + if (!neutron_label_csc.empty()) { const edm::Handle& MuonCSCHits = iEvent.getHandle(tokenCSC_); for (hit = MuonCSCHits->begin(); hit != MuonCSCHits->end(); ++hit) simCSC->push_back(*hit); @@ -120,7 +120,7 @@ void NeutronHitsCollector::produce(edm::Event& iEvent, const edm::EventSetup& iS // ----- MuonDTHits ----- // std::unique_ptr simDT(new edm::PSimHitContainer); - if (neutron_label_dt.length() > 0) { + if (!neutron_label_dt.empty()) { const edm::Handle& MuonDTHits = iEvent.getHandle(tokenDT_); for (hit = MuonDTHits->begin(); hit != MuonDTHits->end(); ++hit) simDT->push_back(*hit); @@ -130,7 +130,7 @@ void NeutronHitsCollector::produce(edm::Event& iEvent, const edm::EventSetup& iS // ----- MuonRPCHits ----- // std::unique_ptr simRPC(new edm::PSimHitContainer); - if (neutron_label_rpc.length() > 0) { + if (!neutron_label_rpc.empty()) { const edm::Handle& MuonRPCHits = iEvent.getHandle(tokenRPC_); for (hit = MuonRPCHits->begin(); hit != MuonRPCHits->end(); ++hit) simRPC->push_back(*hit); diff --git a/SimTracker/TrackerMaterialAnalysis/crab/merge.py b/SimTracker/TrackerMaterialAnalysis/crab/merge.py index 61271c3b9b493..27edfc956889b 100644 --- a/SimTracker/TrackerMaterialAnalysis/crab/merge.py +++ b/SimTracker/TrackerMaterialAnalysis/crab/merge.py @@ -1,4 +1,3 @@ -from __future__ import print_function #! /usr/bin/env cmsRun import glob import FWCore.ParameterSet.Config as cms diff --git a/SimTracker/TrackerMaterialAnalysis/python/trackingMaterialVarParsing.py b/SimTracker/TrackerMaterialAnalysis/python/trackingMaterialVarParsing.py index e433df593fba7..82003409b38e4 100644 --- a/SimTracker/TrackerMaterialAnalysis/python/trackingMaterialVarParsing.py +++ b/SimTracker/TrackerMaterialAnalysis/python/trackingMaterialVarParsing.py @@ -1,4 +1,3 @@ -from __future__ import print_function from FWCore.ParameterSet.VarParsing import VarParsing import sys diff --git a/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML.py b/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML.py index e26915fc2d290..2b7db9065d907 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML.py +++ b/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import argparse import os, sys import pprint diff --git a/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseI.py b/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseI.py index 7c9f2e64f43d2..5fc8cc79de81f 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseI.py +++ b/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseI.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import argparse import os, sys import pprint diff --git a/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseII.py b/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseII.py index fb0e95e47d59c..ba4ad9c8b4de4 100644 --- a/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseII.py +++ b/SimTracker/TrackerMaterialAnalysis/test/dumpFullXML_ForPhaseII.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import argparse import os, sys import pprint diff --git a/SimTracker/TrackerMaterialAnalysis/test/listGroups.py b/SimTracker/TrackerMaterialAnalysis/test/listGroups.py index d7c7fdac0e255..c236269013e42 100644 --- a/SimTracker/TrackerMaterialAnalysis/test/listGroups.py +++ b/SimTracker/TrackerMaterialAnalysis/test/listGroups.py @@ -1,4 +1,3 @@ -from __future__ import print_function #! /usr/bin/env cmsRun import sys diff --git a/SimTracker/TrackerMaterialAnalysis/test/listGroups_dd4hep.py b/SimTracker/TrackerMaterialAnalysis/test/listGroups_dd4hep.py index 08413d02d49bd..92efb1d14f5aa 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/listGroups_dd4hep.py +++ b/SimTracker/TrackerMaterialAnalysis/test/listGroups_dd4hep.py @@ -1,4 +1,3 @@ -from __future__ import print_function #! /usr/bin/env cmsRun import sys diff --git a/SimTracker/TrackerMaterialAnalysis/test/listIds_dd4hep.py b/SimTracker/TrackerMaterialAnalysis/test/listIds_dd4hep.py index d6587fdf379fb..d0357fa752ef7 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/listIds_dd4hep.py +++ b/SimTracker/TrackerMaterialAnalysis/test/listIds_dd4hep.py @@ -1,4 +1,3 @@ -from __future__ import print_function #! /usr/bin/env cmsRun import sys diff --git a/SimTracker/TrackerMaterialAnalysis/test/tools/dump.py b/SimTracker/TrackerMaterialAnalysis/test/tools/dump.py index 35ff0d5b80b00..6ee6840039858 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/tools/dump.py +++ b/SimTracker/TrackerMaterialAnalysis/test/tools/dump.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import sys import material diff --git a/SimTracker/TrackerMaterialAnalysis/test/tools/material.py b/SimTracker/TrackerMaterialAnalysis/test/tools/material.py index 254c2a2e98a9f..f76fc348779ac 100644 --- a/SimTracker/TrackerMaterialAnalysis/test/tools/material.py +++ b/SimTracker/TrackerMaterialAnalysis/test/tools/material.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import re import bisect diff --git a/SimTracker/TrackerMaterialAnalysis/test/tools/plot.py b/SimTracker/TrackerMaterialAnalysis/test/tools/plot.py index e8e1caec4b9cd..ff2c6bf73f08a 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/tools/plot.py +++ b/SimTracker/TrackerMaterialAnalysis/test/tools/plot.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import sys import material import ROOT diff --git a/SimTracker/TrackerMaterialAnalysis/test/tools/split.py b/SimTracker/TrackerMaterialAnalysis/test/tools/split.py index 7c372dab08649..ef3d3539e78e7 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/tools/split.py +++ b/SimTracker/TrackerMaterialAnalysis/test/tools/split.py @@ -1,6 +1,5 @@ #! /usr/bin/env python -from __future__ import print_function import sys import xml.dom from xml.dom import minidom diff --git a/TauAnalysis/MCEmbeddingTools/plugins/CaloCleaner.cc b/TauAnalysis/MCEmbeddingTools/plugins/CaloCleaner.cc index af279da3cc966..e8bccbf89b88a 100644 --- a/TauAnalysis/MCEmbeddingTools/plugins/CaloCleaner.cc +++ b/TauAnalysis/MCEmbeddingTools/plugins/CaloCleaner.cc @@ -60,7 +60,7 @@ void CaloCleaner::produce(edm::Event &iEvent, const edm::EventSetup &iSetup) } // Copy the old collection and correct if necessary - for (auto input_ : inputs_) { + for (const auto &input_ : inputs_) { std::unique_ptr recHitCollection_output(new RecHitCollection()); edm::Handle recHitCollection; iEvent.getByToken(input_.second, recHitCollection); diff --git a/TauAnalysis/MCEmbeddingTools/plugins/MuonDetCleaner.cc b/TauAnalysis/MCEmbeddingTools/plugins/MuonDetCleaner.cc index c315286497d1b..53b89b88f22fd 100644 --- a/TauAnalysis/MCEmbeddingTools/plugins/MuonDetCleaner.cc +++ b/TauAnalysis/MCEmbeddingTools/plugins/MuonDetCleaner.cc @@ -186,7 +186,7 @@ void MuonDetCleaner::produce(edm::Event &iEvent, edm::EventSetup const & vetoHits.erase(unique(vetoHits.begin(), vetoHits.end()), vetoHits.end()); // Now this can also handle different instance - for (auto input_ : inputs_) { + for (const auto &input_ : inputs_) { // Second read in the RecHit Colltection which is to be replaced, without the vetoRecHits typedef edm::Handle RecHitCollectionHandle; RecHitCollectionHandle RecHitinput; diff --git a/TauAnalysis/MCEmbeddingTools/plugins/TrackerCleaner.cc b/TauAnalysis/MCEmbeddingTools/plugins/TrackerCleaner.cc index d9a219a560fdf..fb1f537e45ed7 100644 --- a/TauAnalysis/MCEmbeddingTools/plugins/TrackerCleaner.cc +++ b/TauAnalysis/MCEmbeddingTools/plugins/TrackerCleaner.cc @@ -36,7 +36,7 @@ void TrackerCleaner::produce(edm::Event &iEvent, const edm::EventSetup &iSetu iEvent.getByToken(mu_input_, muonHandle); edm::View muons = *muonHandle; - for (auto input_ : inputs_) { + for (const auto &input_ : inputs_) { edm::Handle inputClusters; iEvent.getByToken(input_.second, inputClusters); diff --git a/TopQuarkAnalysis/Configuration/test/TestForTTGenEvents.py b/TopQuarkAnalysis/Configuration/test/TestForTTGenEvents.py index ed2c3344d6c7f..4a720b120ed3b 100644 --- a/TopQuarkAnalysis/Configuration/test/TestForTTGenEvents.py +++ b/TopQuarkAnalysis/Configuration/test/TestForTTGenEvents.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import FWCore.ParameterSet.VarParsing as VarParsing import sys diff --git a/TopQuarkAnalysis/Configuration/test/patRefSel_muJets_cfg.py b/TopQuarkAnalysis/Configuration/test/patRefSel_muJets_cfg.py index 7ad4d5c8dcc66..a0bf9c6f1507d 100644 --- a/TopQuarkAnalysis/Configuration/test/patRefSel_muJets_cfg.py +++ b/TopQuarkAnalysis/Configuration/test/patRefSel_muJets_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # As of 1 Feb 2017: # This configuration appears to be already broken in more # than one way. It fails to even run only under python. diff --git a/TopQuarkAnalysis/TopEventProducers/python/producers/TtDecaySelection_cfi.py b/TopQuarkAnalysis/TopEventProducers/python/producers/TtDecaySelection_cfi.py index 315384c3e4f22..50a6cfbb13f26 100644 --- a/TopQuarkAnalysis/TopEventProducers/python/producers/TtDecaySelection_cfi.py +++ b/TopQuarkAnalysis/TopEventProducers/python/producers/TtDecaySelection_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("*** Warning: TopQuarkAnalysis/TopEventProducers/python/producers/TtDecaySelection_cfi.py will be deprecated") print("*** Please use TopQuarkAnalysis/TopSkimming/python/TtDecayChannelFilter_cfi.py instead") print("*** (you can still use 'genEvent' instead of 'genParticles' as input)") diff --git a/TopQuarkAnalysis/TopEventProducers/python/sequences/ttGenEventFilters_cff.py b/TopQuarkAnalysis/TopEventProducers/python/sequences/ttGenEventFilters_cff.py index 499c6d05f2a16..c99e766a735aa 100644 --- a/TopQuarkAnalysis/TopEventProducers/python/sequences/ttGenEventFilters_cff.py +++ b/TopQuarkAnalysis/TopEventProducers/python/sequences/ttGenEventFilters_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("*** Warning: TopQuarkAnalysis/TopEventProducers/python/sequences/ttGenEventFilters_cff.py will be deprecated") print("*** Please use TopQuarkAnalysis/TopSkimming/python/ttDecayChannelFilters_cff.py instead") print("*** (you can still use 'genEvent' instead of 'genParticles' as input)") diff --git a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Fall11_cff.py b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Fall11_cff.py index 53f9b988a175c..ae23282ea5363 100644 --- a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Fall11_cff.py +++ b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Fall11_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.recoLayer0.stringResolutionProvider_cfi import * diff --git a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Spring10_cff.py b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Spring10_cff.py index 4917d9e82236c..47d6e76a3fcea 100644 --- a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Spring10_cff.py +++ b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Spring10_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.recoLayer0.stringResolutionProvider_cfi import * diff --git a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Summer11_cff.py b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Summer11_cff.py index 02309a27632d7..342068ee2e540 100644 --- a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Summer11_cff.py +++ b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_Summer11_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from PhysicsTools.PatAlgos.recoLayer0.stringResolutionProvider_cfi import * diff --git a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_cff.py b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_cff.py index 96b69ade57795..3a54a449d5d3b 100644 --- a/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_cff.py +++ b/TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("*** WARNING: The file TopQuarkAnalysis/TopObjectResolutions/python/stringResolutions_etEtaPhi_cff.py is outdated.") print("*** Please migrate to a more recent one (possibly found in the same directory).") diff --git a/TopQuarkAnalysis/TopSkimming/python/TtFullyHadronicFilter_cfi.py b/TopQuarkAnalysis/TopSkimming/python/TtFullyHadronicFilter_cfi.py index e63af98dfd1e5..e547e3c67344a 100644 --- a/TopQuarkAnalysis/TopSkimming/python/TtFullyHadronicFilter_cfi.py +++ b/TopQuarkAnalysis/TopSkimming/python/TtFullyHadronicFilter_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("*** Warning: TopQuarkAnalysis/TopSkimming/python/TtFullyHadronicFilter_cfi.py will be deprecated") print("*** Please use TopQuarkAnalysis/TopSkimming/python/TtDecayChannelFilter_cfi.py or") print("*** TopQuarkAnalysis/TopSkimming/python/ttDecayChannelFilter_cff.py instead") diff --git a/TopQuarkAnalysis/TopSkimming/python/TtFullyLeptonicFilter_cfi.py b/TopQuarkAnalysis/TopSkimming/python/TtFullyLeptonicFilter_cfi.py index 5f01118cffeed..6cdba727f0203 100644 --- a/TopQuarkAnalysis/TopSkimming/python/TtFullyLeptonicFilter_cfi.py +++ b/TopQuarkAnalysis/TopSkimming/python/TtFullyLeptonicFilter_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("*** Warning: TopQuarkAnalysis/TopSkimming/python/TtFullyLeptonicFilter_cfi.py will be deprecated") print("*** Please use TopQuarkAnalysis/TopSkimming/python/TtDecayChannelFilter_cfi.py or") print("*** TopQuarkAnalysis/TopSkimming/python/ttDecayChannelFilter_cff.py instead") diff --git a/TopQuarkAnalysis/TopSkimming/python/TtSemiLeptonicFilter_cfi.py b/TopQuarkAnalysis/TopSkimming/python/TtSemiLeptonicFilter_cfi.py index 5cef56ed3048f..34261dd65eaf6 100644 --- a/TopQuarkAnalysis/TopSkimming/python/TtSemiLeptonicFilter_cfi.py +++ b/TopQuarkAnalysis/TopSkimming/python/TtSemiLeptonicFilter_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function print("*** Warning: TopQuarkAnalysis/TopSkimming/python/TtSemiLeptonicFilter_cfi.py will be deprecated") print("*** Please use TopQuarkAnalysis/TopSkimming/python/TtDecayChannelFilter_cfi.py or") print("*** TopQuarkAnalysis/TopSkimming/python/ttDecayChannelFilter_cff.py instead") diff --git a/TrackPropagation/RungeKutta/test/findDiff.py b/TrackPropagation/RungeKutta/test/findDiff.py index 2d729a0d29a9c..4c4753be9e3d4 100644 --- a/TrackPropagation/RungeKutta/test/findDiff.py +++ b/TrackPropagation/RungeKutta/test/findDiff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys if len(sys.argv) !=3 : print("usage:" + sys.argv[0] + " bla bla") diff --git a/TrackingTools/TrajectoryParametrization/src/LocalTrajectoryError.cc b/TrackingTools/TrajectoryParametrization/src/LocalTrajectoryError.cc index 62d1a3b06baf2..cdef0daa71919 100644 --- a/TrackingTools/TrajectoryParametrization/src/LocalTrajectoryError.cc +++ b/TrackingTools/TrajectoryParametrization/src/LocalTrajectoryError.cc @@ -1,3 +1,5 @@ +#include + #include "TrackingTools/TrajectoryParametrization/interface/LocalTrajectoryError.h" #include "DataFormats/Math/interface/invertPosDefMatrix.h" #include "FWCore/Utilities/interface/Likely.h" @@ -13,7 +15,7 @@ LocalTrajectoryError::LocalTrajectoryError(float dx, float dy, float dxdir, floa const AlgebraicSymMatrix55& LocalTrajectoryError::weightMatrix() const { if UNLIKELY (theWeightMatrixPtr.get() == nullptr) { - theWeightMatrixPtr.reset(new AlgebraicSymMatrix55()); + theWeightMatrixPtr = std::make_shared(); invertPosDefMatrix(theCovarianceMatrix, *theWeightMatrixPtr); } return *theWeightMatrixPtr; diff --git a/Utilities/RelMon/python/authentication.py b/Utilities/RelMon/python/authentication.py index ab9016a80c1ac..ebb2c2b668514 100755 --- a/Utilities/RelMon/python/authentication.py +++ b/Utilities/RelMon/python/authentication.py @@ -1,4 +1,3 @@ -from __future__ import print_function ################################################################################ # RelMon: a tool for automatic Release Comparison # https://twiki.cern.ch/twiki/bin/view/CMSPublic/RelMon diff --git a/Utilities/RelMon/python/directories2html.py b/Utilities/RelMon/python/directories2html.py index c15509f4cf249..ca057a93d0de2 100755 --- a/Utilities/RelMon/python/directories2html.py +++ b/Utilities/RelMon/python/directories2html.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import ################################################################################ # RelMon: a tool for automatic Release Comparison # https://twiki.cern.ch/twiki/bin/view/CMSPublic/RelMon diff --git a/Utilities/RelMon/python/dirstructure.py b/Utilities/RelMon/python/dirstructure.py index a2b407d5aa159..8db7c18ddd60d 100755 --- a/Utilities/RelMon/python/dirstructure.py +++ b/Utilities/RelMon/python/dirstructure.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import ################################################################################ # RelMon: a tool for automatic Release Comparison # https://twiki.cern.ch/twiki/bin/view/CMSPublic/RelMon diff --git a/Utilities/RelMon/python/dqm_interfaces.py b/Utilities/RelMon/python/dqm_interfaces.py index 1a9ec54b08665..7684dad65a4fd 100755 --- a/Utilities/RelMon/python/dqm_interfaces.py +++ b/Utilities/RelMon/python/dqm_interfaces.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import ################################################################################ # RelMon: a tool for automatic Release Comparison # https://twiki.cern.ch/twiki/bin/view/CMSPublic/RelMon diff --git a/Utilities/RelMon/python/utils.py b/Utilities/RelMon/python/utils.py index 7010f9f1ba0e9..f05e032225b88 100755 --- a/Utilities/RelMon/python/utils.py +++ b/Utilities/RelMon/python/utils.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import ################################################################################ # RelMon: a tool for automatic Release Comparison # https://twiki.cern.ch/twiki/bin/view/CMSPublic/RelMon diff --git a/Utilities/RelMon/python/utils_v2.py b/Utilities/RelMon/python/utils_v2.py index 0313e592f0c62..2a4dcfc7dd238 100755 --- a/Utilities/RelMon/python/utils_v2.py +++ b/Utilities/RelMon/python/utils_v2.py @@ -5,8 +5,6 @@ Author: Albertas Gimbutas, Vilnius University (LT) e-mail: albertasgim@gmail.com ''' -from __future__ import print_function -from __future__ import absolute_import from builtins import range import sys import re diff --git a/Utilities/RelMon/python/web/app_utils.py b/Utilities/RelMon/python/web/app_utils.py index 964d0d0b90d2d..614466b6a88d2 100755 --- a/Utilities/RelMon/python/web/app_utils.py +++ b/Utilities/RelMon/python/web/app_utils.py @@ -6,7 +6,6 @@ Author: Albertas Gimbutas, Vilnius University (LT) e-mail: albertasgim@gmail.com ''' -from __future__ import print_function import sqlite3 import re diff --git a/Utilities/RelMon/python/web/browse_db.py b/Utilities/RelMon/python/web/browse_db.py index 9dac54a7cde10..fef11bc47fc0a 100755 --- a/Utilities/RelMon/python/web/browse_db.py +++ b/Utilities/RelMon/python/web/browse_db.py @@ -8,7 +8,6 @@ Author: Albertas Gimbutas, Vilnius University (LT) e-mail: albertasgim@gmail.com ''' -from __future__ import absolute_import import cherrypy as cpy import sqlite3 from os.path import isfile diff --git a/Utilities/RelMon/python/web/dbfile2html.py b/Utilities/RelMon/python/web/dbfile2html.py index 7a8f12f9fd443..536808aed9346 100755 --- a/Utilities/RelMon/python/web/dbfile2html.py +++ b/Utilities/RelMon/python/web/dbfile2html.py @@ -7,8 +7,6 @@ Author: Albertas Gimbutas, Vilnius University (LT) e-mail: albertasgim@gmail.com ''' -from __future__ import absolute_import -from __future__ import print_function import sqlite3 import re from os import listdir, makedirs, getcwd diff --git a/Utilities/RelMon/scripts/ValidationMatrix.py b/Utilities/RelMon/scripts/ValidationMatrix.py index d4c1087b71f2e..e5590e965fdbf 100755 --- a/Utilities/RelMon/scripts/ValidationMatrix.py +++ b/Utilities/RelMon/scripts/ValidationMatrix.py @@ -9,7 +9,6 @@ # ################################################################################ -from __future__ import print_function from builtins import range from optparse import OptionParser diff --git a/Utilities/RelMon/scripts/ValidationMatrix_v2.py b/Utilities/RelMon/scripts/ValidationMatrix_v2.py index c7ac7e9359797..6375010790465 100755 --- a/Utilities/RelMon/scripts/ValidationMatrix_v2.py +++ b/Utilities/RelMon/scripts/ValidationMatrix_v2.py @@ -9,7 +9,6 @@ Note: default Pool size for file comparison is 7. Note: did NOT finish static HTML generation implementation. """ -from __future__ import print_function import sqlite3 from datetime import datetime from multiprocessing import Pool, Queue, Process diff --git a/Utilities/RelMon/scripts/compare_using_db.py b/Utilities/RelMon/scripts/compare_using_db.py index 04980a1586190..9a700432d6c16 100755 --- a/Utilities/RelMon/scripts/compare_using_db.py +++ b/Utilities/RelMon/scripts/compare_using_db.py @@ -9,7 +9,6 @@ # ################################################################################ -from __future__ import print_function from sys import argv,exit from optparse import OptionParser import cPickle diff --git a/Utilities/RelMon/scripts/compare_using_files.py b/Utilities/RelMon/scripts/compare_using_files.py index bd906c1d5fb0f..9c596b506ae91 100755 --- a/Utilities/RelMon/scripts/compare_using_files.py +++ b/Utilities/RelMon/scripts/compare_using_files.py @@ -9,7 +9,6 @@ ################################################################################ -from __future__ import print_function def getInfoFromFilename(filename): prefix,sample,cmssw_release,tier = filename[:-5].split("__")[:5] run=int(prefix.split("_")[-1][1:]) diff --git a/Utilities/RelMon/scripts/compare_using_files_v2.py b/Utilities/RelMon/scripts/compare_using_files_v2.py index f8986d92d9469..5d7fe71dbabdb 100755 --- a/Utilities/RelMon/scripts/compare_using_files_v2.py +++ b/Utilities/RelMon/scripts/compare_using_files_v2.py @@ -8,7 +8,6 @@ Note: balcklist support not implemented. """ -from __future__ import print_function import sys import sqlite3 from datetime import datetime diff --git a/Utilities/RelMon/scripts/dir2webdir.py b/Utilities/RelMon/scripts/dir2webdir.py index 3cf9bba97aa51..8d071332c8d54 100755 --- a/Utilities/RelMon/scripts/dir2webdir.py +++ b/Utilities/RelMon/scripts/dir2webdir.py @@ -13,7 +13,6 @@ # ################################################################################ -from __future__ import print_function htaccess_content=""" RewriteEngine on diff --git a/Utilities/RelMon/scripts/dqm_diff.py b/Utilities/RelMon/scripts/dqm_diff.py index 010e0cba7f895..3d6518f41894c 100644 --- a/Utilities/RelMon/scripts/dqm_diff.py +++ b/Utilities/RelMon/scripts/dqm_diff.py @@ -5,7 +5,6 @@ Author: Albertas Gimbutas, Vilnius University (LT) e-mail: albertasgim@gmail.com ''' -from __future__ import print_function from datetime import datetime, timedelta from optparse import OptionParser diff --git a/Utilities/RelMon/scripts/fetchall_from_DQM.py b/Utilities/RelMon/scripts/fetchall_from_DQM.py index bb13f42b5a59b..1092381c9f8c5 100755 --- a/Utilities/RelMon/scripts/fetchall_from_DQM.py +++ b/Utilities/RelMon/scripts/fetchall_from_DQM.py @@ -9,7 +9,6 @@ # ################################################################################ -from __future__ import print_function import subprocess as sub import sys from optparse import OptionParser diff --git a/Utilities/RelMon/scripts/fetchall_from_DQM_v2.py b/Utilities/RelMon/scripts/fetchall_from_DQM_v2.py index f4a2c2401d586..0f86c4fc7a2b2 100755 --- a/Utilities/RelMon/scripts/fetchall_from_DQM_v2.py +++ b/Utilities/RelMon/scripts/fetchall_from_DQM_v2.py @@ -5,7 +5,6 @@ Author: Albertas Gimbutas, Vilnius University (LT) e-mail: albertasgim@gmail.com ''' -from __future__ import print_function ################################################################################ # Change logs: # 2012-10-22 11:31 - Checking to Download also files <1MB (like GEN samples) diff --git a/Utilities/RelMon/scripts/relmon_authenticated_wget.py b/Utilities/RelMon/scripts/relmon_authenticated_wget.py index f5c7c28f7b99a..0ba2beda313d1 100755 --- a/Utilities/RelMon/scripts/relmon_authenticated_wget.py +++ b/Utilities/RelMon/scripts/relmon_authenticated_wget.py @@ -9,7 +9,6 @@ # ################################################################################ -from __future__ import print_function from sys import argv,exit from utils import wget diff --git a/Utilities/RelMon/scripts/relmon_rootfiles_spy.py b/Utilities/RelMon/scripts/relmon_rootfiles_spy.py index e53802291fe41..d6ea24bba0319 100755 --- a/Utilities/RelMon/scripts/relmon_rootfiles_spy.py +++ b/Utilities/RelMon/scripts/relmon_rootfiles_spy.py @@ -12,7 +12,6 @@ """ Just a draft of the real program...It is very ugly still. """ -from __future__ import print_function from os.path import basename diff --git a/Utilities/ReleaseScripts/data/edmScanValgrind.py b/Utilities/ReleaseScripts/data/edmScanValgrind.py index 3d06ac5f448d7..7148383f488aa 100755 --- a/Utilities/ReleaseScripts/data/edmScanValgrind.py +++ b/Utilities/ReleaseScripts/data/edmScanValgrind.py @@ -1,5 +1,4 @@ #!/bin/env python -from __future__ import print_function import sys fileName = sys.argv[1] diff --git a/Utilities/ReleaseScripts/python/cmsCodeRules/Formatter.py b/Utilities/ReleaseScripts/python/cmsCodeRules/Formatter.py index 2e2a520c8cdf9..893119f63d566 100644 --- a/Utilities/ReleaseScripts/python/cmsCodeRules/Formatter.py +++ b/Utilities/ReleaseScripts/python/cmsCodeRules/Formatter.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os, sys, string from xml.parsers import expat diff --git a/Utilities/ReleaseScripts/python/cmsCodeRules/cppFunctionSkipper.py b/Utilities/ReleaseScripts/python/cmsCodeRules/cppFunctionSkipper.py index 304e0b2707a83..0784887260d35 100644 --- a/Utilities/ReleaseScripts/python/cmsCodeRules/cppFunctionSkipper.py +++ b/Utilities/ReleaseScripts/python/cmsCodeRules/cppFunctionSkipper.py @@ -1,4 +1,3 @@ -from __future__ import print_function from builtins import range __author__="Aurelija" __date__ ="$2010-09-23 15.00.20$" diff --git a/Utilities/ReleaseScripts/python/cmsCodeRules/pickleFileCreater.py b/Utilities/ReleaseScripts/python/cmsCodeRules/pickleFileCreater.py index bc2dbdf287a1d..e04c5929ea4a5 100644 --- a/Utilities/ReleaseScripts/python/cmsCodeRules/pickleFileCreater.py +++ b/Utilities/ReleaseScripts/python/cmsCodeRules/pickleFileCreater.py @@ -1,4 +1,3 @@ -from __future__ import print_function __author__="Aurelija" __date__ ="$2010-07-26 12.51.12$" diff --git a/Utilities/ReleaseScripts/python/cmsCodeRules/showPage.py b/Utilities/ReleaseScripts/python/cmsCodeRules/showPage.py index 58ad0b9b11edf..ec3b82e3a125c 100755 --- a/Utilities/ReleaseScripts/python/cmsCodeRules/showPage.py +++ b/Utilities/ReleaseScripts/python/cmsCodeRules/showPage.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range __author__="Aurelija" __date__ ="$2010-08-12 10.50.40$" diff --git a/Utilities/ReleaseScripts/python/commentSkipper/commentSkipper.py b/Utilities/ReleaseScripts/python/commentSkipper/commentSkipper.py index 01f11bccf5e06..8c9293e8b6dd5 100644 --- a/Utilities/ReleaseScripts/python/commentSkipper/commentSkipper.py +++ b/Utilities/ReleaseScripts/python/commentSkipper/commentSkipper.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import __author__="Aurelija" __date__ ="$2010-08-09 14.23.54$" diff --git a/Utilities/ReleaseScripts/scripts/MakeBuildSet b/Utilities/ReleaseScripts/scripts/MakeBuildSet index 3fe59469acb5c..36632ece1f1ac 100755 --- a/Utilities/ReleaseScripts/scripts/MakeBuildSet +++ b/Utilities/ReleaseScripts/scripts/MakeBuildSet @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function #pylint: disable-msg=W0403 """ MakeBuildSet - utilizes dependency discovery mechanism for Partial Releases. diff --git a/Utilities/ReleaseScripts/scripts/addOnTests.py b/Utilities/ReleaseScripts/scripts/addOnTests.py index 68bc1f9176d4e..a7f50edce7da5 100755 --- a/Utilities/ReleaseScripts/scripts/addOnTests.py +++ b/Utilities/ReleaseScripts/scripts/addOnTests.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import os import time diff --git a/Utilities/ReleaseScripts/scripts/cmsCodeRulesChecker.py b/Utilities/ReleaseScripts/scripts/cmsCodeRulesChecker.py index 276b8c956e66d..37b92272c16bc 100755 --- a/Utilities/ReleaseScripts/scripts/cmsCodeRulesChecker.py +++ b/Utilities/ReleaseScripts/scripts/cmsCodeRulesChecker.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range __author__="Aurelija" __date__ ="$2010-07-14 16.48.55$" diff --git a/Utilities/ReleaseScripts/scripts/duplicateReflexLibrarySearch.py b/Utilities/ReleaseScripts/scripts/duplicateReflexLibrarySearch.py index 494c2146c5d7d..bed28cfebde3d 100755 --- a/Utilities/ReleaseScripts/scripts/duplicateReflexLibrarySearch.py +++ b/Utilities/ReleaseScripts/scripts/duplicateReflexLibrarySearch.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import optparse import os import re @@ -72,12 +71,12 @@ {'PhysicsToolsObjects' : ['PhysicsTools::Calibration']}, {'TrackReco' : ['reco::Track','reco::TrackRef']}, {'VertexReco' : ['reco::Vertex']}, - {'TFWLiteSelectorTest' : ['tfwliteselectortest']}, {'TauReco' : ['reco::PFJetRef']}, {'JetReco' : ['reco::.*Jet','reco::.*Jet(Collection|Ref)']}, {'HGCDigi' : ['HGCSample']}, {'HGCRecHit' : ['constHGCRecHit','HGCRecHit']}, {'SiPixelObjects' : ['SiPixelQuality.*']}, + {'EcalRecHit' : ['EcalRecHitSoA.*']}, ] ignoreEdmDP = { diff --git a/Utilities/ReleaseScripts/scripts/storeTreeInfo.py b/Utilities/ReleaseScripts/scripts/storeTreeInfo.py index ad11a32be6ddf..1089a82dd72b8 100755 --- a/Utilities/ReleaseScripts/scripts/storeTreeInfo.py +++ b/Utilities/ReleaseScripts/scripts/storeTreeInfo.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import os, sys, stat from operator import itemgetter diff --git a/Utilities/ReleaseScripts/scripts/ws_sso_content_reader.py b/Utilities/ReleaseScripts/scripts/ws_sso_content_reader.py index 3fbb334381735..0d84e569f1a57 100755 --- a/Utilities/ReleaseScripts/scripts/ws_sso_content_reader.py +++ b/Utilities/ReleaseScripts/scripts/ws_sso_content_reader.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 ###Description: The tool reads cern web services behind SSO using user certificates -from __future__ import print_function import os, urllib, urllib2, httplib, cookielib, sys, HTMLParser, re from optparse import OptionParser diff --git a/Utilities/ReleaseScripts/test/BuildFile.xml b/Utilities/ReleaseScripts/test/BuildFile.xml index cb3a56d1959ad..3107c6ccb9ac9 100644 --- a/Utilities/ReleaseScripts/test/BuildFile.xml +++ b/Utilities/ReleaseScripts/test/BuildFile.xml @@ -4,6 +4,10 @@ + + + + diff --git a/Utilities/ReleaseScripts/test/ref/test-clang-tidy.cc b/Utilities/ReleaseScripts/test/ref/test-clang-tidy.cc new file mode 100644 index 0000000000000..a8f1a68a9483d --- /dev/null +++ b/Utilities/ReleaseScripts/test/ref/test-clang-tidy.cc @@ -0,0 +1,31 @@ +class BaseClass { +public: + BaseClass(int x) { + m_x = x; + ch = nullptr; + }; + virtual ~BaseClass(); + virtual int someMethod(); + +protected: + int m_x; + char* ch; +}; + +BaseClass::~BaseClass() { + if (ch != nullptr) { + delete ch; + ch = nullptr; + } +} +int BaseClass::someMethod() { return m_x; } + +class DrivedClass : public BaseClass { +public: + DrivedClass(int x) : BaseClass(x) {}; + ~DrivedClass() override; + int someMethod() override; +}; + +DrivedClass::~DrivedClass() {} +int DrivedClass::someMethod() { return m_x * 2; } diff --git a/Utilities/ReleaseScripts/test/test-clang-tidy.cc b/Utilities/ReleaseScripts/test/test-clang-tidy.cc index 2debbccc9acdc..9c5cdb62cfb21 100644 --- a/Utilities/ReleaseScripts/test/test-clang-tidy.cc +++ b/Utilities/ReleaseScripts/test/test-clang-tidy.cc @@ -22,7 +22,7 @@ int BaseClass::someMethod() { return m_x; } class DrivedClass : public BaseClass { public: - DrivedClass(int x) : BaseClass(x){}; + DrivedClass(int x) : BaseClass(x) {}; virtual ~DrivedClass(); virtual int someMethod(); }; diff --git a/Utilities/ReleaseScripts/test/test-clang-tidy.cc.yaml b/Utilities/ReleaseScripts/test/test-clang-tidy.cc.yaml index 462d9fd109097..cbcbdf4830446 100644 --- a/Utilities/ReleaseScripts/test/test-clang-tidy.cc.yaml +++ b/Utilities/ReleaseScripts/test/test-clang-tidy.cc.yaml @@ -35,28 +35,28 @@ Diagnostics: DiagnosticMessage: Message: 'prefer using ''override'' or (rarely) ''final'' instead of ''virtual''' FilePath: 'Utilities/ReleaseScripts/test/test-clang-tidy.cc' - FileOffset: 385 + FileOffset: 386 Replacements: - FilePath: 'Utilities/ReleaseScripts/test/test-clang-tidy.cc' - Offset: 377 + Offset: 378 Length: 8 ReplacementText: '' - FilePath: 'Utilities/ReleaseScripts/test/test-clang-tidy.cc' - Offset: 399 + Offset: 400 Length: 0 ReplacementText: ' override' - DiagnosticName: modernize-use-override DiagnosticMessage: Message: 'prefer using ''override'' or (rarely) ''final'' instead of ''virtual''' FilePath: 'Utilities/ReleaseScripts/test/test-clang-tidy.cc' - FileOffset: 415 + FileOffset: 416 Replacements: - FilePath: 'Utilities/ReleaseScripts/test/test-clang-tidy.cc' - Offset: 403 + Offset: 404 Length: 8 ReplacementText: '' - FilePath: 'Utilities/ReleaseScripts/test/test-clang-tidy.cc' - Offset: 427 + Offset: 428 Length: 0 ReplacementText: ' override' ... diff --git a/Utilities/ReleaseScripts/test/test-scram-code-checks.sh b/Utilities/ReleaseScripts/test/test-scram-code-checks.sh new file mode 100755 index 0000000000000..351697b774eba --- /dev/null +++ b/Utilities/ReleaseScripts/test/test-scram-code-checks.sh @@ -0,0 +1,38 @@ +#!/bin/bash -ex + +ORIG_TEST_PATH=$SCRAM_TEST_PATH +scram project $CMSSW_VERSION +cd $CMSSW_VERSION + +#Get FWCore/Version +mkdir src/FWCore +RefDir=$CMSSW_BASE/src/FWCore/Version +[ -e $RefDir ] || RefDir=$CMSSW_RELEASE_BASE/src/FWCore/Version +rsync -a --no-g $RefDir/ src/FWCore/Version/ +chmod -R u+w src/FWCore/Version + +#Get latest clang-tidy and format files +RefDir=$CMSSW_BASE/src +[ -e ${RefDir}/.clang-tidy ] || RefDir=$CMSSW_RELEASE_BASE/src +cp ${RefDir}/.clang-tidy src/ +cp ${RefDir}/.clang-format src/ + +#Get latest build rules +rm -rf config/SCRAM +rsync -a $CMSSW_BASE/config/SCRAM/ config/SCRAM/ + +#Make sure external release external lib/bin are in env +chmod a-x config/SCRAM/hooks/runtime/50-remove-release-external-lib + +#Test clang-tidy +cp $ORIG_TEST_PATH/test-clang-tidy.cc src/FWCore/Version/src +USER_CODE_CHECKS_FILES=src/FWCore/Version/src/test-clang-tidy.cc scram b code-checks +diff -u src/FWCore/Version/src/test-clang-tidy.cc $ORIG_TEST_PATH/ref/test-clang-tidy.cc +cp $ORIG_TEST_PATH/test-clang-tidy.cc src/FWCore/Version/src +scram b code-checks-all +diff -u src/FWCore/Version/src/test-clang-tidy.cc $ORIG_TEST_PATH/ref/test-clang-tidy.cc + +#Test clang-format +sed -i -e 's|int m_x| int m_x |' src/FWCore/Version/src/test-clang-tidy.cc +USER_CODE_FORMAT_FILES=src/FWCore/Version/src/test-clang-tidy.cc scram b code-format +diff -u src/FWCore/Version/src/test-clang-tidy.cc $ORIG_TEST_PATH/ref/test-clang-tidy.cc diff --git a/Utilities/StaticAnalyzers/CMakeLists.txt b/Utilities/StaticAnalyzers/CMakeLists.txt deleted file mode 100644 index a9dbfc3a067ac..0000000000000 --- a/Utilities/StaticAnalyzers/CMakeLists.txt +++ /dev/null @@ -1,132 +0,0 @@ - -cmake_minimum_required (VERSION 2.6) -project (clang_cms) - -set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) -set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib ) -set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib ) - -# set your llvm/clang paths here -set (LLVM_SRC_DIR ../llvm) -set (LLVM_SRC_BUILD_DIR ../build) -set (LLVM_BIN_BUILD_DIR ${LLVM_SRC_BUILD_DIR}/Release+Asserts) - - -# the rest should work automatically - -# assumes for clang to be under llvm/tools/, as suggested by the clang website -# http://clang.llvm.org/get_started.html#build -set (CLANG_SRC_DIR ${LLVM_SRC_DIR}/tools/clang) -set (CLANG_BUILD_DIR ${LLVM_SRC_BUILD_DIR}/tools/clang) - -add_definitions (-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS) -add_definitions (-D_GNU_SOURCE -DHAVE_CLANG_CONFIG_H) - -# omit reports for some CMS specific cases -add_definitions ( -DTHREAD_CHECKS_USE_CMS_EXCEPTIONS ) - -# omit reports found in the system headers -add_definitions ( -DTHREAD_CHECKS_NO_REPORT_SYSTEM ) - - -# this sets up the devel clang as our compiler -set (CMAKE_CXX_COMPILER "${LLVM_BIN_BUILD_DIR}/bin/clang++") -set (CMAKE_CC_COMPILER "${LLVM_BIN_BUILD_DIR}/bin/clang") - -set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -fno-exceptions -fno-rtti") - -set (CMAKE_MODULE_LINKER_FLAGS "-Wl,-flat_namespace -Wl,-undefined -Wl,suppress") - -# not used because they will be available anyhow if the plugin is loaded into a clang host application -set (LLVM_LIBS -# LLVMJIT -# LLVMX86CodeGen -# LLVMX86AsmParser -# LLVMX86Disassembler -# LLVMExecutionEngine -# LLVMAsmPrinter -# LLVMSelectionDAG -# LLVMX86AsmPrinter -# LLVMX86Info -# LLVMMCParser -# LLVMCodeGen -# LLVMX86Utils -# LLVMScalarOpts -# LLVMInstCombine -# LLVMTransformUtils -# LLVMipa -# LLVMAnalysis -# LLVMTarget -# LLVMCore -# LLVMMC -# LLVMSupport -) - - -macro(add_clang_plugin name) - set (srcs ${ARGN}) - - include_directories( "${LLVM_SRC_DIR}/include" - "${LLVM_SRC_BUILD_DIR}/include" - "${CLANG_SRC_DIR}/include" - "${CLANG_BUILD_DIR}/include" ) - link_directories( "${LLVM_BUILD_DIR}/lib" ) - - add_library( ${name} SHARED ${srcs} ) - - if (SYMBOL_FILE) - set_target_properties( ${name} PROPERTIES LINK_FlAGS - "-exported_symbols_list ${SYMBOL_FILE}") - endif() - - foreach (clang_lib ${CLANG_LIBS}) - target_link_libraries( ${name} ${clang_lib} ) - endforeach() - - foreach (llvm_lib ${LLVM_LIBS}) - target_link_libraries( ${name} ${llvm_lib} ) - endforeach() - - foreach (user_lib ${USER_LIBS}) - target_link_libraries( ${name} ${user_lib} ) - endforeach() - - set_target_properties( ${name} PROPERTIES - LINKER_LANGUAGE CXX - PREFIX "") -endmacro(add_clang_plugin) - -# not used because they will be available anyhow if the plugin is loaded into a clang host application -set (CLANG_LIBS -# clang -# clangFrontend -# clangAST -# clangAnalysis -# clangBasic -# clangCodeGen -# clangDriver -# clangFrontendTool -# clangLex -# clangParse -# clangRewrite -# clangSema -# clangSerialization -# clangStaticAnalyzerCheckers -# clangStaticAnalyzerCore -# clangStaticAnalyzerFrontend -) - -set (USER_LIBS - pthread -) - -add_clang_plugin( ClangCms - src/ClangCmsCheckerPluginRegister.cpp - src/CmsException.cpp - src/ConstCastChecker.cpp - src/ConstCastAwayChecker.cpp - src/StaticLocalChecker.cpp - src/GlobalStaticChecker.cpp - src/MutableMemberChecker.cpp) - - diff --git a/Utilities/StaticAnalyzers/scripts/callgraph.py b/Utilities/StaticAnalyzers/scripts/callgraph.py index c66564cec746e..c1be9f7302f04 100755 --- a/Utilities/StaticAnalyzers/scripts/callgraph.py +++ b/Utilities/StaticAnalyzers/scripts/callgraph.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import networkx as nx import re import json diff --git a/Utilities/StaticAnalyzers/scripts/class-composition.py b/Utilities/StaticAnalyzers/scripts/class-composition.py index 91fa81cca0ef9..07059c9b04236 100755 --- a/Utilities/StaticAnalyzers/scripts/class-composition.py +++ b/Utilities/StaticAnalyzers/scripts/class-composition.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import networkx as nx import re stdcl = re.compile("^std::(.*)[^>]$") diff --git a/Utilities/StaticAnalyzers/scripts/data-class-funcs.py b/Utilities/StaticAnalyzers/scripts/data-class-funcs.py index 2fb8581cf96b7..106e22a34a32b 100755 --- a/Utilities/StaticAnalyzers/scripts/data-class-funcs.py +++ b/Utilities/StaticAnalyzers/scripts/data-class-funcs.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import fileinput import networkx as nx import re diff --git a/Utilities/StaticAnalyzers/scripts/edm-global-class.py b/Utilities/StaticAnalyzers/scripts/edm-global-class.py index 32968f024c713..716f971cc94af 100755 --- a/Utilities/StaticAnalyzers/scripts/edm-global-class.py +++ b/Utilities/StaticAnalyzers/scripts/edm-global-class.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import fileinput import networkx as nx import re diff --git a/Utilities/StaticAnalyzers/scripts/statics.py b/Utilities/StaticAnalyzers/scripts/statics.py index 43fc513ad2579..a598914705334 100755 --- a/Utilities/StaticAnalyzers/scripts/statics.py +++ b/Utilities/StaticAnalyzers/scripts/statics.py @@ -1,5 +1,4 @@ #! /usr/bin/env python3 -from __future__ import print_function import fileinput import networkx as nx from builtins import range diff --git a/Utilities/StaticAnalyzers/scripts/symbols.py b/Utilities/StaticAnalyzers/scripts/symbols.py index f1d301c28afd5..8becbf0f6d97f 100755 --- a/Utilities/StaticAnalyzers/scripts/symbols.py +++ b/Utilities/StaticAnalyzers/scripts/symbols.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import networkx as nx import collections import os diff --git a/Utilities/StaticAnalyzers/src/ClangCmsCheckerPluginRegister.cpp b/Utilities/StaticAnalyzers/src/ClangCmsCheckerPluginRegister.cpp index 83d58fb92e349..94aef4d05c111 100644 --- a/Utilities/StaticAnalyzers/src/ClangCmsCheckerPluginRegister.cpp +++ b/Utilities/StaticAnalyzers/src/ClangCmsCheckerPluginRegister.cpp @@ -9,7 +9,7 @@ #include "ConstCastAwayChecker.h" #include "GlobalStaticChecker.h" #include "StaticLocalChecker.h" -#include "MutableMemberChecker.h" +#include "MutableMemberModificationChecker.h" #include "ClassChecker.h" #include "ClassDumper.h" #include "edmChecker.h" @@ -24,6 +24,8 @@ #include "ThrUnsafeFCallChecker.h" #include "ESRecordGetChecker.h" #include "PsetExistsFCallChecker.h" +#include "PublicMutableChecker.h" +#include "UnnecessaryMutableChecker.h" #include @@ -46,9 +48,9 @@ extern "C" void clang_registerCheckers(clang::ento::CheckerRegistry ®istry) { "threadsafety.StaticLocal", "Checks for non-const method local statics which might not be thread-safe", "no docs"); - registry.addChecker( + registry.addChecker( "threadsafety.MutableMember", - "Checks for members with the mutable keyword which might not be thread-safe", + "Checks for modifying members with the mutable keyword in const member functions, which might not be thread-safe", "no docs"); registry.addChecker( "threadsafety.GlobalStatic", "Checks for global non-const statics which might not be thread-safe", "no docs"); @@ -91,6 +93,12 @@ extern "C" void clang_registerCheckers(clang::ento::CheckerRegistry ®istry) { "optional.EDMPluginDumper", "Dumps macro DEFINE_EDM_PLUGIN types", "no docs"); registry.addChecker( "threadsafety.ThrUnsafeFCallChecker", "Reports calls of known thread unsafe functions", "no docs"); + registry.addChecker( + "threadsafety.PublicMutableMember", "Checks for non-private mutable member", "no docs"); + registry.addChecker( + "cms.CodeRules.UnnecessaryMutableChecker", + "Checks for mutable members that are not modified in any const method", + "no focs"); } extern "C" const char clang_analyzerAPIVersionString[] = CLANG_ANALYZER_API_VERSION_STRING; diff --git a/Utilities/StaticAnalyzers/src/CmsException.cpp b/Utilities/StaticAnalyzers/src/CmsException.cpp index 0868a8b3f68a5..da332f7998b0e 100644 --- a/Utilities/StaticAnalyzers/src/CmsException.cpp +++ b/Utilities/StaticAnalyzers/src/CmsException.cpp @@ -11,7 +11,11 @@ namespace clangcms { bool CmsException::reportGeneral(clang::ento::PathDiagnosticLocation const& path, clang::ento::BugReporter& BR) const { - const char* sfile = BR.getSourceManager().getPresumedLoc(path.asLocation()).getFilename(); + const auto Loc = path.asLocation(); + if (!Loc.isValid()) { + return false; + } + const char* sfile = BR.getSourceManager().getPresumedLoc(Loc).getFilename(); if ((!sfile) || (!support::isCmsLocalFile(sfile))) return false; return true; @@ -37,7 +41,7 @@ namespace clangcms { return reportGeneral(path, BR); } - bool CmsException::reportMutableMember(clang::QualType const& t, + bool CmsException::reportMutableMember(/*clang::QualType const& t,*/ clang::ento::PathDiagnosticLocation const& path, clang::ento::BugReporter& BR) const { return reportGeneral(path, BR); diff --git a/Utilities/StaticAnalyzers/src/CmsException.h b/Utilities/StaticAnalyzers/src/CmsException.h index 48cef212af091..d439d40408f74 100644 --- a/Utilities/StaticAnalyzers/src/CmsException.h +++ b/Utilities/StaticAnalyzers/src/CmsException.h @@ -26,7 +26,7 @@ namespace clangcms { clang::ento::PathDiagnosticLocation const& path, clang::ento::BugReporter& BR) const; - bool reportMutableMember(clang::QualType const& t, + bool reportMutableMember(/*clang::QualType const& t,*/ clang::ento::PathDiagnosticLocation const& path, clang::ento::BugReporter& BR) const; bool reportClass(clang::ento::PathDiagnosticLocation const& path, clang::ento::BugReporter& BR) const; diff --git a/Utilities/StaticAnalyzers/src/CmsSupport.cpp b/Utilities/StaticAnalyzers/src/CmsSupport.cpp index 30c703657093a..5b0375276d98d 100644 --- a/Utilities/StaticAnalyzers/src/CmsSupport.cpp +++ b/Utilities/StaticAnalyzers/src/CmsSupport.cpp @@ -246,3 +246,42 @@ void clangcms::support::fixAnonNS(std::string &name, const char *fname) { } return; } + +bool clangcms::support::isStdAtomic(const clang::FieldDecl *fieldDecl) { + if (!fieldDecl) + return false; + + // Get the type of the field + clang::QualType fieldType = fieldDecl->getType(); + + // Resolve any typedefs or aliases to get the canonical type + fieldType = fieldType.getCanonicalType(); + + // Check if the type is a record type (class/struct) + if (const clang::RecordType *recordType = fieldType->getAs()) { + const clang::CXXRecordDecl *recordDecl = clang::dyn_cast(recordType->getDecl()); + if (!recordDecl) + return false; + + // Check if the record is a class template specialization + if (const clang::ClassTemplateSpecializationDecl *specDecl = + clang::dyn_cast(recordDecl)) { + const clang::TemplateDecl *templateDecl = specDecl->getSpecializedTemplate(); + if (!templateDecl) + return false; + + // Check if the template name matches "atomic" + const std::string templateName = templateDecl->getNameAsString(); + if (templateName == "atomic") { + // Further check if it's in the "std" namespace + const clang::NamespaceDecl *namespaceDecl = + clang::dyn_cast(templateDecl->getDeclContext()); + if (namespaceDecl && namespaceDecl->getNameAsString() == "std") { + return true; + } + } + } + } + + return false; +} diff --git a/Utilities/StaticAnalyzers/src/CmsSupport.h b/Utilities/StaticAnalyzers/src/CmsSupport.h index 5edf69fa02b7c..fd6f10ef1aa6f 100644 --- a/Utilities/StaticAnalyzers/src/CmsSupport.h +++ b/Utilities/StaticAnalyzers/src/CmsSupport.h @@ -48,7 +48,7 @@ namespace clangcms { bool isKnownThrUnsafeFunc(const std::string &name); void writeLog(const std::string &ostring, const std::string &tfstring); void fixAnonNS(std::string &name, const char *fname); + bool isStdAtomic(const clang::FieldDecl *fieldDecl); } // namespace support } // namespace clangcms - #endif diff --git a/Utilities/StaticAnalyzers/src/MutableMemberModificationChecker.cpp b/Utilities/StaticAnalyzers/src/MutableMemberModificationChecker.cpp new file mode 100644 index 0000000000000..688897abcf932 --- /dev/null +++ b/Utilities/StaticAnalyzers/src/MutableMemberModificationChecker.cpp @@ -0,0 +1,198 @@ +//== MutableMemberModificationChecker.cpp - Checks for accessing mutable members via const pointer --------------*- C++ -*--==// +// +// By Thomas Hauth [ Thomas.Hauth@cern.ch ], updated by Ivan Razumov +// +//===----------------------------------------------------------------------===// + +#include "MutableMemberModificationChecker.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace clangcms { + void MutableMemberModificationChecker::checkPreStmt(const clang::MemberExpr *ME, + clang::ento::CheckerContext &C) const { + // Common checks + + // == Filter out classes with "safe" names == + const auto *RD = llvm::dyn_cast(ME->getMemberDecl()->getDeclContext()); + if (RD) { + std::string ClassName = RD->getNameAsString(); + if (support::isSafeClassName(ClassName)) { + return; // Skip checking for this class + } + } + + // == Check attributes == + const clang::FunctionDecl *FuncD = C.getLocationContext()->getStackFrame()->getDecl()->getAsFunction(); + const clang::AttrVec &Attrs = FuncD->getAttrs(); + for (const auto *A : Attrs) { + if (clang::isa(A) || clang::isa(A) || + clang::isa(A)) { + return; + } + } + + // == Check if this is a cmssw local file == + // Create a PathDiagnosticLocation for reporting + clang::ento::PathDiagnosticLocation PathLoc = + clang::ento::PathDiagnosticLocation::createBegin(ME, C.getSourceManager(), C.getLocationContext()); + + // Get the BugReporter instance from the CheckerContext + clang::ento::BugReporter &BR = C.getBugReporter(); + + if (!m_exception.reportMutableMember(PathLoc, BR)) { + return; + } + + // == Only proceed if the member is mutable == + const auto *FD = llvm::dyn_cast(ME->getMemberDecl()); + if (!FD || !FD->isMutable()) { + return; // Skip if it's not a mutable field + } + + // == Skip non-private mutables, we deal with them elsewhere + if (FD->getAccess() != clang::AS_private) { + return; + } + + // == Skip atomic mutables, these are thread-safe by design == + if (support::isStdAtomic(FD)) { + return; // Skip if it's a mutable std::atomic + } + + // == Check if a field is marked with special attributes == + const clang::AttrVec &FAttrs = FD->getAttrs(); + for (const auto *A : FAttrs) { + if (clang::isa(A) || clang::isa(A) || + clang::isa(A)) { + return; + } + } + + // == Check if we are inside a const-qualified member function == + const auto *MethodDecl = llvm::dyn_cast(FuncD); + if (!MethodDecl || !MethodDecl->isConst()) { + return; + } + + // == Check if we are modifying the mutable == + bool ret; + if (checkAssignToMutable(ME, C)) { + // == Emit report == + std::string MutableMemberName = ME->getMemberDecl()->getQualifiedNameAsString(); + if (!BT) { + BT = std::make_unique( + this, "Mutable member modification in const member function", "ConstThreadSafety"); + } + std::string Description = + "Modifying mutable member '" + MutableMemberName + "' in const member function is potentially thread-unsafe "; + auto Report = std::make_unique(*BT, Description, C.generateErrorNode()); + Report->addRange(ME->getSourceRange()); + C.emitReport(std::move(Report)); + return; + } + + if (checkCallNonConstOfMutable(ME, C)) { + if (RD) { + std::string ClassName = RD->getNameAsString(); + std::string MemberName = ME->getMemberDecl()->getNameAsString(); + std::string FunctionName = MethodDecl->getNameAsString(); + std::string tname = "mutablemember-checker.txt.unsorted"; + std::string ostring = "flagged class '" + ClassName + "' modifying mutable member '" + MemberName + + "' in function '" + FunctionName + "'"; + support::writeLog(ostring, tname); + } + } + } // checkPreStmt + + // Check direct modifications of mutable (assign, compound stmt, increment/decrement) + bool MutableMemberModificationChecker::checkAssignToMutable(const clang::MemberExpr *ME, + clang::ento::CheckerContext &C) const { + // == Check if this is a modifying statement == + + // Retrieve the parent statement of the MemberExpr + const clang::LocationContext *LC = C.getLocationContext(); + const clang::ParentMap &PM = LC->getParentMap(); + const clang::Stmt *ParentStmt = PM.getParent(ME); + + if (!ParentStmt) { + return false; + } + + // Check if it is an assignment operator (binary operator) + const auto *BO = llvm::dyn_cast(ParentStmt); + if (BO) { + const auto *LHSAsME = llvm::dyn_cast(BO->getLHS()); + if (LHSAsME) { + if (BO->isAssignmentOp() && LHSAsME == ME) { + // The MemberExpr is on the left-hand side of an assignment + return true; + } + } + } + + // Check if it is an overloaded assignment operator + const auto *CO = llvm::dyn_cast(ParentStmt); + if (CO) { + const auto *LHSAsME = llvm::dyn_cast(CO->getArg(0)); + if (LHSAsME) { + if (CO->isAssignmentOp() && LHSAsME == ME) { + // The MemberExpr is on the left-hand side of an assignment + return true; + } + } + } + + // Check for increment/decrement + if (const auto *UO = llvm::dyn_cast(ParentStmt)) { + if (UO->isIncrementDecrementOp() && UO->getSubExpr() == ME) { + return true; + } + } + + return false; + } // checkAssignToMutable + + // Check for indirect modifications of mutable (calling non-const method) + bool MutableMemberModificationChecker::checkCallNonConstOfMutable(const clang::MemberExpr *ME, + clang::ento::CheckerContext &C) const { + // Traverse upwards to check if the MemberExpr is part of a CXXMemberCallExpr + const clang::Expr *E = ME; + while (E) { + if (const clang::CXXMemberCallExpr *Call = llvm::dyn_cast(E->IgnoreParenCasts())) { + const clang::CXXMethodDecl *CalledMethod = Call->getMethodDecl(); + if (CalledMethod && !CalledMethod->isConst()) { + // Get the name of the mutable member + std::string MutableMemberName = ME->getMemberDecl()->getQualifiedNameAsString(); + + // Get the name of the called method + std::string CalledMethodName = CalledMethod->getQualifiedNameAsString(); + // Report an issue + if (!BT) { + BT = std::make_unique( + this, "Mutable member modification in const member function", "ConstThreadSafety"); + } + std::string Description = "Calling non-const method '" + CalledMethodName + "' of mutable member '" + + MutableMemberName + "' in a const member function is potentially thread-unsafe."; + auto Report = std::make_unique(*BT, Description, C.generateErrorNode()); + Report->addRange(ME->getSourceRange()); + C.emitReport(std::move(Report)); + return true; + } + } + // Move up to the parent expression + const clang::Stmt *ParentStmt = C.getLocationContext()->getParentMap().getParent(E); + E = llvm::dyn_cast_or_null(ParentStmt); + } + return false; + } // checkCallNonConstOfMutable + +} // namespace clangcms diff --git a/Utilities/StaticAnalyzers/src/MutableMemberChecker.h b/Utilities/StaticAnalyzers/src/MutableMemberModificationChecker.h similarity index 65% rename from Utilities/StaticAnalyzers/src/MutableMemberChecker.h rename to Utilities/StaticAnalyzers/src/MutableMemberModificationChecker.h index 053ecc2ae111a..68a42b26b4b84 100644 --- a/Utilities/StaticAnalyzers/src/MutableMemberChecker.h +++ b/Utilities/StaticAnalyzers/src/MutableMemberModificationChecker.h @@ -15,13 +15,15 @@ #include "CmsSupport.h" namespace clangcms { - class MutableMemberChecker : public clang::ento::Checker > { + class MutableMemberModificationChecker : public clang::ento::Checker> { public: CMS_SA_ALLOW mutable std::unique_ptr BT; - void checkASTDecl(const clang::FieldDecl *D, clang::ento::AnalysisManager &Mgr, clang::ento::BugReporter &BR) const; + void checkPreStmt(const clang::MemberExpr *ME, clang::ento::CheckerContext &C) const; private: CmsException m_exception; + bool checkAssignToMutable(const clang::MemberExpr *ME, clang::ento::CheckerContext &C) const; + bool checkCallNonConstOfMutable(const clang::MemberExpr *ME, clang::ento::CheckerContext &C) const; }; } // namespace clangcms diff --git a/Utilities/StaticAnalyzers/src/MutableMemberChecker.cpp b/Utilities/StaticAnalyzers/src/PublicMutableChecker.cpp similarity index 53% rename from Utilities/StaticAnalyzers/src/MutableMemberChecker.cpp rename to Utilities/StaticAnalyzers/src/PublicMutableChecker.cpp index 4911f7f49ea8b..b964119e142e0 100644 --- a/Utilities/StaticAnalyzers/src/MutableMemberChecker.cpp +++ b/Utilities/StaticAnalyzers/src/PublicMutableChecker.cpp @@ -1,26 +1,23 @@ -//== MutableMemberChecker.cpp - Checks for mutable members --------------*- C++ -*--==// -// -// by Thomas Hauth [ Thomas.Hauth@cern.ch ] -// -//===----------------------------------------------------------------------===// +#include +#include +#include +#include +#include +#include "PublicMutableChecker.h" +#include "CmsSupport.h" -#include "MutableMemberChecker.h" -#include -using namespace clang; -using namespace ento; -using namespace llvm; namespace clangcms { - - void MutableMemberChecker::checkASTDecl(const clang::FieldDecl *D, + void PublicMutableChecker::checkASTDecl(const clang::FieldDecl *D, clang::ento::AnalysisManager &Mgr, clang::ento::BugReporter &BR) const { - if (D->hasAttr() || D->hasAttr() || D->hasAttr()) + if (D->hasAttr() || D->hasAttr() || + D->hasAttr()) return; - if (D->isMutable() && D->getDeclContext()->isRecord()) { + if (D->isMutable() && D->getDeclContext()->isRecord() && D->getAccess() != clang::AS_private) { clang::QualType t = D->getType(); clang::ento::PathDiagnosticLocation DLoc = clang::ento::PathDiagnosticLocation::create(D, BR.getSourceManager()); - if (!m_exception.reportMutableMember(t, DLoc, BR)) + if (!m_exception.reportMutableMember(DLoc, BR)) return; std::string mname = t.getCanonicalType().getAsString(); if (support::isSafeClassName(mname)) @@ -28,11 +25,10 @@ namespace clangcms { std::string buf; llvm::raw_string_ostream os(buf); std::string pname = D->getParent()->getQualifiedNameAsString(); - os << "Mutable member '" << D->getQualifiedNameAsString() << "' in class '" << pname - << "', might be thread-unsafe when accessing via a const pointer."; + os << "Class '" << pname << "' has publically-accessible mutable member '" << D->getQualifiedNameAsString() + << "', this is not allowed."; if (!BT) - BT = std::make_unique( - this, "mutable member if accessed via const pointer", "ConstThreadSafety"); + BT = std::make_unique(this, "public mutable member", "ConstThreadSafety"); std::unique_ptr R = std::make_unique(*BT, llvm::StringRef(os.str()), DLoc); R->setDeclWithIssue(D); @@ -43,5 +39,4 @@ namespace clangcms { support::writeLog(ostring, tname); } } - -} // namespace clangcms +}; // namespace clangcms diff --git a/Utilities/StaticAnalyzers/src/PublicMutableChecker.h b/Utilities/StaticAnalyzers/src/PublicMutableChecker.h new file mode 100644 index 0000000000000..ef2e7198c9402 --- /dev/null +++ b/Utilities/StaticAnalyzers/src/PublicMutableChecker.h @@ -0,0 +1,30 @@ +//== PublicMutableChecker.h - Checks for public mutable members --------------*- C++ -*--==// +// +// Check for public mutable members +// +// by Ivan Razumov +// +//===----------------------------------------------------------------------===// +#ifndef Utilities_StaticAnalyzers_PublicMutableChecker_h +#define Utilities_StaticAnalyzers_PublicMutableChecker_h + +#include +#include +#include +#include "FWCore/Utilities/interface/thread_safety_macros.h" +#include "CmsException.h" + +namespace clangcms { + + class PublicMutableChecker : public clang::ento::Checker> { + public: + CMS_SA_ALLOW mutable std::unique_ptr BT; + void checkASTDecl(const clang::FieldDecl *D, clang::ento::AnalysisManager &Mgr, clang::ento::BugReporter &BR) const; + + private: + CmsException m_exception; + }; + +} // namespace clangcms + +#endif diff --git a/Utilities/StaticAnalyzers/src/UnnecessaryMutableChecker.cpp b/Utilities/StaticAnalyzers/src/UnnecessaryMutableChecker.cpp new file mode 100644 index 0000000000000..d2c1c50caaf77 --- /dev/null +++ b/Utilities/StaticAnalyzers/src/UnnecessaryMutableChecker.cpp @@ -0,0 +1,159 @@ +#include "UnnecessaryMutableChecker.h" +#include "clang/Basic/SourceManager.h" +#include "llvm/Support/Path.h" +#include "CmsSupport.h" + +namespace clangcms { + + // Find all classes/structs + void UnnecessaryMutableChecker::checkASTDecl(const clang::CXXRecordDecl *RD, + clang::ento::AnalysisManager &Mgr, + clang::ento::BugReporter &BR) const { + if (!RD->hasDefinition()) + return; + + // == Only process main file (one passed on the command line) == + const clang::SourceManager &SM = Mgr.getASTContext().getSourceManager(); + auto MainFileID = SM.getMainFileID(); + if (MainFileID.isInvalid()) { + llvm::errs() << "Main file is invalid, skipping\n"; + return; + } + std::string MainFileStr = SM.getFileEntryRefForID(MainFileID)->getName().str(); // Main file name + // Get the base name of the main file (without path or extension) + std::string BaseNameStr = + llvm::sys::path::parent_path(MainFileStr).str() + "/" + llvm::sys::path::stem(MainFileStr).str(); + clang::StringRef CurrentFile = SM.getFilename(RD->getLocation()); + if (!CurrentFile.ends_with(BaseNameStr + ".cpp") && !CurrentFile.ends_with(BaseNameStr + ".h")) { + return; + } + + // == Filter out classes with "safe" names == + std::string ClassName = RD->getNameAsString(); + if (support::isSafeClassName(ClassName)) { + return; // Skip checking for this class + } + + // == Check if this is a cmssw local file == + clang::ento::PathDiagnosticLocation PathLoc = clang::ento::PathDiagnosticLocation::createBegin(RD, SM); + + if (!m_exception.reportMutableMember(PathLoc, BR)) { + return; + } + + // == Iterate over fields == + for (const auto *Field : RD->fields()) { + if (!Field->isMutable()) { + continue; + } + // == Skip atmoic mutables, these are thread-safe by design == + if (support::isStdAtomic(Field)) { + return; // Skip if it's a mutable std::atomic + } + + // == Check if a field is marked with special attributes == + const clang::AttrVec &FAttrs = Field->getAttrs(); + for (const auto *A : FAttrs) { + if (clang::isa(A) || clang::isa(A) || + clang::isa(A)) { + return; + } + } + + // == Check for modifications == + if (!isMutableMemberModified(Field, RD)) { + clang::SourceLocation Loc = Field->getLocation(); + if (Loc.isValid()) { + if (!BT) { + BT = std::make_unique(this, "Unnecessarily Mutable Member", "Coding Practices"); + } + BR.EmitBasicReport( + Field, + this, + "Useless mutable field", + "ConstThreadSafety", + "The mutable field '" + Field->getQualifiedNameAsString() + "' is not modified in any const methods", + PathLoc); + } + } + } + } + + bool UnnecessaryMutableChecker::isMutableMemberModified(const clang::FieldDecl *Field, + const clang::CXXRecordDecl *RD) const { + for (const auto *Method : RD->methods()) { + if (!Method->isConst()) + continue; + + if (const auto *Body = Method->getBody()) { + for (const auto *Stmt : Body->children()) { + if (Stmt) { + if (analyzeStmt(Stmt, Field)) + return true; + } + } + } + } + + return false; + } + + bool UnnecessaryMutableChecker::analyzeStmt(const clang::Stmt *S, const clang::FieldDecl *Field) const { + if (const auto *UnaryOp = clang::dyn_cast(S)) { // x++, x--, ++x, --x + if (UnaryOp->isIncrementDecrementOp()) { + if (const auto *ME = clang::dyn_cast(UnaryOp->getSubExpr())) { + if (const auto *FD = clang::dyn_cast(ME->getMemberDecl())) { + if (FD == Field) { + return true; + } + } + } + } + } else if (const auto *BinaryOp = clang::dyn_cast(S)) { // x = y + if (BinaryOp->isAssignmentOp() || BinaryOp->isCompoundAssignmentOp()) { + if (const auto *LHS = clang::dyn_cast(BinaryOp->getLHS())) { + if (const auto *FD = clang::dyn_cast(LHS->getMemberDecl())) { + if (FD == Field) { + return true; + } + } + } + } + } else if (const auto *Call = clang::dyn_cast(S)) { // x.const_method() + if (const auto *Callee = Call->getMethodDecl()) { + if (!Callee->isConst()) { + if (const auto *ImplicitObj = Call->getImplicitObjectArgument()) { + if (const auto *ME = clang::dyn_cast(ImplicitObj)) { + if (const auto *FD = clang::dyn_cast(ME->getMemberDecl())) { + if (FD == Field) { + return true; + } + } + } + } + } + } + } else if (const auto *OpCall = clang::dyn_cast(S)) { // x.operator=() + if (OpCall->isAssignmentOp()) { + if (const auto *ME = llvm::dyn_cast(OpCall->getArg(0))) { + if (const auto *FD = clang::dyn_cast(ME->getMemberDecl())) { + if (FD == Field) { + return true; + } + } + } + } + } + + // Recursively analyze child statements + for (const auto *Child : S->children()) { + if (Child) { + if (analyzeStmt(Child, Field)) { + return true; + } + } + } + + return false; + } +} // namespace clangcms diff --git a/Utilities/StaticAnalyzers/src/UnnecessaryMutableChecker.h b/Utilities/StaticAnalyzers/src/UnnecessaryMutableChecker.h new file mode 100644 index 0000000000000..ed403941c1369 --- /dev/null +++ b/Utilities/StaticAnalyzers/src/UnnecessaryMutableChecker.h @@ -0,0 +1,31 @@ +#ifndef Utilities_StaticAnalyzers_UnnecessaryMutableChecker_h +#define Utilities_StaticAnalyzers_UnnecessaryMutableChecker_h + +#include +#include +#include +#include +#include +#include +#include "FWCore/Utilities/interface/thread_safety_macros.h" +#include "CmsException.h" +#include "CmsSupport.h" + +namespace clangcms { + + class UnnecessaryMutableChecker : public clang::ento::Checker> { + public: + void checkASTDecl(const clang::CXXRecordDecl *RD, + clang::ento::AnalysisManager &Mgr, + clang::ento::BugReporter &BR) const; + + private: + bool isMutableMemberModified(const clang::FieldDecl *Field, const clang::CXXRecordDecl *RD) const; + bool analyzeStmt(const clang::Stmt *S, const clang::FieldDecl *Field) const; + CMS_SA_ALLOW mutable std::unique_ptr BT; + CmsException m_exception; + }; + +} // namespace clangcms + +#endif /* Utilities_StaticAnalyzers_UnnecessaryMutableChecker_h */ diff --git a/Utilities/StaticAnalyzers/test/BuildFile.xml b/Utilities/StaticAnalyzers/test/BuildFile.xml new file mode 100644 index 0000000000000..f11020eeaab0a --- /dev/null +++ b/Utilities/StaticAnalyzers/test/BuildFile.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/Utilities/StaticAnalyzers/test/Makefile b/Utilities/StaticAnalyzers/test/Makefile deleted file mode 100644 index 9a899b8ae5308..0000000000000 --- a/Utilities/StaticAnalyzers/test/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -# dont overwrite this here, otherwise clang can't insert his "custom compiler" -#CXX = g++#/build/gcc/gcc-4.7.0-bin/bin/g++ - -all: class_checker.o mutable_member.o const_cast.o const_cast_away.o global_static.o static_local.o global_static_edm.o func_checker.o - -mutable_member.o: mutable_member.cpp - $(CXX) mutable_member.cpp - -const_cast.o: const_cast.cpp - $(CXX) const_cast.cpp - -const_cast_away.o: const_cast_away.cpp - $(CXX) const_cast_away.cpp - -global_static.o: global_static.cpp - $(CXX) global_static.cpp - -global_static_edm.o: global_static_edm.cpp - $(CXX) global_static_edm.cpp - -static_local.o: static_local.cpp - $(CXX) -Wno-attributes -std=c++11 $(CURDIR)/static_local.cpp - -class_checker.o: class_checker.cpp - $(CXX) -Wno-attributes -std=c++11 $(CURDIR)/class_checker.cpp - -func_checker.o: func_checker.cpp - $(CXX) -Wno-attributes -std=c++11 $(CURDIR)/func_checker.cpp diff --git a/Utilities/StaticAnalyzers/test/class_checker.cpp b/Utilities/StaticAnalyzers/test/class_checker.cpp index f35280a1f4d69..80b1a2ccefd8b 100644 --- a/Utilities/StaticAnalyzers/test/class_checker.cpp +++ b/Utilities/StaticAnalyzers/test/class_checker.cpp @@ -2,195 +2,180 @@ // is ok, because const-qualified const static int g_staticConst = 23; -static int const& g_ref_staticConst = g_staticConst; -static int const* g_ptr_staticConst = &g_staticConst; - +static int const &g_ref_staticConst = g_staticConst; +static int const *g_ptr_staticConst = &g_staticConst; // results in a warning by GlobalStaticChecker CMS_THREAD_SAFE static int g_static; -static int * g_ptr_static = &g_static; +static int *g_ptr_static = &g_static; class ClassTest { - public: - explicit ClassTest(); - ~ClassTest(); - -void testConst() const; - - private: +public: + explicit ClassTest(); + ~ClassTest(); + mutable int m_pubMutable; - mutable int m_testMutable; - int * m_testPointer; - int m_testInteger; + void testConst() const; +private: + mutable int m_testMutable; + int *m_testPointer; + int m_testInteger; }; -void -ClassTest::testConst() const -{ - // 1) reported by class checker - m_testMutable = 23; +void ClassTest::testConst() const { + // 1) reported by class checker + m_testMutable = 23; - // 2) compiles, not reported - (*m_testPointer) = 23; + // 2) compiles, not reported + (*m_testPointer) = 23; - // 3) compiles, not reported - int * localPtr = m_testPointer; - (*localPtr) = 23; + // 3) compiles, not reported + int *localPtr = m_testPointer; + (*localPtr) = 23; - // 4) will not compile - // error: invalid conversion from 'const int*' to 'int*' - //int * localPtrToInt = &m_testInteger; -} + // 4) will not compile + // error: invalid conversion from 'const int*' to 'int*' + //int * localPtrToInt = &m_testInteger; +} -class Thing -{ +class Thing { private: - -int num; + int num; public: - -Thing(): num{0} {} -int getnum() {return num;} -void putnum(int x) {num=x;} + Thing() : num{0} {} + int getnum() { return num; } + void putnum(int x) { num = x; } }; -class Foo -{ - +class Foo { private: - -int Var_; -int & RVar_=Var_; -int * PVar_=&RVar_; -Thing * T_p; + int Var_; + int &RVar_ = Var_; + int *PVar_ = &RVar_; + Thing *T_p; public: - -Foo(): Var_{0}{T_p= new Thing;} -void func1(int x) {return;} //OK -void func2(int &x) {return;} // cound be bad -void func3(int *x) {return;} // could be bad -void func4(int const *x) {return;} // OK -void func5(int * const x) {return;} // could be bad -void func6(int const &x) {return;} //OK -void nonConstFunc() { Var_ = 5;} -void constFunc() const { return;} -int * nonConstAccess() const {return PVar_;} //bad -int & nonConstRefAccess() const { return RVar_; } //bad ? -int const * constAccess() const {return PVar_;} //OK -int const & constRefAccess() const { return RVar_; } //OK ? -Thing * getThing() { return T_p; } - + Foo() : Var_{0} { T_p = new Thing; } + void func1(int x) { return; } //OK + void func2(int &x) { return; } // cound be bad + void func3(int *x) { return; } // could be bad + void func4(int const *x) { return; } // OK + void func5(int *const x) { return; } // could be bad + void func6(int const &x) { return; } //OK + void nonConstFunc() { Var_ = 5; } + void constFunc() const { return; } + int *nonConstAccess() const { return PVar_; } //bad + int &nonConstRefAccess() const { return RVar_; } //bad ? + int const *constAccess() const { return PVar_; } //OK + int const &constRefAccess() const { return RVar_; } //OK ? + Thing *getThing() { return T_p; } }; -class Bar -{ -CMS_THREAD_SAFE static int si_; -static void const modifyStatic(int &x) {si_=x;} -private: -Bar(): ci_{0},ipc_{&i_},icp_{&i_},ir_{i_},icr_{ci_} {} -const int ci_; -int i_; -int const * icp_; -int * ip_; -int * const ipc_; -int & ir_; -int const & icr_; -Foo foo_; -public: -void modifyMember() { i_ = 5;} -void indirectModifyMember() { modifyMember();} -void recursiveCaller(int i) {if (i == 0) return; recursiveCaller(--i);} - -void method1(int &x) {return;} -void method2(const int &x) const {return;} - -void produce() - { - Foo * foo = new Foo; - int I=0; - int * PI; - int const * CPI; - foo->func1(i_); - foo->func1(ci_); - foo->func1(ir_); - foo->func1(icr_); - foo->func1(I); - foo->func2(i_); - foo->func2(ir_); - foo->func2(I); - foo->func6(i_); - foo->func6(ir_); - foo->func6(I); - foo->nonConstFunc(); - foo_.nonConstFunc(); //should fail member data (object) call non const functions - foo_.constFunc(); //OK because const won't modify self - foo->getThing()->getnum(); - foo_.getThing()->getnum(); - method1(i_); - method1(I); - modifyStatic(I); - modifyMember(); - indirectModifyMember(); - recursiveCaller(1); - PI=foo_.nonConstAccess(); //should fail returns pointer to member data that is non const qualified - CPI=foo_.constAccess(); // OK because returns pointer to member data that is const qualified - if (*PI==*CPI) I++; - } - -void method3() const - { - Foo foo; - int I=0; - Bar bar; - foo.func1(i_); - foo.func1(ci_); - foo.func1(ir_); - foo.func1(icr_); - foo.func1(I); - foo.func2(ir_); - foo.func2(I); - foo.func6(i_); - foo.func6(ir_); - foo.func6(I); - foo_.nonConstRefAccess(); - foo_.constRefAccess(); -// foo_.nonConstFunc(); - foo_.nonConstAccess(); - foo_.constAccess(); - if (i_) method2(i_); - bar.produce(); -// will produce a warning only by ConstCastAwayChecker - int & ir = (int &) (icr_); - int & cir = const_cast(icr_); - int * ip = (int *) (icp_); - int * cip = const_cast(icp_); -// must not produce a warning - int const& ira = (int const&)(icr_); -// will produce a warning by StaticLocalChecker - CMS_THREAD_SAFE static int evilStaticLocal = 0; - static int & intRef = evilStaticLocal; - static int * intPtr = & evilStaticLocal; -// no warnings here - static const int c_evilStaticLocal = 0; - static int const& c_intRef = evilStaticLocal; - static int const* c_intPtr = &evilStaticLocal; - static const int * c_intPtr_equivalent = &evilStaticLocal; - static int const* const* c_intPtrPtr = &( c_intPtr); - g_static=23; - si_=23; - modifyStatic(I); - } +class Bar { + CMS_THREAD_SAFE static int si_; + static void const modifyStatic(int &x) { si_ = x; } +private: + Bar() : ci_{0}, ipc_{&i_}, icp_{&i_}, ir_{i_}, icr_{ci_} {} + const int ci_; + int i_; + int const *icp_; + int *ip_; + int *const ipc_; + int &ir_; + int const &icr_; + Foo foo_; +public: + void modifyMember() { i_ = 5; } + void indirectModifyMember() { modifyMember(); } + void recursiveCaller(int i) { + if (i == 0) + return; + recursiveCaller(--i); + } + + void method1(int &x) { return; } + void method2(const int &x) const { return; } + + void produce() { + Foo *foo = new Foo; + int I = 0; + int *PI; + int const *CPI; + foo->func1(i_); + foo->func1(ci_); + foo->func1(ir_); + foo->func1(icr_); + foo->func1(I); + foo->func2(i_); + foo->func2(ir_); + foo->func2(I); + foo->func6(i_); + foo->func6(ir_); + foo->func6(I); + foo->nonConstFunc(); + foo_.nonConstFunc(); //should fail member data (object) call non const functions + foo_.constFunc(); //OK because const won't modify self + foo->getThing()->getnum(); + foo_.getThing()->getnum(); + method1(i_); + method1(I); + modifyStatic(I); + modifyMember(); + indirectModifyMember(); + recursiveCaller(1); + PI = foo_.nonConstAccess(); //should fail returns pointer to member data that is non const qualified + CPI = foo_.constAccess(); // OK because returns pointer to member data that is const qualified + if (*PI == *CPI) + I++; + } + + void method3() const { + Foo foo; + int I = 0; + Bar bar; + foo.func1(i_); + foo.func1(ci_); + foo.func1(ir_); + foo.func1(icr_); + foo.func1(I); + foo.func2(ir_); + foo.func2(I); + foo.func6(i_); + foo.func6(ir_); + foo.func6(I); + foo_.nonConstRefAccess(); + foo_.constRefAccess(); + // foo_.nonConstFunc(); + foo_.nonConstAccess(); + foo_.constAccess(); + if (i_) + method2(i_); + bar.produce(); + // will produce a warning only by ConstCastAwayChecker + int &ir = (int &)(icr_); + int &cir = const_cast(icr_); + int *ip = (int *)(icp_); + int *cip = const_cast(icp_); + // must not produce a warning + int const &ira = (int const &)(icr_); + // will produce a warning by StaticLocalChecker + CMS_THREAD_SAFE static int evilStaticLocal = 0; + static int &intRef = evilStaticLocal; + static int *intPtr = &evilStaticLocal; + // no warnings here + static const int c_evilStaticLocal = 0; + static int const &c_intRef = evilStaticLocal; + static int const *c_intPtr = &evilStaticLocal; + static const int *c_intPtr_equivalent = &evilStaticLocal; + static int const *const *c_intPtrPtr = &(c_intPtr); + g_static = 23; + si_ = 23; + modifyStatic(I); + } }; -int main() -{ -return 0; -} - - - +int main() { return 0; } diff --git a/Utilities/StaticAnalyzers/test/const_cast.cpp b/Utilities/StaticAnalyzers/test/const_cast.cpp index 0b10d069ee8f5..8f49774e4ea5d 100644 --- a/Utilities/StaticAnalyzers/test/const_cast.cpp +++ b/Utilities/StaticAnalyzers/test/const_cast.cpp @@ -1,15 +1,13 @@ #include +int main() { + std::string s = "23"; + std::string const& r_const = s; -int main() -{ - std::string s = "23"; - std::string const& r_const = s; - - // will produce a warning by ConstCastChecker - // and ConstCastAwayChecker - std::string & r = const_cast< std::string & >( r_const ); + // will produce a warning by ConstCastChecker + // and ConstCastAwayChecker + std::string& r = const_cast(r_const); - return 0; + return 0; } diff --git a/Utilities/StaticAnalyzers/test/const_cast_away.cpp b/Utilities/StaticAnalyzers/test/const_cast_away.cpp index ecea7b6837206..ca7d346196e4e 100644 --- a/Utilities/StaticAnalyzers/test/const_cast_away.cpp +++ b/Utilities/StaticAnalyzers/test/const_cast_away.cpp @@ -1,19 +1,17 @@ #include +int main() { + std::string s = "23"; + std::string const& r_const = s; + std::string const* p_const = &s; -int main() -{ - std::string s = "23"; - std::string const& r_const = s; - std::string const* p_const = &s; - - // will produce a warning only by ConstCastAwayChecker - std::string & r = (std::string &) ( r_const ); - std::string * p = (std::string *) ( p_const ); + // will produce a warning only by ConstCastAwayChecker + std::string& r = (std::string&)(r_const); + std::string* p = (std::string*)(p_const); - // must not produce a warning - std::string const& r_const_again = ( std::string const&) ( r_const ); + // must not produce a warning + std::string const& r_const_again = (std::string const&)(r_const); - return 0; + return 0; } diff --git a/Utilities/StaticAnalyzers/test/func_checker.cpp b/Utilities/StaticAnalyzers/test/func_checker.cpp index c5d2d8d43cce5..5f70df8487e98 100644 --- a/Utilities/StaticAnalyzers/test/func_checker.cpp +++ b/Utilities/StaticAnalyzers/test/func_checker.cpp @@ -4,20 +4,15 @@ CMS_THREAD_GUARD(dummy) static int global_static = 23; class Bar { public: -Bar() {} -CMS_THREAD_GUARD(dummy2) static int member_static; -void bar() { - /*CMS_THREAD_SAFE*/ static int local_static; - member_static = global_static; - local_static = global_static; - member_static = external_int; - local_static = external_int; -} - + Bar() {} + CMS_THREAD_GUARD(dummy2) static int member_static; + void bar() { + /*CMS_THREAD_SAFE*/ static int local_static; + member_static = global_static; + local_static = global_static; + member_static = external_int; + local_static = external_int; + } }; -int main() -{ -return 0; -} - +int main() { return 0; } diff --git a/Utilities/StaticAnalyzers/test/global_static.cpp b/Utilities/StaticAnalyzers/test/global_static.cpp index b100c8284a4c0..8df20c33e668c 100644 --- a/Utilities/StaticAnalyzers/test/global_static.cpp +++ b/Utilities/StaticAnalyzers/test/global_static.cpp @@ -6,15 +6,12 @@ const static int g_staticConst = 23; static int const& g_ref_staticConst = g_staticConst; static int const* g_ptr_staticConst = &g_staticConst; - // results in a warning by GlobalStaticChecker static int g_static; -static int * g_ptr_static = &g_static; - +static int* g_ptr_static = &g_static; -int main() -{ - g_static = 23; +int main() { + g_static = 23; - return 0; + return 0; } diff --git a/Utilities/StaticAnalyzers/test/global_static_edm.cpp b/Utilities/StaticAnalyzers/test/global_static_edm.cpp index 60375439fb986..3950468023f03 100644 --- a/Utilities/StaticAnalyzers/test/global_static_edm.cpp +++ b/Utilities/StaticAnalyzers/test/global_static_edm.cpp @@ -1,16 +1,15 @@ #include - namespace edmplugin { - - template - class PluginFactory - { }; -} +namespace edmplugin { + + template + class PluginFactory {}; +} // namespace edmplugin namespace edm { - - typedef edmplugin::PluginFactory InputSourcePluginFactory; + + typedef edmplugin::PluginFactory InputSourcePluginFactory; } // is ok, because const-qualified @@ -22,11 +21,8 @@ static int g_static; // results in a warning by GlobalStaticChecker static edm::InputSourcePluginFactory g_static_edm_namespace; +int main() { + g_static = 23; - -int main() -{ - g_static = 23; - - return 0; + return 0; } diff --git a/Utilities/StaticAnalyzers/test/llvm_env b/Utilities/StaticAnalyzers/test/llvm_env deleted file mode 100644 index a46ce12eaff3c..0000000000000 --- a/Utilities/StaticAnalyzers/test/llvm_env +++ /dev/null @@ -1,2 +0,0 @@ -USER_LLVM_CHECKERS "-disable-checker unix -disable-checker threadsafety.MutableMember -disable-checker threadsafety.StaticLocal -disable-checker threadsafety.ConstCast -disable-checker threadsafety.ConstCastAway -disable-checker threadsafety.GlobalStatic -disable-checker core -disable-checker security -disable-checker deadcode " - diff --git a/Utilities/StaticAnalyzers/test/mutable_member.cpp b/Utilities/StaticAnalyzers/test/mutable_member.cpp index 992a6412e6ed8..2f165524b7c0a 100644 --- a/Utilities/StaticAnalyzers/test/mutable_member.cpp +++ b/Utilities/StaticAnalyzers/test/mutable_member.cpp @@ -1,15 +1,37 @@ +#include "FWCore/Utilities/interface/thread_safety_macros.h" -#include +class Bar { +public: + void someMethod(int val) { value = val; } + +private: + int value; +}; -class Foo -{ +// will produce warnings by MutableMemberChecker +class Foo { public: - // will produce a warning by MutableMemberChecker - mutable int evilMutableMember; - int goodMember; + void nonConstInConst(int val) const { barMutableMember.someMethod(val); } + + // Shall not produce warning + CMS_THREAD_SAFE void nonConstInConst_safe(int val) const { barMutableMember.someMethod(val); } + + void changeMutableInConst1(double val) const { privateMutable = val; } + void changeMutableInConst2(double val) const { privateMutable += val; } + void changeMutableInConst3(double val) const { privateMutable *= val; } + void changeMutableInConst4(double val) const { privateMutable /= val; } + void changeMutableInConst5(double val) const { privateMutable -= val; } + void changeMutableInConst6(double val) const { privateMutable++; } + void changeMutableInConst7(double val) const { privateMutable--; } + + CMS_THREAD_SAFE void changeMutableInConst_safe(double val) { privateMutable = val * val; }; + + mutable int badPublicMutable; + +private: + mutable Bar barMutableMember; + mutable double privateMutable; + int goodMember; }; -int main() -{ - return 0; -} +int main() { return 0; } diff --git a/Utilities/StaticAnalyzers/test/reference.log b/Utilities/StaticAnalyzers/test/reference.log new file mode 100644 index 0000000000000..b9c26ce543249 --- /dev/null +++ b/Utilities/StaticAnalyzers/test/reference.log @@ -0,0 +1,33 @@ +src/Utilities/StaticAnalyzers/test/class_checker.cpp:108:5: warning: 1st function call argument is an uninitialized value [core.CallAndMessage] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:10:1: warning: Non-const variable 'int * g_ptr_static' is static and might be thread-unsafe [threadsafety.GlobalStatic] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:12:1: warning: The mutable field 'ClassTest::m_pubMutable' is not modified in any const methods [cms.CodeRules.UnnecessaryMutableChecker] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:161:10: warning: Value stored to 'ip' during its initialization is never read [deadcode.DeadStores] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:162:10: warning: Value stored to 'cip' during its initialization is never read [deadcode.DeadStores] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:167:5: warning: Non-const variable 'int & intRef' is static local or static member data and might be thread-unsafe [threadsafety.StaticLocal] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:168:5: warning: Non-const variable 'int * intPtr' is static local or static member data and might be thread-unsafe [threadsafety.StaticLocal] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:16:15: warning: Class 'ClassTest' has publically-accessible mutable member 'ClassTest::m_pubMutable', this is not allowed [threadsafety.PublicMutableMember] +src/Utilities/StaticAnalyzers/test/class_checker.cpp:28:3: warning: Modifying mutable member 'ClassTest::m_testMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/const_cast.cpp:10:20: warning: const_cast was used, this may result in thread-unsafe code [threadsafety.ConstCast] +src/Utilities/StaticAnalyzers/test/const_cast_away.cpp:10:20: warning: const qualifier was removed via a cast, this may result in thread-unsafe code [threadsafety.ConstCastAway] +src/Utilities/StaticAnalyzers/test/const_cast_away.cpp:11:16: warning: Value stored to 'p' during its initialization is never read [deadcode.DeadStores] +src/Utilities/StaticAnalyzers/test/func_checker.cpp:10:25: warning: Non-const variable 'int local_static' is static local or static member data and might be thread-unsafe [threadsafety.StaticLocal] +src/Utilities/StaticAnalyzers/test/global_static.cpp:10:1: warning: Non-const variable 'int g_static' is static and might be thread-unsafe [threadsafety.GlobalStatic] +src/Utilities/StaticAnalyzers/test/global_static.cpp:11:1: warning: Non-const variable 'int * g_ptr_static' is static and might be thread-unsafe [threadsafety.GlobalStatic] +src/Utilities/StaticAnalyzers/test/global_static_edm.cpp:19:1: warning: Non-const variable 'int g_static' is static and might be thread-unsafe [threadsafety.GlobalStatic] +src/Utilities/StaticAnalyzers/test/global_static_edm.cpp:22:1: warning: Non-const variable 'edm::InputSourcePluginFactory g_static_edm_namespace' is static and might be thread-unsafe [threadsafety.GlobalStatic] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:12:1: warning: The mutable field 'Foo::badPublicMutable' is not modified in any const methods [cms.CodeRules.UnnecessaryMutableChecker] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:14:41: warning: Calling non-const method 'Bar::someMethod' of mutable member 'Foo::barMutableMember' in a const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:19:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:20:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:21:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:22:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:23:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:24:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:25:50: warning: Modifying mutable member 'Foo::privateMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/mutable_member.cpp:29:15: warning: Class 'Foo' has publically-accessible mutable member 'Foo::badPublicMutable', this is not allowed [threadsafety.PublicMutableMember] +src/Utilities/StaticAnalyzers/test/static_local.cpp:8:5: warning: Non-const variable 'int & intRef' is static local or static member data and might be thread-unsafe [threadsafety.StaticLocal] +src/Utilities/StaticAnalyzers/test/static_local.cpp:9:5: warning: Non-const variable 'int * intPtr' is static local or static member data and might be thread-unsafe [threadsafety.StaticLocal] +src/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp:18:5: warning: Modifying mutable member 'Bar::m_intMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp:26:57: warning: Modifying mutable member 'Bar::m_strMutable' in const member function is potentially thread-unsafe [threadsafety.MutableMember] +src/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp:4:1: warning: The mutable field 'Foo::m_intMutable' is not modified in any const methods [cms.CodeRules.UnnecessaryMutableChecker] +src/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp:4:1: warning: The mutable field 'Foo::m_strMutable' is not modified in any const methods [cms.CodeRules.UnnecessaryMutableChecker] diff --git a/Utilities/StaticAnalyzers/test/run-clang b/Utilities/StaticAnalyzers/test/run-clang deleted file mode 100644 index c2ed76b29bf23..0000000000000 --- a/Utilities/StaticAnalyzers/test/run-clang +++ /dev/null @@ -1 +0,0 @@ -clang -cc1 -load ../../../../lib/slc5_amd64_gcc472/libUtilitiesStaticAnalyzers.so -analyze -analyzer-checker=optional.ClassChecker -std=c++0x class_checker.cpp diff --git a/Utilities/StaticAnalyzers/test/run-scan b/Utilities/StaticAnalyzers/test/run-scan deleted file mode 100644 index 707c6a44dd7c2..0000000000000 --- a/Utilities/StaticAnalyzers/test/run-scan +++ /dev/null @@ -1,3 +0,0 @@ -CCC_ANALYZER_VERBOSE=1 -CCC_ANALYZER_LOG=1 -scan-build -load-plugin ../../../../lib/slc5_amd64_gcc472/libUtilitiesStaticAnalyzers.so -enable-checker optional.ClassChecker -enable-checker threadsafety make -k diff --git a/Utilities/StaticAnalyzers/test/run_static_checks.sh b/Utilities/StaticAnalyzers/test/run_static_checks.sh new file mode 100755 index 0000000000000..b566d87327818 --- /dev/null +++ b/Utilities/StaticAnalyzers/test/run_static_checks.sh @@ -0,0 +1,14 @@ +#!/bin/bash -xe +[ -z $WORKSPACE ] && (echo "WORKSPACE not set!"; exit 1) +[ -z CMSSW_BASE ] && (echo "CMSSW_BASE not set!"; exit 1) +: ${NCPU2:=1} + +export CMS_BOT_DIR=$WORKSPACE/cms-bot + +rm -rf $WORKSPACE/llvm-analysis-test; mkdir $WORKSPACE/llvm-analysis-test +pushd $CMSSW_BASE/src/Utilities/StaticAnalyzers/test +USER_CXXFLAGS='-Wno-register -DEDM_ML_DEBUG -w' SCRAM_IGNORE_PACKAGES="Fireworks/%" USER_LLVM_CHECKERS="-enable-checker threadsafety -enable-checker cms -enable-checker deprecated -disable-checker cms.FunctionDumper" \ + scram b -v -k -j ${NCPU2} checker >$WORKSPACE/llvm-analysis-test/runStaticChecks.log 2>&1 || true +popd +grep $WORKSPACE/llvm-analysis-test/runStaticChecks.log -e 'warning:' | grep -v "gmake" | sort > $WORKSPACE/llvm-analysis-test/probe.log +diff -u $CMSSW_BASE/src/Utilities/StaticAnalyzers/test/reference.log $WORKSPACE/llvm-analysis-test/probe.log diff --git a/Utilities/StaticAnalyzers/test/static_local.cpp b/Utilities/StaticAnalyzers/test/static_local.cpp index 4a87dfc5d3e59..6b9789813beb8 100644 --- a/Utilities/StaticAnalyzers/test/static_local.cpp +++ b/Utilities/StaticAnalyzers/test/static_local.cpp @@ -1,27 +1,21 @@ #include "FWCore/Utilities/interface/thread_safety_macros.h" -class Foo -{ +class Foo { public: - void bar() - { - // will produce a warning by StaticLocalChecker - CMS_THREAD_SAFE static int evilStaticLocal = 0; - static int & intRef = evilStaticLocal; - static int * intPtr = & evilStaticLocal; + void bar() { + // will produce a warning by StaticLocalChecker + CMS_THREAD_SAFE static int evilStaticLocal = 0; + static int& intRef = evilStaticLocal; + static int* intPtr = &evilStaticLocal; - // no warnings here - static const int c_evilStaticLocal = 0; - static int const& c_intRef = evilStaticLocal; - static int const* c_intPtr = &evilStaticLocal; - static const int * c_intPtr_equivalent = &evilStaticLocal; + // no warnings here + static const int c_evilStaticLocal = 0; + static int const& c_intRef = evilStaticLocal; + static int const* c_intPtr = &evilStaticLocal; + static const int* c_intPtr_equivalent = &evilStaticLocal; - static int const* const* c_intPtrPtr = &( c_intPtr); - } + static int const* const* c_intPtrPtr = &(c_intPtr); + } }; -int main() -{ - return 0; -} - +int main() { return 0; } diff --git a/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp b/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp new file mode 100644 index 0000000000000..80b3a78c3fbd1 --- /dev/null +++ b/Utilities/StaticAnalyzers/test/unnecessary_mutable_member.cpp @@ -0,0 +1,33 @@ +#include +#include + +class Foo { +public: + Foo() : m_intMutable(-1), m_strMutable("foo") {}; + int someMethod() const { return m_intMutable; } + bool someOtherMethod() const { return m_strMutable.empty(); } + +private: + mutable int m_intMutable; + mutable std::string m_strMutable; + CMS_SA_ALLOW mutable long m_longMutable; // should not be reported +}; + +class Bar { + void modifyingMethod(int j) const { + m_intMutable = j; + m_intMutable++; + m_intMutable *= j; + m_intMutable--; + if (j != 0) { + m_intMutable /= j; + } + } + void otherModifyingMethod(std::string& other) const { m_strMutable = other; } + +private: + mutable int m_intMutable; + mutable std::string m_strMutable; +}; + +int main() { return 0; } diff --git a/Utilities/XrdAdaptor/src/XrdRequestManager.cc b/Utilities/XrdAdaptor/src/XrdRequestManager.cc index 5d7bf6707d1e9..b623a79e235a5 100644 --- a/Utilities/XrdAdaptor/src/XrdRequestManager.cc +++ b/Utilities/XrdAdaptor/src/XrdRequestManager.cc @@ -771,12 +771,12 @@ std::future XrdAdaptor::RequestManager::handle(std::shared_ptr c_ptr1, c_ptr2; std::future future1, future2; if (!req1->empty()) { - c_ptr1.reset(new XrdAdaptor::ClientRequest(*this, req1)); + c_ptr1 = std::make_shared(*this, req1); activeSources[0]->handle(c_ptr1); future1 = c_ptr1->get_future(); } if (!req2->empty()) { - c_ptr2.reset(new XrdAdaptor::ClientRequest(*this, req2)); + c_ptr2 = std::make_shared(*this, req2); activeSources[1]->handle(c_ptr2); future2 = c_ptr2->get_future(); } @@ -1106,7 +1106,7 @@ void XrdAdaptor::RequestManager::OpenHandler::HandleResponseWithHosts(XrdCl::XRo std::string excludeString; Source::determineHostExcludeString(*m_file, hostList.get(), excludeString); - source.reset(new Source(now, std::move(m_file), excludeString)); + source = std::make_shared(now, std::move(m_file), excludeString); m_promise.set_value(source); } else { releaseFile = std::move(m_file); diff --git a/Validation/CaloTowers/test/client_cfg.py b/Validation/CaloTowers/test/client_cfg.py index 85824a9b3a1a7..754307cd8bf5e 100644 --- a/Validation/CaloTowers/test/client_cfg.py +++ b/Validation/CaloTowers/test/client_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms from DQMServices.Core.DQMEDHarvester import DQMEDHarvester diff --git a/Validation/EventGenerator/python/genvalidTools.py b/Validation/EventGenerator/python/genvalidTools.py index 7990401cb2033..da94c1349662b 100644 --- a/Validation/EventGenerator/python/genvalidTools.py +++ b/Validation/EventGenerator/python/genvalidTools.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms #function to switch to an external weight producer for an analyzer in the validation chain diff --git a/Validation/Geometry/python/plot_hgcal_utils.py b/Validation/Geometry/python/plot_hgcal_utils.py index 2615e387095cf..2115607e04a75 100644 --- a/Validation/Geometry/python/plot_hgcal_utils.py +++ b/Validation/Geometry/python/plot_hgcal_utils.py @@ -1,4 +1,3 @@ -from __future__ import print_function from ROOT import TStyle, kWhite, kTRUE from ROOT import gROOT, gStyle from ROOT import kGray, kAzure, kMagenta, kOrange, kWhite diff --git a/Validation/Geometry/test/MaterialBudget.py b/Validation/Geometry/test/MaterialBudget.py index 385332cab3ce6..0b6deb2199627 100644 --- a/Validation/Geometry/test/MaterialBudget.py +++ b/Validation/Geometry/test/MaterialBudget.py @@ -2,7 +2,6 @@ # Pure trick to start ROOT in batch mode, pass this only option to it # and the rest of the command line options to this code. -from __future__ import print_function import sys oldargv = sys.argv[:] sys.argv = [ '-b-' ] diff --git a/Validation/Geometry/test/MaterialBudgetHGCal.py b/Validation/Geometry/test/MaterialBudgetHGCal.py index 9e2d2212a6501..3250000a61da6 100644 --- a/Validation/Geometry/test/MaterialBudgetHGCal.py +++ b/Validation/Geometry/test/MaterialBudgetHGCal.py @@ -2,7 +2,6 @@ # Pure trick to start ROOT in batch mode, pass this only option to it # and the rest of the command line options to this code. -from __future__ import print_function import sys import numpy as np import pandas as pd diff --git a/Validation/Geometry/test/runMaterialMapForReco_fromReco.py b/Validation/Geometry/test/runMaterialMapForReco_fromReco.py index c3e801061359e..a9268b259009a 100644 --- a/Validation/Geometry/test/runMaterialMapForReco_fromReco.py +++ b/Validation/Geometry/test/runMaterialMapForReco_fromReco.py @@ -1,4 +1,3 @@ -from __future__ import print_function # Auto generated configuration file # using: # Revision: 1.19 diff --git a/Validation/Geometry/test/runP_HGCal_cfg.py b/Validation/Geometry/test/runP_HGCal_cfg.py index bec9853d49e76..7f477cf55baf5 100644 --- a/Validation/Geometry/test/runP_HGCal_cfg.py +++ b/Validation/Geometry/test/runP_HGCal_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # In order to produce everything that you need in one go, use the command: # # for t in {'BeamPipe','Tracker','PixBar','PixFwdMinus','PixFwdPlus','TIB','TOB','TIDB','TIDF','TEC','TkStrct','InnerServices'}; do cmsRun runP_Tracker_cfg.py geom=XYZ label=$t >& /dev/null &; done diff --git a/Validation/Geometry/test/runP_Tracker.py b/Validation/Geometry/test/runP_Tracker.py index 93541b0b81e54..d237d10fb589d 100644 --- a/Validation/Geometry/test/runP_Tracker.py +++ b/Validation/Geometry/test/runP_Tracker.py @@ -2,7 +2,6 @@ # # for t in {'BeamPipe','Tracker','PixBar','PixFwdMinus','PixFwdPlus','TIB','TOB','TIDB','TIDF','TEC','TkStrct','InnerServices'}; do python3 runP_Tracker.py geom=XYZ label=$t >& /dev/null &; done -from __future__ import print_function import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing import sys, re diff --git a/Validation/HGCalValidation/interface/HGCalValidator.h b/Validation/HGCalValidation/interface/HGCalValidator.h index 175ac5ef096fe..08a6f094c2bb1 100644 --- a/Validation/HGCalValidation/interface/HGCalValidator.h +++ b/Validation/HGCalValidation/interface/HGCalValidator.h @@ -32,6 +32,8 @@ #include "SimDataFormats/Associations/interface/LayerClusterToSimClusterAssociator.h" #include "SimDataFormats/Associations/interface/TICLAssociationMap.h" +#include "CommonTools/RecoAlgos/interface/MultiVectorManager.h" + class PileupSummaryInfo; struct HGCalValidatorHistograms { @@ -44,7 +46,7 @@ class HGCalValidator : public DQMGlobalEDAnalyzer { public: using Histograms = HGCalValidatorHistograms; using TracksterToTracksterMap = - ticl::AssociationMap, std::vector>; + ticl::AssociationMap, std::vector>; using SimClusterToCaloParticleMap = ticl::AssociationMap, std::vector>; @@ -65,7 +67,7 @@ class HGCalValidator : public DQMGlobalEDAnalyzer { std::vector& selected_cPeff, unsigned int layers, std::unordered_map const&, - std::vector const& hits) const; + MultiVectorManager const& hits) const; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); @@ -111,7 +113,7 @@ class HGCalValidator : public DQMGlobalEDAnalyzer { edm::EDGetTokenT associatorMapRtSim; std::unique_ptr histoProducerAlgo_; std::vector hits_label_; - std::vector> hits_token_; + std::vector> hits_tokens_; std::unique_ptr candidateVal_; std::vector> tracksterToTracksterAssociatorsTokens_; std::vector> tracksterToTracksterByHitsAssociatorsTokens_; diff --git a/Validation/HGCalValidation/interface/HGVHistoProducerAlgo.h b/Validation/HGCalValidation/interface/HGVHistoProducerAlgo.h index 216c1f89b9780..e1636f7ae3959 100644 --- a/Validation/HGCalValidation/interface/HGVHistoProducerAlgo.h +++ b/Validation/HGCalValidation/interface/HGVHistoProducerAlgo.h @@ -22,6 +22,8 @@ #include "DataFormats/HGCalReco/interface/Trackster.h" #include "RecoLocalCalo/HGCalRecAlgos/interface/RecHitTools.h" +#include "CommonTools/RecoAlgos/interface/MultiVectorManager.h" + #include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h" #include "SimDataFormats/Vertex/interface/SimVertex.h" #include "RecoLocalCalo/HGCalRecProducers/interface/HGCalClusteringAlgoBase.h" @@ -229,7 +231,7 @@ class HGVHistoProducerAlgo { typedef dqm::legacy::DQMStore DQMStore; typedef dqm::legacy::MonitorElement MonitorElement; using TracksterToTracksterMap = - ticl::AssociationMap, std::vector>; + ticl::AssociationMap, std::vector>; using SimClusterToCaloParticleMap = ticl::AssociationMap, std::vector>; enum validationType { byHits_CP = 0, byLCs, byLCs_CP, byHits }; @@ -280,7 +282,7 @@ class HGVHistoProducerAlgo { unsigned int layers, const ticl::RecoToSimCollection& recSimColl, const ticl::SimToRecoCollection& simRecColl, - std::vector const& hits) const; + MultiVectorManager const& hits) const; void layerClusters_to_SimClusters(const Histograms& histograms, const int count, edm::Handle clusterHandle, @@ -293,7 +295,7 @@ class HGVHistoProducerAlgo { unsigned int layers, const ticl::RecoToSimCollectionWithSimClusters& recSimColl, const ticl::SimToRecoCollectionWithSimClusters& simRecColl, - std::vector const& hits) const; + MultiVectorManager const& hits) const; void tracksters_to_SimTracksters_fp(const Histograms& histograms, const int count, @@ -312,7 +314,7 @@ class HGVHistoProducerAlgo { std::vector const& simVertices, unsigned int layers, std::unordered_map const&, - std::vector const& hits) const; + MultiVectorManager const& hits) const; void fill_generic_cluster_histos(const Histograms& histograms, const int count, edm::Handle clusterHandle, @@ -327,7 +329,7 @@ class HGVHistoProducerAlgo { std::vector thicknesses, const ticl::RecoToSimCollection& recSimColl, const ticl::SimToRecoCollection& simRecColl, - std::vector const& hits) const; + MultiVectorManager const& hits) const; void fill_simCluster_histos(const Histograms& histograms, std::vector const& simClusters, unsigned int layers, @@ -344,7 +346,7 @@ class HGVHistoProducerAlgo { unsigned int layers, const ticl::RecoToSimCollectionWithSimClusters& recSimColl, const ticl::SimToRecoCollectionWithSimClusters& simRecColl, - std::vector const& hits) const; + MultiVectorManager const& hits) const; void fill_cluster_histos(const Histograms& histograms, const int count, const reco::CaloCluster& cluster) const; void fill_trackster_histos(const Histograms& histograms, const int count, @@ -360,7 +362,7 @@ class HGVHistoProducerAlgo { std::vector const& cPSelectedIndices, std::unordered_map const& hitMap, unsigned int layers, - std::vector const& hits, + MultiVectorManager const& hits, bool mapsFound, const edm::Handle& trackstersToSimTrackstersByLCsMapH, const edm::Handle& simTrackstersToTrackstersByLCsMapH, @@ -378,7 +380,7 @@ class HGVHistoProducerAlgo { DetId findmaxhit(const reco::CaloCluster& cluster, std::unordered_map const&, - std::vector const& hits) const; + MultiVectorManager const& hits) const; struct detIdInfoInCluster { bool operator==(const detIdInfoInCluster& o) const { return clusterId == o.clusterId; }; diff --git a/Validation/HGCalValidation/interface/TICLCandidateValidator.h b/Validation/HGCalValidation/interface/TICLCandidateValidator.h index df96d3e1090c3..ae78a9c250e53 100644 --- a/Validation/HGCalValidation/interface/TICLCandidateValidator.h +++ b/Validation/HGCalValidation/interface/TICLCandidateValidator.h @@ -22,7 +22,7 @@ namespace ticl { using TracksterToTracksterMap = - ticl::AssociationMap, std::vector>; + ticl::AssociationMap, std::vector>; } struct TICLCandidateValidatorHistograms { diff --git a/Validation/HGCalValidation/plugins/HGCalValidator.cc b/Validation/HGCalValidation/plugins/HGCalValidator.cc index 0a45de66c27a3..4683112dd5818 100644 --- a/Validation/HGCalValidation/plugins/HGCalValidator.cc +++ b/Validation/HGCalValidation/plugins/HGCalValidator.cc @@ -1,3 +1,5 @@ +#include + #include "Validation/HGCalValidation/interface/HGCalValidator.h" #include "SimCalorimetry/HGCalAssociatorProducers/interface/AssociatorTools.h" @@ -24,7 +26,10 @@ namespace { const auto recoTrackstersProductId = tracksterHandle.id(); const auto simTrackstersProductId = simTracksterHandle.id(); const auto simTrackstersFromCPsProductId = simTracksterFromCPHandle.id(); - + if (recoTrackstersProductId == simTrackstersProductId or recoTrackstersProductId == simTrackstersFromCPsProductId) { + edm::LogInfo("MissingProduct") << "no SimTrackster to Simtrackster map available."; + return false; + } for (const auto& handle : tracksterToTracksterMapsHandles) { const auto& firstID = handle->getCollectionIDs().first.id(); const auto& secondID = handle->getCollectionIDs().second.id(); @@ -100,7 +105,7 @@ HGCalValidator::HGCalValidator(const edm::ParameterSet& pset) const edm::InputTag& label_cp_fake_tag = pset.getParameter("label_cp_fake"); for (auto& label : hits_label_) { - hits_token_.push_back(consumes(label)); + hits_tokens_.push_back(consumes(label)); } label_cp_effic = consumes>(label_cp_effic_tag); label_cp_fake = consumes>(label_cp_fake_tag); @@ -178,7 +183,7 @@ HGCalValidator::HGCalValidator(const edm::ParameterSet& pset) pset.getParameter("notConvertedOnlyCP"), pset.getParameter>("pdgIdCP")); - tools_.reset(new hgcal::RecHitTools()); + tools_ = std::make_shared(); particles_to_monitor_ = pset.getParameter>("pdgIdCP"); totallayers_to_monitor_ = pset.getParameter("totallayers_to_monitor"); @@ -339,7 +344,7 @@ void HGCalValidator::cpParametersAndSelection(const Histograms& histograms, std::vector& selected_cPeff, unsigned int layers, std::unordered_map const& hitMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { selected_cPeff.reserve(cPeff.size()); size_t j = 0; @@ -387,7 +392,7 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, edm::Handle>> simTrackstersMapHandle; event.getByToken(simTrackstersMap_, simTrackstersMapHandle); - const std::map> cpToSc_SimTrackstersMap = *simTrackstersMapHandle; + const std::map>& cpToSc_SimTrackstersMap = *simTrackstersMapHandle; edm::ESHandle geom = setup.getHandle(caloGeomToken_); tools_->setGeometry(*geom); @@ -395,20 +400,20 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, edm::Handle simtorecoCollectionH; event.getByToken(associatorMapStR, simtorecoCollectionH); - auto simRecColl = *simtorecoCollectionH; + const auto& simRecColl = *simtorecoCollectionH; edm::Handle recotosimCollectionH; event.getByToken(associatorMapRtS, recotosimCollectionH); - auto recSimColl = *recotosimCollectionH; + const auto& recSimColl = *recotosimCollectionH; edm::Handle> hitMapHandle; event.getByToken(hitMap_, hitMapHandle); - const std::unordered_map* hitMap = &*hitMapHandle; + const std::unordered_map& hitMap = *hitMapHandle; - std::vector hits; - for (auto& token : hits_token_) { - edm::Handle hitsHandle; + MultiVectorManager rechitManager; + for (const auto& token : hits_tokens_) { + Handle hitsHandle; event.getByToken(token, hitsHandle); - hits.insert(hits.end(), (*hitsHandle).begin(), (*hitsHandle).end()); + rechitManager.addVector(*hitsHandle); } //Some general info on layers etc. @@ -428,7 +433,7 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, LogTrace("HGCalValidator") << "\n# of CaloParticles: " << caloParticles.size() << "\n" << std::endl; std::vector selected_cPeff; cpParametersAndSelection( - histograms, caloParticles, simVertices, selected_cPeff, totallayers_to_monitor_, *hitMap, hits); + histograms, caloParticles, simVertices, selected_cPeff, totallayers_to_monitor_, hitMap, rechitManager); //get collections from the event //simClusters @@ -500,11 +505,11 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, simClusters, sCIndices, inputClusterMask, - *hitMap, + hitMap, totallayers_to_monitor_, recSimColl, simRecColl, - hits); + rechitManager); //General Info on simClusters LogTrace("HGCalValidator") << "\n# of SimClusters: " << nSimClusters @@ -525,13 +530,13 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, caloParticles, cPIndices, selected_cPeff, - *hitMap, + hitMap, cumulative_material_budget, totallayers_to_monitor_, thicknesses_to_monitor_, recSimColl, simRecColl, - hits); + rechitManager); for (unsigned int layerclusterIndex = 0; layerclusterIndex < clusters.size(); layerclusterIndex++) { histoProducerAlgo_->fill_cluster_histos(histograms.histoProducerAlgo, w, clusters[layerclusterIndex]); @@ -550,8 +555,6 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, edm::Handle tracksterHandle; event.getByToken(label_tstTokens[wml], tracksterHandle); const ticl::TracksterCollection& tracksters = *tracksterHandle; - if (tracksterHandle.id() == simTracksterHandle.id() or tracksterHandle.id() == simTracksterFromCPHandle.id()) - continue; edm::Handle trackstersToSimTrackstersMapH, simTrackstersToTrackstersMapH, trackstersToSimTrackstersFromCPsMapH, simTrackstersFromCPsToTrackstersMapH, trackstersToSimTrackstersByHitsMapH, simTrackstersToTrackstersByHitsMapH, @@ -587,9 +590,9 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, caloParticles, cPIndices, selected_cPeff, - *hitMap, + hitMap, totallayers_to_monitor_, - hits, + rechitManager, mapsFound, trackstersToSimTrackstersMapH, simTrackstersToTrackstersMapH, diff --git a/Validation/HGCalValidation/python/HGCalValidator_cff.py b/Validation/HGCalValidation/python/HGCalValidator_cff.py index 455f7c0ac8abb..2c3494421b0a4 100644 --- a/Validation/HGCalValidation/python/HGCalValidator_cff.py +++ b/Validation/HGCalValidation/python/HGCalValidator_cff.py @@ -13,7 +13,9 @@ from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2 premix_stage2.toModify(hgcalValidator, - label_cp_fake = "mixData:MergedCaloTruth" + label_cp_fake = "mixData:MergedCaloTruth", + label_cp_effic = "mixData:MergedCaloTruth", + label_scl = "mixData:MergedCaloTruth", ) from Configuration.Eras.Modifier_phase2_hgcalV10_cff import phase2_hgcalV10 diff --git a/Validation/HGCalValidation/python/hgcalPlots.py b/Validation/HGCalValidation/python/hgcalPlots.py index 556b3d4fd291f..2988c808fae82 100644 --- a/Validation/HGCalValidation/python/hgcalPlots.py +++ b/Validation/HGCalValidation/python/hgcalPlots.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import sys import copy diff --git a/Validation/HGCalValidation/scripts/harvestHGCalValidationPlots.py b/Validation/HGCalValidation/scripts/harvestHGCalValidationPlots.py index fd1dce9fc7256..9ebefb6e0a6d8 100755 --- a/Validation/HGCalValidation/scripts/harvestHGCalValidationPlots.py +++ b/Validation/HGCalValidation/scripts/harvestHGCalValidationPlots.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,tempfile,shutil,subprocess,glob import argparse diff --git a/Validation/HGCalValidation/scripts/makeHGCalValidationPlots.py b/Validation/HGCalValidation/scripts/makeHGCalValidationPlots.py index 80259923b0abe..2a5e3889215d5 100755 --- a/Validation/HGCalValidation/scripts/makeHGCalValidationPlots.py +++ b/Validation/HGCalValidation/scripts/makeHGCalValidationPlots.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import argparse import datetime @@ -29,9 +28,10 @@ tracksters = [] def main(opts): - + drawArgs={} extendedFlag = False + ticlVersion = 4 if opts.no_ratio: drawArgs["ratio"] = False if opts.separate: diff --git a/Validation/HGCalValidation/src/HGVHistoProducerAlgo.cc b/Validation/HGCalValidation/src/HGVHistoProducerAlgo.cc index f828332400e47..677cd9942ae76 100644 --- a/Validation/HGCalValidation/src/HGVHistoProducerAlgo.cc +++ b/Validation/HGCalValidation/src/HGVHistoProducerAlgo.cc @@ -1453,7 +1453,7 @@ void HGVHistoProducerAlgo::fill_caloparticle_histos(const Histograms& histograms std::vector const& simVertices, unsigned int layers, std::unordered_map const& hitMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { const auto eta = getEta(caloParticle.eta()); if (histograms.h_caloparticle_eta.count(pdgid)) { histograms.h_caloparticle_eta.at(pdgid)->Fill(eta); @@ -1715,7 +1715,7 @@ void HGVHistoProducerAlgo::HGVHistoProducerAlgo::fill_simClusterAssociation_hist unsigned int layers, const ticl::RecoToSimCollectionWithSimClusters& scsInLayerClusterMap, const ticl::SimToRecoCollectionWithSimClusters& lcsInSimClusterMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { //Each event to be treated as two events: an event in +ve endcap, //plus another event in -ve endcap. In this spirit there will be //a layer variable (layerid) that maps the layers in : @@ -1757,7 +1757,7 @@ void HGVHistoProducerAlgo::layerClusters_to_CaloParticles(const Histograms& hist unsigned int layers, const ticl::RecoToSimCollection& cpsInLayerClusterMap, const ticl::SimToRecoCollection& cPOnLayerMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { const auto nLayerClusters = clusters.size(); std::unordered_map> detIdToCaloParticleId_Map; @@ -2018,7 +2018,7 @@ void HGVHistoProducerAlgo::layerClusters_to_SimClusters( unsigned int layers, const ticl::RecoToSimCollectionWithSimClusters& scsInLayerClusterMap, const ticl::SimToRecoCollectionWithSimClusters& lcsInSimClusterMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { // Here fill the plots to compute the different metrics linked to // reco-level, namely fake-rate and merge-rate. In this loop should *not* // restrict only to the selected SimClusters. @@ -2199,7 +2199,7 @@ void HGVHistoProducerAlgo::fill_generic_cluster_histos(const Histograms& histogr std::vector thicknesses, const ticl::RecoToSimCollection& cpsInLayerClusterMap, const ticl::SimToRecoCollection& cPOnLayerMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { //Each event to be treated as two events: an event in +ve endcap, //plus another event in -ve endcap. In this spirit there will be //a layer variable (layerid) that maps the layers in : @@ -2524,8 +2524,8 @@ void HGVHistoProducerAlgo::tracksters_to_SimTracksters_fp(const Histograms& hist const auto productID = simTS.seedID(); if (productID == cPHandle_id) { return simTS.seedIndex(); - } else { // SimTrackster from SimCluster - return int(scToCpMap[simTS.seedIndex()].first); + } else { + return int(scToCpMap.at(simTS.seedIndex()).index()); } }; @@ -2539,7 +2539,6 @@ void HGVHistoProducerAlgo::tracksters_to_SimTracksters_fp(const Histograms& hist float iTS_phi = trackster.barycenter().phi(); float iTS_en = trackster.raw_energy(); float iTS_pt = trackster.raw_pt(); - histograms.h_denom_trackster_eta[valType][count]->Fill(iTS_eta); histograms.h_denom_trackster_phi[valType][count]->Fill(iTS_phi); histograms.h_denom_trackster_en[valType][count]->Fill(iTS_en); @@ -2547,8 +2546,8 @@ void HGVHistoProducerAlgo::tracksters_to_SimTracksters_fp(const Histograms& hist // loop over trackstersToSimTrackstersMap[tracksterIndex] by index for (unsigned int i = 0; i < trackstersToSimTrackstersMap[tracksterIndex].size(); ++i) { - const auto& [sts_id, sharedEnergyScorePair] = trackstersToSimTrackstersMap[tracksterIndex][i]; - const auto& [sharedEnergy, score] = sharedEnergyScorePair; + auto sharedEnergy = trackstersToSimTrackstersMap[tracksterIndex][i].sharedEnergy(); + auto score = trackstersToSimTrackstersMap[tracksterIndex][i].score(); float sharedEnergyFraction = sharedEnergy / trackster.raw_energy(); if (i == 0) { histograms.h_score_trackster2bestCaloparticle[valType][count]->Fill(score); @@ -2590,10 +2589,9 @@ void HGVHistoProducerAlgo::tracksters_to_SimTracksters_fp(const Histograms& hist // only to the selected caloParaticles. for (unsigned int simTracksterIndex = 0; simTracksterIndex < nSimTracksters; ++simTracksterIndex) { const auto& simTrackster = *(simTrackstersToTrackstersMap.getRefFirst(simTracksterIndex)); - const auto& cpId = getCPId(simTrackster, cPHandle_id, scToCpMap); + const auto cpId = getCPId(simTrackster, cPHandle_id, scToCpMap); if (std::find(cPSelectedIndices.begin(), cPSelectedIndices.end(), cpId) == cPSelectedIndices.end()) continue; - const auto sts_eta = simTrackster.barycenter().eta(); const auto sts_phi = simTrackster.barycenter().phi(); const auto sts_en = simTrackster.raw_energy(); @@ -2613,11 +2611,9 @@ void HGVHistoProducerAlgo::tracksters_to_SimTracksters_fp(const Histograms& hist bool sts_considered_pure = false; for (unsigned int i = 0; i < simTrackstersToTrackstersMap[simTracksterIndex].size(); ++i) { - const auto& [tracksterId, sharedEnergyScorePair] = simTrackstersToTrackstersMap[simTracksterIndex][i]; - const auto& [sharedEnergy, score] = sharedEnergyScorePair; - + const auto sharedEnergy = simTrackstersToTrackstersMap[simTracksterIndex][i].sharedEnergy(); + const auto score = simTrackstersToTrackstersMap[simTracksterIndex][i].score(); float sharedEnergyFraction = sharedEnergy * inv_simtrackster_energy; - if (i == 0) { histograms.h_scorePur_caloparticle2trackster[valType][count]->Fill(score); histograms.h_sharedenergy_caloparticle2trackster_assoc[valType][count]->Fill(sharedEnergyFraction); @@ -2688,7 +2684,7 @@ void HGVHistoProducerAlgo::fill_trackster_histos( std::vector const& cPSelectedIndices, std::unordered_map const& hitMap, unsigned int layers, - std::vector const& hits, + MultiVectorManager const& hits, bool mapsFound, const edm::Handle& trackstersToSimTrackstersByLCsMapH, const edm::Handle& simTrackstersToTrackstersByLCsMapH, @@ -2936,7 +2932,7 @@ void HGVHistoProducerAlgo::setRecHitTools(std::shared_ptr re DetId HGVHistoProducerAlgo::findmaxhit(const reco::CaloCluster& cluster, std::unordered_map const& hitMap, - std::vector const& hits) const { + MultiVectorManager const& hits) const { const auto& hits_and_fractions = cluster.hitsAndFractions(); DetId themaxid; diff --git a/Validation/HGCalValidation/src/TICLCandidateValidator.cc b/Validation/HGCalValidation/src/TICLCandidateValidator.cc index 6120780b68381..e10ff0cc6bc2d 100644 --- a/Validation/HGCalValidation/src/TICLCandidateValidator.cc +++ b/Validation/HGCalValidation/src/TICLCandidateValidator.cc @@ -365,10 +365,10 @@ void TICLCandidateValidator::fillCandidateHistos(const edm::Event& event, if (!ts_vec.empty()) { auto min_elem = std::min_element(ts_vec.begin(), ts_vec.end(), [](auto const& ts1_id_pair, auto const& ts2_id_pair) { - return ts1_id_pair.second.second < ts2_id_pair.second.second; + return ts1_id_pair.score() < ts2_id_pair.score(); }); - shared_energy = min_elem->second.first; - cand_idx = min_elem->first; + shared_energy = min_elem->sharedEnergy(); + cand_idx = min_elem->index(); } // no reco associated to sim if (cand_idx == -1) @@ -442,10 +442,10 @@ void TICLCandidateValidator::fillCandidateHistos(const edm::Event& event, if (!ts_vec.empty()) { auto min_elem = std::min_element(ts_vec.begin(), ts_vec.end(), [](auto const& ts1_id_pair, auto const& ts2_id_pair) { - return ts1_id_pair.second.second < ts2_id_pair.second.second; + return ts1_id_pair.score() < ts2_id_pair.score(); }); - shared_energy = min_elem->second.first; - cand_idx = min_elem->first; + shared_energy = min_elem->sharedEnergy(); + cand_idx = min_elem->index(); } // no reco associated to sim @@ -555,10 +555,10 @@ void TICLCandidateValidator::fillCandidateHistos(const edm::Event& event, if (!sts_vec.empty()) { auto min_elem = std::min_element(sts_vec.begin(), sts_vec.end(), [](auto const& sts1_id_pair, auto const& sts2_id_pair) { - return sts1_id_pair.second.second < sts2_id_pair.second.second; + return sts1_id_pair.score() < sts2_id_pair.score(); }); - shared_energy = min_elem->second.first; - simCand_idx = min_elem->first; + shared_energy = min_elem->sharedEnergy(); + simCand_idx = min_elem->index(); } if (simCand_idx == -1) @@ -641,10 +641,10 @@ void TICLCandidateValidator::fillCandidateHistos(const edm::Event& event, if (!sts_vec.empty()) { auto min_elem = std::min_element(sts_vec.begin(), sts_vec.end(), [](auto const& sts1_id_pair, auto const& sts2_id_pair) { - return sts1_id_pair.second.second < sts2_id_pair.second.second; + return sts1_id_pair.score() < sts2_id_pair.score(); }); - shared_energy = min_elem->second.first; - simCand_idx = min_elem->first; + shared_energy = min_elem->sharedEnergy(); + simCand_idx = min_elem->index(); } if (simCand_idx == -1) diff --git a/Validation/HcalDigis/test/ZdcSimHitStudy_cfg.py b/Validation/HcalDigis/test/ZdcSimHitStudy_cfg.py index 1efbf1b4f38b2..0a0a66325e058 100644 --- a/Validation/HcalDigis/test/ZdcSimHitStudy_cfg.py +++ b/Validation/HcalDigis/test/ZdcSimHitStudy_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import os diff --git a/Validation/MtdValidation/plugins/BtlDigiHitsValidation.cc b/Validation/MtdValidation/plugins/BtlDigiHitsValidation.cc index e32ab7320199d..b0c01dd954ab0 100644 --- a/Validation/MtdValidation/plugins/BtlDigiHitsValidation.cc +++ b/Validation/MtdValidation/plugins/BtlDigiHitsValidation.cc @@ -28,7 +28,7 @@ #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" diff --git a/Validation/MtdValidation/plugins/BtlLocalRecoValidation.cc b/Validation/MtdValidation/plugins/BtlLocalRecoValidation.cc index b7f9513d8d2b3..d43c28d462ed1 100644 --- a/Validation/MtdValidation/plugins/BtlLocalRecoValidation.cc +++ b/Validation/MtdValidation/plugins/BtlLocalRecoValidation.cc @@ -37,7 +37,7 @@ #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" diff --git a/Validation/MtdValidation/plugins/BtlSimHitsValidation.cc b/Validation/MtdValidation/plugins/BtlSimHitsValidation.cc index 96ea5618c8dfd..ea1f744601192 100644 --- a/Validation/MtdValidation/plugins/BtlSimHitsValidation.cc +++ b/Validation/MtdValidation/plugins/BtlSimHitsValidation.cc @@ -32,7 +32,7 @@ #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" diff --git a/Validation/MtdValidation/plugins/EtlDigiHitsValidation.cc b/Validation/MtdValidation/plugins/EtlDigiHitsValidation.cc index 76edfff75959e..c59757092ac46 100644 --- a/Validation/MtdValidation/plugins/EtlDigiHitsValidation.cc +++ b/Validation/MtdValidation/plugins/EtlDigiHitsValidation.cc @@ -26,9 +26,10 @@ #include "DataFormats/FTLDigi/interface/FTLDigiCollections.h" #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" +#include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" #include "Geometry/CommonTopologies/interface/PixelTopology.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" class EtlDigiHitsValidation : public DQMEDAnalyzer { diff --git a/Validation/MtdValidation/plugins/EtlLocalRecoValidation.cc b/Validation/MtdValidation/plugins/EtlLocalRecoValidation.cc index fcff9482c1386..e367986dd3b7c 100644 --- a/Validation/MtdValidation/plugins/EtlLocalRecoValidation.cc +++ b/Validation/MtdValidation/plugins/EtlLocalRecoValidation.cc @@ -37,10 +37,11 @@ #include "SimDataFormats/TrackingHit/interface/PSimHit.h" #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" +#include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" #include "Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h" diff --git a/Validation/MtdValidation/plugins/EtlSimHitsValidation.cc b/Validation/MtdValidation/plugins/EtlSimHitsValidation.cc index fd5ec4afc2fb5..e52981101f460 100644 --- a/Validation/MtdValidation/plugins/EtlSimHitsValidation.cc +++ b/Validation/MtdValidation/plugins/EtlSimHitsValidation.cc @@ -33,8 +33,9 @@ #include "Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h" #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" +#include "Geometry/Records/interface/MTDTopologyRcd.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "MTDHit.h" diff --git a/Validation/MtdValidation/plugins/MtdTracksHarvester.cc b/Validation/MtdValidation/plugins/MtdTracksHarvester.cc index d3d0a271b2cb6..aa561374805a1 100644 --- a/Validation/MtdValidation/plugins/MtdTracksHarvester.cc +++ b/Validation/MtdValidation/plugins/MtdTracksHarvester.cc @@ -44,11 +44,17 @@ class MtdTracksHarvester : public DQMEDHarvester { MonitorElement* meBTLTPPtMatchEff_; MonitorElement* meBTLTPEtaMatchEff_; MonitorElement* meETLTPPtSelEff_; + MonitorElement* meBTLTPPtCorrectMatchEff_; + MonitorElement* meBTLTPEtaCorrectMatchEff_; MonitorElement* meETLTPEtaSelEff_; MonitorElement* meETLTPPtMatchEff_; MonitorElement* meETLTPEtaMatchEff_; MonitorElement* meETLTPPtMatchEff2_; MonitorElement* meETLTPEtaMatchEff2_; + MonitorElement* meETLTPPtCorrectMatchEff_; + MonitorElement* meETLTPEtaCorrectMatchEff_; + MonitorElement* meETLTPPtCorrectMatchEff2_; + MonitorElement* meETLTPEtaCorrectMatchEff2_; // - BTL track-mtd matching efficiencies MonitorElement* meBTLTPmtdDirectEtaSelEff_; @@ -187,6 +193,8 @@ void MtdTracksHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& MonitorElement* meETLTrackMatchedTPEtaTot = igetter.get(folder_ + "ETLTrackMatchedTPEtaTot"); MonitorElement* meETLTrackMatchedTPEtaMtd = igetter.get(folder_ + "ETLTrackMatchedTPEtaMtd"); MonitorElement* meETLTrackMatchedTPEta2Mtd = igetter.get(folder_ + "ETLTrackMatchedTPEta2Mtd"); + MonitorElement* meETLTrackMatchedTPPtMtdCorrect = igetter.get(folder_ + "ETLTrackMatchedTPPtMtdCorrect"); + MonitorElement* meETLTrackMatchedTPEtaMtdCorrect = igetter.get(folder_ + "ETLTrackMatchedTPEtaMtdCorrect"); // MonitorElement* meBTLTrackMatchedTPmtdDirectEta = igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectEta"); @@ -268,7 +276,7 @@ void MtdTracksHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& !meBTLTrackMatchedTPPtTot || !meBTLTrackMatchedTPPtMtd || !meBTLTrackMatchedTPEtaTot || !meBTLTrackMatchedTPEtaMtd || !meETLTrackMatchedTPPtTot || !meETLTrackMatchedTPPtMtd || !meETLTrackMatchedTPPt2Mtd || !meETLTrackMatchedTPEtaTot || !meETLTrackMatchedTPEtaMtd || - !meETLTrackMatchedTPEta2Mtd || + !meETLTrackMatchedTPEta2Mtd || !meETLTrackMatchedTPPtMtdCorrect || !meETLTrackMatchedTPEtaMtdCorrect || !meBTLTrackMatchedTPmtdDirectEta || !meBTLTrackMatchedTPmtdDirectPt || !meBTLTrackMatchedTPmtdOtherEta || !meBTLTrackMatchedTPmtdOtherPt || !meBTLTrackMatchedTPnomtdEta || !meBTLTrackMatchedTPnomtdPt || @@ -468,6 +476,42 @@ void MtdTracksHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& meBTLTPEtaMatchEff_->getTH1()->SetMinimum(0.); computeEfficiency1D(meBTLTrackMatchedTPEtaMtd, meBTLTrackMatchedTPEtaTot, meBTLTPEtaMatchEff_); + // -- BTL fraction of tracks with time and correct reco match + meBTLTPPtCorrectMatchEff_ = + ibook.book1D("BTLTPPtCorrectMatchEff", + "Track matched to TP efficiency for correct reco match VS Pt;Pt [GeV];Efficiency", + meBTLTrackMatchedTPPtMtd->getNbinsX(), + meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmin(), + meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmax()); + meBTLTPPtCorrectMatchEff_->getTH1()->SetMinimum(0.); + MonitorElement* meBTLTrackMatchedTPPtMtdCorrect = + ibook.book1D("BTLTrackMatchedTPPtMtdCorrect", + "Pt of tracks matched to TP with correct reco match; Pt [GeV];Efficiency", + meBTLTrackMatchedTPPtMtd->getNbinsX(), + meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmin(), + meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmax()); + meBTLTrackMatchedTPPtMtdCorrect->getTH1F()->Add(meBTLTrackMatchedTPmtdDirectCorrectAssocPt->getTH1F(), + meBTLTrackMatchedTPmtdOtherCorrectAssocPt->getTH1F()); + computeEfficiency1D(meBTLTrackMatchedTPPtMtdCorrect, meBTLTrackMatchedTPPtMtd, meBTLTPPtCorrectMatchEff_); + + meBTLTPEtaCorrectMatchEff_ = + ibook.book1D("BTLTPEtaCorrectMatchEff", + "Track matched to TP efficiency for correct reco match VS Eta;Eta;Efficiency", + meBTLTrackMatchedTPEtaMtd->getNbinsX(), + meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmin(), + meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmax()); + meBTLTPEtaCorrectMatchEff_->getTH1()->SetMinimum(0.); + MonitorElement* meBTLTrackMatchedTPEtaMtdCorrect = + ibook.book1D("BTLTrackMatchedTPEtaMtdCorrect", + "Eta of tracks matched to TP with correct reco match; Eta [GeV];Efficiency", + meBTLTrackMatchedTPEtaMtd->getNbinsX(), + meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmin(), + meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmax()); + meBTLTrackMatchedTPEtaMtdCorrect->getTH1F()->Add(meBTLTrackMatchedTPmtdDirectCorrectAssocEta->getTH1F(), + meBTLTrackMatchedTPmtdOtherCorrectAssocEta->getTH1F()); + computeEfficiency1D(meBTLTrackMatchedTPEtaMtdCorrect, meBTLTrackMatchedTPEtaMtd, meBTLTPEtaCorrectMatchEff_); + + // -- ETL meETLTPPtSelEff_ = ibook.book1D("ETLTPPtSelEff", "Track selected efficiency TP VS Pt;Pt [GeV];Efficiency", meETLTrackPtTot->getNbinsX(), @@ -516,6 +560,43 @@ void MtdTracksHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& meETLTPEtaMatchEff2_->getTH1()->SetMinimum(0.); computeEfficiency1D(meETLTrackMatchedTPEta2Mtd, meETLTrackMatchedTPEtaTot, meETLTPEtaMatchEff2_); + //-- ETL fraction of tracks with time and correct reco match + meETLTPPtCorrectMatchEff_ = + ibook.book1D("ETLTPPtCorrectMatchEff", + "Track matched to TP efficiency with correct reco match VS Pt;Pt [GeV];Efficiency", + meETLTrackMatchedTPPtMtd->getNbinsX(), + meETLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmin(), + meETLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmax()); + meETLTPPtCorrectMatchEff_->getTH1()->SetMinimum(0.); + computeEfficiency1D(meETLTrackMatchedTPPtMtdCorrect, meETLTrackMatchedTPPtMtd, meETLTPPtCorrectMatchEff_); + + meETLTPEtaCorrectMatchEff_ = + ibook.book1D("ETLTPEtaCorrectMatchEff", + "Track matched to TP efficiency with correct reco match VS Eta;Eta;Efficiency", + meETLTrackMatchedTPEtaMtd->getNbinsX(), + meETLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmin(), + meETLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmax()); + meETLTPEtaCorrectMatchEff_->getTH1()->SetMinimum(0.); + computeEfficiency1D(meETLTrackMatchedTPEtaMtdCorrect, meETLTrackMatchedTPEtaMtd, meETLTPEtaCorrectMatchEff_); + + meETLTPPtCorrectMatchEff2_ = + ibook.book1D("ETLTPPtCorrectMatchEff2", + "Track matched to TP efficiency with correct reco match (2 hits) VS Pt;Pt [GeV];Efficiency", + meETLTrackMatchedTPPt2Mtd->getNbinsX(), + meETLTrackMatchedTPPt2Mtd->getTH1()->GetXaxis()->GetXmin(), + meETLTrackMatchedTPPt2Mtd->getTH1()->GetXaxis()->GetXmax()); + meETLTPPtCorrectMatchEff2_->getTH1()->SetMinimum(0.); + computeEfficiency1D(meETLTrackMatchedTPmtd2CorrectAssocPt, meETLTrackMatchedTPPt2Mtd, meETLTPPtCorrectMatchEff2_); + + meETLTPEtaCorrectMatchEff2_ = + ibook.book1D("ETLTPEtaCorrectMatchEff2", + "Track matched to TP efficiency with correct reco match (2 hits) VS Eta;Eta;Efficiency", + meETLTrackMatchedTPEta2Mtd->getNbinsX(), + meETLTrackMatchedTPEta2Mtd->getTH1()->GetXaxis()->GetXmin(), + meETLTrackMatchedTPEta2Mtd->getTH1()->GetXaxis()->GetXmax()); + meETLTPEtaCorrectMatchEff2_->getTH1()->SetMinimum(0.); + computeEfficiency1D(meETLTrackMatchedTPmtd2CorrectAssocEta, meETLTrackMatchedTPEta2Mtd, meETLTPEtaCorrectMatchEff2_); + // == Track-cluster matching efficiencies based on mc truth // -- BTL meBTLTPmtdDirectEtaSelEff_ = ibook.book1D("BTLTPmtdDirectEtaSelEff", diff --git a/Validation/MtdValidation/plugins/MtdTracksValidation.cc b/Validation/MtdValidation/plugins/MtdTracksValidation.cc index 5ea8cf8fa7611..7e4e999c776d4 100644 --- a/Validation/MtdValidation/plugins/MtdTracksValidation.cc +++ b/Validation/MtdValidation/plugins/MtdTracksValidation.cc @@ -27,7 +27,7 @@ #include "Geometry/Records/interface/MTDDigiGeometryRecord.h" #include "Geometry/Records/interface/MTDTopologyRcd.h" -#include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h" +#include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h" #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h" @@ -213,6 +213,8 @@ class MtdTracksValidation : public DQMEDAnalyzer { MonitorElement* meETLTrackMatchedTPPtMtd_; MonitorElement* meETLTrackMatchedTPEta2Mtd_; MonitorElement* meETLTrackMatchedTPPt2Mtd_; + MonitorElement* meETLTrackMatchedTPEtaMtdCorrect_; + MonitorElement* meETLTrackMatchedTPPtMtdCorrect_; MonitorElement* meTracktmtd_; MonitorElement* meTrackt0Src_; @@ -749,7 +751,8 @@ void MtdTracksValidation::analyze(const edm::Event& iEvent, const edm::EventSetu }); // Find the first direct hit in time directSimClusIt = std::find_if(simClustersRefs.begin(), simClustersRefs.end(), [](const auto& simCluster) { - return simCluster->trackIdOffset() == 0; + MTDDetId mtddetid = simCluster->detIds_and_rows().front().first; + return (mtddetid.mtdSubDetector() == 1 && simCluster->trackIdOffset() == 0); }); // Check if TP has direct or other sim cluster for BTL for (const auto& simClusterRef : simClustersRefs) { @@ -882,6 +885,11 @@ void MtdTracksValidation::analyze(const edm::Event& iEvent, const edm::EventSetu } // == end BTL // == ETL else { + // -- Track matched to TP with reco hits (one or two) correctly matched + if ((ETLdisc1 && isTPmtdCorrectETLD1) || (ETLdisc2 && isTPmtdCorrectETLD2)) { + meETLTrackMatchedTPEtaMtdCorrect_->Fill(std::abs(trackGen.eta())); + meETLTrackMatchedTPPtMtdCorrect_->Fill(trackGen.pt()); + } // -- Track matched to TP with sim hit in one etl layer if (isTPmtdETLD1 || isTPmtdETLD2) { // at least one hit (D1 or D2 or both) meETLTrackMatchedTPmtd1Eta_->Fill(std::abs(trackGen.eta())); @@ -1436,12 +1444,24 @@ void MtdTracksValidation::bookHistograms(DQMStore::IBooker& ibook, edm::Run cons ibook.book1D("ETLTrackMatchedTPEtaTot", "Eta of tracks matched to TP; track eta ", 30, 1.5, 3.0); meETLTrackMatchedTPEtaMtd_ = ibook.book1D( "ETLTrackMatchedTPEtaMtd", "Eta of tracks matched to TP with time (>=1 ETL hit); track eta ", 30, 1.5, 3.0); + meETLTrackMatchedTPEtaMtdCorrect_ = + ibook.book1D("ETLTrackMatchedTPEtaMtdCorrect", + "Eta of tracks matched to TP with time (>=1 ETL hit), correct reco match; track eta ", + 30, + 1.5, + 3.0); meETLTrackMatchedTPEta2Mtd_ = ibook.book1D( "ETLTrackMatchedTPEta2Mtd", "Eta of tracks matched to TP with time (2 ETL hits); track eta ", 30, 1.5, 3.0); meETLTrackMatchedTPPtTot_ = ibook.book1D("ETLTrackMatchedTPPtTot", "Pt of tracks matched to TP; track pt [GeV] ", 50, 0., 10.); meETLTrackMatchedTPPtMtd_ = ibook.book1D( "ETLTrackMatchedTPPtMtd", "Pt of tracks matched to TP with time (>=1 ETL hit); track pt [GeV] ", 50, 0., 10.); + meETLTrackMatchedTPPtMtdCorrect_ = + ibook.book1D("ETLTrackMatchedTPPtMtdCorrect", + "Pt of tracks matched to TP with time (>=1 ETL hit), correct reco match; track pt [GeV] ", + 50, + 0., + 10.); meETLTrackMatchedTPPt2Mtd_ = ibook.book1D( "ETLTrackMatchedTPPt2Mtd", "Pt of tracks matched to TP with time (2 ETL hits); track pt [GeV] ", 50, 0., 10.); diff --git a/Validation/MtdValidation/test/mtdHarvesting_cfg.py b/Validation/MtdValidation/test/mtdHarvesting_cfg.py index ab8b3c99200f9..aa6ad60b4cdce 100644 --- a/Validation/MtdValidation/test/mtdHarvesting_cfg.py +++ b/Validation/MtdValidation/test/mtdHarvesting_cfg.py @@ -8,7 +8,7 @@ process.load('Configuration.StandardSequences.EDMtoMEAtRunEnd_cff') process.load('SimGeneral.MixingModule.mixNoPU_cfi') -process.load("Configuration.Geometry.GeometryExtended2026D110Reco_cff") +process.load("Configuration.Geometry.GeometryExtendedRun4D110Reco_cff") process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(-1) ) diff --git a/Validation/MtdValidation/test/mtdValidation_cfg.py b/Validation/MtdValidation/test/mtdValidation_cfg.py index 7d9f4e8d189bf..ab3fb00444b24 100644 --- a/Validation/MtdValidation/test/mtdValidation_cfg.py +++ b/Validation/MtdValidation/test/mtdValidation_cfg.py @@ -10,7 +10,7 @@ process.load('Configuration.StandardSequences.EndOfProcess_cff') process.load('SimGeneral.MixingModule.mixNoPU_cfi') -process.load("Configuration.Geometry.GeometryExtended2026D110Reco_cff") +process.load("Configuration.Geometry.GeometryExtendedRun4D110Reco_cff") process.load('Configuration.StandardSequences.MagneticField_cff') process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') from Configuration.AlCa.GlobalTag import GlobalTag diff --git a/Validation/MuonHits/plugins/MuonSimHitsValidAnalyzer.cc b/Validation/MuonHits/plugins/MuonSimHitsValidAnalyzer.cc index d69f75357d7f9..c9432c19dd918 100644 --- a/Validation/MuonHits/plugins/MuonSimHitsValidAnalyzer.cc +++ b/Validation/MuonHits/plugins/MuonSimHitsValidAnalyzer.cc @@ -123,8 +123,8 @@ void MuonSimHitsValidAnalyzer::bookHistograms(DQMStore::IBooker& iBooker, sprintf(histo_t, "Number_of_muon_DT_hits"); meMuDTHits = iBooker.book1D(histo_n, histo_t, 150, 1.0, 151.0); - sprintf(histo_n, "Tof_of_hits "); - sprintf(histo_t, "Tof_of_hits "); + sprintf(histo_n, "Tof_of_hits"); + sprintf(histo_t, "Tof_of_hits"); meToF = iBooker.book1D(histo_n, histo_t, 100, -0.5, 50.); sprintf(histo_n, "DT_energy_loss_keV"); diff --git a/Validation/Performance/python/TimeMemoryInfo.py b/Validation/Performance/python/TimeMemoryInfo.py index 26d1d8b70b5d3..57883722a75d1 100644 --- a/Validation/Performance/python/TimeMemoryInfo.py +++ b/Validation/Performance/python/TimeMemoryInfo.py @@ -18,3 +18,6 @@ def customise(process): ) return(process) + +def customiseWithTimeMemoryInfo(process): + return customise(process) diff --git a/Validation/Performance/scripts/cmsSimplememchecker_parser.py b/Validation/Performance/scripts/cmsSimplememchecker_parser.py index aad34a5153eb0..cdf76bbe87162 100755 --- a/Validation/Performance/scripts/cmsSimplememchecker_parser.py +++ b/Validation/Performance/scripts/cmsSimplememchecker_parser.py @@ -1,7 +1,6 @@ #! /usr/bin/env python3 -from __future__ import print_function def manipulate_log(outdir,logfile_name,startevt): import time diff --git a/Validation/Performance/scripts/cmsTiming_parser.py b/Validation/Performance/scripts/cmsTiming_parser.py index f5103790bb56e..1e656c36e4eca 100755 --- a/Validation/Performance/scripts/cmsTiming_parser.py +++ b/Validation/Performance/scripts/cmsTiming_parser.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import sys, os import time diff --git a/Validation/RecoB/scripts/Inspector.py b/Validation/RecoB/scripts/Inspector.py index a1d51e96b6c21..c5f90b44894c0 100644 --- a/Validation/RecoB/scripts/Inspector.py +++ b/Validation/RecoB/scripts/Inspector.py @@ -1,4 +1,3 @@ -from __future__ import print_function #____________________________________________________________ # # cuy diff --git a/Validation/RecoB/scripts/cuy.py b/Validation/RecoB/scripts/cuy.py index 8de1976c55d2c..cfd6b7ecbc510 100755 --- a/Validation/RecoB/scripts/cuy.py +++ b/Validation/RecoB/scripts/cuy.py @@ -11,7 +11,6 @@ # Fermilab, 2008 # # imported from UserCode/Yumiceva/cuy -from __future__ import print_function # # modified by Adrien Caudron to create TGraphErrors for b-tag performance plots # UCLouvain, 2012 diff --git a/Validation/RecoB/scripts/histoStyle.py b/Validation/RecoB/scripts/histoStyle.py index 56e485c1c6083..d6b84e09fd47b 100644 --- a/Validation/RecoB/scripts/histoStyle.py +++ b/Validation/RecoB/scripts/histoStyle.py @@ -1,4 +1,3 @@ -from __future__ import print_function ####### diff --git a/Validation/RecoB/scripts/plotFactory.py b/Validation/RecoB/scripts/plotFactory.py index 72f3d51005af9..c5d54a7ec8942 100755 --- a/Validation/RecoB/scripts/plotFactory.py +++ b/Validation/RecoB/scripts/plotFactory.py @@ -8,7 +8,6 @@ ####### #import all what is needed -from __future__ import print_function from histoStyle import * #parser options from optparse import OptionParser diff --git a/Validation/RecoB/test/GridValidation/validation_FirstStepOnGrid.py b/Validation/RecoB/test/GridValidation/validation_FirstStepOnGrid.py index 105b840d14331..e155a1b5f7225 100644 --- a/Validation/RecoB/test/GridValidation/validation_FirstStepOnGrid.py +++ b/Validation/RecoB/test/GridValidation/validation_FirstStepOnGrid.py @@ -1,4 +1,3 @@ -from __future__ import print_function # The following comments couldn't be translated into the new config version: #! /bin/env cmsRun diff --git a/Validation/RecoB/test/validation_customJet_cfg.py b/Validation/RecoB/test/validation_customJet_cfg.py index 98b68f2658c42..8f229af3400ae 100644 --- a/Validation/RecoB/test/validation_customJet_cfg.py +++ b/Validation/RecoB/test/validation_customJet_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function # The following comments couldn't be translated into the new config version: #! /bin/env cmsRun diff --git a/Validation/RecoB/test/validation_fromRECO_cfg.py b/Validation/RecoB/test/validation_fromRECO_cfg.py index eee1521d4d022..466b1308a58da 100644 --- a/Validation/RecoB/test/validation_fromRECO_cfg.py +++ b/Validation/RecoB/test/validation_fromRECO_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function #Basic example configration file to run the b-tagging validation sequence. import FWCore.ParameterSet.Config as cms process = cms.Process("validation") diff --git a/Validation/RecoEgamma/test/ElectronMcFakeValidation_gedGsfElectrons_cfg.py b/Validation/RecoEgamma/test/ElectronMcFakeValidation_gedGsfElectrons_cfg.py index c59c7f1cb6262..1258b8993b214 100644 --- a/Validation/RecoEgamma/test/ElectronMcFakeValidation_gedGsfElectrons_cfg.py +++ b/Validation/RecoEgamma/test/ElectronMcFakeValidation_gedGsfElectrons_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import os diff --git a/Validation/RecoEgamma/test/ElectronMcSignalValidationMiniAOD_cfg.py b/Validation/RecoEgamma/test/ElectronMcSignalValidationMiniAOD_cfg.py index 40116cb180472..637fa3f99eace 100644 --- a/Validation/RecoEgamma/test/ElectronMcSignalValidationMiniAOD_cfg.py +++ b/Validation/RecoEgamma/test/ElectronMcSignalValidationMiniAOD_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import os diff --git a/Validation/RecoEgamma/test/ElectronMcSignalValidationPt1000_gedGsfElectrons_cfg.py b/Validation/RecoEgamma/test/ElectronMcSignalValidationPt1000_gedGsfElectrons_cfg.py index 36e1db6ed02e7..f349642c85a93 100644 --- a/Validation/RecoEgamma/test/ElectronMcSignalValidationPt1000_gedGsfElectrons_cfg.py +++ b/Validation/RecoEgamma/test/ElectronMcSignalValidationPt1000_gedGsfElectrons_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import os diff --git a/Validation/RecoEgamma/test/ElectronMcSignalValidation_gedGsfElectrons_cfg.py b/Validation/RecoEgamma/test/ElectronMcSignalValidation_gedGsfElectrons_cfg.py index b0de4c25ebf16..eebccfb6c0281 100644 --- a/Validation/RecoEgamma/test/ElectronMcSignalValidation_gedGsfElectrons_cfg.py +++ b/Validation/RecoEgamma/test/ElectronMcSignalValidation_gedGsfElectrons_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function import sys import os diff --git a/Validation/RecoEgamma/test/electronValidationCheck_Env.py b/Validation/RecoEgamma/test/electronValidationCheck_Env.py index 065daadee15e7..349596c8f76f6 100644 --- a/Validation/RecoEgamma/test/electronValidationCheck_Env.py +++ b/Validation/RecoEgamma/test/electronValidationCheck_Env.py @@ -1,7 +1,6 @@ #! /usr/bin/env python3 # -*-coding: utf-8 -*- -from __future__ import print_function import os, sys diff --git a/Validation/RecoEgamma/test/makeWebpage.py b/Validation/RecoEgamma/test/makeWebpage.py index 5a7729c8bca35..db48d1fb41d65 100755 --- a/Validation/RecoEgamma/test/makeWebpage.py +++ b/Validation/RecoEgamma/test/makeWebpage.py @@ -24,7 +24,6 @@ ## index.html to an apropriate place. ## (This can be autmated too, if needed.) -from __future__ import print_function import sys import os import re diff --git a/Validation/RecoMuon/plugins/MuonTrackValidator.cc b/Validation/RecoMuon/plugins/MuonTrackValidator.cc index 693676ba943b8..d99ccf1013816 100644 --- a/Validation/RecoMuon/plugins/MuonTrackValidator.cc +++ b/Validation/RecoMuon/plugins/MuonTrackValidator.cc @@ -4,6 +4,7 @@ #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/Math/interface/deltaR.h" #include "SimDataFormats/Track/interface/SimTrackContainer.h" #include "SimDataFormats/Vertex/interface/SimVertexContainer.h" #include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h" @@ -13,7 +14,7 @@ #include "SimTracker/TrackAssociation/interface/TrackingParticleIP.h" #include "TMath.h" -#include +#include using namespace std; using namespace edm; @@ -83,6 +84,33 @@ void MuonTrackValidator::bookHistograms(DQMEDAnalyzer::DQMStore::IBooker& ibooke maxPt, setBinLogX)); + h_assocpTB.push_back(ibooker.book1D("num_assoSimToReco_pT_barrel", + "N of associated tracks (simToReco) vs pT - BARREL", + nintPt, + minPt, + maxPt, + setBinLogX)); + h_simulpTB.push_back(ibooker.book1D( + "num_simul_pT_barrel", "N of simulated tracks vs pT - BARREL", nintPt, minPt, maxPt, setBinLogX)); + + h_assocpTO.push_back(ibooker.book1D("num_assoSimToReco_pT_overlap", + "N of associated tracks (simToReco) vs pT - OVERLAP", + nintPt, + minPt, + maxPt, + setBinLogX)); + h_simulpTO.push_back(ibooker.book1D( + "num_simul_pT_overlap", "N of simulated tracks vs pT - OVERLAP", nintPt, minPt, maxPt, setBinLogX)); + + h_assocpTE.push_back(ibooker.book1D("num_assoSimToReco_pT_endcap", + "N of associated tracks (simToReco) vs pT - ENCAP", + nintPt, + minPt, + maxPt, + setBinLogX)); + h_simulpTE.push_back(ibooker.book1D( + "num_simul_pT_endcap", "N of simulated tracks vs pT - ENDCAP", nintPt, minPt, maxPt, setBinLogX)); + h_recophi.push_back(ibooker.book1D("num_reco_phi", "N of reco track vs phi", nintPhi, minPhi, maxPhi)); h_assocphi.push_back(ibooker.book1D( "num_assoSimToReco_phi", "N of associated tracks (simToReco) vs phi", nintPhi, minPhi, maxPhi)); @@ -95,6 +123,30 @@ void MuonTrackValidator::bookHistograms(DQMEDAnalyzer::DQMStore::IBooker& ibooke minPhi, maxPhi)); + h_assocphiB.push_back(ibooker.book1D("num_assoSimToReco_phi_barrel", + "N of associated tracks (simToReco) vs phi - BARREL", + nintPhi, + minPhi, + maxPhi)); + h_simulphiB.push_back( + ibooker.book1D("num_simul_phi_barrel", "N of simulated track vs phi - BARREL", nintPhi, minPhi, maxPhi)); + + h_assocphiO.push_back(ibooker.book1D("num_assoSimToReco_phi_overlap", + "N of associated tracks (simToReco) vs phi - OVERLAP", + nintPhi, + minPhi, + maxPhi)); + h_simulphiO.push_back( + ibooker.book1D("num_simul_phi_overlap", "N of simulated track vs phi - OVERLAP", nintPhi, minPhi, maxPhi)); + + h_assocphiE.push_back(ibooker.book1D("num_assoSimToReco_phi_endcap", + "N of associated tracks (simToReco) vs phi - ENDCAP", + nintPhi, + minPhi, + maxPhi)); + h_simulphiE.push_back( + ibooker.book1D("num_simul_phi_endcap", "N of simulated track vs phi - ENDCAP", nintPhi, minPhi, maxPhi)); + h_recohit.push_back(ibooker.book1D("num_reco_hit", "N of reco tracks vs N SimHits", nintNHit, minNHit, maxNHit)); h_assochit.push_back(ibooker.book1D( "num_assoSimToReco_hit", "N of associated tracks (simToReco) vs N SimHits", nintNHit, minNHit, maxNHit)); @@ -108,6 +160,19 @@ void MuonTrackValidator::bookHistograms(DQMEDAnalyzer::DQMStore::IBooker& ibooke minNHit, maxNHit)); + int bindR{200}; + double mindR{0.0}; + double maxdR{10.0}; + + h_recodR.push_back(ibooker.book1D("num_reco_dR", "N of reco track vs dR2", bindR, mindR, maxdR)); + h_assocdR.push_back( + ibooker.book1D("num_assoSimToReco_dR", "N of associated tracks (simToReco) vs dR2", bindR, mindR, maxdR)); + h_assoc2dR.push_back( + ibooker.book1D("num_assoRecoToSim_dR", "N of associated (recoToSim) tracks vs dR2", bindR, mindR, maxdR)); + h_simuldR.push_back(ibooker.book1D("num_simul_dR", "N of simulated tracks vs dR2", bindR, mindR, maxdR)); + h_misiddR.push_back(ibooker.book1D( + "num_chargemisid_dR", "N of associated (simToReco) tracks with charge misID vs dR2", bindR, mindR, maxdR)); + h_recodxy.push_back(ibooker.book1D("num_reco_dxy", "N of reco track vs dxy", nintDxy, minDxy, maxDxy)); h_assocdxy.push_back(ibooker.book1D( "num_assoSimToReco_dxy", "N of associated tracks (simToReco) vs dxy", nintDxy, minDxy, maxDxy)); @@ -475,6 +540,16 @@ void MuonTrackValidator::analyze(const edm::Event& event, const edm::EventSetup& int ats = 0; int st = 0; + std::optional dR2 = [&]() -> std::optional { + if (tPC.size() == 2) { + TrackingParticle::Vector p1 = lhcParametersDefinerTP_->momentum(event, setup, tPC[0]); + TrackingParticle::Vector p2 = lhcParametersDefinerTP_->momentum(event, setup, tPC[1]); + + return reco::deltaR2(p1, p2); + } + return {}; + }(); + for (size_t i = 0; i < tPC.size(); i++) { bool TP_is_matched = false; bool isChargeOK = true; @@ -569,16 +644,53 @@ void MuonTrackValidator::analyze(const edm::Event& event, const edm::EventSetup& // histos for efficiency vs phi fillPlotNoFlow(h_simulphi[w], TPphi); + if (xTPeta < 0.9) { + fillPlotNoFlow(h_simulphiB[w], TPphi); + } else if (xTPeta < 1.2) { + fillPlotNoFlow(h_simulphiO[w], TPphi); + } else { + fillPlotNoFlow(h_simulphiE[w], TPphi); + } if (TP_is_matched) { fillPlotNoFlow(h_assocphi[w], TPphi); + if (xTPeta < 0.9) { + fillPlotNoFlow(h_assocphiB[w], TPphi); + } else if (xTPeta < 1.2) { + fillPlotNoFlow(h_assocphiO[w], TPphi); + } else { + fillPlotNoFlow(h_assocphiE[w], TPphi); + } if (!isChargeOK) fillPlotNoFlow(h_misidphi[w], TPphi); } + if (dR2.has_value()) { + fillPlotNoFlow(h_simuldR[w], *dR2); + if (TP_is_matched) { + fillPlotNoFlow(h_assocdR[w], *dR2); + if (!isChargeOK) + fillPlotNoFlow(h_misiddR[w], *dR2); + } + } + // histos for efficiency vs pT fillPlotNoFlow(h_simulpT[w], xTPpt); + if (xTPeta < 0.9) { + fillPlotNoFlow(h_simulpTB[w], xTPpt); + } else if (xTPeta < 1.2) { + fillPlotNoFlow(h_simulpTO[w], xTPpt); + } else { + fillPlotNoFlow(h_simulpTE[w], xTPpt); + } if (TP_is_matched) { fillPlotNoFlow(h_assocpT[w], xTPpt); + if (xTPeta < 0.9) { + fillPlotNoFlow(h_assocpTB[w], xTPpt); + } else if (xTPeta < 1.2) { + fillPlotNoFlow(h_assocpTO[w], xTPpt); + } else { + fillPlotNoFlow(h_assocpTE[w], xTPpt); + } if (!isChargeOK) fillPlotNoFlow(h_misidpT[w], xTPpt); } @@ -740,6 +852,13 @@ void MuonTrackValidator::analyze(const edm::Event& event, const edm::EventSetup& fillPlotNoFlow(h_assoc2pT[w], xptRec); } + if (dR2.has_value()) { + fillPlotNoFlow(h_recodR[w], *dR2); + if (Track_is_matched) { + fillPlotNoFlow(h_assoc2pT[w], *dR2); + } + } + // histos for fake rate vs dxy fillPlotNoFlow(h_recodxy[w], dxyRec); if (Track_is_matched) { diff --git a/Validation/RecoMuon/plugins/MuonTrackValidatorBase.h b/Validation/RecoMuon/plugins/MuonTrackValidatorBase.h index d33ba31048fcf..d2614e2215a9c 100644 --- a/Validation/RecoMuon/plugins/MuonTrackValidatorBase.h +++ b/Validation/RecoMuon/plugins/MuonTrackValidatorBase.h @@ -282,6 +282,16 @@ class MuonTrackValidatorBase { std::vector h_recodxy, h_assocdxy, h_assoc2dxy, h_simuldxy, h_misiddxy; std::vector h_recodz, h_assocdz, h_assoc2dz, h_simuldz, h_misiddz; std::vector h_recopu, h_assocpu, h_assoc2pu, h_simulpu, h_misidpu; + std::vector h_recodR, h_assocdR, h_assoc2dR, h_simuldR, h_misiddR; + + std::vector h_assocpTB, h_simulpTB; + std::vector h_assocphiB, h_simulphiB; + + std::vector h_assocpTO, h_simulpTO; + std::vector h_assocphiO, h_simulphiO; + + std::vector h_assocpTE, h_simulpTE; + std::vector h_assocphiE, h_simulphiE; std::vector h_assocRpos, h_simulRpos, h_assocZpos, h_simulZpos; std::vector h_etaRes; diff --git a/Validation/RecoMuon/python/PostProcessorHLT_cff.py b/Validation/RecoMuon/python/PostProcessorHLT_cff.py index 0924a2e702789..4cd700f8cb3f3 100644 --- a/Validation/RecoMuon/python/PostProcessorHLT_cff.py +++ b/Validation/RecoMuon/python/PostProcessorHLT_cff.py @@ -4,25 +4,32 @@ from DQMServices.Core.DQMEDHarvester import DQMEDHarvester from Validation.RecoMuon.PostProcessor_cff import postProcessorMuonTrack + postProcessorMuonTrackHLT = postProcessorMuonTrack.clone( subDirs = ["HLT/Muon/MuonTrack/*"] ) postProcessorMuonTrackHLTComp = DQMEDHarvester( "DQMGenericClient", - subDirs = cms.untracked.vstring("HLT/Muon/MuonTrack/"), - efficiency = cms.vstring( - "Eff_L3Tk_Eta_mabh 'Eff_{L3,TK} vs #eta' hltL3Muons/effic_vs_eta hltL3TkFromL2/effic_vs_eta", - "Eff_L3Tk_Pt_mabh 'Eff_{L3,TK} vs p_{T}' hltL3Muons/effic_vs_pt hltL3TkFromL2/effic_vs_pt", - "Eff_L3Tk_Hit_mabh 'Eff_{L3,TK} vs n Hits' hltL3Muons/effic_vs_hit hltL3TkFromL2/effic_vs_hit", - "Eff_L3L2_Eta_mabh 'Eff_{L3,L2} vs #eta' hltL3Muons/effic_vs_eta hltL2Muons_UpdAtVtx/effic_vs_eta", - "Eff_L3L2_Pt_mabh 'Eff_{L3,L2} vs p_{T}' hltL3Muons/effic_vs_pt hltL2Muons_UpdAtVtx/effic_vs_pt", - "Eff_L3L2_Hit_mabh 'Eff_{L3,L2} vs n Hits' hltL3Muons/effic_vs_hit hltL2Muons_UpdAtVtx/effic_vs_hit", + subDirs=cms.untracked.vstring("HLT/Muon/MuonTrack/"), + efficiency=cms.vstring( + "Eff_L3Tk_Eta_mabh 'Eff_{L3,TK} vs #eta' hltL3Muons/effic_vs_eta hltL3TkFromL2/effic_vs_eta", + "Eff_L3Tk_Pt_mabh 'Eff_{L3,TK} vs p_{T}' hltL3Muons/effic_vs_pt hltL3TkFromL2/effic_vs_pt", + "Eff_L3Tk_Hit_mabh 'Eff_{L3,TK} vs n Hits' hltL3Muons/effic_vs_hit hltL3TkFromL2/effic_vs_hit", + "Eff_L3L2_Eta_mabh 'Eff_{L3,L2} vs #eta' hltL3Muons/effic_vs_eta hltL2Muons_UpdAtVtx/effic_vs_eta", + "Eff_L3L2_Pt_mabh 'Eff_{L3,L2} vs p_{T}' hltL3Muons/effic_vs_pt hltL2Muons_UpdAtVtx/effic_vs_pt", + "Eff_L3L2_Hit_mabh 'Eff_{L3,L2} vs n Hits' hltL3Muons/effic_vs_hit hltL2Muons_UpdAtVtx/effic_vs_hit", ), - resolution = cms.vstring(""), - outputFileName = cms.untracked.string("") - ) + resolution=cms.vstring(""), + outputFileName=cms.untracked.string(""), +) recoMuonPostProcessorsHLT = cms.Sequence( - postProcessorMuonTrackHLT - *postProcessorMuonTrackHLTComp - ) + postProcessorMuonTrackHLT + postProcessorMuonTrackHLTComp +) + +from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon + +phase2_muon.toReplaceWith( + recoMuonPostProcessorsHLT, + recoMuonPostProcessorsHLT.copyAndExclude(["postProcessorMuonTrackHLTComp"]), +) diff --git a/Validation/RecoMuon/python/PostProcessor_cff.py b/Validation/RecoMuon/python/PostProcessor_cff.py index 9d3ae5479f5df..995d18630db6d 100644 --- a/Validation/RecoMuon/python/PostProcessor_cff.py +++ b/Validation/RecoMuon/python/PostProcessor_cff.py @@ -15,9 +15,17 @@ "effic_vs_phi 'Efficiency vs #phi' num_assoSimToReco_phi num_simul_phi", "effic_vs_dxy 'Efficiency vs dxy' num_assoSimToReco_dxy num_simul_dxy", "effic_vs_dz 'Efficiency vs dz' num_assoSimToReco_dz num_simul_dz", + "effic_vs_dr 'Efficiency vs #Delta R' num_assoSimToReco_dR num_simul_dR", "effic_vs_pu 'Efficiency vs number of pile-up interactions' num_assoSimToReco_pu num_simul_pu", "effic_vs_Rpos 'Efficiency vs production Radius' num_assoSimToReco_Rpos num_simul_Rpos", "effic_vs_Zpos 'Efficiency vs production Z position' num_assoSimToReco_Zpos num_simul_Zpos", + + "effic_vs_pt_barrel 'Efficiency vs p_{T} BARREL' num_assoSimToReco_pT_barrel num_simul_pT_barrel", + "effic_vs_phi_barrel 'Efficiency vs #phi BARREL' num_assoSimToReco_phi_barrel num_simul_phi_barrel", + "effic_vs_pt_overlap 'Efficiency vs p_{T} OVERLAP' num_assoSimToReco_pT_overlap num_simul_pT_overlap", + "effic_vs_phi_overlap 'Efficiency vs #phi OVERLAP' num_assoSimToReco_phi_overlap num_simul_phi_overlap", + "effic_vs_pt_endcap 'Efficiency vs p_{T} ENDCAP' num_assoSimToReco_pT_endcap num_simul_pT_endcap", + "effic_vs_phi_endcap 'Efficiency vs #phi ENDCAP' num_assoSimToReco_phi_endcap num_simul_phi_endcap", "fakerate_vs_eta 'Fake rate vs #eta' num_assoRecoToSim_eta num_reco_eta fake", "fakerate_vs_pt 'Fake rate vs p_{T}' num_assoRecoToSim_pT num_reco_pT fake", @@ -25,6 +33,7 @@ "fakerate_vs_phi 'Fake rate vs #phi' num_assoRecoToSim_phi num_reco_phi fake", "fakerate_vs_dxy 'Fake rate vs dxy' num_assoRecoToSim_dxy num_reco_dxy fake", "fakerate_vs_dz 'Fake rate vs dz' num_assoRecoToSim_dz num_reco_dz fake", + "fakerate_vs_dr 'Fake rate vs #Delta R' num_assoRecoToSim_dR num_reco_dR fake", "fakerate_vs_pu 'Fake rate vs number of pile-up interactions' num_assoRecoToSim_pu num_reco_pu fake", "chargeMisId_vs_eta 'Charge MisID rate vs #eta' num_chargemisid_eta num_assoSimToReco_eta", diff --git a/Validation/RecoMuon/python/associators_cff.py b/Validation/RecoMuon/python/associators_cff.py index cb4722dc8769c..8bf86963bdda6 100644 --- a/Validation/RecoMuon/python/associators_cff.py +++ b/Validation/RecoMuon/python/associators_cff.py @@ -231,9 +231,89 @@ rejectBadGlobal = False ) +# +# The Phase-2 associators +# + +# L2 standalone muon seeds +Phase2tpToL2SeedAssociation = MABHhlt.clone( + tracksTag = "hltPhase2L2MuonSeedTracks", + UseTracker = False, + UseMuon = True +) +# L2 standalone muons +Phase2tpToL2MuonAssociation = MABHhlt.clone( + tracksTag = 'hltL2MuonsFromL1TkMuon', + UseTracker = False, + UseMuon = True +) +# L2 standalone muons updated at vertex +Phase2tpToL2MuonUpdAssociation = MABHhlt.clone( + tracksTag = 'hltL2MuonsFromL1TkMuon:UpdatedAtVtx', + UseTracker = False, + UseMuon = True +) +# L3 IO inner tracks +Phase2tpToL3IOTkAssociation = MABHhlt.clone( + tracksTag = 'hltIter2Phase2L3FromL1TkMuonMerged', + UseTracker = True, + UseMuon = False +) +# L3 OI inner tracks +Phase2tpToL3OITkAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3OIMuonTrackSelectionHighPurity', + UseTracker = True, + UseMuon = False +) +# L2 muons to reuse (IO first only) +Phase2tpToL2MuonToReuseAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3MuonFilter:L2MuToReuse', + UseTracker = False, + UseMuon = True +) +# L3 IO inner tracks filtered (IO first only) +Phase2tpToL3IOTkFilteredAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3MuonFilter:L3IOTracksFiltered', + UseTracker = True, + UseMuon = False +) +# L3 OI inner tracks filtered (OI first only) +Phase2tpToL3OITkFilteredAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3MuonFilter:L3OITracksFiltered', + UseTracker = True, + UseMuon = False +) +# L3 inner tracks merged +Phase2tpToL3TkMergedAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3MuonMerged', + UseTracker = True, + UseMuon = False +) +# L3 global muons +Phase2tpToL3GlbMuonMergedAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3GlbMuon', + UseTracker = True, + UseMuon = True +) +# L3 Muons no ID (tracks) +Phase2tpToL3MuonNoIdAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3MuonNoIdTracks', + UseTracker = True, + UseMuon = True, + rejectBadGlobal = False +) +# L3 Muons ID (tracks) +Phase2tpToL3MuonIdAssociation = MABHhlt.clone( + tracksTag = 'hltPhase2L3MuonIdTracks', + UseTracker = True, + UseMuon = True, + rejectBadGlobal = False +) # # COSMICS reco +# + MABHcosmic = SimMuon.MCTruth.MuonAssociatorByHits_cfi.muonAssociatorByHits.clone( # DEFAULTS ################################### # acceptOneStubMatchings = False, @@ -288,6 +368,7 @@ UseTracker = True, UseMuon = True ) + # # The full-sim association sequences # @@ -329,6 +410,48 @@ +hltIterL3MuonsTracks_seq+tpToL3MuonAssociation ) +# +# The Phase-2 sim association sequences +# + +Phase2MuonAssociationHLT_seq = cms.Sequence( + hltPhase2L2MuonSeedTracks+Phase2tpToL2SeedAssociation + +Phase2tpToL2MuonAssociation+Phase2tpToL2MuonUpdAssociation + +Phase2tpToL3IOTkAssociation+Phase2tpToL3OITkAssociation + +Phase2tpToL3TkMergedAssociation+Phase2tpToL3GlbMuonMergedAssociation + +hltPhase2L3MuonNoIdTracks+Phase2tpToL3MuonNoIdAssociation + +hltPhase2L3MuonIdTracks+Phase2tpToL3MuonIdAssociation + ) + +from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon +phase2_muon.toReplaceWith(muonAssociationHLT_seq, Phase2MuonAssociationHLT_seq) + +# Inside-Out first +Phase2IOFirstMuonAssociationHLT_seq = cms.Sequence( + hltPhase2L2MuonSeedTracks+Phase2tpToL2SeedAssociation + +Phase2tpToL2MuonAssociation+Phase2tpToL2MuonUpdAssociation + +Phase2tpToL3IOTkAssociation+Phase2tpToL3OITkAssociation + +Phase2tpToL2MuonToReuseAssociation+Phase2tpToL3IOTkFilteredAssociation + +Phase2tpToL3TkMergedAssociation+Phase2tpToL3GlbMuonMergedAssociation + +hltPhase2L3MuonNoIdTracks+Phase2tpToL3MuonNoIdAssociation + +hltPhase2L3MuonIdTracks+Phase2tpToL3MuonIdAssociation + ) +# Outside-In first +Phase2OIFirstMuonAssociationHLT_seq = cms.Sequence( + hltPhase2L2MuonSeedTracks+Phase2tpToL2SeedAssociation + +Phase2tpToL2MuonAssociation+Phase2tpToL2MuonUpdAssociation + +Phase2tpToL3OITkAssociation+Phase2tpToL3OITkFilteredAssociation + +Phase2tpToL3IOTkAssociation+Phase2tpToL3TkMergedAssociation + +Phase2tpToL3GlbMuonMergedAssociation + +hltPhase2L3MuonNoIdTracks+Phase2tpToL3MuonNoIdAssociation + +hltPhase2L3MuonIdTracks+Phase2tpToL3MuonIdAssociation + ) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +phase2L2AndL3Muons.toReplaceWith(muonAssociationHLT_seq, Phase2IOFirstMuonAssociationHLT_seq) + +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toReplaceWith(muonAssociationHLT_seq, Phase2OIFirstMuonAssociationHLT_seq) # fastsim has no hlt specific dt hit collection from Configuration.Eras.Modifier_fastSim_cff import fastSim @@ -342,3 +465,17 @@ fastSim.toModify(tpToL3GlbMuonAssociation, DTrechitTag = _DTrechitTag) fastSim.toModify(tpToL3NoIDMuonAssociation, DTrechitTag = _DTrechitTag) fastSim.toModify(tpToL3MuonAssociation, DTrechitTag = _DTrechitTag) + +# Phase-2 fastsim +fastSim.toModify(Phase2tpToL2SeedAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL2MuonAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL2MuonUpdAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3IOTkAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3OITkAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL2MuonToReuseAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3IOTkFilteredAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3OITkFilteredAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3TkMergedAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3GlbMuonMergedAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3MuonNoIdAssociation, DTrechitTag = _DTrechitTag) +fastSim.toModify(Phase2tpToL3MuonIdAssociation, DTrechitTag = _DTrechitTag) diff --git a/Validation/RecoMuon/python/muonValidationHLT_cff.py b/Validation/RecoMuon/python/muonValidationHLT_cff.py index 45102ad4c7c81..50c8d3b52cfd7 100644 --- a/Validation/RecoMuon/python/muonValidationHLT_cff.py +++ b/Validation/RecoMuon/python/muonValidationHLT_cff.py @@ -66,20 +66,151 @@ label = ('hltIterL3MuonsTracks:',), muonHistoParameters = glbMuonHistoParameters ) + +# +# The Phase-2 validators +# + +# L2 standalone muons seeds +Phase2l2MuSeedV = MTVhlt.clone( + associatormap = 'Phase2tpToL2SeedAssociation', + label = ('hltPhase2L2MuonSeedTracks',), + muonHistoParameters = staSeedMuonHistoParameters +) +# L2 standalone muons +Phase2l2MuV = MTVhlt.clone( + associatormap = 'Phase2tpToL2MuonAssociation', + label = ('hltL2MuonsFromL1TkMuon',), + muonHistoParameters = staMuonHistoParameters +) +# L2 standalone muons updated at vertex +Phase2l2MuUpdV = MTVhlt.clone( + associatormap = 'Phase2tpToL2MuonUpdAssociation', + label = ('hltL2MuonsFromL1TkMuon:UpdatedAtVtx',), + muonHistoParameters = staMuonHistoParameters +) +# L3 IO inner tracks +Phase2l3IOTkV = MTVhlt.clone( + associatormap = 'Phase2tpToL3IOTkAssociation', + label = ('hltIter2Phase2L3FromL1TkMuonMerged',), + muonHistoParameters = trkMuonHistoParameters +) +# L3 OI inner tracks +Phase2l3OITkV = MTVhlt.clone( + associatormap = 'Phase2tpToL3OITkAssociation', + label = ('hltPhase2L3OIMuonTrackSelectionHighPurity',), + muonHistoParameters = trkMuonHistoParameters +) +# L2 muons to reuse (IO first only) +Phase2L2MuToReuseV = MTVhlt.clone( + associatormap = 'Phase2tpToL2MuonToReuseAssociation', + label = ('hltPhase2L3MuonFilter:L2MuToReuse',), + muonHistoParameters = staMuonHistoParameters +) +# L3 IO inner tracks filtered (IO first only) +Phase2l3IOTkFilteredV = MTVhlt.clone( + associatormap = 'Phase2tpToL3IOTkFilteredAssociation', + label = ('hltPhase2L3MuonFilter:L3IOTracksFiltered',), + muonHistoParameters = trkMuonHistoParameters +) +# L3 OI inner tracks filtered (OI first only) +Phase2l3OITkFilteredV = MTVhlt.clone( + associatormap = 'Phase2tpToL3OITkFilteredAssociation', + label = ('hltPhase2L3MuonFilter:L3OITracksFiltered',), + muonHistoParameters = trkMuonHistoParameters +) +# L3 inner tracks merged +Phase2l3TkMergedV = MTVhlt.clone( + associatormap = 'Phase2tpToL3TkMergedAssociation', + label = ('hltPhase2L3MuonMerged',), + muonHistoParameters = trkMuonHistoParameters +) +# L3 global muons +Phase2l3GlbMuonV = MTVhlt.clone( + associatormap = 'Phase2tpToL3GlbMuonMergedAssociation', + label = ('hltPhase2L3GlbMuon',), + muonHistoParameters = glbMuonHistoParameters +) +# L3 Muons no ID +Phase2l3MuNoIdTrackV = MTVhlt.clone( + associatormap = 'Phase2tpToL3MuonNoIdAssociation', + label = ('hltPhase2L3MuonNoIdTracks',), + muonHistoParameters = glbMuonHistoParameters +) +# L3 Muons ID +Phase2l3MuIdTrackV = MTVhlt.clone( + associatormap = 'Phase2tpToL3MuonIdAssociation', + label = ('hltPhase2L3MuonIdTracks',), + muonHistoParameters = glbMuonHistoParameters +) + # # The full Muon HLT validation sequence # -muonValidationHLT_seq = cms.Sequence( - tpToL2MuonAssociation + l2MuonMuTrackV - +tpToL2UpdMuonAssociation + l2UpdMuonMuTrackV - +tpToL3OITkMuonAssociation + l3OITkMuonMuTrackV - +tpToL3TkMuonAssociation + l3TkMuonMuTrackV - +tpToL3FromL1TkMuonAssociation + l3IOFromL1TkMuonMuTrackV - +tpToL0L3FromL1TkMuonAssociation + l0l3FromL1TkMuonMuTrackV - +tpToL3GlbMuonAssociation + l3GlbMuonMuTrackV - +hltIterL3MuonsNoIDTracks_seq + tpToL3NoIDMuonAssociation + l3NoIDMuonMuTrackV - +hltIterL3MuonsTracks_seq + tpToL3MuonAssociation + l3MuonMuTrackV - ) + +muonValidationHLT_seq = cms.Sequence(muonAssociationHLT_seq + +l2MuonMuTrackV + +l2UpdMuonMuTrackV + +l3OITkMuonMuTrackV + +l3TkMuonMuTrackV + +l3IOFromL1TkMuonMuTrackV + +l0l3FromL1TkMuonMuTrackV + +l3GlbMuonMuTrackV + +l3NoIDMuonMuTrackV + +l3MuonMuTrackV + ) + +# +# The Phase-2 sequences +# + +Phase2MuonValidationHLT_seq = cms.Sequence(muonAssociationHLT_seq + +Phase2l2MuSeedV + +Phase2l2MuV + +Phase2l2MuUpdV + +Phase2l3IOTkV + +Phase2l3OITkV + +Phase2l3TkMergedV + +Phase2l3GlbMuonV + +Phase2l3MuNoIdTrackV + +Phase2l3MuIdTrackV + ) +# Inside-Out first sequence +Phase2IOFirstMuonValidationHLT_seq = cms.Sequence(muonAssociationHLT_seq + +Phase2l2MuSeedV + +Phase2l2MuV + +Phase2l2MuUpdV + +Phase2l3IOTkV + +Phase2L2MuToReuseV + +Phase2l3IOTkFilteredV + +Phase2l3OITkV + +Phase2l3TkMergedV + +Phase2l3GlbMuonV + +Phase2l3MuNoIdTrackV + +Phase2l3MuIdTrackV + ) +# Outside-In first sequence +Phase2OIFirstMuonValidationHLT_seq = cms.Sequence(muonAssociationHLT_seq + +Phase2l2MuSeedV + +Phase2l2MuV + +Phase2l2MuUpdV + +Phase2l3OITkV + +Phase2l3OITkFilteredV + +Phase2l3IOTkV + +Phase2l3TkMergedV + +Phase2l3GlbMuonV + +Phase2l3MuNoIdTrackV + +Phase2l3MuIdTrackV + ) + +from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon +phase2_muon.toReplaceWith(muonValidationHLT_seq, Phase2MuonValidationHLT_seq) + +from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons +phase2L2AndL3Muons.toReplaceWith(muonValidationHLT_seq, Phase2IOFirstMuonValidationHLT_seq) + +from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst +(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toReplaceWith(muonValidationHLT_seq, Phase2OIFirstMuonValidationHLT_seq) recoMuonValidationHLT_seq = cms.Sequence( cms.SequencePlaceholder("TPmu") + diff --git a/Validation/RecoMuon/python/track_selectors_cff.py b/Validation/RecoMuon/python/track_selectors_cff.py index 7ca54dd218303..2c99989de77e5 100644 --- a/Validation/RecoMuon/python/track_selectors_cff.py +++ b/Validation/RecoMuon/python/track_selectors_cff.py @@ -65,6 +65,29 @@ ) hltIterL3MuonsTracks_seq = cms.Sequence( hltIterL3MuonsTracks ) +# +# Phase-2 tracks +# +# L3 Muon no ID tracks +hltPhase2L3MuonNoIdTracks = SimMuon.MCTruth.MuonTrackProducer_cfi.muonTrackProducer.clone( + muonsTag = "hltPhase2L3MuonsNoID", + inputDTRecSegment4DCollection = cms.InputTag("hltDt4DSegments"), + inputCSCSegmentCollection = cms.InputTag("hltCscSegments"), + selectionTags = ['All'], + trackType = "recomuonTrack", + ignoreMissingMuonCollection = True +) + +# L3 Muon ID tracks +hltPhase2L3MuonIdTracks = SimMuon.MCTruth.MuonTrackProducer_cfi.muonTrackProducer.clone( + muonsTag = "hltPhase2L3Muons", + inputDTRecSegment4DCollection = cms.InputTag("hltDt4DSegments"), + inputCSCSegmentCollection = cms.InputTag("hltCscSegments"), + selectionTags = ['All'], + trackType = "recomuonTrack", + ignoreMissingMuonCollection = True +) + # # Configuration for Seed track extractor # @@ -74,7 +97,13 @@ L2seedsCollection = "ancientMuonSeed" ) seedsOfSTAmuons_seq = cms.Sequence( seedsOfSTAmuons ) + seedsOfDisplacedSTAmuons = SimMuon.MCTruth.SeedToTrackProducer_cfi.SeedToTrackProducer.clone( L2seedsCollection = "displacedMuonSeeds" ) seedsOfDisplacedSTAmuons_seq = cms.Sequence( seedsOfDisplacedSTAmuons ) + +# Phase-2 L2 seeds from L1Tk Muons +hltPhase2L2MuonSeedTracks = SimMuon.MCTruth.SeedToTrackProducer_cfi.SeedToTrackProducer.clone( + L2seedsCollection = "hltL2MuonSeedsFromL1TkMuon" +) diff --git a/Validation/RecoMuon/test/genericMuonReleaseSummary.py b/Validation/RecoMuon/test/genericMuonReleaseSummary.py index 7dc183c0b1851..fde5de281db97 100644 --- a/Validation/RecoMuon/test/genericMuonReleaseSummary.py +++ b/Validation/RecoMuon/test/genericMuonReleaseSummary.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import sys import fileinput diff --git a/Validation/RecoMuon/test/muonReleaseSummary.py b/Validation/RecoMuon/test/muonReleaseSummary.py index 84aaedcf82531..ce623f46467ca 100644 --- a/Validation/RecoMuon/test/muonReleaseSummary.py +++ b/Validation/RecoMuon/test/muonReleaseSummary.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import shutil import sys diff --git a/Validation/RecoMuon/test/muonReleaseValidation.py b/Validation/RecoMuon/test/muonReleaseValidation.py index f5046d5415ea6..3e1999b447f30 100755 --- a/Validation/RecoMuon/test/muonReleaseValidation.py +++ b/Validation/RecoMuon/test/muonReleaseValidation.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import sys import fileinput diff --git a/Validation/RecoMuon/test/muonReleaseValidationFastSim.py b/Validation/RecoMuon/test/muonReleaseValidationFastSim.py index d5dbf59b173c2..2b333cd46a4d4 100755 --- a/Validation/RecoMuon/test/muonReleaseValidationFastSim.py +++ b/Validation/RecoMuon/test/muonReleaseValidationFastSim.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import sys import fileinput diff --git a/Validation/RecoMuon/test/new_muonReleaseSummary.py b/Validation/RecoMuon/test/new_muonReleaseSummary.py index 3f86fafd8f61d..097b60e879652 100644 --- a/Validation/RecoMuon/test/new_muonReleaseSummary.py +++ b/Validation/RecoMuon/test/new_muonReleaseSummary.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import shutil import sys diff --git a/Validation/RecoParticleFlow/test/datasets.py b/Validation/RecoParticleFlow/test/datasets.py index 31d56b9e8b804..306777fa70bd3 100644 --- a/Validation/RecoParticleFlow/test/datasets.py +++ b/Validation/RecoParticleFlow/test/datasets.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from __future__ import print_function #Hack to get ROOT to ignore command line arguments that we want #to pass to Python diff --git a/Validation/RecoTau/Tools/GetRecoTauVFromDQM_MC_cff.py b/Validation/RecoTau/Tools/GetRecoTauVFromDQM_MC_cff.py index 9e65453b8c8b6..eabae5a74b294 100644 --- a/Validation/RecoTau/Tools/GetRecoTauVFromDQM_MC_cff.py +++ b/Validation/RecoTau/Tools/GetRecoTauVFromDQM_MC_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import sys import ROOT diff --git a/Validation/RecoTau/Tools/MergeFilesAndCalculateEfficiencies_cfg.py b/Validation/RecoTau/Tools/MergeFilesAndCalculateEfficiencies_cfg.py index 30683d60597bb..4137deb64b0a9 100644 --- a/Validation/RecoTau/Tools/MergeFilesAndCalculateEfficiencies_cfg.py +++ b/Validation/RecoTau/Tools/MergeFilesAndCalculateEfficiencies_cfg.py @@ -12,7 +12,6 @@ Example: ./MergeFilesAndCalculateEfficiencies.py CMSSW_3_1_0_Signal.root CMSSW_3_1_0_ZTT_*.root """ -from __future__ import print_function import os import sys diff --git a/Validation/RecoTau/Tools/MultipleCompare.py b/Validation/RecoTau/Tools/MultipleCompare.py index 3aa0863d4b90d..daae632d592dc 100644 --- a/Validation/RecoTau/Tools/MultipleCompare.py +++ b/Validation/RecoTau/Tools/MultipleCompare.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import FWCore.ParameterSet.Config as cms import sys diff --git a/Validation/RecoTau/Tools/RefreshWebPage.py b/Validation/RecoTau/Tools/RefreshWebPage.py index b4f0e1bef50f2..3288f0b903991 100644 --- a/Validation/RecoTau/Tools/RefreshWebPage.py +++ b/Validation/RecoTau/Tools/RefreshWebPage.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import glob import sys diff --git a/Validation/RecoTau/Tools/SteerMultipleCompare.py b/Validation/RecoTau/Tools/SteerMultipleCompare.py index 1b7891467ea36..7c1ee70224487 100644 --- a/Validation/RecoTau/Tools/SteerMultipleCompare.py +++ b/Validation/RecoTau/Tools/SteerMultipleCompare.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import sys import os import re diff --git a/Validation/RecoTau/python/DBSApi_cff.py b/Validation/RecoTau/python/DBSApi_cff.py index a1015840ce31c..11741d578ef4e 100644 --- a/Validation/RecoTau/python/DBSApi_cff.py +++ b/Validation/RecoTau/python/DBSApi_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function def GetDbsInfo(toFind, requirements): "Interface with the DBS API to get the whatever you want of a requirements. ALWAYS RETURN A LIST OF STRINGS" from xml.dom.minidom import parseString diff --git a/Validation/RecoTau/python/DeltaR.py b/Validation/RecoTau/python/DeltaR.py index 3be11d9d2dc14..a9b92906b9ff1 100644 --- a/Validation/RecoTau/python/DeltaR.py +++ b/Validation/RecoTau/python/DeltaR.py @@ -1,4 +1,3 @@ -from __future__ import print_function #ROOTTOOLS import math import copy diff --git a/Validation/RecoTau/python/RecoTauValidation_cfi.py b/Validation/RecoTau/python/RecoTauValidation_cfi.py index f6521ca9f8386..a91b0392ce709 100644 --- a/Validation/RecoTau/python/RecoTauValidation_cfi.py +++ b/Validation/RecoTau/python/RecoTauValidation_cfi.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import Validation.RecoTau.ValidationUtils as Utils import copy diff --git a/Validation/RecoTau/python/ValidationOptions_cff.py b/Validation/RecoTau/python/ValidationOptions_cff.py index 022273e4469cb..6e9667072f30b 100644 --- a/Validation/RecoTau/python/ValidationOptions_cff.py +++ b/Validation/RecoTau/python/ValidationOptions_cff.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os import sys try: diff --git a/Validation/RecoTau/python/ValidationUtils.py b/Validation/RecoTau/python/ValidationUtils.py index d10d54c8bdba3..2ea4b8a61402c 100644 --- a/Validation/RecoTau/python/ValidationUtils.py +++ b/Validation/RecoTau/python/ValidationUtils.py @@ -1,4 +1,3 @@ -from __future__ import print_function import FWCore.ParameterSet.Config as cms import copy diff --git a/Validation/RecoTau/python/compare.py b/Validation/RecoTau/python/compare.py index f1b74f571a0ea..8a33632d728c2 100644 --- a/Validation/RecoTau/python/compare.py +++ b/Validation/RecoTau/python/compare.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from builtins import range from .officialStyle import officialStyle from array import array diff --git a/Validation/RecoTau/python/runTauDisplay.py b/Validation/RecoTau/python/runTauDisplay.py index 1349b05498965..0e078251d6cad 100644 --- a/Validation/RecoTau/python/runTauDisplay.py +++ b/Validation/RecoTau/python/runTauDisplay.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from builtins import range import ROOT, os, math, sys import numpy as num diff --git a/Validation/RecoTau/test/LXBatchValidation.py b/Validation/RecoTau/test/LXBatchValidation.py index f0d9e92cbc94a..e227218027d86 100755 --- a/Validation/RecoTau/test/LXBatchValidation.py +++ b/Validation/RecoTau/test/LXBatchValidation.py @@ -2,7 +2,6 @@ # Script to submit Tau Validation jobs to lxbatch # Author: Evan Friis evan.klose.friis@cern.ch -from __future__ import print_function from builtins import range import time import random diff --git a/Validation/RecoTau/test/RunValidation_VtXCutScan.py b/Validation/RecoTau/test/RunValidation_VtXCutScan.py index 0014c2d7025cd..511ffb4bb2cc3 100755 --- a/Validation/RecoTau/test/RunValidation_VtXCutScan.py +++ b/Validation/RecoTau/test/RunValidation_VtXCutScan.py @@ -1,4 +1,3 @@ -from __future__ import print_function #!/usr/bin/env cmsRun import shutil diff --git a/Validation/RecoTau/test/RunValidation_cfg.py b/Validation/RecoTau/test/RunValidation_cfg.py index fd145cc2f497c..a3bbe28fb7df5 100755 --- a/Validation/RecoTau/test/RunValidation_cfg.py +++ b/Validation/RecoTau/test/RunValidation_cfg.py @@ -1,4 +1,3 @@ -from __future__ import print_function #!/usr/bin/env cmsRun import shutil diff --git a/Validation/RecoTrack/python/HLTmultiTrackValidator_cff.py b/Validation/RecoTrack/python/HLTmultiTrackValidator_cff.py index f594a6d0b475f..1ab544683fd53 100644 --- a/Validation/RecoTrack/python/HLTmultiTrackValidator_cff.py +++ b/Validation/RecoTrack/python/HLTmultiTrackValidator_cff.py @@ -32,7 +32,7 @@ def _modifyForRun3(trackvalidator): run3_common.toModify(hltTrackValidator, _modifyForRun3) def _modifyForPhase2(trackvalidator): - trackvalidator.label = ["hltGeneralTracks","hltPhase2PixelTracks"] + trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTrackSelectionHighPurity", "hltHighPtTripletStepTrackSelectionHighPurity"] from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker phase2_tracker.toModify(hltTrackValidator, _modifyForPhase2) diff --git a/Validation/RecoTrack/python/TrackValidation_cff.py b/Validation/RecoTrack/python/TrackValidation_cff.py index 268e83f743db2..13d6afc6a5cd4 100644 --- a/Validation/RecoTrack/python/TrackValidation_cff.py +++ b/Validation/RecoTrack/python/TrackValidation_cff.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import FWCore.ParameterSet.Config as cms from SimTracker.TrackAssociatorProducers.trackAssociatorByChi2_cfi import * @@ -21,6 +20,7 @@ import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg import RecoTracker.IterativeTracking.iterativeTkUtils as _utils from Configuration.Eras.Modifier_fastSim_cff import fastSim +from Configuration.ProcessModifiers.hltClusterSplitting_cff import hltClusterSplitting ### First define the stuff for the standard validation sequence ## Track selectors @@ -48,8 +48,8 @@ "displacedRegionalStepSeeds", "muonSeededSeedsInOut", "muonSeededSeedsOutIn"] - _seedProducers_fastSim = [ x for x in _seedProducers if x not in _removeForFastSimSeedProducers] +_seedProducers_hltSplit = [ x for x in _seedProducers if x not in ["initialStepSeedsPreSplitting"]] _removeForFastTrackProducers = ["initialStepTracksPreSplitting", "jetCoreRegionalStepTracks", @@ -57,6 +57,7 @@ "muonSeededTracksInOut", "muonSeededTracksOutIn"] _trackProducers_fastSim = [ x for x in _trackProducers if x not in _removeForFastTrackProducers] +_trackProducers_hltSplit = [ x for x in _trackProducers if x not in ["initialStepTracksPreSplitting"]] def _algoToSelector(algo): sel = "" @@ -720,10 +721,11 @@ def _uniqueFirstLayers(layerList): associator = "quickTrackAssociatorByHits", ) -from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit +# For the moment we have no Alpaka version of the hiConformalPixelTracks +# from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit -pixelNtupletFit.toModify(trackingParticleHIPixelTrackAssociation, - associator = "quickTrackAssociatorByHitsPreSplitting") +# pixelNtupletFit.toModify(trackingParticleHIPixelTrackAssociation, +# associator = "quickTrackAssociatorByHitsPreSplitting") HIPixelVertexAssociatorByPositionAndTracks = VertexAssociatorByPositionAndTracks.clone( trackAssociation = "trackingParticleHIPixelTrackAssociation" @@ -814,6 +816,10 @@ def _uniqueFirstLayers(layerList): trackValidatorGsfTracks, ])) +hltClusterSplitting.toReplaceWith(tracksValidation, tracksValidation.copyAndExclude([ + trackValidatorBuildingPreSplitting, +])) + ### Then define stuff for standalone mode (i.e. MTV with RECO+DIGI input) # Select by originalAlgo and algoMask @@ -1017,6 +1023,12 @@ def _uniqueFirstLayers(layerList): trackValidatorConversionTrackingOnly, trackValidatorBHadronTrackingOnly ])) + +hltClusterSplitting.toReplaceWith(trackValidatorsTrackingOnly, trackValidatorsTrackingOnly.copyAndExclude([ + trackValidatorBuildingPreSplitting, + trackValidatorSeedingPreSplittingTrackingOnly, +])) + tracksValidationTrackingOnly = cms.Sequence( trackValidatorsTrackingOnly, tracksPreValidationTrackingOnly, diff --git a/Validation/RecoTrack/python/customiseMTVForBPix123Holes.py b/Validation/RecoTrack/python/customiseMTVForBPix123Holes.py index d78a10d27ddc8..2cc3bb85c5a27 100644 --- a/Validation/RecoTrack/python/customiseMTVForBPix123Holes.py +++ b/Validation/RecoTrack/python/customiseMTVForBPix123Holes.py @@ -1,4 +1,3 @@ -from __future__ import print_function # This customise file provides an example (in the form of holes in # BPix L1-L2 and L3-L3) on how to select a subset of generalTracks # (e.g. by phi and eta) and setup various MTV instances for those diff --git a/Validation/RecoTrack/python/plotting/plotting.py b/Validation/RecoTrack/python/plotting/plotting.py index 7c053b0672b2b..b24de37cd7c8c 100644 --- a/Validation/RecoTrack/python/plotting/plotting.py +++ b/Validation/RecoTrack/python/plotting/plotting.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from builtins import range import os import sys diff --git a/Validation/RecoTrack/python/plotting/trackingPlots.py b/Validation/RecoTrack/python/plotting/trackingPlots.py index 1976a6eaa894a..7a8d790a481d1 100644 --- a/Validation/RecoTrack/python/plotting/trackingPlots.py +++ b/Validation/RecoTrack/python/plotting/trackingPlots.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from builtins import range import os import copy diff --git a/Validation/RecoTrack/python/plotting/validation.py b/Validation/RecoTrack/python/plotting/validation.py index 94619af17a2e6..77d057e077962 100644 --- a/Validation/RecoTrack/python/plotting/validation.py +++ b/Validation/RecoTrack/python/plotting/validation.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import import os import re import sys diff --git a/Validation/RecoTrack/scripts/diffTrackingNtuple.py b/Validation/RecoTrack/scripts/diffTrackingNtuple.py index aab8997e50fea..b66b4de87c109 100755 --- a/Validation/RecoTrack/scripts/diffTrackingNtuple.py +++ b/Validation/RecoTrack/scripts/diffTrackingNtuple.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import argparse import itertools import collections diff --git a/Validation/RecoTrack/scripts/harvestTrackValidationPlots.py b/Validation/RecoTrack/scripts/harvestTrackValidationPlots.py index 9a0936fc66047..23fbd9ea954dc 100755 --- a/Validation/RecoTrack/scripts/harvestTrackValidationPlots.py +++ b/Validation/RecoTrack/scripts/harvestTrackValidationPlots.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import sys,os,tempfile,shutil,subprocess,glob import argparse diff --git a/Validation/RecoTrack/scripts/makeTrackValidationPlots.py b/Validation/RecoTrack/scripts/makeTrackValidationPlots.py index c95298ee54b4c..18004355f9496 100755 --- a/Validation/RecoTrack/scripts/makeTrackValidationPlots.py +++ b/Validation/RecoTrack/scripts/makeTrackValidationPlots.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import os import argparse diff --git a/Validation/RecoTrack/scripts/printTrackingNtuple.py b/Validation/RecoTrack/scripts/printTrackingNtuple.py index 8c5b477b35710..e0d3d7daed8ca 100755 --- a/Validation/RecoTrack/scripts/printTrackingNtuple.py +++ b/Validation/RecoTrack/scripts/printTrackingNtuple.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import argparse import Validation.RecoTrack.plotting.ntuple as ntuple diff --git a/Validation/RecoTrack/test/analyseDuplicateFake.py b/Validation/RecoTrack/test/analyseDuplicateFake.py index 98d9489261164..bfd441fd8f354 100755 --- a/Validation/RecoTrack/test/analyseDuplicateFake.py +++ b/Validation/RecoTrack/test/analyseDuplicateFake.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT from Validation.RecoTrack.plotting.ntuple import * diff --git a/Validation/RecoTrack/test/fakeAnalysis/analysis.py b/Validation/RecoTrack/test/fakeAnalysis/analysis.py index eb8e180630e7d..6b8a812b50433 100644 --- a/Validation/RecoTrack/test/fakeAnalysis/analysis.py +++ b/Validation/RecoTrack/test/fakeAnalysis/analysis.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import ROOT from array import array diff --git a/Validation/RecoTrack/test/fakeAnalysis/graphics.py b/Validation/RecoTrack/test/fakeAnalysis/graphics.py index 11f223ea2d7c4..8130c0515e236 100644 --- a/Validation/RecoTrack/test/fakeAnalysis/graphics.py +++ b/Validation/RecoTrack/test/fakeAnalysis/graphics.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import ROOT from array import array diff --git a/Validation/RecoTrack/test/fakeAnalysis/graphics_vertical.py b/Validation/RecoTrack/test/fakeAnalysis/graphics_vertical.py index ffd4582a34c44..8f34b71f5d139 100644 --- a/Validation/RecoTrack/test/fakeAnalysis/graphics_vertical.py +++ b/Validation/RecoTrack/test/fakeAnalysis/graphics_vertical.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import ROOT from array import array diff --git a/Validation/RecoTrack/test/publicPlots/plot.py b/Validation/RecoTrack/test/publicPlots/plot.py index aaece04b2f5dd..f11f627cc77cc 100755 --- a/Validation/RecoTrack/test/publicPlots/plot.py +++ b/Validation/RecoTrack/test/publicPlots/plot.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import copy import math diff --git a/Validation/RecoTrack/test/trackingNtupleExample.py b/Validation/RecoTrack/test/trackingNtupleExample.py index 75cd3625bee50..ac61c9a40937e 100755 --- a/Validation/RecoTrack/test/trackingNtupleExample.py +++ b/Validation/RecoTrack/test/trackingNtupleExample.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function import ROOT from Validation.RecoTrack.plotting.ntuple import * diff --git a/Validation/RecoVertex/test/V0PerformanceValidation.py b/Validation/RecoVertex/test/V0PerformanceValidation.py index d700eae5feda0..3c6e210fbd05e 100644 --- a/Validation/RecoVertex/test/V0PerformanceValidation.py +++ b/Validation/RecoVertex/test/V0PerformanceValidation.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import os import sys import fileinput diff --git a/Validation/RecoVertex/test/makePlots.py b/Validation/RecoVertex/test/makePlots.py index 85c183285b15d..ee216c8c9cf87 100644 --- a/Validation/RecoVertex/test/makePlots.py +++ b/Validation/RecoVertex/test/makePlots.py @@ -1,4 +1,3 @@ -from __future__ import print_function from ROOT import gPad, gStyle, TCanvas import re diff --git a/Validation/Tools/examples/printConversionInfo.py b/Validation/Tools/examples/printConversionInfo.py index bf6aad14f9244..945fd7584c0a3 100755 --- a/Validation/Tools/examples/printConversionInfo.py +++ b/Validation/Tools/examples/printConversionInfo.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import ROOT import sys from DataFormats.FWLite import Events, Handle diff --git a/Validation/Tools/python/GenObject.py b/Validation/Tools/python/GenObject.py index 5adc5273aa2b8..850e086bc5ecb 100755 --- a/Validation/Tools/python/GenObject.py +++ b/Validation/Tools/python/GenObject.py @@ -1,4 +1,3 @@ -from __future__ import print_function ## Note: Please do not use or modify any data or functions with a ## leading underscore. If you "mess" with the internal structure, ## the classes may not function as intended. diff --git a/Validation/Tools/scripts/diffTreeTool.py b/Validation/Tools/scripts/diffTreeTool.py index b2e3501756fc5..8e366fbfad904 100755 --- a/Validation/Tools/scripts/diffTreeTool.py +++ b/Validation/Tools/scripts/diffTreeTool.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import optparse import os diff --git a/Validation/Tools/scripts/edmOneToOneComparison.py b/Validation/Tools/scripts/edmOneToOneComparison.py index db4815d246a83..ca22d633e7708 100755 --- a/Validation/Tools/scripts/edmOneToOneComparison.py +++ b/Validation/Tools/scripts/edmOneToOneComparison.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function if __name__ == "__main__": import optparse parser = optparse.OptionParser("usage: %prog [options] config.txt file1.root [file2.root]\nVisit https://twiki.cern.ch/twiki/bin/view/CMS/SWGuidePhysicsToolsEdmOneToOneComparison\nfor full documentation.") diff --git a/Validation/Tools/scripts/runEdmFileComparison.py b/Validation/Tools/scripts/runEdmFileComparison.py index 10c463fb98135..d972330311f67 100755 --- a/Validation/Tools/scripts/runEdmFileComparison.py +++ b/Validation/Tools/scripts/runEdmFileComparison.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import optparse import subprocess import pprint diff --git a/Validation/Tools/scripts/simpleEdmComparison.py b/Validation/Tools/scripts/simpleEdmComparison.py index b5aa118b345ca..4f284055fe7d1 100755 --- a/Validation/Tools/scripts/simpleEdmComparison.py +++ b/Validation/Tools/scripts/simpleEdmComparison.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function from builtins import range import inspect import itertools diff --git a/Validation/Tools/scripts/summarizeEdmComparisonLogfiles.py b/Validation/Tools/scripts/summarizeEdmComparisonLogfiles.py index a2af145ee2ead..2e5775db2452a 100755 --- a/Validation/Tools/scripts/summarizeEdmComparisonLogfiles.py +++ b/Validation/Tools/scripts/summarizeEdmComparisonLogfiles.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -from __future__ import print_function import optparse import os from glob import glob diff --git a/Validation/Tools/scripts/useReflexToDescribeForGenObject.py b/Validation/Tools/scripts/useReflexToDescribeForGenObject.py index 82ad2a15887d4..0ed94d1ac745b 100755 --- a/Validation/Tools/scripts/useReflexToDescribeForGenObject.py +++ b/Validation/Tools/scripts/useReflexToDescribeForGenObject.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function from builtins import range import ROOT import re