93 std::unique_ptr<std::vector<recob::Cluster>> ccol(
new std::vector<recob::Cluster>);
94 std::unique_ptr<art::Assns<recob::Cluster, recob::Hit>> assn(
95 new art::Assns<recob::Cluster, recob::Hit>);
100 ClusterParamsImportWrapper<StandardClusterParamsAlg> ClusterParamAlgo;
102 art::ServiceHandle<geo::Geometry const> geom;
104 art::Handle<std::vector<recob::Hit>> hitcol;
108 std::vector<art::Ptr<recob::Hit>> allhits;
112 art::ServiceHandle<lariov::ChannelStatusService const>()->GetProvider();
117 std::map<geo::PlaneID, std::vector<art::Ptr<recob::Hit>>> planeIDToHits;
118 for (
size_t i = 0; i < hitcol->size(); ++i)
119 planeIDToHits[hitcol->at(i).WireID().planeID()].push_back(art::Ptr<recob::Hit>(hitcol, i));
121 auto const clock_data =
122 art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(
evt);
123 auto const det_prop =
124 art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataFor(
evt, clock_data);
126 for (
auto& itr : planeIDToHits) {
129 allhits.resize(itr.second.size());
130 allhits.swap(itr.second);
135 for (
unsigned int j = 0; j <
fDBScan.
fps.size(); ++j) {
137 if (allhits.size() !=
fDBScan.
fps.size())
break;
149 art::PtrVector<recob::Hit> clusterHits;
154 clusterHits.push_back(allhits[j]);
155 totalQ += clusterHits.back()->Integral();
159 if (clusterHits.empty())
continue;
163 unsigned int sw = wireID.
Wire;
164 unsigned int ew = clusterHits.back()->WireID().Wire;
167 ClusterParamAlgo.ImportHits(gser, clusterHits);
174 clusterHits.front()->PeakTime(),
175 clusterHits.front()->SigmaPeakTime(),
178 clusterHits.back()->PeakTime(),
179 clusterHits.back()->SigmaPeakTime(),
181 clusterHits.front()->View(),
186 ccol->emplace_back(
cluster.move());
196 mf::LogVerbatim(
"Summary") << std::setfill(
'-') << std::setw(175) <<
"-" << std::setfill(
' ');
197 mf::LogVerbatim(
"Summary") <<
"DBcluster Summary:";
198 for (
unsigned int i = 0; i < ccol->size(); ++i)
199 mf::LogVerbatim(
"Summary") << ccol->at(i);
201 evt.put(std::move(ccol));
202 evt.put(std::move(assn));
std::set< raw::ChannelID_t > ChannelSet_t
Type of set of channel IDs.
WireID_t Wire
Index of the wire within its plane.
std::vector< std::vector< double > > fps
the collection of points we are working on
virtual ChannelSet_t BadChannels() const =0
Returns a copy of set of bad channel IDs for the current run.
static const SentryArgument_t Sentry
An instance of the sentry object.
DBScanAlg fDBScan
object that implements the DB scan algorithm
std::vector< unsigned int > fpointId_to_clusterId
mapping point_id -> clusterId
Signal from induction planes.
enum geo::_plane_sigtype SigType_t
Class providing information about the quality of channels.
TH1F * fhitwidth_ind_test
TH1F * fhitwidth_coll_test
std::string fhitsModuleLabel
bool CreateAssn(art::Event &evt, std::vector< T > const &a, art::Ptr< U > const &b, art::Assns< U, T > &assn, std::string a_instance, size_t index=UINT_MAX)
Creates a single one-to-one association.
void InitScan(const detinfo::DetectorClocksData &clockData, const detinfo::DetectorPropertiesData &detProp, const std::vector< art::Ptr< recob::Hit >> &allhits, std::set< uint32_t > badChannels, const std::vector< geo::WireID > &wireids=std::vector< geo::WireID >())
std::vector< std::vector< unsigned int > > fclusters
collection of something
constexpr WireID()=default
Default constructor: an invalid TPC ID.
constexpr PlaneID const & planeID() const
Signal from collection planes.