CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/Calibration/EcalCalibAlgos/src/ClusterFillMap.cc

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