Skip to content

Commit

Permalink
Merge pull request #20167 from Sam-Harper/EGHLTDQMMuTags93X
Browse files Browse the repository at this point in the history
updating the E/gamma HLT TnP DQM to have muon tags
  • Loading branch information
cmsbuild authored Sep 6, 2017
2 parents d0cc21f + 655882a commit 6aaa765
Show file tree
Hide file tree
Showing 5 changed files with 380 additions and 11 deletions.
129 changes: 129 additions & 0 deletions DQMOffline/Trigger/plugins/HLTDQMMuonSelector.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/stream/EDProducer.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "CommonTools/Utils/interface/StringCutObjectSelector.h"
#include "DataFormats/Common/interface/ValueMap.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/MuonReco/interface/MuonFwd.h"
#include "DataFormats/MuonReco/interface/MuonSelectors.h"
#include "DataFormats/VertexReco/interface/Vertex.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"


class HLTDQMMuonSelector : public edm::stream::EDProducer<> {
public:
explicit HLTDQMMuonSelector(const edm::ParameterSet& config);
void produce(edm::Event&, edm::EventSetup const&)override;
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
private:

enum class MuonSelectionType {
Tight,Medium,Loose,Soft,HighPt,None
};

static MuonSelectionType convertToEnum(const std::string& val);
bool passMuonSel(const reco::Muon& muon,const reco::Vertex& vertex)const;


edm::EDGetTokenT<reco::MuonCollection> muonToken_;
edm::EDGetTokenT<reco::VertexCollection> vtxToken_;
StringCutObjectSelector<reco::Muon,true> selection_;

MuonSelectionType muonSelType_;


};


HLTDQMMuonSelector::HLTDQMMuonSelector(const edm::ParameterSet& config):
muonToken_(consumes<reco::MuonCollection>(config.getParameter<edm::InputTag>("objs"))),
vtxToken_(consumes<reco::VertexCollection>(config.getParameter<edm::InputTag>("vertices"))),
selection_(config.getParameter<std::string>("selection")),
muonSelType_(convertToEnum(config.getParameter<std::string>("muonSelectionType")))
{
produces<edm::ValueMap<bool> >();
}

void HLTDQMMuonSelector::fillDescriptions(edm::ConfigurationDescriptions& descriptions)
{
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("objs", edm::InputTag("muons"));
desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
desc.add<std::string>("selection","et > 5");
desc.add<std::string>("muonSelectionType","tight");
descriptions.add("hltDQMMuonSelector", desc);
}


void HLTDQMMuonSelector::produce(edm::Event& event,const edm::EventSetup& setup)
{
edm::Handle<reco::MuonCollection> muonHandle;
event.getByToken(muonToken_,muonHandle);

edm::Handle<reco::VertexCollection> vtxHandle;
event.getByToken(vtxToken_,vtxHandle);

if(!muonHandle.isValid()) return;

std::vector<bool> selResults;
for(auto& muon : *muonHandle){
if(vtxHandle.isValid() && !vtxHandle->empty()){
selResults.push_back(passMuonSel(muon,vtxHandle->front()) && selection_(muon));
}else{
selResults.push_back(false);
}
}
auto valMap = std::make_unique<edm::ValueMap<bool> >();
edm::ValueMap<bool>::Filler filler(*valMap);
filler.insert(muonHandle, selResults.begin(), selResults.end());
filler.fill();
event.put(std::move(valMap));
}

HLTDQMMuonSelector::MuonSelectionType HLTDQMMuonSelector::convertToEnum(const std::string& val)
{
const std::vector<std::pair<std::string,MuonSelectionType> > strsToEnums = {
{"tight",MuonSelectionType::Tight},
{"medium",MuonSelectionType::Medium},
{"loose",MuonSelectionType::Loose},
{"soft",MuonSelectionType::Soft},
{"highpt",MuonSelectionType::HighPt},
{"none",MuonSelectionType::None}
};
for(const auto& strEnumPair : strsToEnums){
if(val==strEnumPair.first) return strEnumPair.second;
}
std::ostringstream validEnums;
for(const auto& strEnumPair : strsToEnums) validEnums <<strEnumPair.first<<" ";
throw cms::Exception("InvalidConfig") << "invalid muonSelectionType "<<val<<", allowed values are "<<validEnums.str();
}

bool HLTDQMMuonSelector::passMuonSel(const reco::Muon& muon,const reco::Vertex& vertex)const
{
switch(muonSelType_){
case MuonSelectionType::Tight:
return muon::isTightMuon(muon,vertex);
case MuonSelectionType::Medium:
return muon::isMediumMuon(muon);
case MuonSelectionType::Loose:
return muon::isLooseMuon(muon);
case MuonSelectionType::Soft:
return muon::isSoftMuon(muon,vertex);
case MuonSelectionType::HighPt:
return muon::isHighPtMuon(muon,vertex);
case MuonSelectionType::None:
return true;
default:
edm::LogError("HLTDQMMuonSelector")<<" inconsistent code, an option has been added to MuonSelectionType without updating HLTDQMMuonSelector::passMuonSel";
return false;
}

}

#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(HLTDQMMuonSelector);
2 changes: 2 additions & 0 deletions DQMOffline/Trigger/plugins/HLTTagAndProbeOfflineSource.cc
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,12 @@ using HLTEleTagAndProbeOfflineSource = HLTTagAndProbeOfflineSource<reco::GsfElec
using HLTPhoTagAndProbeOfflineSource = HLTTagAndProbeOfflineSource<reco::Photon,reco::PhotonCollection>;
using HLTElePhoTagAndProbeOfflineSource = HLTTagAndProbeOfflineSource<reco::GsfElectron,reco::GsfElectronCollection,reco::Photon,reco::PhotonCollection>;
using HLTMuEleTagAndProbeOfflineSource = HLTTagAndProbeOfflineSource<reco::Muon,reco::MuonCollection,reco::GsfElectron,reco::GsfElectronCollection>;
using HLTMuPhoTagAndProbeOfflineSource = HLTTagAndProbeOfflineSource<reco::Muon,reco::MuonCollection,reco::Photon,reco::PhotonCollection>;
using HLTMuTagAndProbeOfflineSource = HLTTagAndProbeOfflineSource<reco::Muon,reco::MuonCollection>;
DEFINE_FWK_MODULE(HLTEleTagAndProbeOfflineSource);
DEFINE_FWK_MODULE(HLTPhoTagAndProbeOfflineSource);
DEFINE_FWK_MODULE(HLTElePhoTagAndProbeOfflineSource);
DEFINE_FWK_MODULE(HLTMuEleTagAndProbeOfflineSource);
DEFINE_FWK_MODULE(HLTMuPhoTagAndProbeOfflineSource);
DEFINE_FWK_MODULE(HLTMuTagAndProbeOfflineSource);

15 changes: 14 additions & 1 deletion DQMOffline/Trigger/python/EgammaMonitoring_Client_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def makeEGEffHistDef(baseName,filterName):

def makeAllEGEffHistDefs():
baseNames=["eleWPTightTag","eleWPTightTag-HEP17","eleWPTightTag-HEM17"]
filterNames=["hltEle33CaloIdLMWPMS2Filter","hltDiEle33CaloIdLMWPMS2UnseededFilter","hltEG300erFilter","hltEG70HEFilter","hltDiEG70HEUnseededFilter","hltEG85HEFilter","hltDiEG85HEUnseededFilter","hltEG30EIso15HE30EcalIsoLastFilter","hltEG18EIso15HE30EcalIsoUnseededFilter","hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg1Filter","hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg2Filter","hltEle27WPTightGsfTrackIsoFilter","hltEle32noerWPTightGsfTrackIsoFilter","hltEle35noerWPTightGsfTrackIsoFilter","hltEle38noerWPTightGsfTrackIsoFilter","hltEle27L1DoubleEGWPTightGsfTrackIsoFilter","hltEle32L1DoubleEGWPTightGsfTrackIsoFilter","hltEG25L1EG18HEFilter","hltEG33L1EG26HEFilter","hltEG50HEFilter","hltEG75HEFilter","hltEG90HEFilter","hltEG120HEFilter","hltEG150HEFilter","hltEG175HEFilter","hltEG200HEFilter","hltSingleCaloJet500","hltSingleCaloJet550","hltEle28HighEtaSC20TrackIsoFilter","hltEle50CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle115CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle135CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle145CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle200CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle250CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle300CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle20WPLoose1GsfTrackIsoFilter","hltEle20erWPLoose1GsfTrackIsoFilter","hltEle20WPTightGsfTrackIsoFilter","hltEle27L1DoubleEGWPTightEcalIsoFilter","hltDiEle27L1DoubleEGWPTightEcalIsoFilter","hltEle27CaloIdLMWPMS2Filter","hltDiEle27CaloIdLMWPMS2UnseededFilter","hltEle25CaloIdLMWPMS2Filter","hltDiEle25CaloIdLMWPMS2UnseededFilter","hltEle27CaloIdLMWPMS2Filter","hltDiEle27CaloIdLMWPMS2UnseededFilter","hltEle37CaloIdLMWPMS2UnseededFilter","hltSingleEle35WPTightGsfL1EGMTTrackIsoFilter"
filterNames=["hltEle33CaloIdLMWPMS2Filter","hltDiEle33CaloIdLMWPMS2UnseededFilter","hltEG300erFilter","hltEG70HEFilter","hltDiEG70HEUnseededFilter","hltEG85HEFilter","hltDiEG85HEUnseededFilter","hltEG30EIso15HE30EcalIsoLastFilter","hltEG18EIso15HE30EcalIsoUnseededFilter","hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg1Filter","hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg2Filter","hltEle27WPTightGsfTrackIsoFilter","hltEle32WPTightGsfTrackIsoFilter","hltEle35noerWPTightGsfTrackIsoFilter","hltEle38noerWPTightGsfTrackIsoFilter","hltEle27L1DoubleEGWPTightGsfTrackIsoFilter","hltEle32L1DoubleEGWPTightGsfTrackIsoFilter","hltEG25L1EG18HEFilter","hltEG33L1EG26HEFilter","hltEG50HEFilter","hltEG75HEFilter","hltEG90HEFilter","hltEG120HEFilter","hltEG150HEFilter","hltEG175HEFilter","hltEG200HEFilter","hltSingleCaloJet500","hltSingleCaloJet550","hltEle28HighEtaSC20TrackIsoFilter","hltEle50CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle115CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle135CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle145CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle200CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle250CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle300CaloIdVTGsfTrkIdTGsfDphiFilter","hltEle20WPLoose1GsfTrackIsoFilter","hltEle20erWPLoose1GsfTrackIsoFilter","hltEle20WPTightGsfTrackIsoFilter","hltEle27L1DoubleEGWPTightEcalIsoFilter","hltDiEle27L1DoubleEGWPTightEcalIsoFilter","hltEle27CaloIdLMWPMS2Filter","hltDiEle27CaloIdLMWPMS2UnseededFilter","hltEle25CaloIdLMWPMS2Filter","hltDiEle25CaloIdLMWPMS2UnseededFilter","hltEle27CaloIdLMWPMS2Filter","hltDiEle27CaloIdLMWPMS2UnseededFilter","hltEle37CaloIdLMWPMS2UnseededFilter","hltSingleEle35WPTightGsfL1EGMTTrackIsoFilter"
]


Expand All @@ -40,6 +40,19 @@ def makeAllEGEffHistDefs():
for filterName in filterNames:
histDefs.extend(makeEGEffHistDef(baseName,filterName))

baseNames=["muonIsoMuTagPhoProbe","muonIsoMuTagPhoProbe-HEM17","muonIsoMuTagPhoProbe-HEP17"]
filterNames=["hltMu12DiEG20HEUnseededFilter"]

for baseName in baseNames:
for filterName in filterNames:
histDefs.extend(makeEGEffHistDef(baseName,filterName))

baseNames=["muonIsoMuTagEleProbe","muonIsoMuTagEleProbe-HEM17","muonIsoMuTagEleProbe-HEP17"]
filterNames=["hltMu12DiEG20HEUnseededFilter","hltEle27CaloIdLMWPMS2UnseededFilter","hltEle37CaloIdLMWPMS2UnseededFilter","hltEle33CaloIdLMWPMS2Filter","hltEle32WPTightGsfTrackIsoFilter","hltEle32L1DoubleEGWPTightGsfTrackIsoFilter"]
for baseName in baseNames:
for filterName in filterNames:
histDefs.extend(makeEGEffHistDef(baseName,filterName))

# print histDefs
return histDefs

Expand Down
8 changes: 6 additions & 2 deletions DQMOffline/Trigger/python/EgammaMonitoring_cff.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import FWCore.ParameterSet.Config as cms

from DQMOffline.Trigger.HLTEGTnPMonitor_cfi import egmGsfElectronIDsForDQM,egHLTDQMOfflineTnPSource,egmPhotonIDSequenceForDQM,egHLTElePhoDQMOfflineTnPSource,egHLTElePhoHighEtaDQMOfflineTnPSource,photonIDValueMapProducer,egmPhotonIDsForDQM
from DQMOffline.Trigger.HLTEGTnPMonitor_cfi import egmGsfElectronIDsForDQM,egHLTDQMOfflineTnPSource,egmPhotonIDSequenceForDQM,egHLTElePhoDQMOfflineTnPSource,egHLTElePhoHighEtaDQMOfflineTnPSource,photonIDValueMapProducer,egmPhotonIDsForDQM,egHLTMuonPhoDQMOfflineTnPSource,egmDQMSelectedMuons,egmMuonIDSequenceForDQM,egHLTMuonEleDQMOfflineTnPSource

egammaMonitorHLT = cms.Sequence(
egmGsfElectronIDsForDQM*
egHLTDQMOfflineTnPSource*
egmPhotonIDSequenceForDQM*
egHLTElePhoDQMOfflineTnPSource*
egHLTElePhoHighEtaDQMOfflineTnPSource
egHLTElePhoHighEtaDQMOfflineTnPSource*
egmMuonIDSequenceForDQM*
egHLTMuonEleDQMOfflineTnPSource*
egHLTMuonPhoDQMOfflineTnPSource

)
Loading

0 comments on commit 6aaa765

Please sign in to comment.