187 uint32_t expectedTotalET = 0;
188 if(!
layer1->clearEvent()) {
189 LOG_ERROR <<
"UCT: Failed to clear event" << std::endl;
193 for (
const auto& ecalTp : *ecalTPs ) {
195 int caloEta = ecalTp.id().ieta();
196 int caloPhi = ecalTp.id().iphi();
197 int et = ecalTp.compressedEt();
198 bool fgVeto = ecalTp.fineGrain();
199 UCTTowerIndex
t = UCTTowerIndex(caloEta, caloPhi);
200 if(!
layer1->setECALData(t,fgVeto,et)) {
201 LOG_ERROR <<
"UCT: Failed loading an ECAL tower" << std::endl;
204 expectedTotalET +=
et;
209 for (
const auto& hcalTp : *hcalTPs ) {
211 int caloEta = hcalTp.id().ieta();
212 uint32_t absCaloEta =
std::abs(caloEta);
214 if(absCaloEta == 29) {
218 else if(hcalTp.id().version() == 0 && absCaloEta > 29) {
221 else if(absCaloEta <= 41) {
222 int caloPhi = hcalTp.id().iphi();
223 int et = hcalTp.SOI_compressedEt();
224 bool fg = hcalTp.t0().fineGrain(0);
225 bool fg2 = hcalTp.t0().fineGrain(1);
227 UCTTowerIndex t = UCTTowerIndex(caloEta, caloPhi);
228 uint32_t featureBits = 0;
229 if(fg) featureBits |= 0b01;
231 if(absCaloEta > 29 && fg2) featureBits |= 0b10;
232 if(!
layer1->setHCALData(t, featureBits, et)) {
233 LOG_ERROR <<
"caloEta = " << caloEta <<
"; caloPhi =" << caloPhi << std::endl;
234 LOG_ERROR <<
"UCT: Failed loading an HCAL tower" << std::endl;
237 expectedTotalET +=
et;
240 LOG_ERROR <<
"Illegal Tower: caloEta = " << caloEta <<
"; caloPhi =" << caloPhi <<
"; et = " << et << std::endl;
244 LOG_ERROR <<
"Illegal Tower: caloEta = " << caloEta << std::endl;
251 LOG_ERROR <<
"UCT: Failed to process layer 1" << std::endl;
256 for(uint32_t twr = 0; twr <
twrList.size(); twr++) {
265 towersColl->push_back(theBX, caloTower);
271 vector<UCTCrate*> crates =
layer1->getCrates();
272 for(uint32_t crt = 0; crt < crates.size(); crt++) {
273 vector<UCTCard*> cards = crates[crt]->getCards();
274 for(uint32_t crd = 0; crd < cards.size(); crd++) {
275 vector<UCTRegion*>
regions = cards[crd]->getRegions();
276 for(uint32_t rgn = 0; rgn < regions.size(); rgn++) {
277 uint32_t rawData = regions[rgn]->rawData();
278 uint32_t regionData = rawData & 0x0000FFFF;
279 uint32_t crate = regions[rgn]->getCrate();
280 uint32_t card = regions[rgn]->getCard();
281 uint32_t region = regions[rgn]->getRegion();
282 bool negativeEta = regions[rgn]->isNegativeEta();
283 uint32_t rPhi = g.getUCTRegionPhiIndex(crate, card);
284 if(region < NRegionsInCard) {
285 uint32_t rEta = 10 - region;
286 if(!negativeEta) rEta = 11 + region;
287 rgnCollection->push_back(
L1CaloRegion((uint16_t) regionData, (
unsigned) rEta, (
unsigned) rPhi, (int16_t) 0));
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< HcalTrigPrimDigiCollection > hcalTPSource
std::vector< UCTTower * > twrList
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
Abs< T >::type abs(const T &t)
void setHwEtRatio(int ratio)
edm::EDGetTokenT< EcalTrigPrimDigiCollection > ecalTPSource
et
define resolution functions of each parameter
A calorimeter trigger region (sum of 4x4 trigger towers)
std::vector< L1CaloRegion > L1CaloRegionCollection