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