CMS 3D CMS Logo

TracksterLinkingbySkeletons.h
Go to the documentation of this file.
1 #ifndef RecoHGCal_TICL_TracksterLinkingAlgoBySkeletons_H
2 #define RecoHGCal_TICL_TracksterLinkingAlgoBySkeletons_H
3 
20 #include <array>
21 
22 namespace ticl {
23 
25  public:
27 
29 
30  void linkTracksters(const Inputs& input,
31  std::vector<Trackster>& resultTracksters,
32  std::vector<std::vector<unsigned int>>& linkedResultTracksters,
33  std::vector<std::vector<unsigned int>>& linkedTracksterIdToInputTracksterId) override;
34 
35  std::array<ticl::Vector, 3> findSkeletonNodes(const ticl::Trackster& trackster,
36  float lower_percentage,
37  float upper_percentage,
38  const std::vector<reco::CaloCluster>& layerClusters,
39  const hgcal::RecHitTools& rhtools);
40 
41  bool areCompatible(const ticl::Trackster& myTrackster,
42  const ticl::Trackster& otherTrackster,
43  const std::array<ticl::Vector, 3>& mySkeleton,
44  const std::array<ticl::Vector, 3>& otherSkeleton);
45 
46  void initialize(const HGCalDDDConstants* hgcons,
47  const hgcal::RecHitTools rhtools,
48  const edm::ESHandle<MagneticField> bfieldH,
49  const edm::ESHandle<Propagator> propH) override;
50 
52  iDesc.add<double>("track_time_quality_threshold", 0.5);
53  iDesc.add<double>("wind", 0.036);
54  iDesc.add<unsigned int>("min_num_lcs", 7);
55  iDesc.add<double>("min_trackster_energy", 10.);
56  iDesc.add<double>("pca_quality_th", 0.85);
57  iDesc.add<double>("dot_prod_th", 0.97);
58  iDesc.add<std::vector<double>>("max_distance_projective_sqr", {60., 60.});
59  iDesc.add<std::vector<double>>("min_distance_z", {30., 30.});
60  iDesc.add<std::vector<double>>("max_distance_projective_sqr_closest_points", {60., 60.});
61  iDesc.add<std::vector<double>>("max_z_distance_closest_points", {35., 35.});
62  iDesc.add<std::vector<double>>("cylinder_radius_sqr", {9., 9.});
64  }
65 
66  private:
68 
69  void buildLayers();
70 
71  void dumpLinksFound(std::vector<std::vector<unsigned>>& resultCollection, const char* label) const;
72 
74  float del_;
75  unsigned int min_num_lcs_;
78  float dot_prod_th_;
79  std::vector<double> max_distance_projective_sqr_;
80  std::vector<double> min_distance_z_;
82  std::vector<double> max_z_distance_closest_points_;
83  std::vector<double> cylinder_radius_sqr_;
84 
86 
87  std::unique_ptr<GeomDet> firstDisk_[2];
88  std::unique_ptr<GeomDet> interfaceDisk_[2];
89 
91 
94  };
95 
96 } // namespace ticl
97 
98 #endif
math::XYZVectorF Vector
Definition: Trackster.h:21
edm::ESHandle< MagneticField > bfield_
void linkTracksters(const Inputs &input, std::vector< Trackster > &resultTracksters, std::vector< std::vector< unsigned int >> &linkedResultTracksters, std::vector< std::vector< unsigned int >> &linkedTracksterIdToInputTracksterId) override
bool areCompatible(const ticl::Trackster &myTrackster, const ticl::Trackster &otherTrackster, const std::array< ticl::Vector, 3 > &mySkeleton, const std::array< ticl::Vector, 3 > &otherSkeleton)
static std::string const input
Definition: EdmProvDump.cc:50
char const * label
TracksterLinkingbySkeletons(const edm::ParameterSet &conf, edm::ConsumesCollector iC)
std::array< ticl::Vector, 3 > findSkeletonNodes(const ticl::Trackster &trackster, float lower_percentage, float upper_percentage, const std::vector< reco::CaloCluster > &layerClusters, const hgcal::RecHitTools &rhtools)
std::unique_ptr< GeomDet > interfaceDisk_[2]
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::vector< double > max_distance_projective_sqr_closest_points_
static void fillPSetDescription(edm::ParameterSetDescription &desc)
std::unique_ptr< GeomDet > firstDisk_[2]
void initialize(const HGCalDDDConstants *hgcons, const hgcal::RecHitTools rhtools, const edm::ESHandle< MagneticField > bfieldH, const edm::ESHandle< Propagator > propH) override
Definition: Common.h:10
void dumpLinksFound(std::vector< std::vector< unsigned >> &resultCollection, const char *label) const
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)