File indexing completed on 2024-04-06 11:58:40
0001 #include "Calibration/EcalCalibAlgos/interface/ClusterFillMap.h"
0002 #include "DataFormats/EcalDetId/interface/EEDetId.h"
0003 #include "DataFormats/EcalDetId/interface/EBDetId.h"
0004 #include "FWCore/Utilities/interface/isFinite.h"
0005
0006 ClusterFillMap::ClusterFillMap(int WindowX,
0007 int WindowY,
0008 const std::map<int, int>& xtalReg,
0009 double minE,
0010 double maxE,
0011 const std::map<int, int>& IndexReg,
0012 EcalIntercalibConstantMap* barrelMap,
0013 EcalIntercalibConstantMap* endcapMap)
0014 : VFillMap(WindowX, WindowY, xtalReg, minE, maxE, IndexReg, barrelMap, endcapMap)
0015
0016 {}
0017
0018 ClusterFillMap::~ClusterFillMap() {}
0019
0020 void ClusterFillMap::fillMap(const std::vector<std::pair<DetId, float> >& v1,
0021 const DetId Max,
0022 const EcalRecHitCollection* barrelHitsCollection,
0023 const EcalRecHitCollection* endcapHitsCollection,
0024 std::map<int, double>& xtlMap,
0025 double& pSubtract) {
0026 for (std::vector<std::pair<DetId, float> >::const_iterator idsIt = v1.begin(); idsIt != v1.end(); ++idsIt) {
0027 int RegionNumber = m_xtalRegionId[Max.rawId()];
0028 EcalRecHitCollection::const_iterator itrechit;
0029 double dummy = 0.;
0030 if (idsIt->first.subdetId() == EcalBarrel) {
0031 itrechit = barrelHitsCollection->find(idsIt->first);
0032 dummy = itrechit->energy();
0033 dummy *= (*m_barrelMap)[idsIt->first];
0034 } else if (idsIt->first.subdetId() == EcalEndcap) {
0035 itrechit = endcapHitsCollection->find(idsIt->first);
0036 dummy = itrechit->energy();
0037 dummy *= (*m_endcapMap)[idsIt->first];
0038 }
0039 if (edm::isNotFinite(dummy)) {
0040 dummy = 0;
0041 }
0042 if (dummy < m_minEnergyPerCrystal)
0043 continue;
0044 if (dummy > m_maxEnergyPerCrystal) {
0045 continue;
0046 }
0047 int ID = idsIt->first.rawId();
0048 if (m_xtalRegionId[ID] == RegionNumber)
0049 xtlMap[m_IndexInRegion[ID]] += dummy;
0050 else
0051 pSubtract += dummy;
0052 }
0053 }