Skip to content

Commit d30f52e

Browse files
authored
Merge pull request #41590 from thesps/p2l1t_scj2gt
L1T Phase 2: correlator-to-GT interface for jets and MHT
2 parents 50ce753 + 41ccbe2 commit d30f52e

6 files changed

Lines changed: 29 additions & 13 deletions

File tree

DataFormats/L1TParticleFlow/interface/PFJet.h

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#include "DataFormats/L1Trigger/interface/L1Candidate.h"
66
#include "DataFormats/L1TParticleFlow/interface/PFCandidate.h"
77
#include "DataFormats/Common/interface/Ptr.h"
8+
#include "DataFormats/L1TParticleFlow/interface/jets.h"
9+
#include "DataFormats/L1TParticleFlow/interface/gt_datatypes.h"
810

911
namespace l1t {
1012

@@ -38,13 +40,24 @@ namespace l1t {
3840
edm::Ptr<l1t::PFCandidate> daughterPtr(size_type i) const { return constituents_[i]; }
3941

4042
// Get and set the encodedJet_ bits. The Jet is encoded in 128 bits as a 2-element array of uint64_t
41-
std::array<uint64_t, 2> encodedJet() { return encodedJet_; }
42-
void setEncodedJet(std::array<uint64_t, 2> jet) { encodedJet_ = jet; }
43+
// We store encodings both for Correlator internal usage and for Global Trigger
44+
enum class HWEncoding { CT, GT };
45+
typedef std::array<uint64_t, 2> PackedJet;
46+
const PackedJet& encodedJet(const HWEncoding encoding = HWEncoding::GT) const {
47+
return encodedJet_[static_cast<int>(encoding)];
48+
}
49+
void setEncodedJet(const HWEncoding encoding, const PackedJet jet) {
50+
encodedJet_[static_cast<int>(encoding)] = jet;
51+
}
52+
53+
// Accessors to HW objects with ap_* types from encoded words
54+
l1gt::Jet getHWJetGT() const { return l1gt::Jet::unpack(encodedJet(HWEncoding::GT)); }
55+
l1ct::Jet getHWJetCT() const { return l1ct::Jet::unpack(encodedJet(HWEncoding::CT)); }
4356

4457
private:
4558
float rawPt_;
4659
Constituents constituents_;
47-
std::array<uint64_t, 2> encodedJet_ = {{0, 0}};
60+
std::array<PackedJet, 2> encodedJet_ = {{{{0, 0}}, {{0, 0}}}};
4861
};
4962

5063
typedef std::vector<l1t::PFJet> PFJetCollection;

DataFormats/L1TParticleFlow/interface/sums.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ namespace l1ct {
5252
sum.valid = (hwPt != 0) || (hwSumPt != 0);
5353
sum.vector_pt = CTtoGT_pt(hwPt);
5454
sum.vector_phi = CTtoGT_phi(hwPhi);
55-
sum.scalar_pt = CTtoGT_phi(hwSumPt);
55+
sum.scalar_pt = CTtoGT_pt(hwSumPt);
5656
return sum;
5757
}
5858
};

DataFormats/L1TParticleFlow/src/classes_def.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
<class name="l1t::RegionalOutput<l1t::PFCandidateCollection>" />
3434
<class name="edm::Wrapper<l1t::RegionalOutput<l1t::PFCandidateCollection>>" />
3535

36-
<class name="l1t::PFJet" ClassVersion="5">
36+
<class name="l1t::PFJet" ClassVersion="6">
37+
<version ClassVersion="6" checksum="2599349078"/>
3738
<version ClassVersion="5" checksum="2270932343"/>
3839
<version ClassVersion="4" checksum="1424452548"/>
3940
<version ClassVersion="3" checksum="133342988"/>

L1Trigger/Phase2L1ParticleFlow/plugins/L1MHtPFProducer.cc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void L1MhtPfProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::Even
6565
std::vector<l1ct::Jet> L1MhtPfProducer::convertEDMToHW(std::vector<l1t::PFJet> edmJets) const {
6666
std::vector<l1ct::Jet> hwJets;
6767
std::for_each(edmJets.begin(), edmJets.end(), [&](l1t::PFJet jet) {
68-
l1ct::Jet hwJet = l1ct::Jet::unpack(jet.encodedJet());
68+
l1ct::Jet hwJet = jet.getHWJetCT();
6969
hwJets.push_back(hwJet);
7070
});
7171
return hwJets;
@@ -75,17 +75,18 @@ std::vector<l1t::EtSum> L1MhtPfProducer::convertHWToEDM(l1ct::Sum hwSums) const
7575
std::vector<l1t::EtSum> edmSums;
7676

7777
reco::Candidate::PolarLorentzVector htVector;
78-
htVector.SetPt(hwSums.hwSumPt.to_double());
78+
l1gt::Sum gtSum = hwSums.toGT();
79+
htVector.SetPt(l1gt::Scales::floatPt(gtSum.scalar_pt));
7980
htVector.SetPhi(0);
8081
htVector.SetEta(0);
8182

8283
reco::Candidate::PolarLorentzVector mhtVector;
83-
mhtVector.SetPt(hwSums.hwPt.to_double());
84-
mhtVector.SetPhi(l1ct::Scales::floatPhi(hwSums.hwPhi));
84+
mhtVector.SetPt(l1gt::Scales::floatPt(gtSum.vector_pt));
85+
mhtVector.SetPhi(l1gt::Scales::floatPhi(gtSum.vector_phi));
8586
mhtVector.SetEta(0);
8687

87-
l1t::EtSum ht(htVector, l1t::EtSum::EtSumType::kTotalHt);
88-
l1t::EtSum mht(mhtVector, l1t::EtSum::EtSumType::kMissingHt);
88+
l1t::EtSum ht(htVector, l1t::EtSum::EtSumType::kTotalHt, gtSum.scalar_pt.bits_to_uint64());
89+
l1t::EtSum mht(mhtVector, l1t::EtSum::EtSumType::kMissingHt, gtSum.vector_pt.bits_to_uint64(), 0, gtSum.vector_phi);
8990

9091
edmSums.push_back(ht);
9192
edmSums.push_back(mht);

L1Trigger/Phase2L1ParticleFlow/plugins/L1SeedConePFJetProducer.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ std::vector<l1t::PFJet> L1SeedConePFJetProducer::convertHWToEDM(
204204
gtJet.v3.pt.V,
205205
gtJet.v3.eta.V,
206206
gtJet.v3.phi.V);
207-
edmJet.setEncodedJet(jet.toGT().pack());
207+
edmJet.setEncodedJet(l1t::PFJet::HWEncoding::CT, jet.pack());
208+
edmJet.setEncodedJet(l1t::PFJet::HWEncoding::GT, jet.toGT().pack());
208209
// get back the references to the constituents
209210
std::vector<edm::Ptr<l1t::PFCandidate>> constituents;
210211
std::for_each(jet.constituents.begin(), jet.constituents.end(), [&](auto constituent) {

L1Trigger/Phase2L1ParticleFlow/python/l1pfJetMet_cff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
phase2_hgcalV11.toModify(_correctedJets, correctorFile = "L1Trigger/Phase2L1ParticleFlow/data/jecs/jecs_20220308.root")
2727

2828
from L1Trigger.Phase2L1ParticleFlow.l1tMHTPFProducer_cfi import l1tMHTPFProducer
29-
l1tSCPFL1PuppiCorrectedEmulatorMHT = l1tMHTPFProducer.clone()
29+
l1tSCPFL1PuppiCorrectedEmulatorMHT = l1tMHTPFProducer.clone(jets = 'l1tSCPFL1PuppiCorrectedEmulator')
3030

3131
L1TPFJetsTask = cms.Task(
3232
l1tLayer2Deregionizer, l1tSCPFL1PF, l1tSCPFL1Puppi, l1tSCPFL1PuppiEmulator, l1tSCPFL1PuppiCorrectedEmulator, l1tSCPFL1PuppiCorrectedEmulatorMHT

0 commit comments

Comments
 (0)