File indexing completed on 2023-03-17 10:43:25
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef CalibrationIsolatedParticleseECALMatrix_h
0017 #define CalibrationIsolatedParticleseECALMatrix_h
0018
0019
0020 #include <memory>
0021 #include <map>
0022 #include <vector>
0023
0024
0025 #include "FWCore/Framework/interface/Frameworkfwd.h"
0026 #include "DataFormats/Common/interface/Handle.h"
0027 #include "DataFormats/Candidate/interface/Candidate.h"
0028 #include "DataFormats/DetId/interface/DetId.h"
0029 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0030 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0031 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
0032
0033 #include "Calibration/IsolatedParticles/interface/MatrixECALDetIds.h"
0034 #include "RecoCaloTools/Navigation/interface/CaloNavigator.h"
0035 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0036 #include "Geometry/CaloTopology/interface/CaloTopology.h"
0037 #include "Geometry/CaloTopology/interface/CaloTowerConstituentsMap.h"
0038 #include "Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h"
0039
0040 class EcalSeverityLevelAlgo;
0041
0042 namespace spr {
0043
0044
0045 template <typename T>
0046 double eECALmatrix(const DetId& detId,
0047 edm::Handle<T>& hitsEB,
0048 edm::Handle<T>& hitsEE,
0049 const CaloGeometry* geo,
0050 const CaloTopology* caloTopology,
0051 int ieta,
0052 int iphi,
0053 double ebThr = -100,
0054 double eeThr = -100,
0055 double tMin = -500,
0056 double tMax = 500,
0057 bool debug = false);
0058
0059 template <typename T>
0060 double eECALmatrix(const DetId& detId,
0061 edm::Handle<T>& hitsEB,
0062 edm::Handle<T>& hitsEE,
0063 const CaloGeometry* geo,
0064 const CaloTopology* caloTopology,
0065 const EcalTrigTowerConstituentsMap& ttMap,
0066 int ieta,
0067 int iphi,
0068 double ebThr = -100,
0069 double eeThr = -100,
0070 double tMin = -500,
0071 double tMax = 500,
0072 bool debug = false);
0073
0074 template <typename T>
0075 double eECALmatrix(const DetId& detId,
0076 edm::Handle<T>& hitsEB,
0077 edm::Handle<T>& hitsEE,
0078 const CaloGeometry* geo,
0079 const CaloTopology* caloTopology,
0080 int ietaE,
0081 int ietaW,
0082 int iphiN,
0083 int iphiS,
0084 double ebThr = -100,
0085 double eeThr = -100,
0086 double tMin = -500,
0087 double tMax = 500,
0088 bool debug = false);
0089
0090 std::pair<double, bool> eECALmatrix(const DetId& detId,
0091 edm::Handle<EcalRecHitCollection>& hitsEB,
0092 edm::Handle<EcalRecHitCollection>& hitsEE,
0093 const EcalChannelStatus& chStatus,
0094 const CaloGeometry* geo,
0095 const CaloTopology* caloTopology,
0096 const EcalSeverityLevelAlgo* sevlv,
0097 int ieta,
0098 int iphi,
0099 double ebThr = -100,
0100 double eeThr = -100,
0101 double tMin = -500,
0102 double tMax = 500,
0103 bool debug = false);
0104
0105 std::pair<double, bool> eECALmatrix(const DetId& detId,
0106 edm::Handle<EcalRecHitCollection>& hitsEB,
0107 edm::Handle<EcalRecHitCollection>& hitsEE,
0108 const EcalChannelStatus& chStatus,
0109 const CaloGeometry* geo,
0110 const CaloTopology* caloTopology,
0111 const EcalSeverityLevelAlgo* sevlv,
0112 const EcalTrigTowerConstituentsMap& ttMap,
0113 int ieta,
0114 int iphi,
0115 double ebThr = -100,
0116 double eeThr = -100,
0117 double tMin = -500,
0118 double tMax = 500,
0119 bool debug = false);
0120
0121 std::pair<double, bool> eECALmatrix(const HcalDetId& detId,
0122 edm::Handle<EcalRecHitCollection>& hitsEB,
0123 edm::Handle<EcalRecHitCollection>& hitsEE,
0124 const CaloGeometry* geo,
0125 const CaloTowerConstituentsMap* ctmap,
0126 const EcalSeverityLevelAlgo* sevlv,
0127 double ebThr = -100,
0128 double eeThr = -100,
0129 double tMin = -500,
0130 double tMax = 500,
0131 bool debug = false);
0132
0133
0134 template <typename T>
0135 void hitECALmatrix(CaloNavigator<DetId>& navigator,
0136 edm::Handle<T>& hits,
0137 int ieta,
0138 int iphi,
0139 std::vector<typename T::const_iterator>& hitlist,
0140 bool debug = false);
0141
0142
0143 template <typename T>
0144 double energyECAL(std::vector<DetId>& vdets,
0145 edm::Handle<T>& hitsEB,
0146 edm::Handle<T>& hitsEE,
0147 double ebThr = -100,
0148 double eeThr = -100,
0149 double tMin = -500,
0150 double tMax = 500,
0151 bool debug = false);
0152
0153 template <typename T>
0154 double energyECAL(std::vector<DetId>& vdets,
0155 edm::Handle<T>& hitsEB,
0156 edm::Handle<T>& hitsEE,
0157 const EcalTrigTowerConstituentsMap& ttMap,
0158 double ebThr = -100,
0159 double eeThr = -100,
0160 double tMin = -500,
0161 double tMax = 500,
0162 bool debug = false);
0163
0164
0165 template <typename T>
0166 double energyECALTower(const DetId& detId,
0167 edm::Handle<T>& hitsEB,
0168 edm::Handle<T>& hitsEE,
0169 const EcalTrigTowerConstituentsMap& ttMap,
0170 bool debug = false);
0171
0172
0173 template <typename T>
0174 DetId hotCrystal(const DetId& detId,
0175 edm::Handle<T>& hitsEB,
0176 edm::Handle<T>& hitsEE,
0177 const CaloGeometry* geo,
0178 const CaloTopology* caloTopology,
0179 int ieta,
0180 int iphi,
0181 double tMin = -500,
0182 double tMax = 500,
0183 bool debug = false);
0184
0185 template <typename T>
0186 DetId hotCrystal(std::vector<DetId>& detId,
0187 edm::Handle<T>& hitsEB,
0188 edm::Handle<T>& hitsEE,
0189 double tMin = -500,
0190 double tMax = 500,
0191 bool debug = false);
0192
0193
0194 template <typename T>
0195 double eECALmatrix(CaloNavigator<DetId>& navigator, edm::Handle<T>& hits, int ieta, int iphi, bool debug = false);
0196
0197 template <typename T>
0198 std::vector<std::pair<DetId, double> > eECALmatrixCell(const DetId& detId,
0199 edm::Handle<T>& hitsEB,
0200 edm::Handle<T>& hitsEE,
0201 const CaloGeometry* geo,
0202 const CaloTopology* caloTopology,
0203 int ieta,
0204 int iphi,
0205 double ebThr = -100,
0206 double eeThr = -100,
0207 bool debug = false);
0208
0209
0210 template <typename T>
0211 std::pair<double, int> eECALmatrixTotal(const DetId& detId,
0212 edm::Handle<T>& hitsEB,
0213 edm::Handle<T>& hitsEE,
0214 const CaloGeometry* geo,
0215 const CaloTopology* caloTopology,
0216 int ieta,
0217 int iphi,
0218 double ebThr = -100,
0219 double eeThr = -100,
0220 bool debug = false);
0221
0222
0223 template <typename T>
0224 std::vector<std::pair<DetId, double> > energyECALCell(std::vector<DetId>& vdets,
0225 edm::Handle<T>& hitsEB,
0226 edm::Handle<T>& hitsEE,
0227 double ebThr = -100,
0228 double eeThr = -100,
0229 bool debug = false);
0230
0231 }
0232
0233 #include "Calibration/IsolatedParticles/interface/eECALMatrix.icc"
0234
0235 #endif