Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated HLTTau validation to include legs X in tau+X triggers #9928

Merged
merged 1 commit into from
Jul 10, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions DQMOffline/Trigger/interface/HLTTauDQML1Plotter.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

#include "DataFormats/L1Trigger/interface/L1JetParticle.h"
#include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
#include "DataFormats/L1Trigger/interface/L1EtMissParticle.h"
#include "DataFormats/L1Trigger/interface/L1EtMissParticleFwd.h"

#include "FWCore/Framework/interface/ConsumesCollector.h"

Expand All @@ -25,12 +27,17 @@ class HLTTauDQML1Plotter: private HLTTauDQMPlotter {
//The filters
edm::InputTag l1ExtraTaus_;
edm::EDGetTokenT<l1extra::L1JetParticleCollection> l1ExtraTausToken_;
edm::InputTag l1ExtraIsoTaus_;
edm::EDGetTokenT<l1extra::L1JetParticleCollection> l1ExtraIsoTausToken_;
edm::InputTag l1ExtraJets_;
edm::EDGetTokenT<l1extra::L1JetParticleCollection> l1ExtraJetsToken_;
edm::InputTag l1ExtraMET_;
edm::EDGetTokenT<l1extra::L1EtMissParticleCollection> l1ExtraMETToken_;

const bool doRefAnalysis_;
const double matchDeltaR_;
double l1JetMinEt_;
double l1ETMMin_;

const double maxPt_;
const double maxHighPt_;
Expand All @@ -44,12 +51,20 @@ class HLTTauDQML1Plotter: private HLTTauDQMPlotter {
MonitorElement* l1tauEta_;
MonitorElement* l1tauPhi_;

MonitorElement* l1isotauEt_;
MonitorElement* l1isotauEta_;
MonitorElement* l1isotauPhi_;

MonitorElement* l1jetEt_;
MonitorElement* l1jetEta_;
MonitorElement* l1jetPhi_;

MonitorElement* l1etmEt_;
MonitorElement* l1etmPhi_;

//Monitor Elements for matching
MonitorElement* l1tauEtRes_;
MonitorElement* l1isotauEtRes_;
MonitorElement* l1jetEtRes_;

MonitorElement* l1tauEtEffNum_;
Expand All @@ -64,6 +79,18 @@ class HLTTauDQML1Plotter: private HLTTauDQMPlotter {
MonitorElement* l1tauPhiEffNum_;
MonitorElement* l1tauPhiEffDenom_;

MonitorElement* l1isotauEtEffNum_;
MonitorElement* l1isotauEtEffDenom_;

MonitorElement* l1isotauHighEtEffNum_;
MonitorElement* l1isotauHighEtEffDenom_;

MonitorElement* l1isotauEtaEffNum_;
MonitorElement* l1isotauEtaEffDenom_;

MonitorElement* l1isotauPhiEffNum_;
MonitorElement* l1isotauPhiEffDenom_;

MonitorElement* l1jetEtEffNum_;
MonitorElement* l1jetEtEffDenom_;

Expand All @@ -83,5 +110,8 @@ class HLTTauDQML1Plotter: private HLTTauDQMPlotter {
MonitorElement* secondTauEt_;
MonitorElement* secondTauEta_;
MonitorElement* secondTauPhi_;

MonitorElement* l1etmEtEffNum_;
MonitorElement* l1etmEtEffDenom_;
};
#endif
54 changes: 46 additions & 8 deletions DQMOffline/Trigger/interface/HLTTauDQMPath.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

#include "DataFormats/Math/interface/LorentzVector.h"

#include<tuple>
#include<vector>
#include<string>
#include <tuple>
#include <vector>
#include <string>

class HLTConfigProvider;
namespace edm {
Expand All @@ -23,10 +23,11 @@ class HLTTauDQMPath {
public:
typedef math::XYZTLorentzVectorD LV;
typedef std::vector<LV> LVColl;
typedef std::tuple<std::string, size_t> FilterIndex;
typedef std::tuple<std::string, std::string, size_t> FilterIndex;

constexpr static size_t kName = 0;
constexpr static size_t kModuleIndex = 1;
constexpr static size_t kType = 1;
constexpr static size_t kModuleIndex = 2;
constexpr static size_t kInvalidIndex = std::numeric_limits<size_t>::max();

struct Object {
Expand All @@ -50,20 +51,43 @@ class HLTTauDQMPath {

size_t filtersSize() const { return filterIndices_.size(); }
const std::string& getFilterName(size_t i) const { return std::get<kName>(filterIndices_[i]); }
int getFilterNTaus(size_t i) const { return filterTauN_[i]; }
int getFilterNElectrons(size_t i) const {return filterElectronN_[i]; }
int getFilterNMuons(size_t i) const {return filterMuonN_[i]; }
const std::string& getFilterType(size_t i) const { return std::get<kType>(filterIndices_[i]); }
int getFilterNTaus(size_t i) const { if(i < filterTauN_.size()) return filterTauN_[i]; else return 0;}
int getFilterNElectrons(size_t i) const {if(i < filterElectronN_.size()) return filterElectronN_[i]; else return 0;}
int getFilterNMuons(size_t i) const {if(i < filterMuonN_.size()) return filterMuonN_[i]; else return 0;}
int getFilterMET(size_t i) const {if(i < filterMET_.size()) return filterMET_[i]; else return 0;}
int getFilterLevel(size_t i) const {if(i < filterLevel_.size()) return filterLevel_[i]; else return 0;}

bool isFirstFilterL1Seed() const { return isFirstL1Seed_; }
const std::string& getLastFilterName() const { return std::get<kName>(filterIndices_.back()); }

bool hasL2Taus() const { return lastL2TauFilterIndex_ != kInvalidIndex; }
bool hasL3Taus() const { return lastL3TauFilterIndex_ != kInvalidIndex; }
bool hasL2Electrons() const { return lastL2ElectronFilterIndex_ != kInvalidIndex; }
bool hasL3Electrons() const { return lastL3ElectronFilterIndex_ != kInvalidIndex; }
bool hasL2Muons() const { return lastL2MuonFilterIndex_ != kInvalidIndex; }
bool hasL3Muons() const { return lastL3MuonFilterIndex_ != kInvalidIndex; }
bool hasL2CaloMET() const { return lastL2METFilterIndex_ != kInvalidIndex; }
size_t getLastFilterBeforeL2TauIndex() const { return lastFilterBeforeL2TauIndex_; }
size_t getLastL2TauFilterIndex() const { return lastL2TauFilterIndex_; }
size_t getLastFilterBeforeL3TauIndex() const { return lastFilterBeforeL3TauIndex_; }
size_t getLastL3TauFilterIndex() const { return lastL3TauFilterIndex_; }

size_t getLastFilterBeforeL2ElectronIndex() const { return lastFilterBeforeL2ElectronIndex_; }
size_t getLastL2ElectronFilterIndex() const { return lastL2ElectronFilterIndex_; }
size_t getLastFilterBeforeL3ElectronIndex() const { return lastFilterBeforeL3ElectronIndex_; }
size_t getLastL3ElectronFilterIndex() const { return lastL3ElectronFilterIndex_; }

size_t getLastFilterBeforeL2MuonIndex() const { return lastFilterBeforeL2MuonIndex_; }
size_t getLastL2MuonFilterIndex() const { return lastL2MuonFilterIndex_; }
size_t getLastFilterBeforeL3MuonIndex() const { return lastFilterBeforeL3MuonIndex_; }
size_t getLastL3MuonFilterIndex() const { return lastL3MuonFilterIndex_; }

size_t getLastFilterBeforeL2CaloMETIndex() const { return lastFilterBeforeL2METIndex_; }
size_t getLastL2CaloMETFilterIndex() const { return lastL2METFilterIndex_; }
size_t getFirstFilterBeforeL2CaloMETIndex() const { return firstFilterBeforeL2METIndex_; }
size_t getFirstL2CaloMETFilterIndex() const { return firstL2METFilterIndex_; }

// index (to edm::TriggerResults) of a filter
size_t getFilterIndex(size_t i) const { return std::get<kModuleIndex>(filterIndices_[i]); }

Expand All @@ -83,12 +107,26 @@ class HLTTauDQMPath {
std::vector<int> filterTauN_;
std::vector<int> filterElectronN_;
std::vector<int> filterMuonN_;
std::vector<int> filterMET_;
std::vector<int> filterLevel_;
const std::string pathName_;
const unsigned int pathIndex_;
size_t lastFilterBeforeL2TauIndex_;
size_t lastL2TauFilterIndex_;
size_t lastFilterBeforeL3TauIndex_;
size_t lastL3TauFilterIndex_;
size_t lastFilterBeforeL2ElectronIndex_;
size_t lastL2ElectronFilterIndex_;
size_t lastFilterBeforeL3ElectronIndex_;
size_t lastL3ElectronFilterIndex_;
size_t lastFilterBeforeL2MuonIndex_;
size_t lastL2MuonFilterIndex_;
size_t lastFilterBeforeL3MuonIndex_;
size_t lastL3MuonFilterIndex_;
size_t lastFilterBeforeL2METIndex_;
size_t lastL2METFilterIndex_;
size_t firstFilterBeforeL2METIndex_;
size_t firstL2METFilterIndex_;
bool isFirstL1Seed_;
bool isValid_;
};
Expand Down
39 changes: 39 additions & 0 deletions DQMOffline/Trigger/interface/HLTTauDQMPathPlotter.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,14 @@ class HLTTauDQMPathPlotter: private HLTTauDQMPlotter {
MonitorElement *hTrigTauEt_;
MonitorElement *hTrigTauEta_;
MonitorElement *hTrigTauPhi_;
MonitorElement *hTrigMuonEt_;
MonitorElement *hTrigMuonEta_;
MonitorElement *hTrigMuonPhi_;
MonitorElement *hTrigElectronEt_;
MonitorElement *hTrigElectronEta_;
MonitorElement *hTrigElectronPhi_;
MonitorElement *hTrigMETEt_;
MonitorElement *hTrigMETPhi_;
MonitorElement *hMass_;

MonitorElement *hL2TrigTauEtEffNum_;
Expand All @@ -71,6 +79,37 @@ class HLTTauDQMPathPlotter: private HLTTauDQMPlotter {
MonitorElement *hL3TrigTauEtaEffDenom_;
MonitorElement *hL3TrigTauPhiEffNum_;
MonitorElement *hL3TrigTauPhiEffDenom_;

MonitorElement *hL2TrigElectronEtEffNum_;
MonitorElement *hL2TrigElectronEtEffDenom_;
MonitorElement *hL2TrigElectronEtaEffNum_;
MonitorElement *hL2TrigElectronEtaEffDenom_;
MonitorElement *hL2TrigElectronPhiEffNum_;
MonitorElement *hL2TrigElectronPhiEffDenom_;

MonitorElement *hL3TrigElectronEtEffNum_;
MonitorElement *hL3TrigElectronEtEffDenom_;
MonitorElement *hL3TrigElectronEtaEffNum_;
MonitorElement *hL3TrigElectronEtaEffDenom_;
MonitorElement *hL3TrigElectronPhiEffNum_;
MonitorElement *hL3TrigElectronPhiEffDenom_;

MonitorElement *hL2TrigMuonEtEffNum_;
MonitorElement *hL2TrigMuonEtEffDenom_;
MonitorElement *hL2TrigMuonEtaEffNum_;
MonitorElement *hL2TrigMuonEtaEffDenom_;
MonitorElement *hL2TrigMuonPhiEffNum_;
MonitorElement *hL2TrigMuonPhiEffDenom_;

MonitorElement *hL3TrigMuonEtEffNum_;
MonitorElement *hL3TrigMuonEtEffDenom_;
MonitorElement *hL3TrigMuonEtaEffNum_;
MonitorElement *hL3TrigMuonEtaEffDenom_;
MonitorElement *hL3TrigMuonPhiEffNum_;
MonitorElement *hL3TrigMuonPhiEffDenom_;

MonitorElement *hL2TrigMETEtEffNum_;
MonitorElement *hL2TrigMETEtEffDenom_;
};

#endif
2 changes: 2 additions & 0 deletions DQMOffline/Trigger/interface/HLTTauDQMPlotter.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ struct HLTTauDQMOfflineObjects {
electrons.clear();
muons.clear();
taus.clear();
met.clear();
};
std::vector<LV> electrons;
std::vector<LV> muons;
std::vector<LV> taus;
std::vector<LV> met;
};

//Virtual base class for HLT-Tau-DQM Plotters
Expand Down
10 changes: 9 additions & 1 deletion DQMOffline/Trigger/interface/HLTTauRefProducer.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ in Offline Trigger DQM etc
#include "DataFormats/EgammaCandidates/interface/Photon.h"
#include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"

//MET Includes
#include "DataFormats/METReco/interface/CaloMET.h"
#include "DataFormats/METReco/interface/CaloMETCollection.h"

#include <vector>
#include <string>

Expand Down Expand Up @@ -100,6 +104,10 @@ class HLTTauRefProducer : public edm::EDProducer {
double ptMinTower_;
double towerIsol_;

edm::EDGetTokenT<reco::CaloMETCollection> MET_;
bool doMET_;
double ptMinMET_;

double etaMax;

void doPFTaus(edm::Event&,const edm::EventSetup&);
Expand All @@ -110,7 +118,7 @@ class HLTTauRefProducer : public edm::EDProducer {
void doJets(edm::Event&,const edm::EventSetup&);
void doPhotons(edm::Event&,const edm::EventSetup&);
void doTowers(edm::Event&,const edm::EventSetup&);

void doMET(edm::Event&,const edm::EventSetup&);
};

#endif
24 changes: 19 additions & 5 deletions DQMOffline/Trigger/python/HLTTauDQMOffline_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,38 @@
lipMinTrack = cms.untracked.double(0.2),
IdCollection = cms.untracked.InputTag("elecIDext")
),
Jets = cms.untracked.PSet(
Jets = cms.untracked.PSet(
JetCollection = cms.untracked.InputTag("ak4PFJetsCHS"),
etMin = cms.untracked.double(15.0),
doJets = cms.untracked.bool(False)
),
Towers = cms.untracked.PSet(
Towers = cms.untracked.PSet(
TowerCollection = cms.untracked.InputTag("towerMaker"),
etMin = cms.untracked.double(10.0),
doTowers = cms.untracked.bool(False),
towerIsolation = cms.untracked.double(5.0)
),

Muons = cms.untracked.PSet(
Muons = cms.untracked.PSet(
doMuons = cms.untracked.bool(True),
MuonCollection = cms.untracked.InputTag("muons"),
ptMin = cms.untracked.double(15.0)
),

Photons = cms.untracked.PSet(
Photons = cms.untracked.PSet(
doPhotons = cms.untracked.bool(False),
PhotonCollection = cms.untracked.InputTag("gedPhotons"),
etMin = cms.untracked.double(15.0),
ECALIso = cms.untracked.double(3.0)
),
EtaMax = cms.untracked.double(2.3)

MET = cms.untracked.PSet(
doMET = cms.untracked.bool(True),
METCollection = cms.untracked.InputTag("caloMet"),
ptMin = cms.untracked.double(0.0)
),

EtaMax = cms.untracked.double(2.3)
)

#----------------------------------MONITORS--------------------------------------------------------------------------
Expand All @@ -66,8 +73,11 @@
L1Plotter = cms.untracked.PSet(
DQMFolder = cms.untracked.string('L1'),
L1Taus = cms.untracked.InputTag("l1extraParticles", "Tau"),
L1IsoTaus = cms.untracked.InputTag("l1extraParticles", "IsoTau"),
L1Jets = cms.untracked.InputTag("l1extraParticles", "Central"),
L1JetMinEt = cms.untracked.double(40), # FIXME: this value is arbitrary at the moment
L1ETM = cms.untracked.InputTag("l1extraParticles", "MET"),
L1ETMMin = cms.untracked.double(50),
),
Paths = cms.untracked.string("PFTau"),
PathSummaryPlotter = cms.untracked.PSet(
Expand All @@ -88,6 +98,10 @@
FilterName = cms.untracked.InputTag("TauRefProducer","Muons"),
matchObjectID = cms.untracked.int32(13),
),
cms.untracked.PSet(
FilterName = cms.untracked.InputTag("TauRefProducer","MET"),
matchObjectID = cms.untracked.int32(0),
),
),
),
)
Expand Down
17 changes: 15 additions & 2 deletions DQMOffline/Trigger/python/HLTTauPostProcessor_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,36 @@ def _addEfficiencies(level, quantities, nameFormat, titleObject="#tau", postfix=
title = "%s %s %s efficiency%s" % (level, titleObject, titleLabel, postfix)
m1.efficiencyProfile.append("%s '%s' helpers/%sNum helpers/%sDenom" % (name, title, name, name))


_addEfficiencies("L1", [("Et", "E_{T}"),
("Eta", "#eta"),
("Phi", "#phi")], "%sTau%sEff")
_addEfficiencies("L1", [("HighEt", "E_{T}")], "%sTau%sEff", postfix="(high E_{T})")

_addEfficiencies("L1", [("Et", "E_{T}"),
("Eta", "#eta"),
("Phi", "#phi")], "%sIsoTau%sEff")
_addEfficiencies("L1", [("HighEt", "E_{T}")], "%sIsoTau%sEff", postfix="(high E_{T})")

_addEfficiencies("L1", [("Et", "E_{T}")], "%sJet%sEff")
_addEfficiencies("L1", [("HighEt", "E_{T}")], "%sJet%sEff", "central jet", postfix="(high E_{T})")
_addEfficiencies("L1", [("Eta", "#eta"),
("Phi", "#phi")], "%sJet%sEff", "central jet", "(E_{T} > %.1f)" % monitorModule.L1Plotter.L1JetMinEt.value())
_addEfficiencies("L1", [("Et", "E_{T}")], "%sETM%sEff", "ETM")

_addEfficiencies("L2", [("Et", "E_{T}"),
("Phi", "#phi")], "%sTrigMET%sEff", "MET")

for level in ["L2", "L3"]:
_addEfficiencies(level, [("Et", "p_{T}"),
("Eta", "#eta"),
("Phi", "#phi")], "%sTrigTau%sEff")
_addEfficiencies(level, [("HighEt", "p_{T}")], "%sTrigTau%sEff", postfix="(high p_{T})")

_addEfficiencies(level, [("Et", "p_{T}"),
("Eta", "#eta"),
("Phi", "#phi")], "%sTrigElectron%sEff", "electron")
_addEfficiencies(level, [("Et", "p_{T}"),
("Eta", "#eta"),
("Phi", "#phi")], "%sTrigMuon%sEff", "muon")
return (m1, m2)


Expand Down
Loading