Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-22 02:23:59

0001 // Author: Felice Pantaleo - felice.pantaleo@cern.ch
0002 // Date: 11/2018
0003 
0004 #ifndef __RecoHGCal_TICL_HGCGraph_H__
0005 #define __RecoHGCal_TICL_HGCGraph_H__
0006 
0007 #include <vector>
0008 
0009 #include "DataFormats/HGCalReco/interface/TICLLayerTile.h"
0010 #include "DataFormats/HGCalReco/interface/TICLSeedingRegion.h"
0011 #include "HGCDoublet.h"
0012 
0013 template <typename TILES>
0014 class HGCGraphT {
0015 public:
0016   void makeAndConnectDoublets(const TILES &h,
0017                               const std::vector<TICLSeedingRegion> &regions,
0018                               int nEtaBins,
0019                               int nPhiBins,
0020                               const std::vector<reco::CaloCluster> &layerClusters,
0021                               const std::vector<float> &mask,
0022                               const edm::ValueMap<std::pair<float, float>> &layerClustersTime,
0023                               int deltaIEta,
0024                               int deltaIPhi,
0025                               float minCosThetai,
0026                               float maxCosPointing,
0027                               float root_doublet_max_distance_from_seed_squared,
0028                               float etaLimitIncreaseWindow,
0029                               int skip_layers,
0030                               int maxNumberOfLayers,
0031                               float maxDeltaTime,
0032                               int lastLayerEE,
0033                               int lastLayerFH,
0034                               const std::vector<double> &siblings_maxRSquared);
0035 
0036   bool areTimeCompatible(int innerIdx,
0037                          int outerIdx,
0038                          const edm::ValueMap<std::pair<float, float>> &layerClustersTime,
0039                          float maxDeltaTime);
0040 
0041   bool areOverlappingOnSiblingLayers(int innerIdx,
0042                                      int outerIdx,
0043                                      const std::vector<reco::CaloCluster> &layerClusters,
0044                                      float maxRSquared);
0045 
0046   std::vector<HGCDoublet> &getAllDoublets() { return allDoublets_; }
0047   void findNtuplets(std::vector<HGCDoublet::HGCntuplet> &foundNtuplets,
0048                     std::vector<int> &seedIndices,
0049                     const unsigned int minClustersPerNtuplet,
0050                     const bool outInDFS,
0051                     const unsigned int maxOutInHops);
0052   void clear() {
0053     allDoublets_.clear();
0054     theRootDoublets_.clear();
0055     isOuterClusterOfDoublets_.clear();
0056     allDoublets_.shrink_to_fit();
0057     theRootDoublets_.shrink_to_fit();
0058     isOuterClusterOfDoublets_.shrink_to_fit();
0059   }
0060   void setVerbosity(int level) { verbosity_ = level; }
0061 
0062 private:
0063   std::vector<HGCDoublet> allDoublets_;
0064   std::vector<unsigned int> theRootDoublets_;
0065   std::vector<std::vector<int>> isOuterClusterOfDoublets_;
0066   int verbosity_;
0067 };
0068 
0069 #endif