LDMX Software
StripClusterer.h
1#pragma once
2
3#include <vector>
4
5#include "Tracking/Event/FittedSiStripHit.h"
6
7namespace tracking::digitization {
8
49 public:
51 double centroid_strip{0};
52 double total_amplitude{0};
53 double time_ns{0};
54 double sigma_strip{0};
55 int n_strips{0};
56 int layer_id{-1};
57 std::vector<int> strip_ids;
58 };
59
77 StripClusterer(double seed_threshold = 4.0, double neighbor_threshold = 3.0,
78 double cluster_threshold = 4.0, double noise_sigma_adc = 5.0,
79 double mean_time_ns = 0.0, double time_window_ns = -1.0,
80 double neighbor_delta_t_ns = -1.0, double max_chi2_ndf = -1.0);
81
89 std::vector<ClusterCandidate> findClusters(
90 const std::vector<ldmx::FittedSiStripHit>& hits) const;
91
92 private:
93 bool passesSeedCuts(const ldmx::FittedSiStripHit& h) const;
94 bool passesNeighborCuts(const ldmx::FittedSiStripHit& h,
95 double cluster_weighted_t,
96 double cluster_total_amp) const;
97
98 double seed_threshold_;
99 double neighbor_threshold_;
100 double cluster_threshold_;
101 double noise_sigma_adc_;
102 double mean_time_ns_;
103 double time_window_ns_;
104 double neighbor_delta_t_ns_;
105 double max_chi2_ndf_;
106};
107
108} // namespace tracking::digitization
Result of fitting a pulse shape to the ADC samples of a single readout strip.
Nearest-neighbour clustering of fitted silicon-strip hits on a single sensor.
StripClusterer(double seed_threshold=4.0, double neighbor_threshold=3.0, double cluster_threshold=4.0, double noise_sigma_adc=5.0, double mean_time_ns=0.0, double time_window_ns=-1.0, double neighbor_delta_t_ns=-1.0, double max_chi2_ndf=-1.0)
std::vector< ClusterCandidate > findClusters(const std::vector< ldmx::FittedSiStripHit > &hits) const
Cluster a set of fitted strip hits from a single sensor layer.
double centroid_strip
Charge-weighted mean strip index.
double total_amplitude
Total cluster amplitude [ADC counts].
double time_ns
Amplitude-weighted mean hit time [ns].
double sigma_strip
Position uncertainty [strips].