Reimplemented from DQMEDAnalyzer.
Definition at line 160 of file HGCalShowerSeparation.cc.
169 const std::vector<CaloParticle>&
caloParticles = *caloParticleHandle;
173 const auto hitmap = *hitMapHandle;
180 auto theta1 = 2. * atan(
exp(-
eta1));
183 auto theta2 = 2. * atan(
exp(-
eta2));
192 float energy_tmp = 0.;
197 for (
const auto& it_sc : simClusterRefVector) {
199 const std::vector<std::pair<uint32_t, float>>& hits_and_fractions = simCluster.
hits_and_fractions();
200 for (
const auto& it_haf : hits_and_fractions) {
201 if (hitmap.count(it_haf.first))
202 energy += hitmap.at(it_haf.first)->energy() * it_haf.second;
220 IfLogTrace(
debug_ > 0,
"HGCalShowerSeparation") <<
">>> " << simClusterRefVector.
size() << std::endl;
221 for (
const auto& it_sc : simClusterRefVector) {
223 if (simCluster.
energy() < 80 * 0.8)
227 <<
">>> SC.energy(): " << simCluster.
energy() <<
" SC.simEnergy(): " << simCluster.
simEnergy() << std::endl;
228 const std::vector<std::pair<uint32_t, float>>& hits_and_fractions = simCluster.
hits_and_fractions();
230 for (
const auto& it_haf : hits_and_fractions) {
231 if (!hitmap.count(it_haf.first))
235 float globalx = global.
x();
236 float globaly = global.y();
237 float globalz = global.z();
240 auto rho1 = globalz *
tan(theta1);
241 auto rho2 = globalz *
tan(theta2);
242 auto x1 = rho1 *
cos(phi1);
243 auto y1 = rho1 *
sin(phi1);
244 auto x2 = rho2 *
cos(phi2);
245 auto y2 = rho2 *
sin(phi2);
246 auto half_point_x = (
x1 +
x2) / 2.;
247 auto half_point_y = (
y1 +
y2) / 2.;
248 auto half_point =
sqrt((
x1 - half_point_x) * (
x1 - half_point_x) + (
y1 - half_point_y) * (
y1 - half_point_y));
250 auto dn_x = (
x2 -
x1) / d_len;
251 auto dn_y = (
y2 -
y1) / d_len;
252 auto distance = (globalx -
x1) * dn_x + (globaly -
y1) * dn_y;
255 if (hitmap.count(it_haf.first)) {
257 10. * (globaly - half_point_y),
258 hitmap.at(it_haf.first)->energy() * it_haf.second);
260 10. * (globaly - half_point_y),
261 hitmap.at(it_haf.first)->energy() * it_haf.second);
262 globalProfileOnLayer_[hitlayer]->Fill(globalx, globaly, hitmap.at(it_haf.first)->energy() * it_haf.second);
263 globalProfileOnLayer_[55]->Fill(globalx, globaly, hitmap.at(it_haf.first)->energy() * it_haf.second);
270 centers_[hitlayer]->Fill(10. * half_point_x, 10. * half_point_y);
272 <<
">>> " <<
distance <<
" " << hitlayer <<
" " << hitmap.at(it_haf.first)->energy() * it_haf.second
References funct::abs(), caloTruthCellsProducer_cfi::caloParticles, caloParticles_, centers_, funct::cos(), submitPVResolutionJobs::count, debug_, deltaEtaPhi_, HLT_FULL_cff::distance, distanceOnLayer_, HCALHighEnergyHPDFilter_cfi::energy, SimCluster::energy(), energy1_, energy2_, energytot_, HLT_FULL_cff::eta1, eta1_, HLT_FULL_cff::eta2, eta2_, etaPhi_, JetChargeProducer_cfi::exp, dqm::impl::MonitorElement::Fill(), filterOnEnergyAndCaloP_, relativeConstraints::geom, edm::EventSetup::get(), get, hgcal::RecHitTools::getLayerWithOffset(), hgcal::RecHitTools::getPosition(), globalProfileOnLayer_, hitMap_, SimCluster::hits_and_fractions(), idealDeltaXY_, idealDistanceOnLayer_, iEvent, IfLogTrace, layerDistance_, layerEnergy_, or, profileOnLayer_, recHitTools_, scEnergy_, hgcal::RecHitTools::setGeometry(), showerProfile_, SimCluster::simEnergy(), funct::sin(), edm::RefVector< C, T, F >::size(), findQualityFiles::size, mathSSE::sqrt(), funct::tan(), PV3DBase< T, PVType, FrameType >::x(), testProducerWithPsetDescEmpty_cfi::x1, testProducerWithPsetDescEmpty_cfi::x2, testProducerWithPsetDescEmpty_cfi::y1, and testProducerWithPsetDescEmpty_cfi::y2.