Skip to content

Commit 6fa4020

Browse files
authored
Merge pull request #47560 from p2l1-gtEmulator/add_cuts
Phase-2 GT: Fix cut initialization copy paste errors
2 parents 5471b1c + fdd1d13 commit 6fa4020

File tree

4 files changed

+24
-23
lines changed

4 files changed

+24
-23
lines changed

L1Trigger/Phase2L1GT/plugins/L1GT3BodyCut.h

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,46 +30,44 @@ namespace l1t {
3030
minInvMassSqrDiv2_(getOptionalParam<int64_t, double>("minInvMass",
3131
config,
3232
[&](double value) {
33-
return std::round(scales.to_hw_InvMassSqrDiv2(value) *
34-
cosPhiLUT_.output_scale());
35-
})),
36-
maxInvMassSqrDiv2_(getOptionalParam<int64_t, double>("maxInvMass",
37-
config,
38-
[&](double value) {
39-
return std::round(scales.to_hw_InvMassSqrDiv2(value) *
33+
return std::floor(scales.to_hw_InvMassSqrDiv2(value) *
4034
cosPhiLUT_.output_scale());
4135
})),
36+
maxInvMassSqrDiv2_(getOptionalParam<int64_t, double>(
37+
"maxInvMass",
38+
config,
39+
[&](double value) { return std::ceil(scales.to_hw_InvMassSqrDiv2(value) * cosPhiLUT_.output_scale()); })),
4240
minTransMassSqrDiv2_(getOptionalParam<int64_t, double>(
4341
"minTransMass",
4442
config,
4543
[&](double value) {
46-
return std::round(scales.to_hw_TransMassSqrDiv2(value) * cosPhiLUT_.output_scale());
44+
return std::floor(scales.to_hw_TransMassSqrDiv2(value) * cosPhiLUT_.output_scale());
4745
})),
4846
maxTransMassSqrDiv2_(getOptionalParam<int64_t, double>(
4947
"maxTransMass",
5048
config,
5149
[&](double value) {
52-
return std::round(scales.to_hw_TransMassSqrDiv2(value) * cosPhiLUT_.output_scale());
50+
return std::ceil(scales.to_hw_TransMassSqrDiv2(value) * cosPhiLUT_.output_scale());
5351
})),
5452
scaleNormalShift_(std::round(std::log2(std::ceil(coshEtaLUT_.output_scale() / coshEtaLUT2_.output_scale())))),
5553
invMassResolutionReduceShift_([&]() {
54+
// Computation of the dynamic input two-body mass resolution w.r.t. the cut value.
55+
// The result is a resolution of inputs between 2^-15 to 2^-16 of the cut value.
5656
if (minInvMassSqrDiv2_) {
57-
return std::max<int>(
58-
std::ceil(std::log2(minInvMassSqrDiv2_.value() * cosPhiLUT_.output_scale() + 1.0)) - 16, 0);
57+
return std::max<int>(std::floor(std::log2(minInvMassSqrDiv2_.value())) + 1 - CALC_BITS, 0);
5958
} else if (maxInvMassSqrDiv2_) {
60-
return std::max<int>(std::ceil(std::log2(maxInvMassSqrDiv2_.value() * cosPhiLUT_.output_scale())) - 16,
61-
0);
59+
return std::max<int>(std::floor(std::log2(maxInvMassSqrDiv2_.value())) + 1 - CALC_BITS, 0);
6260
} else {
6361
return 0;
6462
}
6563
}()),
6664
transMassResolutionReduceShift_([&]() {
65+
// Computation of the dynamic input two-body mass resolution w.r.t. the cut value.
66+
// The result is a resolution of inputs between 2^-15 to 2^-16 of the cut value.
6767
if (minTransMassSqrDiv2_) {
68-
return std::max<int>(
69-
std::ceil(std::log2(minTransMassSqrDiv2_.value() * cosPhiLUT_.output_scale() + 1.0)) - 16, 0);
68+
return std::max<int>(std::floor(std::log2(minTransMassSqrDiv2_.value())) + 1 - CALC_BITS, 0);
7069
} else if (maxTransMassSqrDiv2_) {
71-
return std::max<int>(std::ceil(std::log2(maxTransMassSqrDiv2_.value() * cosPhiLUT_.output_scale())) - 16,
72-
0);
70+
return std::max<int>(std::floor(std::log2(maxTransMassSqrDiv2_.value())) + 1 - CALC_BITS, 0);
7371
} else {
7472
return 0;
7573
}
@@ -114,6 +112,7 @@ namespace l1t {
114112

115113
private:
116114
static constexpr int HW_PI = 1 << (P2GTCandidate::hwPhi_t::width - 1); // assumes phi in [-pi, pi)
115+
static constexpr int CALC_BITS = 16; // Allocate 16 bits to the calculation
117116

118117
int64_t calc2BodyInvMass(const P2GTCandidate& obj1,
119118
const P2GTCandidate& obj2,

L1Trigger/Phase2L1GT/plugins/L1GTCorrelationalCut.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,25 +92,25 @@ namespace l1t {
9292
"minInvMassOverDR",
9393
config,
9494
[&](double value) {
95-
return std::floor(scales.to_hw_InvMassSqrDiv2(value) * coshEtaLUT_.output_scale());
95+
return std::floor(scales.to_hw_InvMassSqrOver2DR(value) * coshEtaLUT_.output_scale());
9696
})),
9797
maxInvMassSqrOver2DRSqr_scale1_(getOptionalParam<double, double>(
9898
"maxInvMassOverDR",
9999
config,
100100
[&](double value) {
101-
return std::ceil(scales.to_hw_InvMassSqrDiv2(value) * coshEtaLUT_.output_scale());
101+
return std::ceil(scales.to_hw_InvMassSqrOver2DR(value) * coshEtaLUT_.output_scale());
102102
})),
103103
minInvMassSqrOver2DRSqr_scale2_(getOptionalParam<double, double>(
104104
"minInvMassOverDR",
105105
config,
106106
[&](double value) {
107-
return std::floor(scales.to_hw_InvMassSqrDiv2(value) * coshEtaLUT2_.output_scale());
107+
return std::floor(scales.to_hw_InvMassSqrOver2DR(value) * coshEtaLUT2_.output_scale());
108108
})),
109109
maxInvMassSqrOver2DRSqr_scale2_(getOptionalParam<double, double>(
110110
"maxInvMassOverDR",
111111
config,
112112
[&](double value) {
113-
return std::ceil(scales.to_hw_InvMassSqrDiv2(value) * coshEtaLUT2_.output_scale());
113+
return std::ceil(scales.to_hw_InvMassSqrOver2DR(value) * coshEtaLUT2_.output_scale());
114114
})),
115115
os_(config.getParameter<bool>("os")),
116116
ss_(config.getParameter<bool>("ss")),

L1Trigger/Phase2L1GT/plugins/L1GTSingleCollectionCut.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ namespace l1t {
6363
maxAbsEta_(getOptionalParam<int, double>(
6464
"maxAbsEta", config, [&scales](double value) { return scales.to_hw_eta_ceil(value); })),
6565
minIsolationPt_(getOptionalParam<int, double>(
66-
"minRelIsolationPt", config, [&scales](double value) { return scales.to_hw_isolationPT_floor(value); })),
66+
"minIsolationPt", config, [&scales](double value) { return scales.to_hw_isolationPT_floor(value); })),
6767
maxIsolationPt_(getOptionalParam<int, double>(
68-
"maxRelIsolationPt", config, [&scales](double value) { return scales.to_hw_isolationPT_ceil(value); })),
68+
"maxIsolationPt", config, [&scales](double value) { return scales.to_hw_isolationPT_ceil(value); })),
6969
minRelIsolationPt_(getOptionalParam<int, double>(
7070
"minRelIsolationPt",
7171
config,

L1Trigger/Phase2L1GT/src/L1GTScales.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ namespace l1t {
8787
.def("to_hw_phi_ceil", &L1GTScales::to_hw_phi_ceil)
8888
.def("to_hw_eta_ceil", &L1GTScales::to_hw_eta_ceil)
8989
.def("to_hw_z0_ceil", &L1GTScales::to_hw_z0_ceil)
90+
.def("to_hw_isolationPT_ceil", &L1GTScales::to_hw_isolationPT_ceil)
9091
.def("to_hw_relative_isolationPT_ceil", &L1GTScales::to_hw_relative_isolationPT_ceil)
9192
.def("to_hw_beta_ceil", &L1GTScales::to_hw_beta_ceil)
9293
.def("to_hw_mass_ceil", &L1GTScales::to_hw_mass_ceil)
@@ -99,6 +100,7 @@ namespace l1t {
99100
.def("to_hw_phi_floor", &L1GTScales::to_hw_phi_floor)
100101
.def("to_hw_eta_floor", &L1GTScales::to_hw_eta_floor)
101102
.def("to_hw_z0_floor", &L1GTScales::to_hw_z0_floor)
103+
.def("to_hw_isolationPT_floor", &L1GTScales::to_hw_isolationPT_floor)
102104
.def("to_hw_relative_isolationPT_floor", &L1GTScales::to_hw_relative_isolationPT_floor)
103105
.def("to_hw_beta_floor", &L1GTScales::to_hw_beta_floor)
104106
.def("to_hw_mass_floor", &L1GTScales::to_hw_mass_floor)

0 commit comments

Comments
 (0)