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
00005 ClusterFillMap::ClusterFillMap (int WindowX,
00006 int WindowY,
00007 std::map<int,int> xtalReg,
00008 double minE,
00009 double maxE,
00010 std::map<int,int> IndexReg,
00011 EcalIntercalibConstantMap * barrelMap,
00012 EcalIntercalibConstantMap * endcapMap):
00013 VFillMap (WindowX,WindowY,xtalReg,minE,
00014 maxE, IndexReg,
00015 barrelMap,endcapMap)
00016
00017 {
00018 }
00019
00020 ClusterFillMap::~ClusterFillMap()
00021 {
00022 }
00023
00024 void
00025 ClusterFillMap::fillMap (const std::vector<std::pair<DetId,float> > & v1,
00026 const DetId Max,
00027 const EcalRecHitCollection * barrelHitsCollection,
00028 const EcalRecHitCollection * endcapHitsCollection,
00029 std::map<int,double> & xtlMap,
00030 double & pSubtract )
00031 {
00032 for (std::vector<std::pair<DetId,float> >::const_iterator idsIt = v1.begin();
00033 idsIt != v1.end () ;
00034 ++idsIt)
00035 {
00036 int RegionNumber = m_xtalRegionId[Max.rawId()];
00037 EcalRecHitCollection::const_iterator itrechit;
00038 double dummy=0.;
00039 if(idsIt->first.subdetId()==EcalBarrel)
00040 {
00041 itrechit=barrelHitsCollection->find(idsIt->first);
00042 dummy=itrechit->energy();
00043 dummy*= (*m_barrelMap)[idsIt->first];
00044 }
00045 if(idsIt->first.subdetId()==EcalEndcap){
00046 itrechit=endcapHitsCollection->find(idsIt->first);
00047 dummy=itrechit->energy();
00048 dummy*= (*m_endcapMap)[idsIt->first];
00049 }
00050 int ID=idsIt->first.rawId();
00051 if (std::isnan(dummy)) {
00052 dummy=0;
00053 }
00054 if ( dummy < m_minEnergyPerCrystal ) continue;
00055 if ( dummy > m_maxEnergyPerCrystal ) {
00056 dummy=0;
00057 continue;
00058 }
00059 if (m_xtalRegionId[ID]==RegionNumber)
00060 xtlMap[m_IndexInRegion[ID]] += dummy;
00061 else pSubtract +=dummy;
00062 }
00063 }
00064