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

Latest GT development #1207

Draft
wants to merge 2 commits into
base: phase2-l1t-integration-14_0_0_pre3
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
32 changes: 21 additions & 11 deletions DataFormats/L1Trigger/interface/P2GTAlgoBlock.h
Expand Up @@ -3,45 +3,55 @@

#include "P2GTCandidate.h"

#include <vector>
#include <map>
#include <string>
#include <utility>

namespace l1t {

class P2GTAlgoBlock;
typedef std::vector<P2GTAlgoBlock> P2GTAlgoBlockCollection;
typedef std::map<std::string, P2GTAlgoBlock> P2GTAlgoBlockMap;

class P2GTAlgoBlock {
public:
P2GTAlgoBlock()
: algoName_(""),
decisionBeforeBxMaskAndPrescale_(false),
: decisionBeforeBxMaskAndPrescale_(false),
decisionBeforePrescale_(false),
decisionFinal_(false),
decisionFinalPreview_(false),
isVeto_(false),
triggerTypes_(0),
trigObjects_() {}
P2GTAlgoBlock(std::string name,
bool decisionBeforeBxMaskAndPrescale,

P2GTAlgoBlock(bool decisionBeforeBxMaskAndPrescale,
bool decisionBeforePrescale,
bool decisionFinal,
bool decisionFinalPreview,
bool isVeto,
int triggerTypes,
P2GTCandidateVectorRef trigObjects)
: algoName_(std::move(name)),
decisionBeforeBxMaskAndPrescale_(decisionBeforeBxMaskAndPrescale),
: decisionBeforeBxMaskAndPrescale_(decisionBeforeBxMaskAndPrescale),
decisionBeforePrescale_(decisionBeforePrescale),
decisionFinal_(decisionFinal),
decisionFinalPreview_(decisionFinalPreview),
isVeto_(isVeto),
triggerTypes_(triggerTypes),
trigObjects_(std::move(trigObjects)) {}

const std::string& algoName() const { return algoName_; }
bool decisionBeforeBxMaskAndPrescale() const { return decisionBeforeBxMaskAndPrescale_; }
bool decisionBeforePrescale() const { return decisionBeforePrescale_; }
bool decisionFinal() const { return decisionFinal_; }
bool decisionFinalPreview() const { return decisionFinalPreview_; }
bool isVeto() const { return isVeto_; }
int triggerTypes() const { return triggerTypes_; }
const P2GTCandidateVectorRef& trigObjects() const { return trigObjects_; }

private:
const std::string algoName_;
const bool decisionBeforeBxMaskAndPrescale_;
const bool decisionBeforePrescale_;
const bool decisionFinal_;
const bool decisionFinalPreview_;
const bool isVeto_;
const int triggerTypes_;
const P2GTCandidateVectorRef trigObjects_;
};

Expand Down
66 changes: 40 additions & 26 deletions DataFormats/L1Trigger/interface/P2GTCandidate.h
Expand Up @@ -31,16 +31,17 @@ namespace l1t {
typedef ap_int<13> hwPhi_t;
typedef ap_int<14> hwEta_t;
typedef ap_int<18> hwZ0_t;
typedef ap_uint<11> hwIso_t;
typedef ap_uint<8> hwQual_t;
typedef ap_uint<11> hwIsolationPT_t;
typedef ap_uint<4> hwQualityFlags_t;
typedef ap_uint<10> hwQualityScore_t;
typedef ap_uint<1> hwCharge_t;
typedef ap_int<12> hwD0_t;
typedef ap_uint<4> hwBeta_t;
typedef ap_uint<10> hwMass_t;
typedef ap_uint<16> hwIndex_t;
typedef ap_uint<10> hwSeed_pT_t;
typedef ap_int<10> hwSeed_z0_t;
typedef ap_uint<16> hwSca_sum_t;
typedef ap_uint<16> hwScalarSumPT_t;
typedef ap_uint<5> hwNumber_of_tracks_t;
typedef ap_uint<12> hwSum_pT_pv_t;
typedef ap_uint<2> hwType_t;
Expand Down Expand Up @@ -82,11 +83,14 @@ namespace l1t {
GTTRhoCandidates,
GTTBsCandidates,
GTTHadronicTaus,
GTTPromptTracks,
GTTDisplacedTracks,
GTTPrimaryVert,
GTTPromptHtSum,
GTTDisplacedHtSum,
GTTEtSum,
CL2Jets,
CL2JetsSC4,
CL2JetsSC8,
CL2Taus,
CL2Electrons,
CL2Photons,
Expand All @@ -98,16 +102,17 @@ namespace l1t {
void setHwPhi(hwPhi_t hwPhi) { hwPhi_ = hwPhi.to_int(); }
void setHwEta(hwEta_t hwEta) { hwEta_ = hwEta.to_int(); }
void setHwZ0(hwZ0_t hwZ0) { hwZ0_ = hwZ0.to_int(); }
void setHwIso(hwIso_t hwIso) { hwIso_ = hwIso.to_int(); }
void setHwQual(hwQual_t hwQual) { hwQual_ = hwQual.to_int(); }
void setHwIsolationPT(hwIsolationPT_t hwIso) { hwIsolationPT_ = hwIso.to_int(); }
void setHwQualityFlags(hwQualityFlags_t hwQualityFlags) { hwQualityFlags_ = hwQualityFlags.to_int(); }
void setHwQualityScore(hwQualityScore_t hwQualityScore) { hwQualityScore_ = hwQualityScore.to_int(); }
void setHwCharge(hwCharge_t hwCharge) { hwCharge_ = hwCharge.to_int(); }
void setHwD0(hwD0_t hwD0) { hwD0_ = hwD0.to_int(); }
void setHwBeta(hwBeta_t hwBeta) { hwBeta_ = hwBeta.to_int(); }
void setHwMass(hwMass_t hwMass) { hwMass_ = hwMass.to_int(); }
void setHwIndex(hwIndex_t hwIndex) { hwIndex_ = hwIndex.to_int(); }
void setHwSeed_pT(hwSeed_pT_t hwSeed_pT) { hwSeed_pT_ = hwSeed_pT.to_int(); }
void setHwSeed_z0(hwSeed_z0_t hwSeed_z0) { hwSeed_z0_ = hwSeed_z0.to_int(); }
void setHwSca_sum(hwSca_sum_t hwSca_sum) { hwSca_sum_ = hwSca_sum.to_int(); }
void setHwScalarSumPT(hwScalarSumPT_t hwScalarSumPT) { hwScalarSumPT_ = hwScalarSumPT.to_int(); }
void setHwNumber_of_tracks(hwNumber_of_tracks_t hwNumber_of_tracks) {
hwNumber_of_tracks_ = hwNumber_of_tracks.to_int();
}
Expand Down Expand Up @@ -149,18 +154,25 @@ namespace l1t {
return static_cast<int>(hwZ0_);
}

hwIso_t hwIso() const {
if (!hwIso_) {
throw std::invalid_argument("Object doesn't have iso");
hwIsolationPT_t hwIsolationPT() const {
if (!hwIsolationPT_) {
throw std::invalid_argument("Object doesn't have isolationPT");
}
return static_cast<int>(hwIso_);
return static_cast<int>(hwIsolationPT_);
}

hwQual_t hwQual() const {
if (!hwQual_) {
throw std::invalid_argument("Object doesn't have qual");
hwQualityFlags_t hwQualityFlags() const {
if (!hwQualityFlags_) {
throw std::invalid_argument("Object doesn't have qualityFlags");
}
return static_cast<int>(hwQual_);
return static_cast<int>(hwQualityFlags_);
}

hwQualityScore_t hwQualityScore() const {
if (!hwQualityScore_) {
throw std::invalid_argument("Object doesn't have qualityScore");
}
return static_cast<int>(hwQualityScore_);
}

hwCharge_t hwCharge() const {
Expand Down Expand Up @@ -212,11 +224,11 @@ namespace l1t {
return static_cast<int>(hwSeed_z0_);
}

hwSca_sum_t hwSca_sum() const {
if (!hwSca_sum_) {
throw std::invalid_argument("Object doesn't have sca_sum");
hwScalarSumPT_t hwScalarSumPT() const {
if (!hwScalarSumPT_) {
throw std::invalid_argument("Object doesn't have scalarSumPT");
}
return static_cast<int>(hwSca_sum_);
return static_cast<int>(hwScalarSumPT_);
}

hwNumber_of_tracks_t hwNumber_of_tracks() const {
Expand Down Expand Up @@ -261,16 +273,17 @@ namespace l1t {
int hwPhi_toInt() const { return hwPhi().to_int(); }
int hwEta_toInt() const { return hwEta().to_int(); }
int hwZ0_toInt() const { return hwZ0().to_int(); }
int hwIso_toInt() const { return hwIso().to_int(); }
int hwQual_toInt() const { return hwQual().to_int(); }
int hwIsolationPT_toInt() const { return hwIsolationPT().to_int(); }
int hwQualityFlags_toInt() const { return hwQualityFlags().to_int(); }
int hwQualityScore_toInt() const { return hwQualityScore().to_int(); }
int hwCharge_toInt() const { return hwCharge().to_int(); }
int hwD0_toInt() const { return hwD0().to_int(); }
int hwBeta_toInt() const { return hwBeta().to_int(); }
int hwMass_toInt() const { return hwMass().to_int(); }
int hwIndex_toInt() const { return hwIndex().to_int(); }
int hwSeed_pT_toInt() const { return hwSeed_pT().to_int(); }
int hwSeed_z0_toInt() const { return hwSeed_z0().to_int(); }
int hwSca_sum_toInt() const { return hwSca_sum().to_int(); }
int hwScalarSumPT_toInt() const { return hwScalarSumPT().to_int(); }
int hwNumber_of_tracks_toInt() const { return hwNumber_of_tracks().to_int(); }
int hwSum_pT_pv_toInt() const { return hwSum_pT_pv().to_int(); }
int hwType_toInt() const { return hwType().to_int(); }
Expand All @@ -296,24 +309,25 @@ namespace l1t {

bool isJet() const override {
return objectType_ == GCTJets || objectType_ == GTTPromptJets || objectType_ == GTTDisplacedJets ||
objectType_ == CL2Jets;
objectType_ == CL2JetsSC4 || objectType_ == CL2JetsSC8;
}

private:
Optional<int> hwPT_;
Optional<int> hwPhi_;
Optional<int> hwEta_;
Optional<int> hwZ0_;
Optional<int> hwIso_;
Optional<int> hwQual_;
Optional<int> hwIsolationPT_;
Optional<int> hwQualityFlags_;
Optional<int> hwQualityScore_;
Optional<int> hwCharge_;
Optional<int> hwD0_;
Optional<int> hwBeta_;
Optional<int> hwMass_;
Optional<int> hwIndex_;
Optional<int> hwSeed_pT_;
Optional<int> hwSeed_z0_;
Optional<int> hwSca_sum_;
Optional<int> hwScalarSumPT_;
Optional<int> hwNumber_of_tracks_;

// TODO ?
Expand Down
17 changes: 5 additions & 12 deletions DataFormats/L1Trigger/src/P2GTCandidate.cc
Expand Up @@ -3,22 +3,15 @@
namespace l1t {

bool P2GTCandidate::operator==(const P2GTCandidate& rhs) const {
return hwPT_ == rhs.hwPT_ && hwPhi_ == rhs.hwPhi_ && hwEta_ == rhs.hwEta_ && hwZ0_ == rhs.hwZ0_ &&
hwIso_ == rhs.hwIso_ && hwQual_ == rhs.hwQual_ && hwCharge_ == rhs.hwCharge_ && hwD0_ == rhs.hwD0_ &&
return objectType_ == rhs.objectType_ && hwPT_ == rhs.hwPT_ && hwPhi_ == rhs.hwPhi_ && hwEta_ == rhs.hwEta_ &&
hwZ0_ == rhs.hwZ0_ && hwIsolationPT_ == rhs.hwIsolationPT_ && hwQualityScore_ == rhs.hwQualityScore_ &&
hwQualityFlags_ == rhs.hwQualityFlags_ && hwCharge_ == rhs.hwCharge_ && hwD0_ == rhs.hwD0_ &&
hwBeta_ == rhs.hwBeta_ && hwMass_ == rhs.hwMass_ && hwIndex_ == rhs.hwIndex_ &&
hwSeed_pT_ == rhs.hwSeed_pT_ && hwSeed_z0_ == rhs.hwSeed_z0_ && hwSca_sum_ == rhs.hwSca_sum_ &&
hwSeed_pT_ == rhs.hwSeed_pT_ && hwSeed_z0_ == rhs.hwSeed_z0_ && hwScalarSumPT_ == rhs.hwScalarSumPT_ &&
hwNumber_of_tracks_ == rhs.hwNumber_of_tracks_ && hwSum_pT_pv_ == rhs.hwSum_pT_pv_ &&
hwType_ == rhs.hwType_ && hwNumber_of_tracks_in_pv_ == rhs.hwNumber_of_tracks_in_pv_ &&
hwNumber_of_tracks_not_in_pv_ == rhs.hwNumber_of_tracks_not_in_pv_;
}

bool P2GTCandidate::operator!=(const P2GTCandidate& rhs) const {
return hwPT_ != rhs.hwPT_ && hwPhi_ != rhs.hwPhi_ && hwEta_ != rhs.hwEta_ && hwZ0_ != rhs.hwZ0_ &&
hwIso_ != rhs.hwIso_ && hwQual_ != rhs.hwQual_ && hwCharge_ != rhs.hwCharge_ && hwD0_ != rhs.hwD0_ &&
hwBeta_ != rhs.hwBeta_ && hwMass_ != rhs.hwMass_ && hwIndex_ != rhs.hwIndex_ &&
hwSeed_pT_ != rhs.hwSeed_pT_ && hwSeed_z0_ != rhs.hwSeed_z0_ && hwSca_sum_ != rhs.hwSca_sum_ &&
hwNumber_of_tracks_ != rhs.hwNumber_of_tracks_ && hwSum_pT_pv_ != rhs.hwSum_pT_pv_ &&
hwType_ != rhs.hwType_ && hwNumber_of_tracks_in_pv_ != rhs.hwNumber_of_tracks_in_pv_ &&
hwNumber_of_tracks_not_in_pv_ != rhs.hwNumber_of_tracks_not_in_pv_;
};
bool P2GTCandidate::operator!=(const P2GTCandidate& rhs) const { return !operator==(rhs); };
} // namespace l1t
14 changes: 9 additions & 5 deletions DataFormats/L1Trigger/src/classes_def.xml
Expand Up @@ -16,8 +16,9 @@


<class name="l1t::P2GTCandidate::Optional<int>"/>
<class name="l1t::P2GTCandidate::Optional<double>"/>
<class name="l1t::P2GTCandidate"/>
<class name="l1t::P2GTCandidate" ClassVersion="10">
<version ClassVersion="10" checksum="2728416623"/>
</class>
<class name="l1t::P2GTCandidateCollection"/>
<class name="edm::Wrapper<l1t::P2GTCandidateCollection>"/>
<class name="l1t::P2GTCandidateRef"/>
Expand All @@ -27,9 +28,12 @@
<class name="l1t::P2GTCandidateVectorRef"/>
<class name="edm::Wrapper<l1t::P2GTCandidateVectorRef>"/>

<class name="l1t::P2GTAlgoBlock"/>
<class name="l1t::P2GTAlgoBlockCollection"/>
<class name="edm::Wrapper<l1t::P2GTAlgoBlockCollection>"/>
<class name="l1t::P2GTAlgoBlock" ClassVersion="10">
<version ClassVersion="10" checksum="892944969"/>
</class>
<class name="l1t::P2GTAlgoBlockMap"/>
<class name="std::pair<const std::string, l1t::P2GTAlgoBlock>" />
<class name="edm::Wrapper<l1t::P2GTAlgoBlockMap>"/>


<class name="l1t::Jet" ClassVersion="13">
Expand Down
43 changes: 20 additions & 23 deletions HLTrigger/HLTfilters/plugins/HLTDoubletDZ.cc
Expand Up @@ -47,7 +47,7 @@ HLTDoubletDZ<l1t::P2GTCandidate, l1t::P2GTCandidate>::HLTDoubletDZ(const edm::Pa
originTag2_(iConfig.getParameter<std::vector<edm::InputTag>>("originTag2")),
electronToken_(edm::EDGetTokenT<reco::ElectronCollection>()),
l1GTAlgoBlockTag_(iConfig.template getParameter<edm::InputTag>("l1GTAlgoBlockTag")),
algoBlockToken_(consumes<std::vector<l1t::P2GTAlgoBlock>>(l1GTAlgoBlockTag_)),
algoBlockToken_(consumes<l1t::P2GTAlgoBlockMap>(l1GTAlgoBlockTag_)),
l1GTAlgoName1_(iConfig.template getParameter<std::string>("l1GTAlgoName1")),
l1GTAlgoName2_(iConfig.template getParameter<std::string>("l1GTAlgoName2")),
triggerType1_(iConfig.getParameter<int>("triggerType1")),
Expand Down Expand Up @@ -394,29 +394,26 @@ bool HLTDoubletDZ<l1t::P2GTCandidate, l1t::P2GTCandidate>::getCollections(
std::vector<l1t::P2GTCandidateRef>& coll1,
std::vector<l1t::P2GTCandidateRef>& coll2,
trigger::TriggerFilterObjectWithRefs& filterproduct) const {
const std::vector<l1t::P2GTAlgoBlock>& algos = iEvent.get(algoBlockToken_);

if (!algos.empty()) {
for (const l1t::P2GTAlgoBlock& algo : algos) {
if (algo.algoName() == l1GTAlgoName1_ && algo.decisionBeforeBxMaskAndPrescale()) {
const l1t::P2GTCandidateVectorRef& objects = algo.trigObjects();
for (const l1t::P2GTCandidateRef& obj : objects) {
if ((triggerType1_ == trigger::TriggerObjectType::TriggerL1TkMu && obj->isMuon()) ||
(triggerType1_ == trigger::TriggerObjectType::TriggerL1TkEle && obj->isElectron()) ||
(triggerType1_ == trigger::TriggerObjectType::TriggerL1TkEm && obj->isPhoton())) {
coll1.push_back(obj);
}
}
const l1t::P2GTAlgoBlockMap& algos = iEvent.get(algoBlockToken_);

if (algos.count(l1GTAlgoName1_) > 0 && algos.at(l1GTAlgoName1_).decisionBeforeBxMaskAndPrescale()) {
const l1t::P2GTCandidateVectorRef& objects = algos.at(l1GTAlgoName1_).trigObjects();
for (const l1t::P2GTCandidateRef& obj : objects) {
if ((triggerType1_ == trigger::TriggerObjectType::TriggerL1TkMu && obj->isMuon()) ||
(triggerType1_ == trigger::TriggerObjectType::TriggerL1TkEle && obj->isElectron()) ||
(triggerType1_ == trigger::TriggerObjectType::TriggerL1TkEm && obj->isPhoton())) {
coll1.push_back(obj);
}
if (algo.algoName() == l1GTAlgoName2_ && algo.decisionBeforeBxMaskAndPrescale()) {
const l1t::P2GTCandidateVectorRef& objects = algo.trigObjects();
for (const l1t::P2GTCandidateRef& obj : objects) {
if ((triggerType2_ == trigger::TriggerObjectType::TriggerL1TkMu && obj->isMuon()) ||
(triggerType2_ == trigger::TriggerObjectType::TriggerL1TkEle && obj->isElectron()) ||
(triggerType2_ == trigger::TriggerObjectType::TriggerL1TkEm && obj->isPhoton())) {
coll2.push_back(obj);
}
}
}
}

if (algos.count(l1GTAlgoName2_) > 0 && algos.at(l1GTAlgoName2_).decisionBeforeBxMaskAndPrescale()) {
const l1t::P2GTCandidateVectorRef& objects = algos.at(l1GTAlgoName2_).trigObjects();
for (const l1t::P2GTCandidateRef& obj : objects) {
if ((triggerType2_ == trigger::TriggerObjectType::TriggerL1TkMu && obj->isMuon()) ||
(triggerType2_ == trigger::TriggerObjectType::TriggerL1TkEle && obj->isElectron()) ||
(triggerType2_ == trigger::TriggerObjectType::TriggerL1TkEm && obj->isPhoton())) {
coll2.push_back(obj);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion HLTrigger/HLTfilters/plugins/HLTDoubletDZ.h
Expand Up @@ -57,7 +57,7 @@ class HLTDoubletDZ : public HLTFilter {
const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> inputToken2_;
const edm::EDGetTokenT<reco::ElectronCollection> electronToken_;
const edm::InputTag l1GTAlgoBlockTag_;
const edm::EDGetTokenT<std::vector<l1t::P2GTAlgoBlock>> algoBlockToken_;
const edm::EDGetTokenT<l1t::P2GTAlgoBlockMap> algoBlockToken_;
const std::string l1GTAlgoName1_;
const std::string l1GTAlgoName2_;
const int triggerType1_;
Expand Down
20 changes: 9 additions & 11 deletions HLTrigger/Muon/plugins/HLTMuonTrkL1TkMuFilter.cc
Expand Up @@ -29,7 +29,7 @@ HLTMuonTrkL1TkMuFilter::HLTMuonTrkL1TkMuFilter(const edm::ParameterSet& iConfig)
m_candsTag = iConfig.getParameter<edm::InputTag>("inputCandCollection");
m_candsToken = consumes<reco::RecoChargedCandidateCollection>(m_candsTag);
m_l1GTAlgoBlockTag = iConfig.getParameter<edm::InputTag>("l1GTAlgoBlockTag");
m_algoBlockToken = consumes<std::vector<l1t::P2GTAlgoBlock>>(m_l1GTAlgoBlockTag);
m_algoBlockToken = consumes<l1t::P2GTAlgoBlockMap>(m_l1GTAlgoBlockTag);
m_l1GTAlgoNames = iConfig.getParameter<std::vector<std::string>>("l1GTAlgoNames");
m_minTrkHits = iConfig.getParameter<int>("minTrkHits");
m_minMuonHits = iConfig.getParameter<int>("minMuonHits");
Expand Down Expand Up @@ -76,16 +76,14 @@ bool HLTMuonTrkL1TkMuFilter::hltFilter(edm::Event& iEvent,
if (m_l1GTAlgoBlockTag == edm::InputTag("") || m_l1GTAlgoNames.empty())
check_l1match = false;
if (check_l1match) {
const std::vector<l1t::P2GTAlgoBlock>& algos = iEvent.get(m_algoBlockToken);
for (const l1t::P2GTAlgoBlock& algo : algos) {
for (auto& algoName : m_l1GTAlgoNames) {
if (algo.algoName() == algoName && algo.decisionBeforeBxMaskAndPrescale()) {
const l1t::P2GTCandidateVectorRef& objects = algo.trigObjects();
for (const l1t::P2GTCandidateRef& obj : objects) {
if (obj->objectType() == l1t::P2GTCandidate::ObjectType::GMTTkMuons) {
vl1cands.push_back(obj);
LogDebug("HLTMuonTrkL1TkMuFilter") << "Found P2GTCandidate ObjectType::GMTTkMuons" << std::endl;
}
const l1t::P2GTAlgoBlockMap& algos = iEvent.get(m_algoBlockToken);
for (auto& algoName : m_l1GTAlgoNames) {
if (algos.count(algoName) > 0 && algos.at(algoName).decisionBeforeBxMaskAndPrescale()) {
const l1t::P2GTCandidateVectorRef& objects = algos.at(algoName).trigObjects();
for (const l1t::P2GTCandidateRef& obj : objects) {
if (obj->objectType() == l1t::P2GTCandidate::ObjectType::GMTTkMuons) {
vl1cands.push_back(obj);
LogDebug("HLTMuonTrkL1TkMuFilter") << "Found P2GTCandidate ObjectType::GMTTkMuons" << std::endl;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion HLTrigger/Muon/plugins/HLTMuonTrkL1TkMuFilter.h
Expand Up @@ -29,7 +29,7 @@ class HLTMuonTrkL1TkMuFilter : public HLTFilter {
edm::InputTag m_candsTag; // input collection of candidates to be referenced
edm::EDGetTokenT<reco::RecoChargedCandidateCollection> m_candsToken; // input collection of candidates to be referenced
edm::InputTag m_l1GTAlgoBlockTag;
edm::EDGetTokenT<std::vector<l1t::P2GTAlgoBlock>> m_algoBlockToken;
edm::EDGetTokenT<l1t::P2GTAlgoBlockMap> m_algoBlockToken;
std::vector<std::string> m_l1GTAlgoNames;
int m_minTrkHits;
int m_minMuonHits;
Expand Down