Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:59:10

0001 /* 
0002 Functions to return total energy contained in NxN (3x3/5x5/7x7)
0003 Hcal towers aroud a given DetId. 
0004 
0005 Inputs : 
0006 1. HcalTopology, 
0007 2. DetId around which NxN is to be formed, 
0008 3. HcalRecHitCollection,
0009 4. Number of towers to be navigated along eta and phi along 
0010    one direction (navigation is done alone +-deta and +-dphi).
0011 5. option to include HO
0012 
0013 Authors:  Seema Sharma, Sunanda Banerjee
0014 Created: August 2009
0015 */
0016 
0017 #ifndef CalibrationIsolatedParticleseHCALMatrix_h
0018 #define CalibrationIsolatedParticleseHCALMatrix_h
0019 
0020 // system include files
0021 #include <memory>
0022 #include <map>
0023 #include <vector>
0024 
0025 // user include files
0026 #include "FWCore/Framework/interface/Frameworkfwd.h"
0027 #include "DataFormats/Common/interface/Handle.h"
0028 #include "DataFormats/Candidate/interface/Candidate.h"
0029 #include "DataFormats/DetId/interface/DetId.h"
0030 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0031 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
0032 #include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
0033 
0034 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0035 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0036 
0037 namespace spr {
0038 
0039   template <typename T>
0040   double eHCALmatrix(const HcalTopology* topology,
0041                      const DetId& det,
0042                      edm::Handle<T>& hits,
0043                      int ieta,
0044                      int iphi,
0045                      bool includeHO = false,
0046                      bool algoNew = true,
0047                      double hbThr = -100,
0048                      double heThr = -100,
0049                      double hfThr = -100,
0050                      double hoThr = -100,
0051                      double tMin = -500,
0052                      double tMax = 500,
0053                      int useRaw = 0,
0054                      bool debug = false);
0055 
0056   double eHCALmatrix(const HcalTopology* topology,
0057                      const DetId& det,
0058                      std::vector<PCaloHit>& hits,
0059                      int ieta,
0060                      int iphi,
0061                      bool includeHO = false,
0062                      double hbThr = -100,
0063                      double heThr = -100,
0064                      double hfThr = -100,
0065                      double hoThr = -100,
0066                      double tMin = -500,
0067                      double tMax = 500,
0068                      bool debug = false);
0069 
0070   template <typename T>
0071   double eHCALmatrix(const HcalTopology* topology,
0072                      const DetId& det,
0073                      edm::Handle<T>& hits,
0074                      int ietaE,
0075                      int ietaW,
0076                      int iphiN,
0077                      int iphiS,
0078                      bool includeHO = false,
0079                      double hbThr = -100,
0080                      double heThr = -100,
0081                      double hfThr = -100,
0082                      double hoThr = -100,
0083                      double tMin = -500,
0084                      double tMax = 500,
0085                      int useRaw = 0,
0086                      bool debug = false);
0087 
0088   template <typename T>
0089   double eHCALmatrix(const HcalTopology* topology,
0090                      const DetId& det0,
0091                      edm::Handle<T>& hits,
0092                      int ieta,
0093                      int iphi,
0094                      int& nRecHits,
0095                      std::vector<int>& RH_ieta,
0096                      std::vector<int>& RH_iphi,
0097                      std::vector<double>& RH_ene,
0098                      std::set<int>& uniqueIdset,
0099                      int useRaw = 0);
0100 
0101   template <typename T>
0102   double eHCALmatrix(const CaloGeometry* geo,
0103                      const HcalTopology* topology,
0104                      const DetId& det0,
0105                      edm::Handle<T>& hits,
0106                      int ieta,
0107                      int iphi,
0108                      int& nRecHits,
0109                      std::vector<int>& RH_ieta,
0110                      std::vector<int>& RH_iphi,
0111                      std::vector<double>& RH_ene,
0112                      GlobalPoint& gPosHotCell,
0113                      int useRaw = 0);
0114 
0115   template <typename T>
0116   double eHCALmatrix(const CaloGeometry* geo,
0117                      const HcalTopology* topology,
0118                      const DetId& det0,
0119                      edm::Handle<T>& hits,
0120                      int ieta,
0121                      int iphi,
0122                      HcalDetId& hotCell,
0123                      bool includeHO = false,
0124                      int useRaw = 0,
0125                      bool debug = false);
0126 
0127   double eHCALmatrix(const CaloGeometry* geo,
0128                      const HcalTopology* topology,
0129                      const DetId& det0,
0130                      std::vector<PCaloHit>& hits,
0131                      int ieta,
0132                      int iphi,
0133                      HcalDetId& hotCell,
0134                      bool includeHO = false,
0135                      bool debug = false);
0136 
0137   template <typename T>
0138   double energyHCALmatrixNew(const HcalTopology* topology,
0139                              const DetId& det,
0140                              edm::Handle<T>& hits,
0141                              int ieta,
0142                              int iphi,
0143                              bool includeHO = false,
0144                              double hbThr = -100,
0145                              double heThr = -100,
0146                              double hfThr = -100,
0147                              double hoThr = -100,
0148                              double tMin = -500,
0149                              double tMax = 500,
0150                              int useRaw = 0,
0151                              bool debug = false);
0152 
0153   template <typename T>
0154   double energyHCALmatrixTotal(const HcalTopology* topology,
0155                                const DetId& det,
0156                                edm::Handle<T>& hits,
0157                                int ietaE,
0158                                int ietaW,
0159                                int iphiN,
0160                                int iphiS,
0161                                bool includeHO = false,
0162                                double hbThr = -100,
0163                                double heThr = -100,
0164                                double hfThr = -100,
0165                                double hoThr = -100,
0166                                double tMin = -500,
0167                                double tMax = 500,
0168                                int useRaw = 0,
0169                                bool debug = false);
0170 
0171   template <typename T>
0172   void hitHCALmatrix(const HcalTopology* topology,
0173                      const DetId& det,
0174                      edm::Handle<T>& hits,
0175                      int ieta,
0176                      int iphi,
0177                      std::vector<typename T::const_iterator>& hitlist,
0178                      bool includeHO = false,
0179                      bool debug = false);
0180 
0181   template <typename T>
0182   void hitHCALmatrixTotal(const HcalTopology* topology,
0183                           const DetId& det,
0184                           edm::Handle<T>& hits,
0185                           int ietaE,
0186                           int ietaW,
0187                           int iphiN,
0188                           int iphiS,
0189                           std::vector<typename T::const_iterator>& hitlist,
0190                           bool includeHO = false,
0191                           bool debug = false);
0192 
0193   template <typename T>
0194   double energyHCAL(std::vector<DetId>& vdets,
0195                     edm::Handle<T>& hits,
0196                     double hbThr = -100,
0197                     double heThr = -100,
0198                     double hfThr = -100,
0199                     double hoThr = -100,
0200                     double tMin = -500,
0201                     double tMax = 500,
0202                     int useRaw = 0,
0203                     bool debug = false);
0204 
0205   template <typename T>
0206   void energyHCALCell(HcalDetId detId,
0207                       edm::Handle<T>& hits,
0208                       std::vector<std::pair<double, int> >& energyCell,
0209                       int maxDepth = 1,
0210                       double hbThr = -100,
0211                       double heThr = -100,
0212                       double hfThr = -100,
0213                       double hoThr = -100,
0214                       double tMin = -500,
0215                       double tMax = 500,
0216                       int useRaw = 0,
0217                       int depthHE = 3,
0218                       bool debug = false);
0219 
0220   void energyHCALCell(HcalDetId detId,
0221                       std::vector<PCaloHit>& hits,
0222                       std::vector<std::pair<double, int> >& energyCell,
0223                       int maxDepth = 1,
0224                       double hbThr = -100,
0225                       double heThr = -100,
0226                       double hfThr = -100,
0227                       double hoThr = -100,
0228                       double tMin = -500,
0229                       double tMax = 500,
0230                       int depthHE = 3,
0231                       bool debug = false);
0232 
0233   template <typename T>
0234   void hitsHCAL(std::vector<DetId>& vdets,
0235                 edm::Handle<T>& hits,
0236                 std::vector<typename T::const_iterator>& hitlist,
0237                 bool debug = false);
0238 
0239   HcalDetId getHotCell(std::vector<HBHERecHitCollection::const_iterator>& hit,
0240                        bool includeHO,
0241                        int useRaw = 0,
0242                        bool debug = false);
0243 
0244   HcalDetId getHotCell(std::vector<std::vector<PCaloHit>::const_iterator>& hit,
0245                        bool includeHO,
0246                        int useRaw = 0,
0247                        bool debug = false);
0248 
0249   double eHCALThreshold(int subdet, double hbThr = -100, double heThr = -100, double hfThr = -100, double hoThr = -100);
0250 }  // namespace spr
0251 
0252 #include "Calibration/IsolatedParticles/interface/eHCALMatrix.icc"
0253 #endif