183 std::unique_ptr<float> CICADAScore = std::make_unique<float>();
191 UCTSummaryCard summaryCard =
193 std::vector<UCTRegion*> inputRegions;
194 inputRegions.clear();
197 edm::LogError(
"L1TCaloSummary") <<
"UCT: Failed to get regions from region collection!";
202 INPUT modelInput[252];
204 UCTRegionIndex
r =
g.getUCTRegionIndexFromL1CaloRegion(
i.gctEta(),
i.gctPhi());
205 UCTTowerIndex
t =
g.getUCTTowerIndexFromL1CaloRegion(
r,
i.raw());
207 uint32_t absCaloPhi =
std::abs(
t.second);
208 bool negativeEta =
false;
211 uint32_t crate =
g.getCrate(
t.first,
t.second);
212 uint32_t card =
g.getCard(
t.first,
t.second);
213 uint32_t
region =
g.getRegion(absCaloEta, absCaloPhi);
215 test->setRegionSummary(
i.raw());
216 inputRegions.push_back(
test);
222 modelInput[14 *
i.gctPhi() + (
i.gctEta() - 4)] =
i.et();
226 unsigned int evt =
iEvent.id().event();
228 unsigned int patternElement = evt % totalTestPatterns;
230 std::stringstream inputStream;
233 edm::LogWarning(
"L1TCaloSummary") <<
"Overwriting existing CICADA input with test pattern!\n";
235 for (
unsigned short int iPhi = 1; iPhi <= 18; ++iPhi) {
237 std::stringstream PhiRowStringStream;
238 PhiRowStringStream <<
"iPhi_" << iPhi;
239 PhiRowString = PhiRowStringStream.str();
240 std::vector<unsigned int> phiRow = element.
getParameter<std::vector<unsigned int>>(PhiRowString);
242 modelInput[14 * (iPhi - 1) + (
iEta - 1)] = phiRow.at(
iEta - 1);
243 inputStream << phiRow.at(
iEta - 1) <<
" ";
247 edm::LogInfo(
"L1TCaloSummary") <<
"Input Stream:\n" << inputStream.str();
251 OUTPUT modelResult[1] = {
253 model->prepare_input(modelInput);
255 model->read_result(modelResult);
257 *CICADAScore = modelResult[0].to_float();
260 edm::LogInfo(
"L1TCaloSummary") <<
"Test Pattern Output: " << *CICADAScore;
262 summaryCard.setRegionData(inputRegions);
264 if (!summaryCard.process()) {
265 edm::LogError(
"L1TCaloSummary") <<
"UCT: Failed to process summary card" << std::endl;
274 std::list<UCTObject*> boostedJetObjs = summaryCard.getBoostedJetObjs();
275 for (std::list<UCTObject*>::const_iterator
i = boostedJetObjs.begin();
i != boostedJetObjs.end();
i++) {
276 const UCTObject*
object = *
i;
280 bitset<3> activeRegionEtaPattern = 0;
282 bool activeStrip =
false;
283 for (uint32_t iPhi = 0; iPhi < 3; iPhi++) {
284 if (
object->boostedJetRegionET()[3 *
iEta + iPhi] > 30 &&
285 object->boostedJetRegionET()[3 *
iEta + iPhi] >
object->et() * 0.0625)
289 activeRegionEtaPattern |= (0x1 <<
iEta);
291 bitset<3> activeRegionPhiPattern = 0;
292 for (uint32_t iPhi = 0; iPhi < 3; iPhi++) {
293 bool activeStrip =
false;
295 if (
object->boostedJetRegionET()[3 *
iEta + iPhi] > 30 &&
296 object->boostedJetRegionET()[3 *
iEta + iPhi] >
object->et() * 0.0625)
300 activeRegionPhiPattern |= (0x1 << iPhi);
302 string regionEta = activeRegionEtaPattern.to_string<char, std::string::traits_type, std::string::allocator_type>();
303 string regionPhi = activeRegionPhiPattern.to_string<char, std::string::traits_type, std::string::allocator_type>();
305 bool centralHighest =
object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[0] &&
306 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[1] &&
307 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[2] &&
308 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[3] &&
309 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[5] &&
310 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[6] &&
311 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[7] &&
312 object->boostedJetRegionET()[4] >=
object->boostedJetRegionET()[8];
314 if (
abs(
eta) < 2.5 && ((regionEta ==
"101" && (regionPhi ==
"110" || regionPhi ==
"101" || regionPhi ==
"010")) ||
315 ((regionEta ==
"110" || regionEta ==
"101" || regionEta ==
"010") && regionPhi ==
"101") ||
316 (regionEta ==
"111" && (regionPhi ==
"110" || regionPhi ==
"010")) ||
317 ((regionEta ==
"110" || regionEta ==
"010") && regionPhi ==
"111") ||
318 ((regionEta ==
"010" || regionPhi ==
"010" || regionEta ==
"110" || regionPhi ==
"110" ||
319 regionEta ==
"011" || regionPhi ==
"011") &&
T getParameter(std::string const &) const
bool overwriteWithTestPatterns
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
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Abs< T >::type abs(const T &t)
std::vector< edm::ParameterSet > testPatterns
edm::EDGetTokenT< L1CaloRegionCollection > regionToken
Log< level::Info, false > LogInfo
std::shared_ptr< hls4mlEmulator::Model > model
double boostedJetPtFactor
double eGammaIsolationFactor
std::vector< std::vector< std::vector< uint32_t > > > pumLUT
A calorimeter trigger region (sum of 4x4 trigger towers)
Log< level::Warning, false > LogWarning