File indexing completed on 2024-06-22 02:23:59
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/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> ®ions,
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