File indexing completed on 2024-04-06 11:59:29
0001 #include "Calibration/Tools/interface/CalibrationCluster.h"
0002 #include <iostream>
0003 #include <string>
0004
0005 using namespace std;
0006
0007 CalibrationCluster::CalibrationCluster() {}
0008
0009 CalibrationCluster::~CalibrationCluster() {}
0010
0011
0012
0013 std::vector<EBDetId> CalibrationCluster::get5x5Id(EBDetId const& maxHitId) {
0014 Xtals5x5.clear();
0015
0016
0017
0018 for (unsigned int icry = 0; icry < 25; icry++) {
0019 unsigned int row = icry / 5;
0020 unsigned int column = icry % 5;
0021
0022
0023 int curr_eta = maxHitId.ieta() + column - (5 / 2);
0024 int curr_phi = maxHitId.iphi() + row - (5 / 2);
0025
0026 if (curr_eta * maxHitId.ieta() <= 0) {
0027 if (maxHitId.ieta() > 0)
0028 curr_eta--;
0029 else
0030 curr_eta++;
0031 }
0032 if (curr_phi < 1)
0033 curr_phi += 360;
0034 if (curr_phi > 360)
0035 curr_phi -= 360;
0036
0037 try {
0038
0039 Xtals5x5.push_back(EBDetId(curr_eta, curr_phi, EBDetId::ETAPHIMODE));
0040 } catch (...) {
0041 std::cout << "Cannot construct 5x5 matrix around EBDetId " << maxHitId << std::endl;
0042 }
0043 }
0044
0045 return Xtals5x5;
0046 }
0047
0048
0049
0050 std::vector<EBDetId> CalibrationCluster::get3x3Id(EBDetId const& maxHitId) {
0051 Xtals3x3.clear();
0052
0053 for (unsigned int icry = 0; icry < 9; icry++) {
0054 unsigned int row = icry / 3;
0055 unsigned int column = icry % 3;
0056
0057 try {
0058 Xtals3x3.push_back(EBDetId(maxHitId.ieta() + column - 1, maxHitId.iphi() + row - 1, EBDetId::ETAPHIMODE));
0059 } catch (...) {
0060 std::cout << "Cannot construct 3x3 matrix around EBDetId " << maxHitId << std::endl;
0061 }
0062 }
0063
0064 return Xtals3x3;
0065 }
0066
0067
0068
0069 CalibrationCluster::CalibMap CalibrationCluster::getMap(int minEta, int maxEta, int minPhi, int maxPhi) {
0070 calibRegion.clear();
0071 int rowSize = maxEta - minEta + 1;
0072 int columnSize = maxPhi - minPhi + 1;
0073 int reducedSize = rowSize * columnSize;
0074
0075 for (int icry = 0; icry < reducedSize; icry++) {
0076 unsigned int eta = minEta + icry / columnSize;
0077 unsigned int phi = minPhi + icry % columnSize;
0078
0079 try {
0080 calibRegion.insert(pippo(EBDetId(eta, phi, EBDetId::ETAPHIMODE), icry));
0081 } catch (...) {
0082 std::cout << "Cannot construct full matrix !!! " << std::endl;
0083 }
0084 }
0085
0086 return calibRegion;
0087 }
0088
0089
0090
0091 std::vector<float> CalibrationCluster::getEnergyVector(const EBRecHitCollection* hits,
0092 CalibMap& ReducedMap,
0093 std::vector<EBDetId>& XstalsNxN,
0094 float& outBoundEnergy,
0095 int& nXtalsOut) {
0096 energyVector.clear();
0097 std::vector<EBDetId>::iterator it;
0098
0099
0100
0101 energyVector.resize(ReducedMap.size(), 0.);
0102
0103 outBoundEnergy = 0.;
0104 nXtalsOut = 0;
0105 for (it = XstalsNxN.begin(); it != XstalsNxN.end(); ++it) {
0106 if (ReducedMap.find(*it) != ReducedMap.end()) {
0107 CalibMap::iterator it2 = ReducedMap.find(*it);
0108
0109 int icry = it2->second;
0110
0111 energyVector[icry] = (hits->find(*it))->energy();
0112
0113 } else {
0114
0115 outBoundEnergy += (hits->find(*it))->energy();
0116 nXtalsOut++;
0117 }
0118 }
0119
0120 return energyVector;
0121 }