38 #include <type_traits> 98 gttDisplacedHtSumToken_(
112 produces<P2GTCandidateCollection>(
"GTTPromptJets");
113 produces<P2GTCandidateCollection>(
"GTTDisplacedJets");
114 produces<P2GTCandidateCollection>(
"GTTPromptHtSum");
115 produces<P2GTCandidateCollection>(
"GTTDisplacedHtSum");
116 produces<P2GTCandidateCollection>(
"GTTEtSum");
117 produces<P2GTCandidateCollection>(
"GTTPrimaryVert");
119 produces<P2GTCandidateCollection>(
"GMTSaPromptMuons");
120 produces<P2GTCandidateCollection>(
"GMTSaDisplacedMuons");
121 produces<P2GTCandidateCollection>(
"GMTTkMuons");
123 produces<P2GTCandidateCollection>(
"CL2JetsSC4");
124 produces<P2GTCandidateCollection>(
"CL2JetsSC8");
125 produces<P2GTCandidateCollection>(
"CL2Photons");
126 produces<P2GTCandidateCollection>(
"CL2Electrons");
127 produces<P2GTCandidateCollection>(
"CL2Taus");
128 produces<P2GTCandidateCollection>(
"CL2EtSum");
129 produces<P2GTCandidateCollection>(
"CL2HtSum");
162 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
166 int hwZ0 =
obj.z0Word().V.to_int() * 5;
182 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
186 int hwZ0 =
obj.z0Word().V.to_int() << 7;
193 gtObj.
hwPT_ =
obj.ptWord().V.to_int();
194 gtObj.
hwPhi_ =
obj.glbPhiWord().V.to_int();
195 gtObj.
hwEta_ =
obj.glbEtaWord().V.to_int();
206 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
210 int hwZ0 =
obj.z0Word().V.to_int() << 7;
217 gtObj.
hwPT_ =
obj.ptWord().V.to_int();
218 gtObj.
hwPhi_ =
obj.glbPhiWord().V.to_int();
219 gtObj.
hwEta_ =
obj.glbEtaWord().V.to_int();
230 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
235 htMiss.
Et =
obj.p4().energy();
240 gtObj.
hwPT_ = htMiss.
Et.V.to_int();
241 gtObj.hwPhi_ =
obj.hwPhi();
242 gtObj.hwScalarSumPT_ =
obj.hwPt();
252 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
257 htMiss.
Et =
obj.p4().energy();
262 gtObj.
hwPT_ = htMiss.
Et.V.to_int();
263 gtObj.hwPhi_ =
obj.hwPhi();
264 gtObj.hwScalarSumPT_ =
obj.hwPt();
274 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
281 gtObj.hwPhi_ =
obj.hwPhi();
291 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
295 int hwZ0 =
obj.apZ0().to_int() << 12;
317 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
321 int hwZ0 =
obj.apZ0().to_int() << 12;
343 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
347 int hwZ0 =
obj.apZ0().to_int() << 7;
371 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
375 int hwZ0 =
gtJet.z0.V.to_int() << 7;
394 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
398 int hwZ0 =
gtJet.z0.V.to_int() << 7;
417 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
427 gtObj.hwPhi_ = gtPhoton.
v3.
phi.V.to_int();
428 gtObj.hwEta_ = gtPhoton.
v3.
eta.V.to_int();
429 gtObj.hwIsolationPT_ = gtPhoton.
isolationPT.V.to_int();
430 gtObj.hwQualityFlags_ = gtPhoton.
qualityFlags.V.to_int();
439 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
443 int hwZ0 = gtElectron.
z0.V.to_int() << 7;
450 gtObj.
hwPT_ = gtElectron.
v3.
pt.V.to_int();
465 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
475 gtObj.hwPhi_ =
gtTau.v3.phi.V.to_int();
476 gtObj.hwEta_ =
gtTau.v3.eta.V.to_int();
477 gtObj.hwSeed_pT_ =
gtTau.seed_pt.V.to_int();
478 gtObj.hwSeed_z0_ =
gtTau.seed_z0.V.to_int();
479 gtObj.hwCharge_ =
gtTau.charge.V.to_int();
480 gtObj.hwType_ =
gtTau.type.V.to_int();
481 gtObj.hwQualityScore_ =
gtTau.quality.V.to_int();
490 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
499 gtObj.
hwPT_ = sum.vector_pt.V.to_int();
500 gtObj.hwPhi_ = sum.vector_phi.V.to_int();
501 gtObj.hwScalarSumPT_ = sum.scalar_pt.V.to_int();
509 std::unique_ptr<P2GTCandidateCollection>
outputCollection = std::make_unique<P2GTCandidateCollection>();
516 gtObj.
hwPT_ = mht.hwPt();
517 gtObj.hwPhi_ = mht.hwPhi();
518 gtObj.hwScalarSumPT_ = ht.hwPt();
~L1GTProducer() override=default
const edm::EDGetTokenT< VertexWordCollection > gttPrimaryVertexToken_
std::vector< l1t::TkJetWord > TkJetWordCollection
std::vector< TkElectron > TkElectronCollection
std::vector< l1t::PFTau > PFTauCollection
const edm::EDGetTokenT< TkElectronCollection > cl2ElectronToken_
L1GTProducer(const edm::ParameterSet &)
Optional< int > hwNumber_of_tracks_in_pv_
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Optional< int > hwIsolationPT_
const edm::EDGetTokenT< TkJetWordCollection > gttPromptJetToken_
void produceCL2JetsSC8(edm::Event &event) const
double to_phi(int value) const
int to_chg(int value) const
static void fillPSetDescription(edm::ParameterSetDescription &)
math::XYZPoint Point
point in the space
void produceGMTSaPromptMuons(edm::Event &event) const
const edm::EDGetTokenT< std::vector< l1t::EtSum > > cl2HtSumToken_
const edm::EDGetTokenT< PFTauCollection > cl2TauToken_
double to_z0(int value) const
void produceCL2Taus(edm::Event &event) const
void produceCL2Photons(edm::Event &event) const
Optional< int > hwCharge_
static Jet unpack(const std::array< uint64_t, 2 > &src)
std::vector< l1t::PFJet > PFJetCollection
Optional< int > hwQualityScore_
std::vector< TkEm > TkEmCollection
const edm::EDGetTokenT< std::vector< l1t::EtSum > > gttDisplacedHtSumToken_
double to_eta(int value) const
void produceCL2Electrons(edm::Event &event) const
void produceGMTTkMuons(edm::Event &event) const
Optional< int > hwQualityFlags_
const edm::EDGetTokenT< PFJetCollection > cl2JetSC4Token_
void produceGTTPromptJets(edm::Event &event) const
#define DEFINE_FWK_MODULE(type)
const edm::EDGetTokenT< TrackerMuonCollection > gmtTkMuonToken_
std::vector< VertexWord > VertexWordCollection
const edm::EDGetTokenT< std::vector< l1t::EtSum > > cl2EtSumToken_
void produceCL2EtSum(edm::Event &event) const
static void fillDescriptions(edm::ConfigurationDescriptions &)
void produceCL2JetsSC4(edm::Event &event) const
const edm::EDGetTokenT< SAMuonCollection > gmtSaDisplacedMuonToken_
void produceGTTDisplacedJets(edm::Event &event) const
std::vector< TrackerMuon > TrackerMuonCollection
std::vector< SAMuon > SAMuonCollection
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
Optional< int > hwNumber_of_tracks_
const edm::EDGetTokenT< SAMuonCollection > gmtSaPromptMuonToken_
void produceGTTPromptHtSum(edm::Event &event) const
void produceGTTDisplacedHtSum(edm::Event &event) const
const edm::EDGetTokenT< PFJetCollection > cl2JetSC8Token_
double to_pT(int value) const
constexpr float ETAPHI_LSB
void produceGTTEtSum(edm::Event &event) const
void produceCl2HtSum(edm::Event &event) const
Optional< int > hwSum_pT_pv_
Optional< int > hwNumber_of_tracks_not_in_pv_
void produceGTTPrimaryVert(edm::Event &event) const
const edm::EDGetTokenT< TkEmCollection > cl2PhotonToken_
const edm::EDGetTokenT< std::vector< l1t::EtSum > > gttPromptHtSumToken_
const edm::EDGetTokenT< std::vector< l1t::EtSum > > gttEtSumToken_
void produceGMTSaDisplacedMuons(edm::Event &event) const
const edm::EDGetTokenT< TkJetWordCollection > gttDisplacedJetToken_