59 auto const soaRecHitsExtra_v = deviceSoARecHitsExtra.view();
62 auto const soaCells_v = deviceSoACells.view();
64 auto const deviceView = deviceData.view();
66 std::unique_ptr<std::vector<reco::BasicCluster>>
clusters(
new std::vector<reco::BasicCluster>);
67 clusters->reserve(deviceData->metadata().size());
72 std::vector<std::vector<float>> times(deviceData->metadata().size());
73 std::vector<std::vector<float>> timeErrors(deviceData->metadata().size());
75 for (
int i = 0;
i < deviceData->metadata().size(); ++
i) {
76 std::vector<std::pair<DetId, float>> thisCluster;
77 thisCluster.reserve(deviceView.cells(
i));
78 clusters->emplace_back(deviceView.energy(
i),
83 clusters->back().setSeed(deviceView.seed(
i));
84 times[
i].reserve(deviceView.cells(
i));
85 timeErrors[
i].reserve(deviceView.cells(
i));
92 for (int32_t
i = 0;
i < soaRecHitsExtra_v.metadata().size(); ++
i) {
93 if (soaRecHitsExtra_v[
i].clusterIndex() == -1) {
97 (*clusters)[soaRecHitsExtra_v[
i].clusterIndex()].addHitAndFraction(soaCells_v[
i].
detid(), 1.
f);
98 if (soaCells_v[
i].timeError() < 0.
f) {
101 times[soaRecHitsExtra_v[
i].clusterIndex()].push_back(soaCells_v[
i].
time());
102 timeErrors[soaRecHitsExtra_v[
i].clusterIndex()].push_back(
103 1.
f / (soaCells_v[
i].timeError() * soaCells_v[
i].timeError()));
107 std::vector<std::pair<float, float>> cluster_times;
108 cluster_times.reserve(
clusters->size());
114 cluster_times.push_back(std::pair<float, float>(-99.
f, -1.
f));
118 #if DEBUG_CLUSTERS_ALPAKA 120 auto lumiNumber =
iEvent.eventAuxiliary().luminosityBlock();
121 auto evtNumber =
iEvent.eventAuxiliary().id().event();
124 dumperCellsSoA.
dumpInfos(deviceSoACells, moduleLabel_,
runNumber, lumiNumber, evtNumber);
130 dumperSoA.
dumpInfos(deviceSoARecHitsExtra, moduleLabel_,
runNumber, lumiNumber, evtNumber);
135 auto timeCl = std::make_unique<edm::ValueMap<std::pair<float, float>>>();
137 filler.insert(clusterHandle, cluster_times.begin(), cluster_times.end());
147 std::unique_ptr<std::vector<float>> layerClustersMask(
new std::vector<float>);
148 layerClustersMask->resize(clusterHandle->size(), 1.0);
edm::EDGetTokenT< HGCalSoARecHitsExtraHostCollection > const getTokenSoARecHitsExtra_
void dumpInfos(const T &clusters, const std::string &moduleLabel, edm::RunNumber_t run, edm::LuminosityBlockNumber_t lumi, edm::EventNumber_t event, bool dumpCellsDetId=false) const
edm::EDGetTokenT< HGCalSoAClustersHostCollection > const getTokenSoAClusters_
std::pair< float, float > fixSizeHighestDensity(std::vector< float > &time, std::vector< float > weight=std::vector< float >(), unsigned int minNhits=3, float deltaT=0.210, float timeWidthBy=0.5)
edm::EDGetTokenT< HGCalSoARecHitsHostCollection > const getTokenSoACells_
void dumpInfos(const T &cells, const std::string &moduleLabel, edm::RunNumber_t run, edm::LuminosityBlockNumber_t lumi, edm::EventNumber_t event) const
XYZPointD XYZPoint
point in space with cartesian internal representation
reco::CaloCluster::AlgoId algoId_