Go to the documentation of this file.00001 #include "Calibration/EcalCalibAlgos/interface/ClusterFillMap.h"
00002 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00003 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00004 #include "FWCore/Utilities/interface/isFinite.h"
00005
00006 ClusterFillMap::ClusterFillMap (int WindowX,
00007 int WindowY,
00008 std::map<int,int> xtalReg,
00009 double minE,
00010 double maxE,
00011 std::map<int,int> IndexReg,
00012 EcalIntercalibConstantMap * barrelMap,
00013 EcalIntercalibConstantMap * endcapMap):
00014 VFillMap (WindowX,WindowY,xtalReg,minE,
00015 maxE, IndexReg,
00016 barrelMap,endcapMap)
00017
00018 {
00019 }
00020
00021 ClusterFillMap::~ClusterFillMap()
00022 {
00023 }
00024
00025 void
00026 ClusterFillMap::fillMap (const std::vector<std::pair<DetId,float> > & v1,
00027 const DetId Max,
00028 const EcalRecHitCollection * barrelHitsCollection,
00029 const EcalRecHitCollection * endcapHitsCollection,
00030 std::map<int,double> & xtlMap,
00031 double & pSubtract )
00032 {
00033 for (std::vector<std::pair<DetId,float> >::const_iterator idsIt = v1.begin();
00034 idsIt != v1.end () ;
00035 ++idsIt)
00036 {
00037 int RegionNumber = m_xtalRegionId[Max.rawId()];
00038 EcalRecHitCollection::const_iterator itrechit;
00039 double dummy=0.;
00040 if(idsIt->first.subdetId()==EcalBarrel)
00041 {
00042 itrechit=barrelHitsCollection->find(idsIt->first);
00043 dummy=itrechit->energy();
00044 dummy*= (*m_barrelMap)[idsIt->first];
00045 }
00046 if(idsIt->first.subdetId()==EcalEndcap){
00047 itrechit=endcapHitsCollection->find(idsIt->first);
00048 dummy=itrechit->energy();
00049 dummy*= (*m_endcapMap)[idsIt->first];
00050 }
00051 int ID=idsIt->first.rawId();
00052 if (edm::isNotFinite(dummy)) {
00053 dummy=0;
00054 }
00055 if ( dummy < m_minEnergyPerCrystal ) continue;
00056 if ( dummy > m_maxEnergyPerCrystal ) {
00057 dummy=0;
00058 continue;
00059 }
00060 if (m_xtalRegionId[ID]==RegionNumber)
00061 xtlMap[m_IndexInRegion[ID]] += dummy;
00062 else pSubtract +=dummy;
00063 }
00064 }
00065