diff --git a/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h b/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h index 7cd78ccbcfdfb..38a6080ce2d91 100644 --- a/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h +++ b/HLTriggerOffline/Exotica/interface/HLTExoticaSubAnalysis.h @@ -174,6 +174,7 @@ class HLTExoticaSubAnalysis { StringCutObjectSelector * _recPFMHTSelector; StringCutObjectSelector * _genMETSelector; StringCutObjectSelector * _recCaloMETSelector; + StringCutObjectSelector * _recCaloMHTSelector; StringCutObjectSelector * _l1METSelector; StringCutObjectSelector * _recPFTauSelector; StringCutObjectSelector * _recPhotonSelector; diff --git a/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py b/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py index 12c6a3d2da693..8bd4dac47800e 100644 --- a/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py +++ b/HLTriggerOffline/Exotica/python/ExoticaValidation_cff.py @@ -42,8 +42,18 @@ excludePFMuons = cms.bool( True ) ) +recoExoticaValidationCaloHT = cms.EDProducer( + "CaloMETProducer", + src = cms.InputTag("ak4CaloJets"), + noHF = cms.bool(True), + alias = cms.string('CaloMHT'), + globalThreshold = cms.double(30.0), + calculateSignificance = cms.bool(False), + jets = cms.InputTag("ak4CaloJets") # for significance calculation + ) + ExoticaValidationProdSeq = cms.Sequence( - recoExoticaValidationHT + recoExoticaValidationMETNoMu + recoExoticaValidationMHTNoMu + recoExoticaValidationHT + recoExoticaValidationMETNoMu + recoExoticaValidationMHTNoMu + recoExoticaValidationCaloHT ) ExoticaValidationSequence = cms.Sequence( diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaCaloHT_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaCaloHT_cff.py new file mode 100644 index 0000000000000..94e9585e1f3a7 --- /dev/null +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaCaloHT_cff.py @@ -0,0 +1,26 @@ +import FWCore.ParameterSet.Config as cms + +CaloHTPSet = cms.PSet( + hltPathsToCheck = cms.vstring( + "HLT_HT900_v", # Run2 + "HLT_HT300_v", # Run2 + "HLT_ECALHT800_v", # Run2 7e33 + "HLT_Photon90_CaloIdL_PFHT600_v" # 50ns backup menu + "HLT_HT650_v", + "HLT_HT450to470_v", # HT Parking + "HLT_HT470to500_v", # HT Parking + "HLT_HT500to550_v", # HT Parking + "HLT_HT550to650_v", # HT Parking + "DST_HT250_CaloScouting_v", # scouting + "DST_CaloJet40_CaloScouting_v", + "DST_L1HTT125ORHTT150ORHTT175_CaloScouting_v" + ), + recCaloMHTLabel = cms.InputTag("recoExoticaValidationCaloHT"), + recCaloJetLabel = cms.InputTag("ak4CaloJets"), + # -- Analysis specific cuts + minCandidates = cms.uint32(1), + # -- Analysis specific binnings + parametersTurnOn = cms.vdouble(0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 470, + 500, 550, 600, 650, 700, 800, 900, 1000 + ) +) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py index 2946fb02224c4..7053f7dc974ed 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaMonojet_cff.py @@ -2,14 +2,17 @@ MonojetPSet = cms.PSet( hltPathsToCheck = cms.vstring( - #"HLT_PFMETNoMu90_NoiseCleaned_PFMHTNoMu90_IDTight_v", + "HLT_PFMETNoMu90_PFMHTNoMu90_IDTight_v", + "HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v", + "HLT_MET200_v", + "HLT_MonoCentralPFJet80_PFMETNoMu120_PFMHTNoMu120_IDTight_v", + "HLT_MonoCentralPFJet80_PFMETNoMu90_PFMHTNoMu90_IDTight_v", + + # For backward compatibility "HLT_PFMETNoMu90_JetIdCleaned_PFMHTNoMu90_IDTight_v", - #"HLT_PFMETNoMu120_NoiseCleaned_PFMHTNoMu120_IDTight_v", "HLT_PFMETNoMu120_JetIdCleaned_PFMHTNoMu120_IDTight_v", "HLT_MET200_JetIdCleaned_v", - #"HLT_MonoCentralPFJet80_PFMETNoMu120_NoiseCleaned_PFMHTNoMu120_IDTight_v", "HLT_MonoCentralPFJet80_PFMETNoMu120_JetIdCleaned_PFMHTNoMu120_IDTight_v", - #"HLT_MonoCentralPFJet80_PFMETNoMu90_NoiseCleaned_PFMHTNoMu90_IDTight_v" "HLT_MonoCentralPFJet80_PFMETNoMu90_JetIdCleaned_PFMHTNoMu90_IDTight_v" ), @@ -33,6 +36,11 @@ 320, 340, 360, 380, 400, 420, 440, 460, 480, 500,600,700,800,900,1100,1200, 1400,1600,1800,2000,2200,2400,2600,2800,3000), + + parametersTurnOnSumEt = cms.vdouble( 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, + 1000, 1100, 1200, 1300, 1400, 1500 + ), + dropPt2 = cms.bool(True), dropPt3 = cms.bool(True), ) diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPFHT_cff.py similarity index 53% rename from HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py rename to HLTriggerOffline/Exotica/python/analyses/hltExoticaPFHT_cff.py index 9e2af9a08221b..d3614146d9515 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaHT_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPFHT_cff.py @@ -1,32 +1,26 @@ import FWCore.ParameterSet.Config as cms -HTPSet = cms.PSet( +PFHTPSet = cms.PSet( hltPathsToCheck = cms.vstring( "HLT_PFHT650_WideJetMJJ900DEtaJJ1p5_v", "HLT_PFHT650_WideJetMJJ950DEtaJJ1p5_v", - #"HLT_PFHT750_4Jet_v", # Run2 "HLT_PFHT750_4Jet_v", + "HLT_PFHT550_4JetPt50_v", + "HLT_PFHT650_4JetPt50_v", + "HLT_PFHT750_4JetPt50_v", "HLT_PFHT650_4Jet_v", # Run2 "HLT_PFHT550_4Jet_v", # Run2 - #"HLT_PFHT900_v", # Run2 "HLT_PFHT800_v", "HLT_PFHT650_v", - "HLT_HT900_v", # Run2 - "HLT_HT300_v", # Run2 - "HLT_HT450to470_v", # HT Parking - "HLT_HT470to500_v", # HT Parking - "HLT_HT500to550_v", # HT Parking - "HLT_HT550to650_v", # HT Parking - "HLT_HT650_v", # HT Parking - "HLT_ECALHT800_v", # Run2 7e33 - "HLT_Photon90_CaloIdL_PFHT600_v" # 50ns backup menu - #"HLT_HT750_v" # Run1 (frozenHLT) + "DST_HT450_PFReco_PFBTagCSVReco_PFScouting_v", + "DST_L1HTT125ORHTT150ORHTT175_PFReco_PFBTagCSVReco_PFScouting_v", + "DST_CaloJet40_PFReco_PFBTagCSVReco_PFScouting_v" ), recPFMHTLabel = cms.InputTag("recoExoticaValidationHT"), recPFJetLabel = cms.InputTag("ak4PFJets"), # -- Analysis specific cuts - MET_genCut = cms.string("sumEt > 75"), - MET_recCut = cms.string("sumEt > 75"), + #MET_genCut = cms.string("sumEt > 75"), + #MET_recCut = cms.string("sumEt > 75"), minCandidates = cms.uint32(1), # -- Analysis specific binnings parametersTurnOn = cms.vdouble(0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 470, diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py index 972f62255eed7..92f9e3948dbe7 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPhotonMET_cff.py @@ -2,8 +2,8 @@ PhotonMETPSet = cms.PSet( hltPathsToCheck = cms.vstring( - #"HLT_Photon135_PFMET100_NoiseCleaned_v" - "HLT_Photon135_PFMET100_JetIdCleaned_v", + "HLT_Photon135_PFMET100_v", + "HLT_Photon135_PFMET100_JetIdCleaned_v", # For backward compatibility "HLT_Photon125_v" # 0T ), recPFMETLabel = cms.InputTag("pfMet"), diff --git a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py index 73b7aa4a47b5c..c297ff7dff7d5 100644 --- a/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py +++ b/HLTriggerOffline/Exotica/python/analyses/hltExoticaPureMET_cff.py @@ -4,8 +4,14 @@ hltPathsToCheck = cms.vstring( "HLT_PFMET170_v", "HLT_PFMET170_HBHECleaned_v", - "HLT_PFMET170_JetIdCleaned_v", + "HLT_PFMET170_v", "HLT_PFMET170_NoiseCleaned_v", # Run2 + "HLT_MET200_v", + "HLT_MET100_v", # 0T + "HLT_MET150_v", # 0T + + # For backward compatibility + "HLT_PFMET170_JetIdCleaned_v", "HLT_MET200_JetIdCleaned_v", "HLT_MET100_JetIdCleaned_v", # 0T "HLT_MET150_JetIdCleaned_v" # 0T diff --git a/HLTriggerOffline/Exotica/python/hltExoticaPostProcessors_cff.py b/HLTriggerOffline/Exotica/python/hltExoticaPostProcessors_cff.py index e2c332345e9ac..5d31c3e19b7d3 100644 --- a/HLTriggerOffline/Exotica/python/hltExoticaPostProcessors_cff.py +++ b/HLTriggerOffline/Exotica/python/hltExoticaPostProcessors_cff.py @@ -71,7 +71,7 @@ def add_reco_strings(strings): #--- IMPORTANT: Update this collection whenever you introduce a new object # in the code (from EVTColContainer::getTypeString) obj_types = ["Mu","refittedStandAloneMuons","Track","Ele","Photon","PFTau","PFJet","MET","PFMET","PFMHT","GenMET","CaloJet" - ,"CaloMET","l1MET"] + ,"CaloMET","CaloMHT","l1MET"] #--- IMPORTANT: Trigger are extracted from the hltExoticaValidator_cfi.py module triggers = [ ] efficiency_strings = [] @@ -138,9 +138,13 @@ def add_reco_strings(strings): hltExoticaPostSingleMuon.subDirs = ['HLT/Exotica/SingleMuon'] hltExoticaPostSingleMuon.efficiencyProfile = efficiency_strings -hltExoticaPostHT = hltExoticaPostProcessor.clone() -hltExoticaPostHT.subDirs = ['HLT/Exotica/HT'] -hltExoticaPostHT.efficiencyProfile = efficiency_strings +hltExoticaPostPFHT = hltExoticaPostProcessor.clone() +hltExoticaPostPFHT.subDirs = ['HLT/Exotica/PFHT'] +hltExoticaPostPFHT.efficiencyProfile = efficiency_strings + +hltExoticaPostCaloHT = hltExoticaPostProcessor.clone() +hltExoticaPostCaloHT.subDirs = ['HLT/Exotica/CaloHT'] +hltExoticaPostCaloHT.efficiencyProfile = efficiency_strings hltExoticaPostJetNoBptx = hltExoticaPostProcessor.clone() hltExoticaPostJetNoBptx.subDirs = ['HLT/Exotica/JetNoBptx'] @@ -209,7 +213,8 @@ def add_reco_strings(strings): hltExoticaPostHighPtPhoton + hltExoticaPostDiPhoton + # HT path - hltExoticaPostHT + + hltExoticaPostPFHT + + hltExoticaPostCaloHT + # NoBptx paths hltExoticaPostJetNoBptx + hltExoticaPostMuonNoBptx + diff --git a/HLTriggerOffline/Exotica/python/hltExoticaValidator_cfi.py b/HLTriggerOffline/Exotica/python/hltExoticaValidator_cfi.py index 71d95fdb5ae88..251e1b67f3da9 100644 --- a/HLTriggerOffline/Exotica/python/hltExoticaValidator_cfi.py +++ b/HLTriggerOffline/Exotica/python/hltExoticaValidator_cfi.py @@ -23,7 +23,8 @@ #from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtElectron_cff import LowPtElectronPSet from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtPhoton_cff import HighPtPhotonPSet from HLTriggerOffline.Exotica.analyses.hltExoticaDiPhoton_cff import DiPhotonPSet -from HLTriggerOffline.Exotica.analyses.hltExoticaHT_cff import HTPSet +from HLTriggerOffline.Exotica.analyses.hltExoticaPFHT_cff import PFHTPSet +from HLTriggerOffline.Exotica.analyses.hltExoticaCaloHT_cff import CaloHTPSet from HLTriggerOffline.Exotica.analyses.hltExoticaJetNoBptx_cff import JetNoBptxPSet from HLTriggerOffline.Exotica.analyses.hltExoticaMuonNoBptx_cff import MuonNoBptxPSet from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedMuEG_cff import DisplacedMuEGPSet @@ -62,7 +63,8 @@ "SingleMuon", "JetNoBptx", "MuonNoBptx", - "HT", + "PFHT", + "CaloHT", "DisplacedMuEG", "DisplacedMuJet", "DisplacedDimuon", @@ -178,6 +180,9 @@ CaloMET_genCut = cms.string("pt > 75"), CaloMET_recCut = cms.string("pt > 75"), + CaloMHT_genCut = cms.string("pt > 75"), + CaloMHT_recCut = cms.string("pt > 75"), + hltMET_genCut = cms.string("pt > 75"), hltMET_recCut = cms.string("pt > 75"), @@ -219,7 +224,8 @@ METplusTrack = METplusTrackPSet, Monojet = MonojetPSet, MonojetBackup = MonojetBackupPSet, - HT = HTPSet, + PFHT = PFHTPSet, + CaloHT = CaloHTPSet, #DisplacedDimuonDijet = DisplacedDimuonDijetPSet, EleMu = EleMuPSet, PhotonMET = PhotonMETPSet, diff --git a/HLTriggerOffline/Exotica/src/EVTColContainer.cc b/HLTriggerOffline/Exotica/src/EVTColContainer.cc index 2adcfae233018..ad950a948ce9f 100644 --- a/HLTriggerOffline/Exotica/src/EVTColContainer.cc +++ b/HLTriggerOffline/Exotica/src/EVTColContainer.cc @@ -59,6 +59,7 @@ struct EVTColContainer { L1MET = 390004, PFJET = 211, CALOJET = 111, + CALOMHT = 400002, _nMAX }; @@ -75,6 +76,7 @@ struct EVTColContainer { const std::vector * pfMHTs; const std::vector * genMETs; const std::vector * caloMETs; + const std::vector * caloMHTs; const std::vector * l1METs; const std::vector * pfTaus; const std::vector * pfJets; @@ -95,6 +97,7 @@ struct EVTColContainer { pfMHTs(0), genMETs(0), caloMETs(0), + caloMHTs(0), l1METs(0), pfTaus(0), pfJets(0), @@ -128,6 +131,7 @@ struct EVTColContainer { pfMHTs = 0; genMETs = 0; caloMETs = 0; + caloMHTs = 0; l1METs = 0; pfTaus = 0; pfJets = 0; @@ -182,6 +186,11 @@ struct EVTColContainer { caloMETs = v; ++nInitialized; } + void setCaloMHT(const reco::CaloMETCollection * v) + { + caloMHTs = v; + ++nInitialized; + } void set(const l1extra::L1EtMissParticleCollection * v) { l1METs = v; @@ -227,6 +236,8 @@ struct EVTColContainer { size = genMETs->size(); } else if (objtype == EVTColContainer::CALOMET && caloMETs != 0) { size = caloMETs->size(); + } else if (objtype == EVTColContainer::CALOMHT && caloMHTs != 0) { + size = caloMHTs->size(); } else if (objtype == EVTColContainer::L1MET && l1METs != 0) { size = l1METs->size(); } else if (objtype == EVTColContainer::PFTAU && pfTaus != 0) { @@ -265,6 +276,8 @@ struct EVTColContainer { objTypestr = "GenMET"; } else if (objtype == EVTColContainer::CALOMET) { objTypestr = "CaloMET"; + } else if (objtype == EVTColContainer::CALOMHT) { + objTypestr = "CaloMHT"; } else if (objtype == EVTColContainer::L1MET) { objTypestr = "l1MET"; } else if (objtype == EVTColContainer::PFTAU) { diff --git a/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc b/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc index 5e78629ebea5a..e7f0a76ed25eb 100644 --- a/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc +++ b/HLTriggerOffline/Exotica/src/HLTExoticaSubAnalysis.cc @@ -51,6 +51,7 @@ HLTExoticaSubAnalysis::HLTExoticaSubAnalysis(const edm::ParameterSet & pset, _recPFMHTSelector(0), _genMETSelector(0), _recCaloMETSelector(0), + _recCaloMHTSelector(0), _l1METSelector(0), _recPFTauSelector(0), _recPhotonSelector(0), @@ -175,6 +176,8 @@ HLTExoticaSubAnalysis::~HLTExoticaSubAnalysis() _genMETSelector = 0; delete _recCaloMETSelector; _recCaloMETSelector = 0; + delete _recCaloMHTSelector; + _recCaloMHTSelector = 0; delete _l1METSelector; _l1METSelector = 0; delete _recPFTauSelector; @@ -730,7 +733,7 @@ const std::vector HLTExoticaSubAnalysis::getObjectsType(const std: { LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::getObjectsType()"; - static const unsigned int objSize = 14; + static const unsigned int objSize = 15; static const unsigned int objtriggernames[] = { EVTColContainer::MUON, EVTColContainer::MUTRK, @@ -742,6 +745,7 @@ const std::vector HLTExoticaSubAnalysis::getObjectsType(const std: EVTColContainer::PFMHT, EVTColContainer::GENMET, EVTColContainer::CALOMET, + EVTColContainer::CALOMHT, EVTColContainer::L1MET, EVTColContainer::PFTAU, EVTColContainer::PFJET, @@ -809,6 +813,10 @@ void HLTExoticaSubAnalysis::getNamesOfObjects(const edm::ParameterSet & anpset) _recLabels[EVTColContainer::CALOMET] = anpset.getParameter("recCaloMETLabel"); _genSelectorMap[EVTColContainer::CALOMET] = 0 ; } + if (anpset.exists("recCaloMHTLabel")) { + _recLabels[EVTColContainer::CALOMHT] = anpset.getParameter("recCaloMHTLabel"); + _genSelectorMap[EVTColContainer::CALOMHT] = 0 ; + } if (anpset.exists("hltMETLabel")) { _recLabels[EVTColContainer::CALOMET] = anpset.getParameter("hltMETLabel"); _genSelectorMap[EVTColContainer::CALOMET] = 0 ; @@ -908,6 +916,11 @@ void HLTExoticaSubAnalysis::registerConsumes(edm::ConsumesCollector & iC) edm::EDGetToken token(particularToken); _tokens[it->first] = token; } + else if (it->first == EVTColContainer::CALOMHT) { + edm::EDGetTokenT particularToken = iC.consumes(it->second); + edm::EDGetToken token(particularToken); + _tokens[it->first] = token; + } else if (it->first == EVTColContainer::L1MET) { edm::EDGetTokenT particularToken = iC.consumes(it->second); edm::EDGetToken token(particularToken); @@ -1020,6 +1033,11 @@ void HLTExoticaSubAnalysis::getHandlesToObjects(const edm::Event & iEvent, EVTCo iEvent.getByToken(it->second, theHandle); if (theHandle.isValid()) col->set(theHandle.product()); } + else if (it->first == EVTColContainer::CALOMHT) { + edm::Handle theHandle; + iEvent.getByToken(it->second, theHandle); + if (theHandle.isValid()) col->setCaloMHT(theHandle.product()); + } else if (it->first == EVTColContainer::L1MET) { edm::Handle theHandle; iEvent.getByToken(it->second, theHandle); @@ -1149,6 +1167,8 @@ void HLTExoticaSubAnalysis::initSelector(const unsigned int & objtype) _genMETSelector = new StringCutObjectSelector(_recCut[objtype]); } else if (objtype == EVTColContainer::CALOMET && _recCaloMETSelector == 0) { _recCaloMETSelector = new StringCutObjectSelector(_recCut[objtype]); + } else if (objtype == EVTColContainer::CALOMHT && _recCaloMHTSelector == 0) { + _recCaloMHTSelector = new StringCutObjectSelector(_recCut[objtype]); } else if (objtype == EVTColContainer::L1MET && _l1METSelector == 0) { _l1METSelector = new StringCutObjectSelector(_recCut[objtype]); } else if (objtype == EVTColContainer::PFTAU && _recPFTauSelector == 0) { @@ -1264,6 +1284,15 @@ void HLTExoticaSubAnalysis::insertCandidates(const unsigned int & objType, const if(i==0) theSumEt[objType] = cols->caloMETs->at(i).sumEt(); } } + } else if (objType == EVTColContainer::CALOMHT) { + for (size_t i = 0; i < cols->caloMHTs->size(); i++) { + LogDebug("ExoticaValidation") << "Inserting CaloMHT " << i ; + if (_recCaloMHTSelector->operator()(cols->caloMHTs->at(i))) { + reco::LeafCandidate m(0, cols->caloMHTs->at(i).p4(), cols->caloMHTs->at(i).vertex(), objType, 0, true); + matches->push_back(m); + if(i==0) theSumEt[objType] = cols->caloMHTs->at(i).sumEt(); + } + } } else if (objType == EVTColContainer::L1MET) { for (size_t i = 0; i < cols->l1METs->size(); i++) { LogDebug("ExoticaValidation") << "Inserting L1MET " << i ;