283 subdet_energies.clear();
284 Ecal_energies.clear();
285 Hcal_energies.clear();
287 HPD_energies.clear();
288 RBX_energies.clear();
289 LS_bad_energy = HF_OOT_energy = 0.;
293 std::map<int, double> HPD_energy_map, RBX_energy_map;
294 vector<double> EB_energies, EE_energies, HB_energies, HE_energies, short_energies, long_energies;
307 cout <<
"# of rechits found - HBHE: " << HBHERecHits->size() <<
", HO: " << HORecHits->size()
308 <<
", HF: " << HFRecHits->size() <<
", EB: " << EBRecHits->size() <<
", EE: " << EERecHits->size() << endl;
313 cout <<
"In classifyJetComponents. # of towers found: " << nTowers << endl;
315 for (
int iTower = 0; iTower <
nTowers; iTower++) {
318 int nCells = tower->constituentsSize();
320 cout <<
"tower #" << iTower <<
" has " << nCells <<
" cells. "
321 <<
"It's at iEta: " << tower->ieta() <<
", iPhi: " << tower->iphi() << endl;
323 const vector<DetId> &cellIDs = tower->constituents();
325 for (
int iCell = 0; iCell <
nCells; ++iCell) {
333 if (theRecHit == HORecHits->end()) {
334 edm::LogWarning(
"UnexpectedEventContents") <<
"Can't find the HO recHit with ID: " << HcalID;
337 hitE = theRecHit->energy();
338 HO_energies.push_back(hitE);
342 if (theRecHit == HFRecHits->end()) {
343 edm::LogWarning(
"UnexpectedEventContents") <<
"Can't find the HF recHit with ID: " << HcalID;
346 hitE = theRecHit->energy();
348 cout <<
"hit #" << iCell <<
" is HF , E: " << hitE <<
" iEta: " << theRecHit->id().ieta()
349 <<
", depth: " << theRecHit->id().depth() <<
", iPhi: " << theRecHit->id().iphi();
351 if (HcalID.
depth() == 1)
352 long_energies.push_back(hitE);
354 short_energies.push_back(hitE);
356 uint32_t flags = theRecHit->flags();
358 LS_bad_energy += hitE;
362 HF_OOT_energy += hitE;
363 if (iDbg > 4 && flags)
364 cout <<
"flags: " << flags <<
" -> LS_bad_energy: " << LS_bad_energy <<
", HF_OOT_energy: " << HF_OOT_energy
370 if (theRecHit == HBHERecHits->end()) {
371 edm::LogWarning(
"UnexpectedEventContents") <<
"Can't find the HBHE recHit with ID: " << HcalID;
374 hitE = theRecHit->energy();
375 int iEta = theRecHit->id().
ieta();
376 int depth = theRecHit->id().depth();
378 int hitIPhi = theRecHit->id().iphi();
380 cout <<
"hit #" << iCell <<
" is HBHE, E: " << hitE <<
" iEta: " << iEta <<
", depth: " << depth
381 <<
", iPhi: " << theRecHit->id().iphi() <<
" -> " <<
region;
383 if (theHcalTopology->mergedDepth29(theRecHit->id()))
387 int iRBX = 100 * region + ((hitIPhi + 1) % 72) / 4;
390 if ((0x1 & hitIPhi) == 0) {
391 edm::LogError(
"CodeAssumptionsViolated") <<
"Bug?! Jet ID code assumes no even iPhi recHits at HE edges";
395 bool upperIPhi = ((hitIPhi % 4) == 1 || (hitIPhi % 4) == 2);
399 if (upperIPhi != oddnessIEta)
406 HPD_energy_map[iHPD] += hitE;
407 RBX_energy_map[iRBX] += hitE;
409 cout <<
" --> H[" << iHPD <<
"]=" << HPD_energy_map[iHPD] <<
", R[" << iRBX <<
"]=" << RBX_energy_map[iRBX];
414 HB_energies.push_back(hitE);
416 HE_energies.push_back(hitE);
420 edm::LogWarning(
"UnexpectedEventContents") <<
"HCal hitE==0? (or unknown subdetector?)";
425 int EcalNum = cellIDs[iCell].subdetId();
428 EBDetId EcalID = cellIDs[iCell];
430 if (theRecHit == EBRecHits->end()) {
431 edm::LogWarning(
"UnexpectedEventContents") <<
"Can't find the EB recHit with ID: " << EcalID;
434 hitE = theRecHit->energy();
435 EB_energies.push_back(hitE);
436 }
else if (EcalNum == 2) {
437 EEDetId EcalID = cellIDs[iCell];
439 if (theRecHit == EERecHits->end()) {
440 edm::LogWarning(
"UnexpectedEventContents") <<
"Can't find the EE recHit with ID: " << EcalID;
443 hitE = theRecHit->energy();
444 EE_energies.push_back(hitE);
447 edm::LogWarning(
"UnexpectedEventContents") <<
"ECal hitE==0? (or unknown subdetector?)";
449 cout <<
"EcalNum: " << EcalNum <<
" hitE: " << hitE << endl;
463 Hcal_energies.insert(Hcal_energies.end(), HB_energies.begin(), HB_energies.end());
464 Hcal_energies.insert(Hcal_energies.end(), HE_energies.begin(), HE_energies.end());
465 Hcal_energies.insert(Hcal_energies.end(), short_energies.begin(), short_energies.end());
466 Hcal_energies.insert(Hcal_energies.end(), long_energies.begin(), long_energies.end());
467 Ecal_energies.insert(Ecal_energies.end(), EB_energies.begin(), EB_energies.end());
468 Ecal_energies.insert(Ecal_energies.end(), EE_energies.begin(), EE_energies.end());
476 HPD_energy_map.begin(), HPD_energy_map.end(), std::inserter(HPD_energies, HPD_energies.end()),
select2nd);
480 RBX_energy_map.begin(), RBX_energy_map.end(), std::inserter(RBX_energies, RBX_energies.end()),
select2nd);
484 energies.insert(energies.end(), Hcal_energies.begin(), Hcal_energies.end());
485 energies.insert(energies.end(), Ecal_energies.begin(), Ecal_energies.end());
486 energies.insert(energies.end(), HO_energies.begin(), HO_energies.end());
487 std::sort(energies.begin(), energies.end(), greater<double>());
490 fEB_ = std::accumulate(EB_energies.begin(), EB_energies.end(), 0.);
491 fEE_ = std::accumulate(EE_energies.begin(), EE_energies.end(), 0.);
492 fHB_ = std::accumulate(HB_energies.begin(), HB_energies.end(), 0.);
493 fHE_ = std::accumulate(HE_energies.begin(), HE_energies.end(), 0.);
494 fHO_ = std::accumulate(HO_energies.begin(), HO_energies.end(), 0.);
495 fShort_ = std::accumulate(short_energies.begin(), short_energies.end(), 0.);
496 fLong_ = std::accumulate(long_energies.begin(), long_energies.end(), 0.);
497 subdet_energies.push_back(
fEB_);
498 subdet_energies.push_back(
fEE_);
499 subdet_energies.push_back(
fHB_);
500 subdet_energies.push_back(
fHE_);
501 subdet_energies.push_back(
fHO_);
502 subdet_energies.push_back(
fShort_);
503 subdet_energies.push_back(
fLong_);
504 std::sort(subdet_energies.begin(), subdet_energies.end(), greater<double>());
515 edm::LogError(
"UnexpectedEventContents") <<
"Jet ID Helper found energy in subdetectors and jet E <= 0";
edm::EDGetTokenT< EBRecHitCollection > input_EBRecHits_token_
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > hcal_topo_token_
std::vector< T >::const_iterator const_iterator
edm::EDGetTokenT< HORecHitCollection > input_HORecHits_token_
Log< level::Error, false > LogError
virtual std::vector< CaloTowerPtr > getCaloConstituents() const
get all constituents
Region HBHE_region(uint32_t)
edm::EDGetTokenT< HFRecHitCollection > input_HFRecHits_token_
constexpr HcalSubdetector subdet() const
get the subdetector
Abs< T >::type abs(const T &t)
static double select2nd(std::map< int, double >::value_type const &pair)
constexpr int ieta() const
get the cell ieta
edm::EDGetTokenT< HBHERecHitCollection > input_HBHERecHits_token_
int HBHE_oddness(int iEta, int depth)
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ nCells
edm::EDGetTokenT< EERecHitCollection > input_EERecHits_token_
constexpr int depth() const
get the tower depth
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Log< level::Warning, false > LogWarning
double energy() const final
energy