Reimplemented from DQMEDAnalyzer.
Definition at line 166 of file HGCalShowerSeparation.cc.
177 const std::vector<CaloParticle>&
caloParticles = *caloParticleHandle;
182 const auto& rechitsEE = *recHitHandleEE;
183 const auto& rechitsFH = *recHitHandleFH;
184 const auto& rechitsBH = *recHitHandleBH;
186 std::map<DetId, const HGCRecHit*> hitmap;
187 for (
unsigned int i = 0;
i < rechitsEE.size(); ++
i) {
188 hitmap[rechitsEE[
i].detid()] = &rechitsEE[
i];
190 for (
unsigned int i = 0;
i < rechitsFH.size(); ++
i) {
191 hitmap[rechitsFH[
i].detid()] = &rechitsFH[
i];
193 for (
unsigned int i = 0;
i < rechitsBH.size(); ++
i) {
194 hitmap[rechitsBH[
i].detid()] = &rechitsBH[
i];
202 auto theta1 = 2. * atan(
exp(-
eta1));
205 auto theta2 = 2. * atan(
exp(-
eta2));
214 float energy_tmp = 0.;
219 for (
const auto& it_sc : simClusterRefVector) {
221 const std::vector<std::pair<uint32_t, float> >& hits_and_fractions = simCluster.
hits_and_fractions();
222 for (
const auto& it_haf : hits_and_fractions) {
223 if (hitmap.count(it_haf.first))
224 energy += hitmap[it_haf.first]->energy() * it_haf.second;
242 IfLogTrace(
debug_ > 0,
"HGCalShowerSeparation") <<
">>> " << simClusterRefVector.
size() << std::endl;
243 for (
const auto& it_sc : simClusterRefVector) {
245 if (simCluster.
energy() < 80 * 0.8)
249 <<
">>> SC.energy(): " << simCluster.
energy() <<
" SC.simEnergy(): " << simCluster.
simEnergy() << std::endl;
250 const std::vector<std::pair<uint32_t, float> >& hits_and_fractions = simCluster.
hits_and_fractions();
252 for (
const auto& it_haf : hits_and_fractions) {
253 if (!hitmap.count(it_haf.first))
257 float globalx = global.
x();
258 float globaly = global.y();
259 float globalz = global.z();
262 auto rho1 = globalz *
tan(theta1);
263 auto rho2 = globalz *
tan(theta2);
264 auto x1 = rho1 *
cos(phi1);
265 auto y1 = rho1 *
sin(phi1);
266 auto x2 = rho2 *
cos(phi2);
267 auto y2 = rho2 *
sin(phi2);
268 auto half_point_x = (
x1 +
x2) / 2.;
269 auto half_point_y = (
y1 +
y2) / 2.;
270 auto half_point =
sqrt((
x1 - half_point_x) * (
x1 - half_point_x) + (
y1 - half_point_y) * (
y1 - half_point_y));
272 auto dn_x = (
x2 -
x1) / d_len;
273 auto dn_y = (
y2 -
y1) / d_len;
274 auto distance = (globalx -
x1) * dn_x + (globaly -
y1) * dn_y;
277 if (hitmap.count(it_haf.first)) {
279 10. * (globaly - half_point_y),
280 hitmap[it_haf.first]->energy() * it_haf.second);
282 10. * (globaly - half_point_y),
283 hitmap[it_haf.first]->energy() * it_haf.second);
284 globalProfileOnLayer_[hitlayer]->Fill(globalx, globaly, hitmap[it_haf.first]->energy() * it_haf.second);
292 centers_[hitlayer]->Fill(10. * half_point_x, 10. * half_point_y);
294 <<
">>> " <<
distance <<
" " << hitlayer <<
" " << hitmap[it_haf.first]->energy() * it_haf.second
References funct::abs(), caloTruthCellsProducer_cfi::caloParticles, caloParticles_, centers_, funct::cos(), KineDebug3::count(), debug_, deltaEtaPhi_, HLT_2018_cff::distance, distanceOnLayer_, HCALHighEnergyHPDFilter_cfi::energy, SimCluster::energy(), energy1_, energy2_, energytot_, HLT_2018_cff::eta1, eta1_, HLT_2018_cff::eta2, eta2_, etaPhi_, JetChargeProducer_cfi::exp, dqm::impl::MonitorElement::Fill(), filterOnEnergyAndCaloP_, hgcal::RecHitTools::getEventSetup(), hgcal::RecHitTools::getLayerWithOffset(), hgcal::RecHitTools::getPosition(), globalProfileOnLayer_, SimCluster::hits_and_fractions(), mps_fire::i, idealDeltaXY_, idealDistanceOnLayer_, iEvent, IfLogTrace, layerDistance_, layerEnergy_, or, profileOnLayer_, recHitsBH_, recHitsEE_, recHitsFH_, recHitTools_, scEnergy_, 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.