Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:43:25

0001 // -*- C++ -*
0002 /* 
0003 The function eECALmatrix returns total energy contained in 
0004 NxN crystal matrix for EcalRecHits or PCaloSimHits.
0005 
0006 Inputs : 
0007 1. CaloNavigator at the DetId around which NxN has to be formed
0008 2. The EcalRecHitCollection  and 
0009 3. Number of crystals to be navigated along eta and phi along 
0010    one direction (navigation is done alone +-deta and +-dphi).
0011 
0012 Authors:  Seema Sharma, Sunanda Banerjee
0013 Created: August 2009
0014 */
0015 
0016 #ifndef CalibrationIsolatedParticleseECALMatrix_h
0017 #define CalibrationIsolatedParticleseECALMatrix_h
0018 
0019 // system include files
0020 #include <memory>
0021 #include <map>
0022 #include <vector>
0023 
0024 // user include files
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   // Energy in NxN crystal matrix
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   // returns vector of hits in NxN matrix
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   // returns energy deposited from the vector of hits
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   // returns energy in the EB/EE tower
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   // Hot Crystal
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   // Energy in NxN crystal matrix
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   // Energy in ietaXiphi crystal matrix
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   // returns vector of hits in NxN matrix
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 }  // namespace spr
0232 
0233 #include "Calibration/IsolatedParticles/interface/eECALMatrix.icc"
0234 
0235 #endif