CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/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 
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; //return 1; 
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