Back to home page

Project CMSSW displayed by LXR

 
 

    


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;  //return 1;

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 }