176 std::unique_ptr<float> anomalyScore = std::make_unique<float>();
184 UCTSummaryCard summaryCard =
186 std::vector<UCTRegion*> inputRegions;
187 inputRegions.clear();
190 edm::LogError(
"L1TCaloSummary") <<
"UCT: Failed to get regions from region collection!";
196 ap_ufixed<10, 10> modelInput[252];
198 UCTRegionIndex
r =
g.getUCTRegionIndexFromL1CaloRegion(
i.gctEta(),
i.gctPhi());
199 UCTTowerIndex
t =
g.getUCTTowerIndexFromL1CaloRegion(
r,
i.raw());
201 uint32_t absCaloPhi =
std::abs(
t.second);
202 bool negativeEta =
false;
205 uint32_t crate =
g.getCrate(
t.first,
t.second);
206 uint32_t card =
g.getCard(
t.first,
t.second);
207 uint32_t
region =
g.getRegion(absCaloEta, absCaloPhi);
209 test->setRegionSummary(
i.raw());
210 inputRegions.push_back(
test);
216 modelInput[14 *
i.gctPhi() + (
i.gctEta() - 4)] =
i.et();
220 ap_fixed<11, 5> modelResult[1];
221 model->prepare_input(modelInput);
223 model->read_result(modelResult);
225 *anomalyScore = modelResult[0].to_float();
227 summaryCard.setRegionData(inputRegions);
229 if (!summaryCard.process()) {
230 edm::LogError(
"L1TCaloSummary") <<
"UCT: Failed to process summary card" << std::endl;
239 std::list<UCTObject*> boostedJetObjs = summaryCard.getBoostedJetObjs();
240 for (std::list<UCTObject*>::const_iterator
i = boostedJetObjs.begin();
i != boostedJetObjs.end();
i++) {
241 const UCTObject*
object = *
i;
245 bitset<3> activeRegionEtaPattern = 0;
247 bool activeStrip =
false;
248 for (uint32_t iPhi = 0; iPhi < 3; iPhi++) {
249 if (
object->boostedJetRegionET()[3 *
iEta + iPhi] > 30 &&
250 object->boostedJetRegionET()[3 *
iEta + iPhi] >
object->et() * 0.0625)
254 activeRegionEtaPattern |= (0x1 <<
iEta);
256 bitset<3> activeRegionPhiPattern = 0;
257 for (uint32_t iPhi = 0; iPhi < 3; iPhi++) {
258 bool activeStrip =
false;
260 if (
object->boostedJetRegionET()[3 *
iEta + iPhi] > 30 &&
261 object->boostedJetRegionET()[3 *
iEta + iPhi] >
object->et() * 0.0625)
265 activeRegionPhiPattern |= (0x1 << iPhi);
267 string regionEta = activeRegionEtaPattern.to_string<char, std::string::traits_type, std::string::allocator_type>();
268 string regionPhi = activeRegionPhiPattern.to_string<char, std::string::traits_type, std::string::allocator_type>();
270 bool centralHighest =
object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[0] &&
271 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[1] &&
272 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[2] &&
273 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[3] &&
274 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[5] &&
275 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[6] &&
276 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[7] &&
277 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[8];
279 if (
abs(
eta) < 2.5 && ((regionEta ==
"101" && (regionPhi ==
"110" || regionPhi ==
"101" || regionPhi ==
"010")) ||
280 ((regionEta ==
"110" || regionEta ==
"101" || regionEta ==
"010") && regionPhi ==
"101") ||
281 (regionEta ==
"111" && (regionPhi ==
"110" || regionPhi ==
"010")) ||
282 ((regionEta ==
"110" || regionEta ==
"010") && regionPhi ==
"111") ||
283 ((regionEta ==
"010" || regionPhi ==
"010" || regionEta ==
"110" || regionPhi ==
"110" ||
284 regionEta ==
"011" || regionPhi ==
"011") &&
std::shared_ptr< hls4mlEmulator::Model > model
Log< level::Error, false > LogError
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
double eGammaIsolationFactor
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Abs< T >::type abs(const T &t)
std::vector< std::vector< std::vector< uint32_t > > > pumLUT
double boostedJetPtFactor
A calorimeter trigger region (sum of 4x4 trigger towers)
edm::EDGetTokenT< L1CaloRegionCollection > regionToken