1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include "Calibration/EcalCalibAlgos/interface/ClusterFillMap.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "FWCore/Utilities/interface/isFinite.h"
ClusterFillMap::ClusterFillMap(int WindowX,
int WindowY,
const std::map<int, int>& xtalReg,
double minE,
double maxE,
const std::map<int, int>& IndexReg,
EcalIntercalibConstantMap* barrelMap,
EcalIntercalibConstantMap* endcapMap)
: VFillMap(WindowX, WindowY, xtalReg, minE, maxE, IndexReg, barrelMap, endcapMap)
{}
ClusterFillMap::~ClusterFillMap() {}
void ClusterFillMap::fillMap(const std::vector<std::pair<DetId, float> >& v1,
const DetId Max,
const EcalRecHitCollection* barrelHitsCollection,
const EcalRecHitCollection* endcapHitsCollection,
std::map<int, double>& xtlMap,
double& pSubtract) {
for (std::vector<std::pair<DetId, float> >::const_iterator idsIt = v1.begin(); idsIt != v1.end(); ++idsIt) {
int RegionNumber = m_xtalRegionId[Max.rawId()];
EcalRecHitCollection::const_iterator itrechit;
double dummy = 0.;
if (idsIt->first.subdetId() == EcalBarrel) {
itrechit = barrelHitsCollection->find(idsIt->first);
dummy = itrechit->energy();
dummy *= (*m_barrelMap)[idsIt->first];
} else if (idsIt->first.subdetId() == EcalEndcap) {
itrechit = endcapHitsCollection->find(idsIt->first);
dummy = itrechit->energy();
dummy *= (*m_endcapMap)[idsIt->first];
}
if (edm::isNotFinite(dummy)) {
dummy = 0;
}
if (dummy < m_minEnergyPerCrystal)
continue; //return 1;
if (dummy > m_maxEnergyPerCrystal) {
continue;
}
int ID = idsIt->first.rawId();
if (m_xtalRegionId[ID] == RegionNumber)
xtlMap[m_IndexInRegion[ID]] += dummy;
else
pSubtract += dummy;
}
}
|